首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Brownie不导出.env变量

Brownie不导出.env变量
EN

Stack Overflow用户
提问于 2021-11-24 21:49:57
回答 2查看 406关注 0票数 1

我正在学习一个教程,该教程使用python中的brownie来部署合同。如果要将契约部署到testnet (本例中为rinkeby),则程序应该从环境变量中获取私钥,但当尝试运行deploy.py脚本时,如下所示:

代码语言:javascript
复制
brownie run scripts/deploy.py --network rinkeby

我得到以下错误:

代码语言:javascript
复制
Running 'scripts/deploy.py::main'...
  File "brownie/_cli/run.py", line 50, in main
    return_value, frame = run(
  File "brownie/project/scripts.py", line 103, in run
    return_value = f_locals[method_name](*args, **kwargs)
  File "./scripts/deploy.py", line 10, in main
    deploy_fund_me()
  File "./scripts/deploy.py", line 5, in deploy_fund_me
    account = get_account()
  File "./scripts/helpful_scripts.py", line 19, in get_account
    return accounts.add(config["wallets"]["from_key"])
  File "brownie/network/account.py", line 142, in add
    w3account = web3.eth.account.from_key(private_key)
  File "eth_utils/decorators.py", line 18, in _wrapper
    return self.method(obj, *args, **kwargs)
  File "eth_account/account.py", line 250, in from_key
    key = self._parsePrivateKey(private_key)
  File "eth_utils/decorators.py", line 18, in _wrapper
    return self.method(obj, *args, **kwargs)
  File "eth_account/account.py", line 776, in _parsePrivateKey
    raise ValueError(
ValueError: The private key must be exactly 32 bytes long, instead of 0 bytes.

有关此错误的一些背景信息:我的brownie-config.yml目录中有一个.env文件,包含以下内容:

代码语言:javascript
复制
export PRIVATE_KEY={my_private_key}

其中{my_private_key}是我实际的十六进制私钥。

布朗尼-config.yml看起来是这样的:

代码语言:javascript
复制
dependencies:
  # - <organization/repo>@<version>
  - smartcontractkit/chainlink-brownie-contracts@1.1.1
compiler:
  solc:
    remappings:
      - '@chainlink=smartcontractkit/chainlink-brownie-contracts@1.1.1'

dotenv: .env

wallets:
    from_key: ${PRIVATE_KEY}

据我理解,brownie应该使用.env文件作为环境变量导出密钥,然后将其放入一些brownie文件中(可能在编译代码时?),在部署契约时,brownie将在哪里查找它。如果在执行代码之前手动导出此环境变量,它也不会更改任何内容。

P.S:似乎导致错误的函数:

代码语言:javascript
复制
def get_account():
    if network.show_active() == "development":
        return accounts[0]
    else:
        return accounts.add(config["wallets"]["from_key"])
EN

回答 2

Stack Overflow用户

发布于 2022-02-10 06:36:20

我也得到了同样的错误,我试图直接给私钥0x.在brownie-config.yaml文件中,它可以工作,但我认为这不是获取私钥的安全方法。

.env钱包: from_key: 0x.

票数 0
EN

Stack Overflow用户

发布于 2022-05-21 20:25:54

我也有一个类似的问题,在本教程中还没有到这一点.我的问题是,当我使用帐户行运行deploy.py脚本时,更新到:

代码语言:javascript
复制
def deploy_simple_storage():
    # account = accounts.load("Account")
    account = accounts.add(os.getenv("PRIVATE-KEY"))
    print(account)

而不是让正确的帐户打印,它生成一个新的一个新的助记符和帐户.

我的.env文件

代码语言:javascript
复制
export PRIVATE_KEY={My Private key prefixed w/ 0x}

我的布朗尼-config.yaml文件是:

代码语言:javascript
复制
dotenv: .env

当我创建一个测试脚本并只使用:

代码语言:javascript
复制
import os


def test():
print(os.getenv("PRIVATE-KEY"))


def main():
test()

我得到了以下结果:Browniev1.16.4- Python开发框架

BrownieSimpleStorageProject是一个活跃的项目。

推出'ganache-cli.cmd -端口8545 -天然气限制12000000 -帐户10 -硬叉伊斯坦布尔-助记布朗尼.

运行‘script\test.py::main’.没有终止本地RPC客户机..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70103360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档