このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
playground:playground [2021/12/16 08:52] 非ログインユーザー 以前のリビジョンを復元 (2021/01/27 12:19) |
playground:playground [2024/04/26 04:29] 非ログインユーザー 以前のリビジョンを復元 (2021/07/07 17:45) |
||
---|---|---|---|
行 1: | 行 1: | ||
- | <color green>text</color> | + | [[wiki: |
- | [[playground: | + | |
+ | =======スマートコントラクト開発======= | ||
+ | ======概要====== | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ======コントラクト作成~実行の仕方====== | ||
+ | **コントラクト作成編**\\ | ||
+ | |||
+ | - solidityをコンパイルできるサイト「browser-solidity」を開く\\ | ||
+ | - 画面中央部のエディタにソースコードを書く\\ | ||
+ | - とりあえず試しに動かすだけならサンプルコードをコピペしましょう\\ | ||
+ | - 画面右の「Compile」タブにある「Start to compile」をクリック\\ | ||
+ | - 画面右に緑背景でコンストラクト名が出れば成功\\ | ||
+ | - 画面右の「Compile」タブにある「Details」をクリック\\ | ||
+ | - 出てきたウィンドウの「BYTECODE」の" | ||
+ | - ダブルクォーテーション内をダブルクリックすると簡単に全選択できます\\ | ||
+ | - SIKEN COREの「Smart Contract」の「Create」を開き、「Bytecode」のところに貼り付ける\\ | ||
+ | - browser-solidity」に戻り、「ABI」をコピー\\ | ||
+ | - 「ABI」の文字のすぐ右、バインダーに紙のようなマークをクリックするとコピー\\ | ||
+ | - SIKEN COREに戻り、「Interface (ABI)」のところに貼り付ける\\ | ||
+ | - ABIは実行するために必要なのでどこかにメモしておきましょう\\ | ||
+ | - コンストラクトの入力情報がある場合は、「Constructor」に入力欄ができるので入力する\\ | ||
+ | - サンプルコードの場合、入力情報はないため出てきません。\\ | ||
+ | - 「Create Contract」をクリック\\ | ||
+ | - リザルト画面の「ContractAddress」は実行するために必要なのでどこかにメモしておきましょう\\ | ||
+ | - コントラクトが生成されるまで少し待つ\\ | ||
+ | - 「取引画面」で、「Contract send」が1検証完了(下図の状態)すれば、コントラクトの生成が完了しているはずです\\ | ||
+ | |||
+ | コントラクト実行編に進んで、もし「Address does not exist (code -5)」と出る場合はもう少し待ちましょう\\ | ||
+ | |||
+ | \\ | ||
+ | ====コントラクト実行編(はじめに)==== | ||
+ | |||
+ | コントラクトの実行方法には「Call」と「SendTo」の2種類あります。\\ | ||
+ | \\ | ||
+ | **Call** | ||
+ | - Callは、コントラクトに情報を記憶しない関数を呼ぶことができます。 | ||
+ | - 実行が早く、手数料がかかりません。 | ||
+ | - また、戻り値として数値や文字列を返すことができます。\\ | ||
+ | |||
+ | **SendTo** | ||
+ | - SendTo、コントラクトに情報を記憶する関数を呼ぶことができます。 | ||
+ | - 例えば、コントラクトに文字列「Hello」を記憶させ、他の人に取得させることも可能です。 | ||
+ | - ブロックを生成するため実行完了まで時間がかかり、手数料が取られます。 | ||
+ | - また、戻り値を返すことはできません。(本当に方法がないか調査中・・・) | ||
+ | |||
+ | |||
+ | ====コントラクト実行編(Call)==== | ||
+ | |||
+ | - SIKEN COREの「Smart Contract」の「Call」を開く | ||
+ | - 「Contaract Address」にコントラクトを作成したときに表示された「ContractAddress」を入れる | ||
+ | - 「Interface (ABI)」に、コントラクトを作成したときに使用したABIを入れる | ||
+ | - 「Function」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ | ||
+ | - サンプルコードを使用した場合は、「HelloWorld」を選びましょう | ||
+ | - 引数がある関数を選択した場合、下に入力欄ができるので入力する | ||
+ | - 「HelloWorld」の場合、引数はないため出てきません。 | ||
+ | - 「Call Contract」をクリック | ||
+ | - 実行結果が出力されます。 | ||
+ | |||
+ | |||
+ | ====コントラクト実行編(SendTo)==== | ||
+ | |||
+ | - SIKEN COREの「Smart Contract」の「SendTo」を開く | ||
+ | - 「Contaract Address」にコントラクトを作成したときに表示された「ContractAddress」を入れる | ||
+ | - 「Interface (ABI)」に、コントラクトを作成したときに使用したABIを入れる | ||
+ | - 「Function」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ | ||
+ | - サンプルコードを使用した場合は、「SetMessage」を選びましょう | ||
+ | - 引数がある関数を選択した場合、下に入力値を入れる欄ができるので入力する | ||
+ | - 「SetMessage」の場合、引数「message」を入力してください。これがコントラクタに記憶されます。 | ||
+ | - 「Send To Contract」をクリック | ||
+ | - ブロックが生成されるまで少し待つ | ||
+ | - 「取引画面」で、「Contract send」が1検証完了(下図の状態)すれば、コントラクトの生成が完了しているはずです | ||
+ | |||
+ | 「SetMessage」を使用した場合、「GetMessage」関数を" | ||
+ | ブロックの生成が完了していれば、先ほど設定したメッセージが取得できます。 | ||
+ | |||
+ | ---- | ||
+ | ======サンプルコード====== | ||
+ | <file> | ||
+ | pragma solidity ^0.4.16; | ||
+ | |||
+ | contract sample { // コントラクト名「sample」 | ||
+ | string private mssg; // コントラクトに情報を記憶させるための変数 | ||
+ | |||
+ | // 関数 | ||
+ | // 説明 | ||
+ | // 呼び出し方 | ||
+ | // 引数 | ||
+ | // 戻り値 | ||
+ | function HelloWorld() pure public returns (string message) | ||
+ | { | ||
+ | return " | ||
+ | } | ||
+ | |||
+ | // 関数 | ||
+ | // 説明 | ||
+ | // 呼び出し方 | ||
+ | // 引数 | ||
+ | // 戻り値 | ||
+ | function SetMessage(string message) public | ||
+ | { | ||
+ | mssg = message; | ||
+ | } | ||
+ | |||
+ | // 関数 | ||
+ | // 説明 | ||
+ | // 呼び出し方 | ||
+ | // 引数 | ||
+ | // 戻り値 | ||
+ | function GetMessage() public constant returns (string message) | ||
+ | { | ||
+ | return mssg; | ||
+ | } | ||
+ | |||
+ | // 関数 | ||
+ | // 説明 | ||
+ | // 呼び出し方 | ||
+ | // 引数 | ||
+ | // : data2 : 足し算する数2 | ||
+ | // 戻り値 | ||
+ | function Sum(uint128 data1, uint128 data2) public pure returns (uint256 result) | ||
+ | { | ||
+ | return data1 + data2; | ||
+ | } | ||
+ | } | ||
+ | </file> |