• 官网
  • 中文
  • English
  • Russian
  • More language
Show / Hide Table of Contents
  • NEOホワイトペーパー
  • はじめに
  • NEOノード
    • NEOノードとは?
    • インストール
    • グラフィカル・ユーザー・インターフェイス(GUI)
    • テストネットワーク
    • CLI命令リファレンス
    • プライベートチェーン
    • APIリファレンス
      • dumpprivkey.md
      • getaccountstate
      • getassetstate
      • getbalance
      • getbestblockhash
      • getblock
      • getblock
      • getblockcount
      • getblockhash
      • getblocksysfee
      • getconnectioncount
      • getcontractstate
      • getnewaddress
      • getrawmempool
      • getrawtransaction
      • getstorage
      • gettxout
      • getpeers
      • getversion
      • invoke
      • invokefunction
      • invokescript
      • sendrawtransaction
      • sendtoaddress
      • sendmany
      • validateaddress
    • ネットワークプロトコル
    • コンセンサス
      • コンセンサスホワイトペーパー
      • コンセンサスメカニズム
  • NEOユーティリティー
    • NEO SDK(ソフトウェア開発キット)
      • NEO SDKとは?
      • 一般的な使用方法
  • スマートコントラクト
    • スマートコントラクトとは?
    • はじめに(C#)
    • はじめに(C#)for macOS
    • はじめに(Java)
    • はじめに(Python)
      • プロンプトの使用
      • 設定とロギング
      • スマートコントラクトとの相互作用
      • テスト
      • Pythonコンパイラ
    • チュートリアル
      • 基本
      • Hello World
      • Lock (ロック・コントラクト)
      • dos (ドメインネームシステム)
      • パラメータと戻り値
      • コントラクト認証
      • ロック・コントラクトのデプロイ
      • コントラクト呼び出し
      • コントラクトのデプロイ
    • テスト
    • ホワイトペーパー
    • APIリファレンス
      • NEO
      • System
    • フレームワーク
      • .NET framework
        • NEO
          • Account
          • Asset
          • Block
          • Blockchain
          • Contract
          • Enrollment
          • Header
          • Runtime
          • Storage
          • StorageContext
          • Transaction
          • TransactionAttribute
          • TransactionInput
          • TransactionOutput
          • Validator
        • System
          • ExecutionEngine
    • システムの手数料
  • 取引所開発者向けドキュメント
    • v2.6.0
  • 協力者

コントラクト認証チュートリアル

このチュートリアルはVisual Studio 2017に基づいています。Visual Studioが2017バージョンにアップグレードされていることを確認してください。さらに、このチュートリアルはSmart Contract 2.0のデモに基づいており、GitHubからテストネットワークをダウンロードして実行してください。

このドキュメントを作成する時点で、最新のテストネットワーククライアント(Neo-GUI-v2.0.1)をダウンロードして下さい。

コントラクトスクリプトをコンパイル

using NEO.SmartContract.Framework;
using NEO.SmartContract.Framework.Services.NEO;
using NEO.SmartContract.Framework.Services.System;
namespace NEO.SmartContract
{
    public class Test : VerificationCode
    {
        public static bool Verify(byte[] signature)
        {
            return true;
        }
    }
}

[!注意] スマートコントラクトスクリプトを生成する方法がわからない場合は、C#を使用してNeoスマートコントラクトを作成する方法 を参照してください。

上記のコントラクトはTest.avmにコンパイルされ、コントラクトスクリプト(Test.avmバイナリデータ)は次のようになります:52c56b6c766b00527ac461516c766b51527ac46203006c766b51c3616c7566

このチュートリアルの後半で.avmファイルのコントラクトスクリプトを取得する方法を学習します。

ウォレットを作成する

次のチュートリアルに従って新しいウォレットを作成します。

ウォレットを作成する

コントラクトスクリプトの入手

コントラクトスクリプトを入手するには多くの方法がありますが、1つの方法は以下のC#コードを使用して.avmファイルから直接読み取る方法です。

byte[] bytes = System.IO.File.ReadAllBytes("Test.avm");
for (int i = 0; i < bytes.Length; i++)
    Console.Write(bytes[i].ToString("x2"));

コーディングによってコントラクトスクリプトを取得したくない場合、クライアントのDeploy Contract機能はコントラクトコードを取得する簡単な方法を提供します。

クライアントのPC版では、 "Advanced" - "Deploy Contract ..."をクリック、右下隅にある "Load"をクリックし、Test.avmファイルを選択します。 "Code"ボックスには、下図のようなコントラクトスクリプトが表示されます。後の手順で使用しますので、コードスクリプトをコピーします。

コントラクトスクリプトの入手

コントラクトアドレスを作成する

独自のウォレットを作成したら、マウスの右ボタンをクリックし、生成されたコントラクトスクリプトを使用してコントラクトアドレスを作成します。

コントラクトアドレスを作成する

コントラクトアドレスをアカウントに関連付けし、対応するパラメータを入力します。コントラクトには署名のパラメータがあるため、"Parameter List"に「00」を記入し(詳細はこのドキュメントを参照してください)、前のステップのコントラクトスクリプトを"Code"ボックスに入力する必要があります。

アカウントを関連付ける理由は、コントラクトを公開鍵と秘密鍵のペアで関連付けするため、コントラクトに署名する必要がある場合、クライアントは自動的に関連付けされたアカウントの秘密鍵で署名します。

コントラクトアドレスを作成する

[OK]をクリックすると、スマートコントラクト認証アカウントが正常に作成されます。

テスト

以下はスマートコントラクト認証アカウントのテストです。スマートコントラクト認証アカウントがアセットを転送してからコンセンサスノードがスマートコントラクトを検証して実行するまでのプロセスです。コントラクトの検証が成功した場合(結果「true」を返す)、取引が承認されます。結果「真」が受信されるまで、トランザクションのステータスは未承認です。テスト方法は、最初にアセットをコントラクト認証アカウントに転送してから展開することです。

[!注意] テストの正確さを保証するために、ウォレットには他のアセットを持たないことをお勧めします。そうでない場合は、クライアントのchange findingアルゴリズムを理解した上で、どの取引がコントラクトアドレスから来ているのかを把握出来ないと、アセットが標準アドレスまたはコントラクトアドレスから来ているかどうかを知ることができません。

アセットをコントラクトアドレスに転送する

設定された金額のアセットをコントラクトアカウントに転送する;

設定された金額のアセットをコントラクトアカウントに転送する

コントラクトアセットを転送する

スマートコントラクトアカウントからアセットを転送する:

コントラクトアセットを移転する

[!注意] クライアントのアセット残高は、標準勘定の残高とコントラクトアドレスの残高の合計、つまりすべてのアドレスのアセットを合計したものです。コントラクトアドレスでアセットを使用するかどうかは、スマートコントラクトの実行結果によって異なります。コントラクトが成功した場合(結果が真である場合)、アセットは転送され、そうでない場合は転送されません。

  • Improve this Doc
Back to top Copyright © 2014-2018 NEO