Sui遵循加密貨幣行業廣泛接受的錢包規範,如BIP-32(及其變體,SLIP-0010),BIP-44和BIP-39。這些規範已經成為加密貨幣行業的普遍現象,作為用戶管理賬戶密鑰的一種手段。

目前,Sui接受使用Ed25519或ECDSA Secp256k1的簽名交易。在Sui錢包和SDK中,Sui提供了一個靈活的接口來簽署各種簽署方案的交易。

密鑰衍生方案

Sui遵循BIP-32來管理支持ECDSA Secp256k1簽名方案的錢包。

BIP-32定義了分層的確定性錢包結構,以邏輯地關聯一組鑰匙。以這種方式對鑰匙進行分組,減少了跟踪一個用戶的大量私鑰的開銷。這種方法也讓保管人在一個控制源下為每個用戶賬戶分發不同的管理地址。

使用BIP-32將私鑰的推導與公鑰的推導解耦,實現了只看錢包的用例,即可以推導出一串公鑰及其地址,而私鑰可以保持離線簽署。

Sui遵循SLIP-0010來管理支持Ed25519(EdDSA)簽名方案的錢包。

Sui使用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被用來識別比特幣的腳本類型。 Sui選擇54來表示ECDSA Secp256k1,因為54下沒有現有的BIP,避免與任何比特幣標準混淆。

coin_type 值是用所有其他加密貨幣的存儲庫來管理的。兩個簽名方案都使用Sui註冊的coin_type,784。

Sui公鏈中的密碼學:錢包規範

賬戶級別通常用於在邏輯上分離用戶賬戶和創建特定的賬戶類別。一些常見的使用情況包括:

  • 保管人管理多個用戶賬戶。

  • 用戶為特定目的指定賬戶,如捐款、儲蓄和支出。

為了支持多賬戶,Sui建議從零開始遞增賬戶級別。人們普遍認為,基於賬戶的貨幣只定義前三個層次,而基於UTXO的貨幣則增加了變化和地址層次的定義。因為Sui的面向對象的數據模型既不是UTXO也不是基於賬戶的(事實上它結合了兩者),它採用了所有五個級別以獲得最大的兼容性。

總結如下:

Sui公鏈中的密碼學:錢包規範

助記詞支持

一旦Sui定義了從種子推導出主密鑰的確定性方法,BIP-39就被引入,以使種子更容易被人閱讀和記憶,使用記憶法。 Sui接受來自BIP-39詞表的12、15、18、21和24個詞,這些詞被適當地校驗過,對應於128、160、192、224和256 bits的熵。

Sui的密鑰管理

Sui通過其Typescript SDK和命令行界面(CLI)支持密鑰對生成和相關的助記符。該SDK提供額外的功能,包括交易簽名和RPC集成。

具體步驟如下:

  • 從助記符推導出一個密鑰對

  • 獲取其地址

  • 用它來簽署一個序列化的類型化交易(或任何數據)

  • 針對RPC提供者執行

  • Sui公鏈中的密碼學:錢包規範

命令行界面

Sui公鏈中的密碼學:錢包規範

Sui先進的錢包架構

錢包必須是安全的,但又便於其所有者訪問。 Sui依靠行業標準來指導Sui對用戶錢包的設計,同時在探索不同的簽名方案時保持敏捷和靈活。除了Sui目前支持的錢包規格外,Sui還在不斷創新錢包設計,使與Sui的互動更安全,更容易使用。 Sui將很快分享Sui關於錢包預批准交易的設計。 Sui錢包不需要一次一次地簽署交易,而是讓鏈上游戲變得實用,充分釋放Sui網絡上快速執行的潛力。