# Sui公链中的密码学：钱包规范 

By [SophonLabs](https://paragraph.com/@sophonlabs) · 2023-01-08

---

编译：_Alan｜SophonLabs_

我们的《Sui中的密码学》博文系列强调了在Sui网络上维护安全交易和可用性的技术。这个系列帮助开发者了解Sui的安全基础设施以及如何开发安全的去中心化应用。 Sui遵循加密货币行业广泛接受的钱包规范，如BIP-32（及其变体，SLIP-0010），BIP-44和BIP-39。这些规范已经成为加密货币行业的普遍现象，作为用户管理账户密钥的一种手段。 目前，Sui接受使用Ed25519或ECDSA Secp256k1的签名交易。在Sui钱包和SDK中，我们提供了一个灵活的接口来签署各种签署方案的交易。

密钥衍生方案
------

Sui遵循BIP-32来管理支持ECDSA Secp256k1签名方案的钱包。

BIP-32定义了分层的确定性钱包结构，以逻辑地关联一组钥匙。以这种方式对钥匙进行分组，减少了跟踪一个用户的大量私钥的开销。这种方法也让保管人在一个控制源下为每个用户账户分发不同的管理地址。

使用BIP-32将私钥的推导与公钥的推导解耦，实现了只看钱包的用例，即可以推导出一串公钥及其地址，而私钥可以保持离线签署。

Sui遵循SLIP-0010来管理支持Ed25519（EdDSA）签名方案的钱包。

我们使用SLIP-0010是因为BIP-32最初是为具有初阶组的ECDSA设计的，而Ed25519曲线是基于h×ℓ的组阶，其中h是一个小的协处理器，ℓ是一个252位的素数。这是一个高级的技术细节，但Ed25519签名标准对私钥的低位和高位都应用了比特钳制，这使得一些BIP-32模式与Ed25519不兼容。因此，SLIP-0010规定禁止从现有用户的公钥中衍生出新的公钥。SLIP-0010只支持所谓的 “加固的 “私人父钥匙到私人子钥匙的衍生。

密钥派生路径
------

虽然BIP-32在层次结构中指定了钱包的级别，但BIP-44进一步定义了衍生路径的五个级别及其确切含义：M / purpose’ / coin\_type’ / account’ / change / address\_index。在这个结构中，斜线表示层次结构中的新层次，或称子层。

目的层通常被设置为44，与BIP号码相对应。然而，在Sui中，目的层区分了不同的签名方案。44被设置为Ed25519，54被设置为ECDSA Secp256k1。虽然将目的级别设置为非44的值是不标准的，但使用目的字段来区分不同的签名方案是很常见的。例如，BIP-49和BIP-84被用来识别比特币的脚本类型。我们选择54来表示ECDSA Secp256k1，因为54下没有现有的BIP，避免与任何比特币标准混淆。

coin\_type 值是用所有其他加密货币的存储库来管理的。两个签名方案都使用Sui注册的coin\_type，784。

![](https://storage.googleapis.com/papyrus_images/fddeb8d3dee74ae81f782300e629c95a0aafce6e7b6244a8e26943708664e7b5.png)

账户级别通常用于在逻辑上分离用户账户和创建特定的账户类别。一些常见的使用情况包括：

*   保管人管理多个用户账户。
    
*   用户为特定目的指定账户，如捐款、储蓄和支出。
    

为了支持多账户，我们建议从零开始递增账户级别。 人们普遍认为，基于账户的货币只定义前三个层次，而基于UTXO的货币则增加了变化和地址层次的定义。因为Sui的面向对象的数据模型既不是UTXO也不是基于账户的（事实上它结合了两者），它采用了所有五个级别以获得最大的兼容性。

总结如下：
-----

![](https://storage.googleapis.com/papyrus_images/f1fd52c358e0e735b78b553508246dd8a685f97a4bef96db2f4ef7bb384c9821.png)

助记词支持
-----

一旦我们定义了从种子推导出主密钥的确定性方法，BIP-39就被引入，以使种子更容易被人阅读和记忆，使用记忆法。Sui接受来自BIP-39词表的12、15、18、21和24个词，这些词被适当地校验过，对应于128、160、192、224和256 bits的熵。

Sui的密钥管理
--------

Sui通过其Typescript SDK和命令行界面（CLI）支持密钥对生成和相关的助记符。该SDK提供额外的功能，包括交易签名和RPC集成。

具体步骤如下：

*   从助记符推导出一个密钥对
    
*   获取其地址
    
*   用它来签署一个序列化的类型化交易（或任何数据）
    
*   针对RPC提供者执行
    

![](https://storage.googleapis.com/papyrus_images/850d4ac61c27c57c0ec0ae7e3ff5ce196c4555cc534085b3aa5b99dfde3e0331.png)

命令行界面
-----

![](https://storage.googleapis.com/papyrus_images/5e4d4a686add04bd7df905e0af05357addc95be0172b73986178f37564640ebc.png)

先进的钱包架构
-------

钱包必须是安全的，但又便于其所有者访问。我们依靠行业标准来指导我们对用户钱包的设计，同时在探索不同的签名方案时保持敏捷和灵活。 除了我们目前支持的钱包规格外，我们还在不断创新钱包设计，使与Sui的互动更安全，更容易使用。我们将很快分享我们关于钱包预批准交易的设计。Sui钱包不需要一次一次地签署交易，而是让链上游戏变得实用，充分释放Sui网络上快速执行的潜力。

关于我们：
-----

SophonLabs（智子实验室）团队由密码极客，技术爱好者，分析师，区块链研究员等组成。专注区块链媒体与投研，**为WEB3赋能。**

联系我们：
-----

公众号：SophonLabs

Twitter：[https://twitter.com/SophonLabs](https://twitter.com/SophonLabs)

官方Blog：[https://blog.sophonlabs.io/](https://blog.sophonlabs.io/)

Email：[BD@sophonlabs.io](mailto:BD@sophonlabs.io)

![微信扫一扫关注我们，获取更多即时资讯和研报](https://storage.googleapis.com/papyrus_images/fc067eda1c48be45b652da022d5575b8c73407414ba3934a7608bfec4c3360ec.png)

微信扫一扫关注我们，获取更多即时资讯和研报

---

*Originally published on [SophonLabs](https://paragraph.com/@sophonlabs/sui-2)*
