跳至主要内容
本页面使用机器翻译自英语,可能包含错误或不清楚的语言。如需最准确的信息,请参阅英文原文。由于更新频繁,部分内容可能与英文原文有出入。请加入我们在 Crowdin 上的努力,帮助我们改进本页面的翻译。 (Crowdin translation page, Contributing guide)

如何使用区块探索器验证智能合约

导言​

通常情况下,智能合约的部署者是唯一能接触到实际部署代码的一方,在部署者验证之前,公众无法读取合约的源代码。然而,这正是合约验证作为智能合约开发周期中一个重要步骤的作用所在,因为它有助于提高已部署合约的透明度(对用户而言)、便利性(对开发者而言)和安全性。

不过,一旦智能合约得到验证,Kaiascan 和 OKX Kaia Explorer 等区块探索器也可以让公众使用区块探索器的用户界面与合约的公共方法进行交互。除此之外,公众还可以直接访问经过验证的合同源代码。

在本指南中,我们将了解如何使用区块探索器验证 Kaia 网络上部署的智能合约。

先决条件​

开始​

在本指南中,我们将介绍如何在 Kaia 生态系统中的区块资源管理器上验证单个合约和多部分合约,即

废话不多说,让我们开始吧!

部署单一合同​

要验证智能合约,首先需要在目标网络上部署合约。因此,在本指南中,我们将把合同部署到 Kaia Kairos Testnet。此外,在本教程中,我们将在 Remix IDE 上部署一个名为 "Counter.sol "的简单计数器合约。代码如下所示:


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Counter {
uint256 public count;
constructor(uint256 _initialCount) {
count = _initialCount;
}
function incrementCounter() public {
count++;
}
function decrementCounter() public {
count--;
}
function resetCounter() public {
count = 0;
}
}

备注

您可以查看此页面,了解在 Kaia Kairos Testnet 上使用 libraries 部署智能合约的教程。您也可以使用 Hardhat、Foundry、Remix 等开发工具或其他工具(如果愿意),将智能合约部署到 Kaia Kairos Testnet。

单一合同核查参数​

在区块探索器上验证合约需要一些参数,在部署智能合约时必须考虑这些参数。以下是与合同编译器和部署有关的一些细节,以便成功验证合同:

Remix IDE :

  • 在 Remix IDE 上,导航至Solidity 编译器选项卡。

    • 观察用于编译和部署合同的 ** 编译器版本**。
    • 注意合同中使用的开源许可类型。这意味着在 Solidity 源文件开头使用的 SPDX 许可证标识符。在 Counter.sol 文件中,我们使用了 // SPDX-License-Identifier:MIT
    • 注意用于部署合同的 EVM 版本。
    • (可选)如果在编译过程中启用了优化,请注意优化运行参数的值

  • 在 Remix IDE 上,导航至 Kaia 选项卡。

    • (可选) 如果合约构造函数方法接受参数,请注意构造函数参数的ABI-编码形式
    • 成功部署后,在已部署合约选项卡上记下智能合约的合约地址。

部署多部分合同​

值得注意的是,部署多部分合同的步骤与部署单部分合同的步骤相同。在本指南中,我们将部署一个名为 airdropToken.sol 的简单 KIP7 空投合约。代码如下所示:


//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@kaiachain/contracts/KIP/token/KIP7/KIP7.sol";
import "@kaiachain/contracts/access/Ownable.sol";
// the creator of the project mints certian amount of fungible tokens directly to a certain selection of wallets.
contract TokenAirdrop is KIP7, Ownable {
constructor() KIP7("Token Aidrop Demo", "TAD") {
}
// Airdrop Token
function airdropTokens(address[] calldata wAddresses, uint[] calldata tAmount) public onlyOwner {
require(wAddresses.length == tAmount.length, "Must be same lenght");
for (uint256 i = 0; i < wAddresses.length; i++) {
_mintSingleTokens(wAddresses[i], tAmount[i]);
}
}
function _mintSingleTokens(address wAddress, uint amount) private {
_mint(wAddress, amount);
}
function supportsInterface(bytes4 interfaceId)
public
view
virtual
override
returns (bool)
{
return
super.supportsInterface(interfaceId);
}
}

多部分合同核查参数​

验证多部分合同的参数与验证单部分合同的参数相同。但是,由于它们是由多个从属合同组成的,我们需要将合同的所有从属关系预处理成一个单一的 solidity 文件。这种预处理通常被称为智能合约扁平化。

因此,我们必须将合约扁平化,以便在区块资源管理器上使用新的扁平化 Solidity 文件进行验证。

