您好我有一个本地区块链,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"
是否可以通过其他方式密封块,以便我不再需要解锁帐户?
答案 0 :(得分:0)
不幸的是,geth需要访问私钥来签署交易,因此您必须将其解锁,否则无法签名。
你可以做的是,让这个节点签名,并摆脱 --ipcpath geth.ipc --rpcapi'personal,db,eth,net,web3,txpool,miner' 相反,将rpc提供给另一个没有未锁定帐户的节点。
将此其他节点用于所有互动,并允许第一个节点签名。
干杯; 埃文