![](/img/trans.png)
[英]Calling a smart contract function using truffle/hdwallet-provider
[英]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.