集团的Geth封锁没有解锁帐户

时间:2018-06-01 13:00:32

标签: geth

您好我有一个本地区块链,Geth客户端,2个节点和clique权威证明算法。

我用这个命令启动geth:

geth --datadir node2/ --syncmode 'full' --port 30312 
     --rpc --rpcport 8546 --rpccorsdomain "*" 
     --ipcpath geth.ipc --rpcapi 'personal,db,eth,net,web3,txpool,miner' 
     --bootnodes 'enode://702efed8e606...ad041b4371a91989@127.0.0.1:30310' 
     --networkid 2456 --gasprice '1' --mine 
     --unlock '0x46004DEAfddb60d11cA04501df8C52aE4679Be8f' --password password.txt

但由于解锁现在每个人都可以将以太网从此帐户转移到其他帐户

像这样:

const Web3 = require("web3");    
var web3Client = new Web3(new Web3.providers.HttpProvider("http://localhost:8546"));
await web3Client.eth.sendTransaction({
  from: "0x46004DEAfddb60d11cA04501df8C52aE4679Be8f", 
  to: "0xE77e5634A46153e1cfCa02350cf212BdbC18fbC6", 
  value: 23
});

但如果我从geth命令中删除--unlock,我就不能再封锁块了

WARN [06-01|14:44:52] Block sealing failed    err="authentication needed: password or unlock"

是否可以通过其他方式密封块,以便我不再需要解锁帐户?

1 个答案:

答案 0 :(得分:0)

不幸的是,geth需要访问私钥来签署交易,因此您必须将其解锁,否则无法签名。

你可以做的是,让这个节点签名,并摆脱 --ipcpath geth.ipc --rpcapi'personal,db,eth,net,web3,txpool,miner' 相反,将rpc提供给另一个没有未锁定帐户的节点。

将此其他节点用于所有互动,并允许第一个节点签名。

干杯; 埃文