【问题标题】:Bad request when deploying smart contract部署智能合约时的错误请求
【发布时间】:2022-01-01 17:46:59
【问题描述】:

所以我目前正在尝试部署路由器智能合约。我一直在通过erdpy contract build 构建它,它已经成功(我正在使用 rust nightly 工具链,因为智能合约需要它)。我现在正在尝试部署它,但我无法做到。我一直有来自https://devnet-api.elrond.com/transaction/send400 BadRequest

以下是部署日志:

erdpy contract deploy
INFO:accounts:Account.sync_nonce()
INFO:accounts:Account.sync_nonce() done: 0
INFO:cli.contracts:Contract address: erd1qqqqqqqqqqqqqpgqzqv7kk893c3ftwgaekvvv9whpqcfn4kazqxq3mud36
INFO:transactions:Transaction.send: nonce=0
CRITICAL:cli:Proxy request error for url [https://devnet-api.elrond.com/transaction/send]: {'statusCode': 400, 'message': 'Bad Request'}

这里是erdpy.json用来配置命令:

{
    "configurations": {
        "default": {
            "proxy": "https://devnet-api.elrond.com",
            "chainID": "D"
        }
    },
    "contract":{
        "deploy":{
            "verbose": true,
            "bytecode": "output/router.wasm",
            "recall-nonce": true,
            "nonce": 1,
            "pem": "../../../wallets/owner/wallet-owner.pem",
            "gas-limit": 600000000,
            "send": true,
            "outfile": "deploy-testnet.interaction.json"
        }
    }
}

我尝试部署的合约是following。我也通过OpenAPI Specdocumentation 寻找答案,但什么也没有。此路由通常返回错误消息,但对于这种特定情况,它不是。

ping-pong 这样的其他一些合约在同样的erdpy.json 配置下也能正常工作。

【问题讨论】:

    标签: elrond


    【解决方案1】:

    在与对此问题感兴趣的人交谈后,我得到了以下命令:

    erdpy --verbose contract deploy --project=$PROJECT_NAME --pem="wallet-owner.pem" --gas-limit=600000000 --proxy="https://devnet-gateway.elrond.com" --outfile="elrond.workspace.json" --recall-nonce --send --chain="D"

    $PROJECT_NAME替换为你的合约文件夹(你需要比你的智能合约文件夹高一级)。

    它不会使用elrond.json 文件,但我想你可以向上移动文件以使命令使用它。

    【讨论】:

      【解决方案2】:

      我有没有尝试使用参数--verbose 进行部署?

      应该是这样的(不确定语法,因为我在打电话) erdpy --verbose contract deploy

      【讨论】:

      • 是的,事实上,如果您查看我提供的配置,您可以在.contract.deploy.verbose 中看到它。我提供的日志已经很详细了。此外,我手动尝试了 HTTP 请求(来自邮递员),它给出了相同的答案:没有太多信息的错误请求。
      【解决方案3】:

      我也收到“错误请求”错误,我发现这对我来说是因为我的钱包是空的。要将 xEGLD 添加到您的 devnet 钱包:

      1. 转到https://devnet-wallet.elrond.com/faucet
      2. 使用您的 pem 文件/您通常用于登录的任何文件登录
      3. 点击左侧菜单中的“水龙头”选项
      4. 这应该会弹出一个向您的钱包添加 10 xEGLD 的模式(您可以每 24 小时请求 10 xEGLD)
      5. 现在您可以返回终端并运行erdpy contract deploy

      这对我有用,现在我得到了正确的输出。

      【讨论】:

        【解决方案4】:

        在 Elrond Docs 建议的 erdpy.json 中,configuration.default 对象内有一个 "chainID": "D" 变量。

        删除这个并在contract.deploy里面添加这个:"chain": "D"

        示例

        {
          "configurations": {
            "default": {
              "proxy": "https://devnet-api.elrond.com"
              "chainID": "D" <----- Delete this
            }
          },
          "contract":{
            "deploy":{
              <Other fields>
              "chain": "D" <----- Add this
            }
          }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-22
          • 2022-08-05
          • 2021-10-09
          • 2020-01-28
          • 2022-12-06
          • 2019-12-12
          • 2021-04-20
          • 2022-11-01
          相关资源
          最近更新 更多