ブロックエクスプローラーを使ったスマートコントラクトの検証方法
はじめに
通常、スマート・コントラクトのデプロイする者は、実際にデプロイされたコードにアクセスできる唯一の当事者であり、デプロイ者が検証するまで、一般人はコントラクトのソースコードを読むことができない。 コントラクトの検証は、(ユーザーにとっての)透明性、(開発者にとっての)利便性、そしてデプロイされたコントラクトの安全性を向上させるのに役立つからだ。
とはいえ、スマート・コントラクトが検証されると、KaiascopeやKaiascanのようなブロック・エクスプローラーは、ブロック・エクスプローラーのユーザー・インターフェースを使用して、一般の人がコントラクトのパブリック・メソッドと対話することも可能にする。 これは、一般の人々が検証済みの契約ソースコードに直接アクセスできることに加えてのことである。 これは、一般の人々が検証済みの契約ソースコードに直接アクセスできることに加えてのことである。
このガイドでは、ブロックエクスプローラーを使用してKaiaネットワーク上でデプロイされたスマートコントラクトを検証する方法を見ていきます。
前提条件
- Remix IDE と Kaia Wallet
- Faucetから十分なテストKAIA
はじめに
このガイドでは、Kaiaエコシステムに存在するブロックエクスプローラーで、シングルコントラクトとマルチパートコントラクトの検証について説明します:
さっそく始めよう!
単一契約の展開
スマート・コントラクトを検証するには、まずターゲット・ネットワーク上にコントラクトをデプロイする必要がある。 したがって、このガイドでは、Kaia Kairos Testnetにコントラクトをデプロイすることにする。 また、このチュートリアルでは、Remix IDE上にCounter.sol
というシンプルなカウンターのコントラクトをデプロイする。 コードを以下に示す:
// SPDX-License-Identifier: MITpragma 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; }}
単一契約検証のパラメータ
ブロック・エクスプローラーでコントラクトを検証するには、いくつかのパラメータが必要で、スマート・コントラクトをデプロイする際に考慮しなければならない。 以下は、コントラクトをうまく検証するための、コントラクトのコンパイラとデプロイメントに関する詳細である:
Remix IDE :
-
Remix IDEで、Solidityコンパイラタブに移動します。
- 契約のコンパイルとデプロイに使用されたコンパイラのバージョンを確認してください。
- 契約で使用されているオープンソースライセンスの種類を確認してください。 これ は、Solidity ソース ファイルの先頭で使用される SPDX ライセンス識別子を意味します。
Counter.sol
ファイルでは、// SPDX-License-Identifier:MIT
- コントラクトのデプロイに使用されるEVMバージョンを確認してください。
- (オプション)コンパイル時に最適化が有効になっている場合、最適化実行パラメータの値に注意する。
-
Remix IDEでKaiaタブに移動します。
- (オプション) コンストラクタのメソッドが引数を受け付ける場合は、コンストラクタの引数の ABI エンコード形式 に注意してください。
- デプロイに成功したら、Deployed Contractsタブでスマートコントラクトのコントラクトアドレスをメモしてください。
マルチパートコントラクトのデプロイ
マルチパートのコントラクトのデプロイメントには、単一のコントラクトのデプロイメントと同じ手順が必要であることに注意するこ とが重要である。 このガイドでは、airdropToken.sol
という名前のシンプルなKIP7のエアドロップコントラクトをデプロイする。 コードを以下に示す:
//SPDX-License-Identifier: MITpragma 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); }}