# 《Move 学习》地址、账户与交易:区块链世界的三剑客 **Published by:** [链上码农](https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888/) **Published on:** 2024-12-29 **URL:** https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888/move ## Content 大家好!我是你们的区块链技术向导,今天我们来聊聊区块链中的三个核心概念:地址(Address)、账户(Account) 和 交易(Transaction)。无论你是刚入门的小白,还是已经摸爬滚打了一段时间的开发者,这篇文章都会用最接地气的方式,带你轻松掌握这些概念。准备好了吗?Let's go! 💻 📍 地址(Address):区块链的"门牌号" 地址 就像是区块链世界里的"门牌号",用来唯一标识一个位置。它可以标识 包(Package)、账户(Account) 和 对象(Object)。地址的长度固定为 32 字节,通常以 0x 开头的十六进制字符串表示。而且,地址是大小写不敏感的,所以 0xABC 和 0xabc 是同一个地址。 这个地址就是一个标准的 32 字节地址,64 个字符,0x 开头。 保留地址:区块链的"VIP 专区" Sui 有一些 保留地址,专门用来标识一些标准包和对象。这些地址通常是简单的值,方便记忆和输入。比如,标准库的地址是 0x1。如果地址长度小于 32 字节,会在左边补零。 0x1 = 0x0000000000000000000000000000000000000000000000000000000000000001 一些常见的保留地址: 0x1:Sui 标准库的地址(别名 std) 0x2:Sui 框架的地址(别名 sui) 0x6:系统 Clock 对象的地址 💼 账户(Account):你的区块链"身份证" 账户 是你在区块链世界里的"身份证"。它由私钥生成,并通过 地址 来标识。账户可以拥有对象,还可以发送交易。每笔交易都有一个发送者,发送者就是通过地址来标识的。 Sui 使用 ED25519 和 SECP256K1 两种加密算法来管理账户和签名。此外,Sui 还支持一种创新的身份验证方式——zkLogin,它结合了 Web2 和 Web3 的优势,让用户可以通过熟悉的登录方法(比如 Google 登录)访问去中心化应用(DApps),同时保护隐私。 1. ED25519 描述:基于椭圆曲线的公钥签名算法,属于 Edwards 曲线家族。默认情况下,Sui 会使用 ED25519 来生成账户密钥对。 特点: 高效且安全,提供快速签名和验证性能。 私钥长度为 32 字节,公钥长度为 32 字节。 签名结果长度为 64 字节。 用法: 常用于高性能区块链的默认签名算法。 公钥生成账户地址的哈希(通常通过 BLAKE2b 或类似算法)。 2. SECP256K1 描述:基于 Koblitz 曲线的椭圆曲线签名算法,广泛用于比特币和以太坊等区块链。Sui 支持 SECP256K1 签名方案,适合与传统区块链账户体系互操作。 特点: 私钥长度为 32 字节,公钥长度为 33 字节(压缩形式)。 签名结果长度为 65 字节(包括 r、s 和恢复标志 v)。 用法: 通常与以太坊等兼容应用交互时使用。 3. zkLogin:Web2 与 Web3 的桥梁 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)以及对应的账户地址。 💸 交易(Transaction):区块链的"操作指令" 交易 是区块链世界中的"操作指令"。它是与区块链交互的唯一方式。通过交易,你可以调用智能合约、部署新包、升级现有包,甚至改变区块链的状态。 交易结构:区块链的"操作手册" 每笔交易都明确指定了它操作的对象!交易由以下几个部分组成: 发送者:签署交易的账户。 命令列表:要执行的操作。 命令输入:命令的参数,可以是 pure(简单值,如数字或字符串)或 object(交易将访问的对象)。 Gas 对象:用于支付交易的 Coin 对象。 Gas 价格和预算:交易的成本。 输入类型:交易的"食材" 交易输入分为两种类型: 纯参数:主要是基本类型,比如 bool、u8、address、String 等。 对象参数:交易将访问的对象或对象引用。对象参数必须是共享对象、冻结对象或交易发送者拥有的对象。 命令:交易的"操作步骤" Sui 交易可以包含多个命令。每个命令可以是一个内置命令(如发布包)或对已发布包中函数的调用。命令按交易中列出的顺序执行,并且可以使用前一个命令的结果,形成一个链。交易要么整体成功,要么整体失败。 交易效果:交易的"成果报告" 交易效果是交易对区块链状态的改变。具体来说,交易可以通过以下方式改变状态: 使用 Gas 对象支付交易费用。 创建、更新或删除对象。 发出事件。 交易执行的结果包括以下几个部分: 交易摘要:交易的哈希值,用于标识交易。 交易数据:交易中使用的输入、命令和 Gas 对象。 交易效果:交易的状态和"效果",包括对象更新、Gas 对象使用情况、交易成本以及交易发出的事件。 事件:交易发出的自定义事件。 对象变更:对对象的更改,包括 所有权变更。 余额变更:参与交易的账户的余额变化。 ## Publication Information - [链上码农](https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888/): Publication homepage - [All Posts](https://paragraph.com/@0x879edd015b63e424e37fc5f5fdb684ba93908888/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0x879edd015b63e424e37fc5f5fdb684ba93908888): Subscribe to updates