验证合约源代码#

通过上传合约源代码,X Layer浏览器会将编译后的合约字节码和区块链上的字节码进行匹配,并将其显示在浏览器的合约页面中。 您可使用验证合约源代码 API,进行合约的快速验证,提高验证效率。合约验证的平均处理时间在 30-60s 之间。

请求路径#

POST
https://web3.okx.com/api/v5/xlayer/contract/verify-source-code

请求参数#

参数名类型是否必须描述
chainShortNameString公链缩写符号,例如 XLAYER
contractAddressString合约地址
contractNameString合约名称
sourceCodeString合约源代码;如果合约使用 imports,需要将代码连接成一个文件(即 flattening),可以使用 Solidity flatteners 工具SolidityFlattery(由@DaveAppleton开发)
codeFormatString代码格式,支持solidity-single-filesolidity-standard-json-inputVyper
compilerVersionString使用的编译器版本,如v0.7.6+commit.7338295fvyper:0.2.11,可在 X Layer 浏览器-合约验证查看支持的编译器版本;codeFormat为solidity-standard-json-input时非必填,其他必填
optimizationString编译合约时是否使用了优化,0无优化,1有优化;codeFormat为solidity-standard-json-input时非必填,其他必填
optimizationRunsString执行优化时运行代码的次数
contractAbiString合约ABI
evmVersionString编译合约的EVM版本,若编译时使用了默认版本无需填写;其他指定版本如:tangerineWhistlespuriousDragonbyzantium
licenseTypeString开源许可证类型
viaIrBol是否引入基于IR的代码生成器,请与编译时的设置保持一致;true / false,默认为false
libraryInfoArray合约中引用的库的信息;libraryName和libraryAddress需要进行一一匹配;最多支持10个不同的库对
> libraryNameString库名称
> libraryAddressString库地址,如0xCfE28868F6E0A24b7333D22D8943279e76aC2cdc

响应参数#

参数名类型描述
guidString若提交成功会返回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"
    ]
}