スマートコントラクトの検証

ここでは、Casper CLIクライアントを用いたスマートコントラクトの検証に必要なアクションについて説明しています。

必要事項

  • ビルドしたコントラクトをインストール済みであること

Casper Clientを使ったコントラクトの検証

Casperクライアントのコマンドverify-contractを使用してご自分のコントラクトを検証できます。このコマンドはコントラクトのソースコードをアーカイブし検証サービスに送信します。このサービスは、スマートコントラクトをブロックチェーンにインストールする際にノードが行う操作を提供されたソースに対しても同様に実行します。インプットしたトランザクションハッシュに基づいて、バイナリ結果はCasperブロックチェーンからフェッチしたコントラクトに対してbyte-by-byte比較をします。それらが合致した場合に検証は成功となります。

casper-client verify-contract –verification-url-basepath <HOST:PORT> <TRANSACTION-HASH> <PATH>

  1. verification-url-basepath – オペレーションを行う検証サービスのアドレス;現行の2つのオプションとしてTestnet用のhttps://staging.codeverifier.casper.network と Mainnet用のhttps://codeverifier.casper.network があります。
  2. <TRANSACTION-HASH> – 一意のトランザクションハッシュでありブロックチェーン技術の暗号セキュリティの一環です。トランザクション処理が成功した際のput-txnコマンドの出力結果となります。
  3. <PATH> – スマートコントラクトのソースコードへのパス。この引数が省略されている場合は現在の作業ディレクトリが使われます。

ソースコードの前提条件はブロックチェーン上へのインストール時と同様です:

  • ソースコードはCargo Bookに記載されているようにRustプロジェクトでなければなりません。
  • rust-toolchain もしくは rust-toolchain.toml ファイルのどちらかが存在し、コンテンツにはrustup bookに記述されているように有効なRust toolchainが定義されていなくてはなりません。
  • インストールされたコントラクト(WebAssembly バイナリ)をCasperノードに送信する前にデバッグシンボルを除去する必要があります。これは Rust プロジェクトの設定で strip =「symbols」を指定するか、wabtパッケージのwasm-stripを使用することで実現できます。

検証が成功するとユーザーはサービスと連携された様々なウェブサイト上にその情報を確認できるようになります。例)Testnetのトランザクションはhttps://staging.casperecosystem.io/check-verification-status/、そしてMainnetトランザクションはhttps://casperecosystem.io/check-verification-status/. これによって、透明性と信頼性という新しいレイヤーを追加したスマートコントラクトのソースコードの閲覧をも可能にします。