Skip to main content
ArcBlock Community

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

shenxiuqiang
Support
discussionqa

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

14 replies

shenxiuqiang12 months ago

这是我通过助记词生成钱包的方法,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;
  }
shenxiuqiang12 months ago

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

Leermao12 months ago(edited)

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

shenxiuqiang12 months ago(edited)

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

shenxiuqiang12 months ago

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

Leermao12 months ago
shenxiuqiang12 months ago(edited)

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

image.png

Leermao12 months ago

image.png

应用的 DID

shenxiuqiang12 months ago(edited)

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

NateGu ⚡ vibe coder12 months ago

image.png

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

image.png

shenxiuqiang12 months ago

已经解决了

image.png

Leermao12 months ago

image.png

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

image.png

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

shenxiuqiang12 months ago

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

shenxiuqiang12 months ago

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

Reply