验证合约源代码#
通过上传合约源代码,X Layer浏览器会将编译后的合约字节码和区块链上的字节码进行匹配,并将其显示在浏览器的合约页面中。 您可使用验证合约源代码 API,进行合约的快速验证,提高验证效率。合约验证的平均处理时间在 30-60s 之间。
请求路径#
POST
https://web3.okx.com/api/v5/xlayer/contract/verify-source-code请求参数#
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| chainShortName | String | 是 | 公链缩写符号,例如 XLAYER |
| contractAddress | String | 是 | 合约地址 |
| contractName | String | 是 | 合约名称 |
| sourceCode | String | 是 | 合约源代码;如果合约使用 imports,需要将代码连接成一个文件(即 flattening),可以使用 Solidity flatteners 工具SolidityFlattery(由@DaveAppleton开发) |
| codeFormat | String | 是 | 代码格式,支持solidity-single-file、solidity-standard-json-input、Vyper |
| compilerVersion | String | 否 | 使用的编译器版本,如v0.7.6+commit.7338295f、vyper:0.2.11,可在 X Layer 浏览器-合约验证查看支持的编译器版本;codeFormat为solidity-standard-json-input时非必填,其他必填 |
| optimization | String | 否 | 编译合约时是否使用了优化,0无优化,1有优化;codeFormat为solidity-standard-json-input时非必填,其他必填 |
| optimizationRuns | String | 否 | 执行优化时运行代码的次数 |
| contractAbi | String | 否 | 合约ABI |
| evmVersion | String | 否 | 编译合约的EVM版本,若编译时使用了默认版本无需填写;其他指定版本如:tangerineWhistle,spuriousDragon,byzantium |
| licenseType | String | 否 | 开源许可证类型 |
| viaIr | Bol | 否 | 是否引入基于IR的代码生成器,请与编译时的设置保持一致;true / false,默认为false |
| libraryInfo | Array | 否 | 合约中引用的库的信息;libraryName和libraryAddress需要进行一一匹配;最多支持10个不同的库对 |
| > libraryName | String | 否 | 库名称 |
| > libraryAddress | String | 否 | 库地址,如0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc |
响应参数#
| 参数名 | 类型 | 描述 |
|---|---|---|
| guid | String | 若提交成功会返回GUID,可根据该GUID查询验证结果 |
请求示例#
shell
curl --location --request POST 'https://web3.okx.com/api/v5/xlayer/contract/verify-source-code' \
--header 'OK-ACCESS-KEY: 37c541a1-****-****-****-10fe7a038418' \
--header 'OK-ACCESS-SIGN: leaV********3uw=' \
--header 'OK-ACCESS-PASSPHRASE: 1****6' \
--header 'OK-ACCESS-TIMESTAMP: 2023-10-18T12:21:41.274Z' \
--header 'Content-Type: application/json' \
--data '{
"chainShortName":"XLAYER",
"contractAddress":"0x9Dca580D2c8B8e19e9d77345a5b4C2820B25b386",
"contractName":"HelloWorld",
"sourceCode":"pragma solidity ^0.7.6;↵contract HelloWorl {↵ string public greet = '\''Hello Worl!'\'';↵}",
"codeFormat":"solidity-single-file",
"compilerVersion":"v0.7.6+commit.7338295f",
"optimization":"1",
"optimizationRuns":"200",
"contractAbi":"0xfce353f66162630000000000000000000000000",
"evmVersion":"tangerineWhistle",
"viaIr":false,
"libraryInfo":[
{
"libraryName":"libraryName1",
"libraryAddress":"0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc"
},
{
"libraryName":"libraryName2",
"libraryAddress":"0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc"
},
{
"libraryName":"libraryName3",
"libraryAddress":"0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc"
}
]
}'
响应示例#
json
{
"code": "0",
"msg": "",
"data": [
"eb5c06099d3841359d398541166343fe"
]
}
