- Developers(開発者ガイド)概要
- 開発の事前準備
- 必須となるRust Crate(クレート)
- Writing On-Chain Code
- Getting Started with Rust
- Getting Started with AssemblyScript
- 基本的なスマートコントラクトをRustで書く方法
- スマートコントラクトのテスト
- スマートコントラクトのアップグレードとメンテナンス
- スマートコントラクトの呼び出し
- コントラクトとセッションコード
- セッションコードの書き方
- セッションコードのテスト
- コントラクトによるイベント発行を有効に
- コントラクトハッシュとパッケージハッシュの使い分け
- Casperスマートコントラクトのベストプラクティス
- Casper JSON-RPC API
- DAppsのビルド
- SDKクライアントライブラリ
- dApp Technology Stack
- ReactのFront-endテンプレート
- URefのアクセス権限とセキュリティへの考慮
- トランザクションへの署名
- スペキュラティブ(推測的)実行によるガス・コストの見積もり
- NCTLを使ったローカルネットワーク設定
- NCTLを使ったスマートコントラクトのテスト
- イベントの監視と消費
- CLIを使ったBlockchainとのやり取り
コントラクトとセッションコード
セッションコードとは?
セッションコードとは、Casperネットワーク上で実行可能な最もシンプルなロジックです。チェーン上に格納されたコントラクトのロジックをトリガーとして頻繁に使用されるため、必須となっています。セッションコードにはcall関数であるエントリーポイントが1つ必要となっており、セッションコードを実行するアカウントのコンテキスト内にて実行されます。結果的に、アカウントのメインパースへのアクセス権を保持している、という具合にアカウントのパーミッションの範囲で実行されます。例えば、セッションコードによるアカウントのメインパースからのトークン転送などがあげられます。
セッションコードの使用方法としてベストな状態は、ステートレス(stateless)実行を呼び出す状況下でトラックされるべき内部データがない、もしくは極僅かな場合です。セッションコードは、Wasmの境界を跨いで返された値の通信や受諾時に必要となります。
セッションとコントラクトコードの比較
下記表には、Casperネットワーク上のセッションコードとコントラクトコードの主な違いについての概要が書かれています。
| セッションコード | コントラクトコード |
| セッションコードは常にセッションコードを持つデプロイに署名をしたアカウントのコンテキスト内にて実行されます。 | チェーン上のロジックに格納されたスマートコントラクトは、そのコントラクトのコンテキスト内にて実行されます。 |
| セッションコードは、セッションコードとの通信に使用される call エントリーポイント1つのみを保持しています。 | スマートコントラクトは、呼び出し可能ないくつかのエントリーポイントを持つことが可能です。 |
| Callエントリーポイントは、セッションコードがとる如何なるアクションも初期化します。 | コントラクト下にて取られる如何なるアクションも、外部コール(通常はセッションコード)を介して初期化されなくてはなりません。 |
| セッションコードのbody内にてput_keyの呼び出しが行われた場合、鍵はアカウントの名前付き鍵に追加されます。 | スマートコントラクトのコンテキスト内にてput_keyの呼び出しが行われた場合、コントラクトの履歴が修正され、新しいnamed_keyエントリーを持つようになります。 |
| セッションコードの書き方については、「セッションコードの書き方」を参照ください。 | コントラクトの書き方については、「基本的なスマートコントラクトをRustで書く方法」を参照ください。 |
下記は、上記表の比較について図で表したものです。

What’s Next?
- 「セッションコードの書き方」について
- 「セッションコードのユニットテスト」について