大家好!我是你们的区块链技术向导,今天我们来聊聊区块链中的三个核心概念:地址(Address)、账户(Account) 和 交易(Transaction)。无论你是刚入门的小白,还是已经摸爬滚打了一段时间的开发者,这篇文章都会用最接地气的方式,带你轻松掌握这些概念。准备好了吗?Let's go! 💻
地址 就像是区块链世界里的"门牌号",用来唯一标识一个位置。它可以标识 包(Package)、账户(Account) 和 对象(Object)。地址的长度固定为 32 字节,通常以 0x 开头的十六进制字符串表示。而且,地址是大小写不敏感的,所以 0xABC 和 0xabc 是同一个地址。
这个地址就是一个标准的 32 字节地址,64 个字符,0x 开头。
Sui 有一些 保留地址,专门用来标识一些标准包和对象。这些地址通常是简单的值,方便记忆和输入。比如,标准库的地址是 0x1。如果地址长度小于 32 字节,会在左边补零。
0x1 = 0x0000000000000000000000000000000000000000000000000000000000000001
一些常见的保留地址:
0x1:Sui 标准库的地址(别名std)0x2:Sui 框架的地址(别名sui)0x6:系统Clock对象的地址
账户 是你在区块链世界里的"身份证"。它由私钥生成,并通过 地址 来标识。账户可以拥有对象,还可以发送交易。每笔交易都有一个发送者,发送者就是通过地址来标识的。
Sui 使用 ED25519 和 SECP256K1 两种加密算法来管理账户和签名。此外,Sui 还支持一种创新的身份验证方式——zkLogin,它结合了 Web2 和 Web3 的优势,让用户可以通过熟悉的登录方法(比如 Google 登录)访问去中心化应用(DApps),同时保护隐私。
描述:基于椭圆曲线的公钥签名算法,属于 Edwards 曲线家族。默认情况下,Sui 会使用 ED25519 来生成账户密钥对。
特点:
高效且安全,提供快速签名和验证性能。
私钥长度为 32 字节,公钥长度为 32 字节。
签名结果长度为 64 字节。
用法:
常用于高性能区块链的默认签名算法。
公钥生成账户地址的哈希(通常通过 BLAKE2b 或类似算法)。
描述:基于 Koblitz 曲线的椭圆曲线签名算法,广泛用于比特币和以太坊等区块链。Sui 支持 SECP256K1 签名方案,适合与传统区块链账户体系互操作。
特点:
私钥长度为 32 字节,公钥长度为 33 字节(压缩形式)。
签名结果长度为 65 字节(包括 r、s 和恢复标志 v)。
用法:
通常与以太坊等兼容应用交互时使用。
zkLogin 是 Sui 推出的一种创新身份验证方式,它利用 零知识证明(ZKP) 技术,让用户可以通过熟悉的 Web2 登录方式(如 Google、Facebook 等)访问去中心化应用(DApps),同时保护隐私。以下是 zkLogin 的核心特点:
隐私保护:用户无需透露敏感信息(如电子邮件或身份信息),只需证明自己符合特定条件即可。
无缝体验:用户可以使用已有的 Web2 账户(如 Google 账号)直接登录 DApps,无需创建新的区块链账户。
去中心化:尽管使用了 Web2 的登录方式,zkLogin 仍然保持了区块链的去中心化特性,用户对自己的数据和资产拥有完全控制权。
无论使用哪种算法,Sui 都将公钥的字节数据进行哈希处理后,生成一个 32 字节的账户地址:
ED25519:直接对公钥进行哈希生成地址。
SECP256K1:对压缩公钥的字节进行哈希生成地址。
zkLogin:基于零知识证明生成地址,确保用户隐私。
哈希算法通常是 BLAKE2b-256。
Sui 使用特定方式区分加密算法的账户类型:
ED25519 地址:地址前缀标志为
0x00。SECP256K1 地址:地址前缀标志为
0x01。zkLogin 地址:地址前缀标志为
0x02。
这确保了网络可以正确识别签名算法并验证交易。
在交易签名中,Sui 使用多部分签名结构:
签名字节。
公钥(用于验证签名)。
签名类型标志(例如,ED25519、SECP256K1 或 zkLogin)。
在开发中,可以通过 Sui 提供的工具生成和管理密钥对。例如,使用 Sui CLI 初始化账户或生成密钥:
结果会显示密钥的类型(例如,ED25519)以及对应的账户地址。
交易 是区块链世界中的"操作指令"。它是与区块链交互的唯一方式。通过交易,你可以调用智能合约、部署新包、升级现有包,甚至改变区块链的状态。
每笔交易都明确指定了它操作的对象!交易由以下几个部分组成:
发送者:签署交易的账户。
命令列表:要执行的操作。
命令输入:命令的参数,可以是
pure(简单值,如数字或字符串)或object(交易将访问的对象)。Gas 对象:用于支付交易的
Coin对象。Gas 价格和预算:交易的成本。
交易输入分为两种类型:
纯参数:主要是基本类型,比如
bool、u8、address、String等。对象参数:交易将访问的对象或对象引用。对象参数必须是共享对象、冻结对象或交易发送者拥有的对象。
Sui 交易可以包含多个命令。每个命令可以是一个内置命令(如发布包)或对已发布包中函数的调用。命令按交易中列出的顺序执行,并且可以使用前一个命令的结果,形成一个链。交易要么整体成功,要么整体失败。
交易效果是交易对区块链状态的改变。具体来说,交易可以通过以下方式改变状态:
使用 Gas 对象支付交易费用。
创建、更新或删除对象。
发出事件。
交易执行的结果包括以下几个部分:
交易摘要:交易的哈希值,用于标识交易。
交易数据:交易中使用的输入、命令和 Gas 对象。
交易效果:交易的状态和"效果",包括对象更新、Gas 对象使用情况、交易成本以及交易发出的事件。
事件:交易发出的自定义事件。
对象变更:对对象的更改,包括 所有权变更。
余额变更:参与交易的账户的余额变化。
