如何获取Chainlink Oracle私钥以取回Kovan、BNB测试网剩余资金
Chainlink Oracle节点私钥提取操作步骤
第一步:定位加密私钥文件keys.json
keys.json默认存储路径和你的部署方式直接相关,可通过以下方式查找:
- Docker部署的官方节点:默认存储在你挂载的本地卷对应的
./chainlink/.chainlink/子目录下,若找不到可执行全局搜索命令:find / -name "keys.json" 2>/dev/null - 若全局搜索不到,可直接从运行中的节点容器内拷贝文件:
- 查看节点容器ID:
docker ps | grep chainlink - 进入容器内部:
docker exec -it <替换为你的容器ID> bash - 容器内默认存储路径为
/home/clnode/.chainlink/,在该路径下即可找到keys.json,拷贝到宿主机即可使用
- 查看节点容器ID:
第二步:用secrets文件解密获取明文私钥
你找到的secrets文件是节点的密码存储文件,里面存的是keystore解密密码,不是私钥本身,需用该密码解密keys.json才能拿到私钥:
- 提取解密密码:直接打开secrets文件,第一行内容就是解密密码,注意去掉首尾多余的空格、换行符
- 离线解密私钥:可使用eth-account工具做本地离线解密,操作如下:
- 先安装依赖:
pip install eth-account - 运行解密脚本:
from eth_account import Account import json # 读取keys.json和secrets文件 with open("替换为你的keys.json文件路径") as f: keystore_json = json.load(f) with open("替换为你的secrets文件路径") as f: decrypt_pwd = f.read().strip() # 匹配对应测试网的钱包地址,取出对应的keystore条目 target_addr = "替换为你的节点测试网钱包地址,小写不带0x也可" target_keystore = next(item for item in keystore_json if item["address"].lower() == target_addr.lower().strip("0x")) # 解密得到明文私钥 private_key = Account.decrypt(target_keystore, decrypt_pwd).hex() print("私钥:", private_key) - 先安装依赖:
- 解密全程请断开网络操作,不要将keystore、secrets文件上传到任何公开网络环境,避免资产被盗
内容的提问来源于stack exchange,提问作者DND
相关产品推荐
相关产品推荐