Remix IDE:

  • 在 Remix IDE 上,导航至文件资源管理器选项卡。

    • 在合同文件夹下选择新创建的合同
    • 点击或用双指轻点,即可查看合同上的所有可用命令。
    • 选择 ** 压平**

    • 一旦代码被扁平化,你将看到一个名为 airdropTokens_flattened.sol 的新合约。

备注

有不同的工具可以将多部分智能合约扁平化为一个单一的 Solidity 文件,如 Hardhat Flattener。请参阅相关智能合约扁平化工具的文档,了解更详细的使用说明。

核实合同​

在获得所有验证参数后,我们将在本节中详细介绍在区块资源管理器上验证单一智能合约(Counter.sol)和多部分智能合约(airdropTokens.sol)的步骤。

Kaiascan​

要在 Kaiascan 上验证单个合同和多部分合同,请浏览合同提交申请页面。

备注

目前,Kaiascan 上的合同验证还处于测试阶段。

验证单一合同​

  1. 填写已部署合同的合同地址 (Counter.sol)
  2. 选择 "Counter.sol "示例使用的编译器版本
  3. 选择用于 "Counter.sol "示例的开源许可类型。在 "Counter.sol "示例中,选择 "MIT License (MIT)" 选项。如果没有使用,请选择 无许可证(无)
  4. 确保从 Remix IDE 下载 "Counter.sol",并将其上载到**源代码(Solidity 文件)**字段中。
  5. 为合同选择 EVM 版本。以 "Counter.sol "为例,选择 "伊斯坦布尔"选项。
  6. 如果在编译过程中启用了优化,则为优化选择真,并在优化运行下填写运行次数为200。
  7. (可选)要获取该字段的 ABI 编码构造函数参数,请访问 abi.hashex.org,获取下图所示的编码数据:

  1. 点击验证和发布按钮开始验证。

  1. 验证完成后,您将收到提交成功信息。现在,您可以在资源管理器搜索栏中粘贴合同地址,查看合同源代码、合同 ABI、创建代码和ABI 编码值。

验证多部分合同​

在 Kaiascan 验证多部分合同的步骤与验证单个合同相同。不过,需要注意的是,我们将把 "airdropToken_flattened.sol "文件复制并粘贴到**下面的 "输入 Solidity 合同代码 "**字段,因为 Kaiascan 目前不支持上传文件进行验证。

填写验证参数后,点击验证和发布按钮开始验证。验证完成后,验证页面将刷新。现在,您可以在资源管理器搜索栏中粘贴合同地址,查看合同源代码、合同 ABI和创建代码。

要在 OKLink 上验证单个合同和多部分合同,请导航到验证合同初步页面。

备注

OKLink 支持目前仅限于 Kaia 主网,因此合同验证仅适用于主网部署。

验证单一合同​

  1. 填写已部署合同的合同地址 (Counter.sol)
  2. 选择编译器类型。本指南选择 整合(单一文件)
  3. 选择 Counter.sol 示例使用的编译器版本:选择编译器版本:v0.8.30+commit.73712a01,然后点击下一步
  4. 确保在合同源代码字段上传 Remix IDE 中的 Counter.sol。
  5. 如果在编译过程中启用了优化,则为优化选择 "True",并在 "优化运行 "下填写运行次数为 200。
  6. 选择用于 Counter.sol 示例的开源许可类型。以 Counter.sol 为例,选择 MIT License (MIT) 选项。如果没有使用,请选择 无许可证(无)
  7. 为合同选择 EVM 版本。以 Counter.sol 为例,选择默认选项。
  8. 点击提交按钮开始验证。

  1. 验证完成后,您将收到 "验证成功 "消息。

现在,你可以在资源管理器搜索栏中粘贴合约地址,查看合约源代码、合约 ABI 和合约部署字节码。

验证多部分合同​

在 OKLink 上验证多部分合同的步骤与验证单一合同的步骤相同。但是,需要注意的是,我们将复制并粘贴 "airdropToken_flattened.sol "文件到合同源代码字段,因为 OKLink 目前不支持上传文件进行验证。

填写验证参数后,单击 "提交 "按钮开始验证。验证完成后,您将收到验证成功的信息。

现在,你可以在资源管理器搜索栏中粘贴合约地址,查看合约源代码、合约 ABI 和合约部署字节码。

结论​

恭喜您遵循本指南!在本教程中,您将学会如何使用 Kaiascan 和 OKLink 来验证合同(单部分和多部分),以提高部署合同的透明度(对用户)、便利性(对开发人员)和安全性。如需了解更多信息,请访问 Kaia 文档;如有任何问题,请访问 Kaia 论坛。

让这个页面变得更好