使用Brownie部署合约时遇‘Non-hexidecimal digit found’错误求助
解决「Non-hexidecimal digit found」私钥环境变量错误
核心问题排查与解决步骤
你遇到的错误大概率是环境变量设置格式错误或读取时携带多余字符导致的,以下是针对性修复方案:
1. 修正环境变量设置格式
export命令中等号前后不能有空格,这是你所有尝试中的共性问题,正确设置方式如下:
- 不带引号无
0x前缀:export PRIVATE_KEY=e7fe227cfb7cb722e7c016aefa0f34e1c17767f708d6b1071d0ee8f88550eaa4 - 带引号无
0x前缀:export PRIVATE_KEY='e7fe227cfb7cb722e7c016aefa0f34e1c17767f708d6b1071d0ee8f88550eaa4' - 带引号加
0x前缀:export PRIVATE_KEY='0xe7fe227cfb7cb722e7c016aefa0f34e1c17767f708d6b1071d0ee8f88550eaa4'
若使用.env文件,同样要保证等号前后无空格:
PRIVATE_KEY=e7fe227cfb7cb722e7c016aefa0f34e1c17767f708d6b1071d0ee8f88550eaa4
2. 验证环境变量读取结果
设置完成后,在终端执行以下命令确认变量值纯净(无空格、引号残留):
echo $PRIVATE_KEY
输出应为纯私钥字符串,无任何多余字符。
3. 修正部署脚本语法
你当前的部署脚本存在引号不匹配问题,需修正为:
account = accounts.add(config["wallets"]["from_key"])
4. 兼容私钥前缀格式
Brownie的accounts.add()支持带0x和不带0x的私钥,若环境变量无误仍报错,可在脚本中手动处理前缀:
private_key = config["wallets"]["from_key"].strip().removeprefix("0x") account = accounts.add(private_key)
内容的提问来源于stack exchange,提问作者smarsbyi
相关产品推荐
相关产品推荐

