【问题标题】:Brownie deploy --- ValueError: Expecting value: line 1 column 1 (char 0)布朗尼部署 --- ValueError:期望值:第 1 行第 1 列(字符 0)
【发布时间】:2022-10-15 14:09:18
【问题描述】:

到目前为止,我是专家,但更像是一种爱好。 Brownie 中的部署脚本存在问题。运行脚本时,我得到一个简单的 ValueError: Expecting value: line 1 column 1 (char 0)。怀疑它可能与无法正确读取 csv 文件有关,但即使使用硬编码的“硬币”变量,我也会遇到同样的错误。我完全迷路了。

这是我的 deploy.py 代码和我得到的响应。任何提示将不胜感激。

import os

from brownie import bullzeye, accounts
from brownie.convert import to_address
from brownie.network.gas.strategies import GasNowStrategy
from pathlib import Path
import requests
import pandas as pd

PROJECT_DIR = Path(__file__).parent.parent
CHAIN_ID = 1
TOKENS_LIST_URL = f"https://apiv5.paraswap.io/tokens/{CHAIN_ID}"


# Fetch the token list if it doesn't exist
tokens_fp = PROJECT_DIR.joinpath(f"data/tokens-chain-{CHAIN_ID}.csv")
if not tokens_fp.exists():
    tokens_fp.parent.mkdir(parents=True, exist_ok=True)
    tokens = requests.get(TOKENS_LIST_URL).json()["tokens"]
    tokens_df = pd.DataFrame.from_records(tokens, index="address")
    tokens_df.index = tokens_df.index.map(to_address)
    tokens_df.to_csv(tokens_fp)
else:
    tokens_df = pd.read_csv(tokens_fp, index_col="address")

# acct = accounts.load(1)

tx_params = {
    "from": accounts.add(os.getenv("PRIVATE_KEY")),
    "gas_price": GasNowStrategy("standard"),
}

# Helper functions
def get_token_addresses(*symbols):
    """Get a list of token addresses given their symbols"""
    addresses = []
    for symbol in symbols:
        addr = tokens_df[tokens_df["symbol"] == symbol].index[0]
        addresses.append(to_address(addr))
    return addresses



def main():
    coins = get_token_addresses("USDT", "WBTC", "WETH")
    bullzeye.deploy(coins, tx_params)

我得到的回应是这样的:

brownie run scripts/deploy.py --network goerli
Brownie v1.19.1 - Python development framework for Ethereum

BullzEyeProject is the active project.

Running 'scripts/deploy.py::main'...
  File "brownie/_cli/run.py", line 51, in main
    return_value, frame = run(
  File "brownie/project/scripts.py", line 110, in run
    return_value = f_locals[method_name](*args, **kwargs)
  File "./scripts/deploy.py", line 46, in main
    bullzeye.deploy(coins, tx_params)
  File "brownie/network/contract.py", line 549, in __call__
    return tx["from"].deploy(
  File "brownie/network/account.py", line 510, in deploy
    receipt, exc = self._make_transaction(
  File "brownie/network/account.py", line 727, in _make_transaction
    raise VirtualMachineError(e) from None
  File "brownie/exceptions.py", line 93, in __init__
    raise ValueError(str(exc)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
  • 也许首先使用print()(和print(type(...))print(len(...)) 等)来查看代码的哪一部分被执行以及你在变量中真正拥有什么。它被称为"print debuging",它有助于查看代码真正在做什么。

标签: python brownie


【解决方案1】:

根据我有限的理解,当您调用 deploy() 时,“gas_price”仅支持整数。

帐户交易似乎确实支持气体策略对象,但我相信 deploy() 走的是不同的道路。 https://eth-brownie.readthedocs.io/en/v1.13.4/core-gas.html

对于 deploy(),_make_transaction() 在 brownie 的 account.py 中调用,它需要一个 int(以 Wei 表示)作为 gas_price。

这将起作用: bullzeye.deploy({'from': account, 'gas_price': 10000000})

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 2019-02-25
    • 2023-03-25
    • 2018-06-28
    • 2020-11-11
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多