Sui 遵循加密货币行业广泛接受的钱包规范,如 BIP-32 (及其变体,SLIP-0010 ),BIP-44 和 BIP-39 。这些规范已经成为加密货币行业的普遍现象,作为用户管理账户密钥的一种手段。
目前,Sui 接受使用 Ed 25519 或 ECDSA Secp 256 k 1 的签名交易。在 Sui 钱包和 SDK 中,Sui 提供了一个灵活的接口来签署各种签署方案的交易。
Sui 遵循 BIP-32 来管理支持 ECDSA Secp 256 k 1 签名方案的钱包。
BIP-32 定义了分层的确定性钱包结构,以逻辑地关联一组钥匙。以这种方式对钥匙进行分组,减少了跟踪一个用户的大量私钥的开销。这种方法也让保管人在一个控制源下为每个用户账户分发不同的管理地址。
使用 BIP-32 将私钥的推导与公钥的推导解耦,实现了只看钱包的用例,即可以推导出一串公钥及其地址,而私钥可以保持离线签署。
Sui 遵循 SLIP-0010 来管理支持 Ed 25519 (EdDSA)签名方案的钱包。
Sui 使用 SLIP-0010 是因为 BIP-32 最初是为具有初阶组的 ECDSA 设计的,而 Ed 25519 曲线是基于 h×ℓ的组阶,其中 h 是一个小的协处理器,ℓ是一个 252 位的素数。这是一个高级的技术细节,但 Ed 25519 签名标准对私钥的低位和高位都应用了比特钳制,这使得一些 BIP-32 模式与 Ed 25519 不兼容。因此,SLIP-0010 规定禁止从现有用户的公钥中衍生出新的公钥。SLIP-0010 只支持所谓的 "加固的 "私人父钥匙到私人子钥匙的衍生。
目的层通常被设置为 44 ,与 BIP 号码相对应。然而,在 Sui 中,目的层区分了不同的签名方案。44 被设置为 Ed 25519 , 54 被设置为 ECDSA Secp 256 k 1 。虽然将目的级别设置为非 44 的值是不标准的,但使用目的字段来区分不同的签名方案是很常见的。例如,BIP-49 和 BIP-84 被用来识别比特币的脚本类型。Sui 选择 54 来表示 ECDSA Secp 256 k 1 ,因为 54 下没有现有的 BIP,避免与任何比特币标准混淆。
coin_type 值是用所有其他加密货币的存储库来管理的。两个签名方案都使用 Sui 注册的 coin_type, 784 。
保管人管理多个用户账户。
用户为特定目的指定账户,如捐款、储蓄和支出。
为了支持多账户,Sui 建议从零开始递增账户级别。人们普遍认为,基于账户的货币只定义前三个层次,而基于 UTXO 的货币则增加了变化和地址层次的定义。因为 Sui 的面向对象的数据模型既不是 UTXO 也不是基于账户的(事实上它结合了两者),它采用了所有五个级别以获得最大的兼容性。
Sui 通过其 Typescript SDK 和命令行界面(CLI)支持密钥对生成和相关的助记符。该 SDK 提供额外的功能,包括交易签名和 RPC 集成。
具体步骤如下:
从助记符推导出一个密钥对
获取其地址
用它来签署一个序列化的类型化交易(或任何数据)
针对 RPC 提供者执行
命令行界面