3

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

以下是部署的日志:

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"
        }
    }
}

我尝试部署的合同如下。我也通过OpenAPI Spec文档寻找答案,但没有任何内容。此路由通常返回错误消息,但对于这种特定情况,它不是。

其他一些合同,如在相同的配置ping-pong下正常工作。erdpy.json

4

4 回答 4

2

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

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文件,但我想您可以向上移动文件以使命令使用它。

于 2022-01-13T13:14:30.293 回答
1

我是否尝试过使用参数进行部署--verbose

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

于 2022-01-05T10:41:46.883 回答
0

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

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

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

于 2022-01-15T11:52:58.593 回答
0

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

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

例子

{
  "configurations": {
    "default": {
      "proxy": "https://devnet-api.elrond.com"
      "chainID": "D" <----- Delete this
    }
  },
  "contract":{
    "deploy":{
      <Other fields>
      "chain": "D" <----- Add this
    }
  }
}
于 2022-01-18T21:38:13.063 回答