簡體   English   中英

hdwallet 提供商為用戶創建錢包

[英]hdwallet provider create wallet for user

我創建了一個促進代幣銷售的智能合約。 我希望用戶能夠按下一個按鈕,自動生成一個可以發送代幣的 ERC20 錢包。

我正在使用 truffle HDWallet Provider 和 Infura。 我不希望用戶必須使用 MetaMask 或其他任何東西。 我將使用用戶生成的錢包的私鑰在后端簽署交易。

我將如何實現這一點,以便為每個想要執行交易的新用戶創建一個新錢包?

它非常簡單,只需創建一個 HDWalletProvider 並且provider.addresses具有您可以使用的所有帳戶:

這是代碼:

const createWallet =  function(_providerUrl) {
    const mnemonicPhrase = bip39.generateMnemonic()
    let provider = new HDWalletProvider({
        mnemonic: {
            phrase: mnemonicPhrase
        },
        providerOrUrl: "http://localhost:8545"
    });
    return provider.addresses
}

地址有帳戶

這是允許我按下按鈕創建錢包的代碼。 我現在需要找到一種方法來存儲這些錢包的憑證,以便我可以簽署交易並將令牌轉移給他們。

  var bip39 = require('bip39');
  const EthereumUtil = require('ethereumjs-util');
  const hdkey = require('hdkey');

  const mnemonic = bip39.generateMnemonic(); //generates string
  const seed = bip39.mnemonicToSeed(mnemonic); //creates seed buffer

  const root = hdkey.fromMasterSeed(seed);
  const masterPrivateKey = root.privateKey.toString('hex');

  const addrNode = root.derive("m/44'/60'/0'/0/0");
  const pubKey = EthereumUtil.privateToPublic(addrNode._privateKey);
  const addr = EthereumUtil.publicToAddress(pubKey).toString('hex');
  const address = EthereumUtil.toChecksumAddress(addr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM