Ethereum-Wallet-Dapp

私有開發鏈上未知的錢包地址

  • October 9, 2018

提前為長篇道歉。我是乙太坊的新手,不知道哪些細節很重要,哪些不重要。

我正在嘗試通過本書中的範例來了解 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 測試腳本。

引用自:https://ethereum.stackexchange.com/questions/60245