このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
playground:playground [2025/01/07 06:57] 非ログインユーザー 以前のリビジョンを復元 (2024/05/09 18:47) |
playground:playground [2025/03/01 11:31] (現在) 非ログインユーザー 以前のリビジョンを復元 (2024/04/30 00:58) |
||
---|---|---|---|
行 1: | 行 1: | ||
- | [[wiki:smartcontract]] | + | ~~DISCUSSION: |
- | \\ | + | [[wiki:news]] |
- | =======スマートコントラクト開発======= | + | [[playground:playground2|砂場2]] |
- | ---- | + | [[wiki: |
- | ======概要====== | + | |
- | + | ||
- | | + | |
- | | + | |
- | | + | |
- | \\ | + | |
- | \\ | + | |
- | + | ||
- | ======コントラクト作成~実行の仕方====== | + | |
- | **コントラクト作成編**\\ | + | |
- | + | ||
- | - 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」関数を" | + | |
- | ブロックの生成が完了していれば、先ほど設定したメッセージが取得できます。 | + | |
- | + | ||
- | ---- | + | |
- | ======サンプルコード====== | + | |
- | < | + | |
- | 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; | + | |
- | } | + | |
- | } | + | |
- | </ | + |