Sui 数据类型讲解
这篇文章中,我们将介绍 Sui 中常见的数据结构,这些结构包含 Sui Move 和 Sui Framework 中提供的基础类型和数据结构,理解和熟悉这些数据结构对于 Sui Move 的理解和应用大有裨益。 首先,我们先快速复习一下 Sui Move 中使用到的基础类型。无符号整型(Integer)Move 包含六种无符号整型:u8,u16 u32,u64,u128和 u256。值的范围从 0 到 与类型大小相关的最大值。 这些类型的字面值为数字序列(例如 112)或十六进制文字,例如 0xFF。 字面值的类型可以选择添加为后缀,例如 112u8。 如果未指定类型,编译器将尝试从使用文字的上下文中推断类型。 如果无法推断类型,则假定为 u64。 对无符号整型支持的运算包括:算数运算: + - * % /位运算: & | ^ >> <<比较运算: > < >= <= == !=类型转换: as注意,类型转换不会截断,因此如果结果对于指定类型而言太大,转换将中止。简单示例:let a: u64 = 4; let b = 2u64; let hex_u64: u64 = 0xCAF...
Sui 数据类型讲解
这篇文章中,我们将介绍 Sui 中常见的数据结构,这些结构包含 Sui Move 和 Sui Framework 中提供的基础类型和数据结构,理解和熟悉这些数据结构对于 Sui Move 的理解和应用大有裨益。 首先,我们先快速复习一下 Sui Move 中使用到的基础类型。无符号整型(Integer)Move 包含六种无符号整型:u8,u16 u32,u64,u128和 u256。值的范围从 0 到 与类型大小相关的最大值。 这些类型的字面值为数字序列(例如 112)或十六进制文字,例如 0xFF。 字面值的类型可以选择添加为后缀,例如 112u8。 如果未指定类型,编译器将尝试从使用文字的上下文中推断类型。 如果无法推断类型,则假定为 u64。 对无符号整型支持的运算包括:算数运算: + - * % /位运算: & | ^ >> <<比较运算: > < >= <= == !=类型转换: as注意,类型转换不会截断,因此如果结果对于指定类型而言太大,转换将中止。简单示例:let a: u64 = 4; let b = 2u64; let hex_u64: u64 = 0xCAF...
Uniswap v3 无常损失分析
Sep 17, 202228 min. readUniswap v3 无常损失分析目标对 Uniswap v3 无常损失的定量分析;如何使用策略让 Uniswap v3 LP 获得更大的收益。Uniswap 概览基于恒定乘积的自动化做市商(AMM),去中心化交易所。 v1 版本:2018年11月解决了什么问题:传统交易所 order book 买卖双方不活跃导致的长时间挂单,交易效率低下功能:ETH ←→ ERC20 token 兑换带来的问题:token1 与 token2 之间的兑换需要借助 ETHUSDT → ETH → USDCv2 版本:2020年5月新功能自由组合交易对:token1 ←→ token2token1-token2 交易池LPers 提供流动性并赚取费用价格预言机(时间加权平均价格,TWAP)、闪电贷、最优化交易路径等带来的问题资金利用率低:在 x*y=k 的情况下,做市的价格区间在 (0, +∞) 的分布,当用户交易时,交易的量相比我们的流动性来说是很小的假设 ETH/DAI 交易对的实时价格为 1500 DAI/ETH,交易对的流动性池中共有资金:4...
Uniswap v3 无常损失分析
Sep 17, 202228 min. readUniswap v3 无常损失分析目标对 Uniswap v3 无常损失的定量分析;如何使用策略让 Uniswap v3 LP 获得更大的收益。Uniswap 概览基于恒定乘积的自动化做市商(AMM),去中心化交易所。 v1 版本:2018年11月解决了什么问题:传统交易所 order book 买卖双方不活跃导致的长时间挂单,交易效率低下功能:ETH ←→ ERC20 token 兑换带来的问题:token1 与 token2 之间的兑换需要借助 ETHUSDT → ETH → USDCv2 版本:2020年5月新功能自由组合交易对:token1 ←→ token2token1-token2 交易池LPers 提供流动性并赚取费用价格预言机(时间加权平均价格,TWAP)、闪电贷、最优化交易路径等带来的问题资金利用率低:在 x*y=k 的情况下,做市的价格区间在 (0, +∞) 的分布,当用户交易时,交易的量相比我们的流动性来说是很小的假设 ETH/DAI 交易对的实时价格为 1500 DAI/ETH,交易对的流动性池中共有资金:4...
Sui 类狼羊游戏项目开发实践
这篇文章将向你介绍 Sui Move 版本的类狼羊游戏的合约和前端编写过程。阅读前,建议先熟悉以下内容:Sui 命令行的基本操作;Move 语法(基础和高级)和 Sui Move 的对象语法;React 基本语法。项目代码:合约:https://github.com/AptosWolfGame/fox_game_contract前端: https://github.com/AptosWolfGame/fox_game_interface在线 Demo: https://fox-game-interface.vercel.app/Untitled0x1 狼羊游戏的规则狼羊游戏是以太坊上的 NFT 游戏,玩家通过购买NFT,然后将 NFT 质押来获取游戏代币 $WOOL,游戏代币 $WOOL 可用于之后的 NFT 铸造。有趣的是,狼羊游戏在这个过程中引入了随机性,让单纯的质押过程增加了不确定性,因而吸引了大量玩家参与到游戏中,狼羊游戏的可玩性也是建立在这个基础之上。具体的游戏规则为:1.1 羊你有90%的概率铸造一只羊,每只羊都有独特的特征。以下是他们可以采取的行动:进入谷仓(Sta...
Sui 类狼羊游戏项目开发实践
这篇文章将向你介绍 Sui Move 版本的类狼羊游戏的合约和前端编写过程。阅读前,建议先熟悉以下内容:Sui 命令行的基本操作;Move 语法(基础和高级)和 Sui Move 的对象语法;React 基本语法。项目代码:合约:https://github.com/AptosWolfGame/fox_game_contract前端: https://github.com/AptosWolfGame/fox_game_interface在线 Demo: https://fox-game-interface.vercel.app/Untitled0x1 狼羊游戏的规则狼羊游戏是以太坊上的 NFT 游戏,玩家通过购买NFT,然后将 NFT 质押来获取游戏代币 $WOOL,游戏代币 $WOOL 可用于之后的 NFT 铸造。有趣的是,狼羊游戏在这个过程中引入了随机性,让单纯的质押过程增加了不确定性,因而吸引了大量玩家参与到游戏中,狼羊游戏的可玩性也是建立在这个基础之上。具体的游戏规则为:1.1 羊你有90%的概率铸造一只羊,每只羊都有独特的特征。以下是他们可以采取的行动:进入谷仓(Sta...
Tornado Cash 基本原理
假设地址 A 发送了 100 ETH 给地址 B,由于在区块链上所有的数据都是公开的,所以全世界都知道地址 A 和地址 B 进行了一次交易,如果地址A和地址 B 属于同一个用户 Alice,则大家知道Alice仍然拥有 100 ETH,如果地址B属于用户 Bob,则大家知道 Bob 现在有 100ETH 了。一个问题就是:如何在交易的过程中保持隐蔽呢,或者说隐藏发送用户与接收用户之前的练习?那就要用到 Tornado Cash。 用户将资金存入Tornado Cash,然后将资金提取到另一个地址中,在区块链上记录上,这两个地址之间的联系就大概率断开了。那 Tornado Cash 是如何做到的呢?存款(deposit)过程首先我们看一下存款过程。用户在存款时需要生产两个随机数 secret 和 nullifier,并计算这两个数的一个哈希 commitment = hash(secret, nullifier),然后用户将需要混币的金额(比如 1 ETH)和 commitment 发送给 TC 合约的 deposit 函数,TC合约将保存这两个数据,commitment之后会用于...
Tornado Cash 基本原理
假设地址 A 发送了 100 ETH 给地址 B,由于在区块链上所有的数据都是公开的,所以全世界都知道地址 A 和地址 B 进行了一次交易,如果地址A和地址 B 属于同一个用户 Alice,则大家知道Alice仍然拥有 100 ETH,如果地址B属于用户 Bob,则大家知道 Bob 现在有 100ETH 了。一个问题就是:如何在交易的过程中保持隐蔽呢,或者说隐藏发送用户与接收用户之前的练习?那就要用到 Tornado Cash。 用户将资金存入Tornado Cash,然后将资金提取到另一个地址中,在区块链上记录上,这两个地址之间的联系就大概率断开了。那 Tornado Cash 是如何做到的呢?存款(deposit)过程首先我们看一下存款过程。用户在存款时需要生产两个随机数 secret 和 nullifier,并计算这两个数的一个哈希 commitment = hash(secret, nullifier),然后用户将需要混币的金额(比如 1 ETH)和 commitment 发送给 TC 合约的 deposit 函数,TC合约将保存这两个数据,commitment之后会用于...
Sui 公链研究整理
官网:https://sui.io/ 白皮书:https://github.com/MystenLabs/sui/blob/main/doc/paper/sui.pdf技术水平可扩展性,高吞吐,低延迟。 技术特征:变体 Move 语言安全特性(内存安全,Move Prover)编程范式:虽然大多数区块链的存储都以帐户为中心,但 Sui 的存储是围绕对象设计的。每个对象由一个地址所拥有,默认情况下可变,也可设为不可变或在多个地址之间共享。Sui 的 Move 智能合约可以接收这些对象作为输入,对其进行操作,并将对象作为输出返回。这是一种完全不同于 Solidity 或 Rust 的智能合约编程范式,更具表现力,对于动态NFT和加密游戏的数字对象表达更简单。改善网络性能并简化开发人员体验相较于Solidity,较少经历项目验证,缺少安全实践。交易并行化对于链上的大多数交易都不会与其他交易竞争相同的资源(例如对同一个NFT发起两笔交易),按目前公链的设计(例如ETH),需要对一个总的排序交易列表来进行全节点的共识确认,因此造成了大量的计算浪费。Sui不要求全序,只要满足因果关系的交易顺...
Sui 公链研究整理
官网:https://sui.io/ 白皮书:https://github.com/MystenLabs/sui/blob/main/doc/paper/sui.pdf技术水平可扩展性,高吞吐,低延迟。 技术特征:变体 Move 语言安全特性(内存安全,Move Prover)编程范式:虽然大多数区块链的存储都以帐户为中心,但 Sui 的存储是围绕对象设计的。每个对象由一个地址所拥有,默认情况下可变,也可设为不可变或在多个地址之间共享。Sui 的 Move 智能合约可以接收这些对象作为输入,对其进行操作,并将对象作为输出返回。这是一种完全不同于 Solidity 或 Rust 的智能合约编程范式,更具表现力,对于动态NFT和加密游戏的数字对象表达更简单。改善网络性能并简化开发人员体验相较于Solidity,较少经历项目验证,缺少安全实践。交易并行化对于链上的大多数交易都不会与其他交易竞争相同的资源(例如对同一个NFT发起两笔交易),按目前公链的设计(例如ETH),需要对一个总的排序交易列表来进行全节点的共识确认,因此造成了大量的计算浪费。Sui不要求全序,只要满足因果关系的交易顺...