部署智能合约时的错误请求
Bad request when deploying smart contract
所以我目前正在尝试部署路由器智能合约。我一直在通过 erdpy contract build
构建它,这是成功的(我在 rust nightly 工具链上,因为智能合约需要它)。我现在正在尝试部署它,但我无法做到。我一直有来自 https://devnet-api.elrond.com/transaction/send
的 400 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. I've also been through the OpenAPI Spec or the documentation 寻找答案,但没有任何答案。此路由通常会返回错误消息,但对于这种特定情况,它不会。
一些其他合约,如 ping-pong
使用相同的 erdpy.json
配置正常工作。
我试过用参数 --verbose
部署吗?
应该是这样的(不确定语法,因为我在 phone)
erdpy --verbose contract deploy
在与对此问题感兴趣的人交谈后,我得到了以下命令:
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
文件,但我想您可以将文件上移以使命令使用它。
我也遇到了“错误请求”错误,我发现这是因为我的钱包是空的。将 xEGLD 添加到您的开发网络钱包:
- 转到https://devnet-wallet.elrond.com/faucet
- 使用您的 pem 文件登录/您通常用来登录的任何文件
- 点击左侧菜单中的“水龙头”选项
- 这应该会弹出一个模式,向您的钱包添加 10 xEGLD(您可以每 24 小时请求 10 xEGLD)
- 现在您可以 return 到终端和 运行
erdpy contract deploy
这对我有用,现在我得到了正确的输出。
在 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
}
}
}
所以我目前正在尝试部署路由器智能合约。我一直在通过 erdpy contract build
构建它,这是成功的(我在 rust nightly 工具链上,因为智能合约需要它)。我现在正在尝试部署它,但我无法做到。我一直有来自 https://devnet-api.elrond.com/transaction/send
的 400 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. I've also been through the OpenAPI Spec or the documentation 寻找答案,但没有任何答案。此路由通常会返回错误消息,但对于这种特定情况,它不会。
一些其他合约,如 ping-pong
使用相同的 erdpy.json
配置正常工作。
我试过用参数 --verbose
部署吗?
应该是这样的(不确定语法,因为我在 phone)
erdpy --verbose contract deploy
在与对此问题感兴趣的人交谈后,我得到了以下命令:
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
文件,但我想您可以将文件上移以使命令使用它。
我也遇到了“错误请求”错误,我发现这是因为我的钱包是空的。将 xEGLD 添加到您的开发网络钱包:
- 转到https://devnet-wallet.elrond.com/faucet
- 使用您的 pem 文件登录/您通常用来登录的任何文件
- 点击左侧菜单中的“水龙头”选项
- 这应该会弹出一个模式,向您的钱包添加 10 xEGLD(您可以每 24 小时请求 10 xEGLD)
- 现在您可以 return 到终端和 运行
erdpy contract deploy
这对我有用,现在我得到了正确的输出。
在 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
}
}
}