Ethereum-Wallet-Dapp
私有開發鏈上未知的錢包地址
提前為長篇道歉。我是乙太坊的新手,不知道哪些細節很重要,哪些不重要。
我正在嘗試通過本書中的範例來了解 dapp 。我的系統是基於 Windows 10 的。這本書告訴我首先要同步一個乙太坊節點,我使用的是
geth --datadir d:\Ethereum\geth
這不是我的
%APPDATA
目錄(該驅動器太小而無法承載節點)。所以這很成功。下一步是創建和配置一個私有開發鏈,我使用這個:
geth --dev --datadir D:\SampleDapp\privatenet --ipcpath D:\Ethereum\geth.ipc --networkid 45 --rpc --rpcapi web3,net,eth,personal --rpccorsdomain "*" --mine console
這本書告訴我,要讓 Mist 與 IPC 文件互動,它必須位於主節點,因此我這樣設置。
到現在為止還挺好。接下來我在 Solidity 中創建了一個簡單的合約,它可以成功編譯。現在我們開始部署,書上說是用這個 Node.js 腳本完成的:
var Web3 = require('web3'); var fs = require('fs'); var exec = require('child_process').execSync; var web3 = new Web3(); web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); var walletAddress = web3.eth.accounts[0]; console.log(walletAddress); web3.personal.unlockAccount(walletAddress, process.argv[2]); var abi = fs.readFileSync('bin/peerbet.sol:Bet.abi'); var PeerBet = web3.eth.Contract(abi); var compiled = '0x' + fs.readFileSync('bin/Bet.bin'); var peerbet = PeerBet.new({ from: walletAddress, data: compiled, gas: 40e5, gasPrice: 20e9 }, function (e, contract) { if (e) console.log(e); if (typeof contract.address !== 'undefined') { console.log('Contract mined! address: ' + contract.address + ' transaction hash: ' + contract.transactionHash); fs.writeFileSync('contract_address', contract.address); } });
這就是問題所在。找到的錢包地址
web3.eth.accounts[0]
是我以前從未見過的。我的系統上有兩個錢包(一個由 Mist 設置,一個由 MetaMask 設置),但這些地址都不對應我在此腳本中獲得的地址。因為我不知道錢包地址來自哪裡,所以我不知道它的私鑰、密碼、密碼或其他什麼。所以,有兩個問題:這個錢包地址是從哪裡來的,我需要提供什麼作為開始web3.personal.unlockAccount()
工作的論據?謝謝。
這兩個帳戶必須來自您的開發節點 ->
D:\SampleDapp\privatenet\keystore
很可能您在某個時候創建了它們,現在您已經不記得了。
無論如何,您可以簡單地重新創建數據目錄。只需刪除
D:\SampleDapp\privatenet
並再次呼叫該geth --dev ...
命令。在控制台上使用personal.newAccount()
. 然後重新執行你的 nodejs 測試腳本。