跳到主要内容

DID Wallet 助记词生成钱包规则是什么?

shenxiuqiang
支持
discussionqa

DID Wallet 助记词生成钱包规则是什么?我的应用想通过助记词生成 DID 和钱包的相同,可以在钱包内管理资产。

14 条回复

shenxiuqiang13个月前

这是我通过助记词生成钱包的方法,DID Wallet 如何通过助记词生成钱包呢?

javascriptCopy
static getAddressFromMnemonic(mnemonic: string): string {
    if (!this.validateMnemonic(mnemonic)) {
      throw new Error('Invalid mnemonic');
    }
    const secretKey = this.generateSecretKeyFromMnemonic(mnemonic);
    const wallet = fromSecretKey(secretKey);
    return wallet.address;
  }
  
  private static generateSecretKeyFromMnemonic(mnemonic: string): Uint8Array {
    const seed = bip39.mnemonicToSeedSync(mnemonic);
    const hash = Hasher.SHA3.hash256('DIDMAIL').toString('hex');
    const s1 = parseInt(hash.slice(0, 8), 16) % 2147483648; // 2^31
    const s2 = parseInt(hash.slice(8, 16), 16) % 2147483648; // 2^31
    const derivationPath = `m/44'/260'/${s1}'/${s2}'/0'`;
    const { key } = ed25519.derivePath(derivationPath, seed.toString('hex'));
    const keyPair = nacl.sign.keyPair.fromSeed(toUint8Array(key));
    return keyPair.secretKey;
  }
shenxiuqiang13个月前

希望在 https://www.arcblock.io/docs/did-wallet/zh/what-is-mnemonic-code 补充 DID 钱包生成 did 的相关说明

Leermao13个月前(edited)

不需要手动操作吧,你是想管理应用内资产吗?如果你是新安装的应用,会需要钱包去签名,此时在钱包内会管理对应的应用账户 DID, 也就是此时在钱包内就可以管理应用的资产

shenxiuqiang13个月前(edited)

DIDMail 需要使用私钥进行邮件的加密解密,所以并不是通过钱包生成的账户,钱包生成的账户无法使用私钥。可以理解 DIDMail 客户端也是一个钱包,但是和 DIDWallet 生成的 did 不同。

shenxiuqiang13个月前

但是我期望能够相同,这样在钱包中可以查询到交易、NFT,可以看到收到“邮件”的通知

shenxiuqiang13个月前(edited)

我是期望通过助记词在 DIDMail 产生的 DID,和DID Wallet钱包通过导入助记词生成钱包地址相同,并不是扩展 did 。 DID Wallet 生成 DID 的时候这个 appDid 我是不知道的。我的意思就是想知道这个具体值是什么。

image.png

Leermao13个月前

image.png

应用的 DID

shenxiuqiang13个月前(edited)

我的意思是钱包通过助记词生成 DID 的规则,不是应用生 DID 的规则

image.png

钱包是按照这个方式来派生的,你要的 appDid 就是这个地方的值,你到应用后台可以看到

image.png

shenxiuqiang13个月前

已经解决了

image.png

Leermao13个月前

image.png

安装新应用是,此时就会有这个提示,告诉你成为管理者

image.png

此时引导会告诉你在做什么

shenxiuqiang13个月前

ETH 通过助记词可以生成唯一的地址,ArcBlock 的 DID 不同应用可以生成不同的地址,但是也应该有一个以 DIDWallet 为标准的默认唯一地址,方便类似 DIDMail 这样用到私钥的应用,可以同时在钱包管理账户。

shenxiuqiang13个月前

还有一个建议,是否可以考虑用户通过 DID Wallet 登录应用的时候,可以让用户选择是使用默认账户登录,还是按照应用的规则生成新的 DID。

回复