hdwallet提供程序为用户

时间:2019-03-21 17:39:49

标签: javascript html ethereum solidity truffle

我创建了一个促进代币销售的智能合约。我希望用户能够按下一个按钮,该按钮会自动生成可将令牌发送到的ERC20钱包。

我正在使用松露HDWallet Provider和Infura。我不希望用户必须使用MetaMask或其他任何东西。我将使用用户生成的钱包的私钥在后端进行交易签名。

我将如何实现这一目标,以便为每个想要执行交易的新用户创建一个新的钱包?

1 个答案:

答案 0 :(得分:0)

这是允许我在按下按钮时创建钱包的代码。现在,我需要找到一种方法来存储这些钱包的凭据,以便我可以签署交易并将令牌传输给它们。

  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);