1.在geth交互界面中无法使用clef的personal.unlockAccount解锁账户,但是可以使用personal.listWallets查看账户 2.在终端使用curl命令通过clef签名发送转账交易,有正确交易回显(包含v,r,s,hash等等),但是在geth交互界面中输入txpool.content无法查看到
#!/bin/bash
#cd Work/Chains/
#number of accounts to create
num_accounts=10
#create accounts with passwords in password.txt
declare -a addresses
for i in $(seq 1 $num_accounts)
do
output=$(geth account new --datadir /root/Work/Chains/node --password password.txt)
address=$(echo "$output" | grep -oP 'Public address of the key:\s+\K.*')
addresses+=($address)
done
#create a genesis.json
alloc=""
for i in $(seq 0 $(($num_accounts-1)))
do
alloc+="\"${addresses[$i]:2}\": { \"balance\": \"300000\" },"
done
#remove trailing comma
alloc=${alloc%?}
genesis="{
\"config\": {
\"chainId\": 20240430,
\"homesteadBlock\": 0,
\"eip150Block\": 0,
\"eip155Block\": 0,
\"eip158Block\": 0,
\"byzantiumBlock\": 0,
\"constantinopleBlock\": 0,
\"petersburgBlock\": 0,
\"istanbulBlock\": 0,
\"berlinBlock\": 0,
\"clique\": {
\"period\": 12,
\"epoch\": 30000
}
},
\"difficulty\": \"1\",
\"gasLimit\": \"1176000\",
\"extradata\": \"0x0000000000000000000000000000000000000000000000000000000000000000${addresses[0]:2}0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",
\"alloc\": {
$alloc
}
}"
echo "$genesis" > initBlock.json
#initialize the private blockchain
geth --datadir /root/Work/Chains/node --keystore /root/Work/Chains/node/keystore init initBlock.json
#!/bin/bash
# 启动一个新的 screen 会话,并在该会话中运行 expect 脚本
screen -dmS clef_session bash -c 'expect -f /root/Work/Chains/t.exp'
echo "Clef service is starting in a new screen session named 'clef_session'."
#!/usr/bin/expect -f
# 启动 clef 程序
spawn clef --chainid 20240430 --keystore /root/Work/Chains/node/keystore --configdir /root/Work/Chains/node/clef --http --http.addr 0.0.0.0 --http.port 8550
log_file -a /root/Work/Chains/clef_screen.log
# 处理交互
while {1} {
expect {
"Enter 'ok' to proceed:" {
send "ok\r"
exp_continue
}
"Approve? \\\[y/N\\\]:" {
send "y\r"
exp_continue
}
"Please enter the password for account 0x" {
send "123\r"
exp_continue
}
eof {
break
}
default {
# 处理所有未匹配的情况,避免输出未匹配信息
exp_continue
}
}
}
# 保持交互会话
interact
# start geth node
localhost_ip=$(hostname -I | awk '{print $1}')
account_count=$(ls -1q /root/Work/Chains/node/keystore | wc -l)
unlock_string=$(seq -s "," 0 $((account_count-1)))
nohup geth \
--datadir /root/Work/Chains/node \
--keystore /root/Work/Chains/node/keystore \
--networkid 20240430 \
--nat extip:$localhost_ip \
--netrestrict 192.168.0.0/16 \
--http \
--http.port 8545 \
--http.api eth,net,txpool,web3,clique,admin,les \
--port "30303" \
--syncmode "full" \
--unlock $unlock_string \
--password password.txt \
--miner.etherbase=${addresses[0]}
--bootnodes "enr:-KO4QNs5G4YVHuSKcVkYH5jkOkKEk04RyPaQqBIqlvdIJNPUd_1Z81qGkAJHn0x8OmSkYO4IhZ2uP0ly8G_9AmKjkwWGAY9H_s3og2V0aMfGhE0s8niAgmlkgnY0gmlwhMCoAASJc2VjcDI1NmsxoQPZTaDrjWqXcLwSVaDDk1CMCJxvGhs5P7SSr0afi-iUO4RzbmFwwIN0Y3CCdl-DdWRwgnZf" \
--allow-insecure-unlock \
--signer=./node/clef/clef.ipc \
--ws.port 8546 \
2>>./node/geth.log &
按照上面贴代码的顺序启动的脚本,c.sh,clef.sh,t.exp,g.sh 只在一个服务器上启动了这些脚本,只有一个节点被启动
在geth交互界面中无法使用clef的personal.unlockAccount解锁账户,但是可以使用personal.listWallets查看账户 这个图片是clef的文档截图 根据这个文档的操作
status的部分是"ok",不清楚代表的是解锁了还是没有解锁,和文档的不一样
对于解锁账户 图片也是来自于clef的文档
根据文档的操作
这个报错,对于personal.unlockAccount()里面使用其他参数和personal.newAccount()也有 Passphrase输入按照password.txt的来的
在终端使用curl命令通过clef签名发送转账交易,有正确交易回显(包含v,r,s,hash等等),但是在geth交互界面中输入txpool.content无法查看到 命令及回显
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"account_signTransaction","params":[{"from":"0x3802dFFC86F4B6D707F398B763775AF24E1FC07f","gas":"0x333","gasPrice":"0x1","nonce":"0x0","to":"0x89e05D9e2efD4E3AC34F84c6b161fd36CF03164F", "value":"0x12345", "data":"0x4401a6e40000000000000000000000000000000000000000000000000000000000000012"},"safeSend(address)"],"id":67}' http://localhost:8550/
上面这一张是clef的交互界面的交易回显(通过except处理好了交互) 回到geth的交互界面,txpool.content没有交易信息
(可能是我没有挖矿?但是设置挖矿收益账户也会失败)