ニュー速VIPから生まれたファンコインであるVIP☆STARのwikiです。

このページは独自通貨運用試験機SIKENでの情報を元に作られています。
VIPSTARCOIN WALLETでも動作すると思いますがご注意ください。



スマートコントラクトの開発方法

概要

  • スマートコントラクトは主にsolidityという言語を使用して開発します
  • 本ページにあるコードは、すべてsolidityです
  • solidityはブラウザでコンパイルすることが可能です

コントラクト作成〜実行の仕方

コントラクト作成編
  1. solidityをコンパイルできるサイト「browser-solidity」を開く
  2. 画面中央部のエディタにソースコードを書く
    1. とりあえず試しに動かすだけならサンプルコードをコピペしましょう
  3. 画面右の「Compile」タブにある「Start to compile」をクリック
    1. 画面右に緑背景でコンストラクト名が出れば成功
  4. 画面右の「Compile」タブにある「Details」をクリック
  5. 出てきたウィンドウの「BYTECODE」の"object": の右のダブルクォーテーション内(長い)をコピー
    1. ダブルクォーテーション内をダブルクリックすると簡単に全選択できます
  6. SIKEN COREの「Smart Contract」の「Create」を開き、「Bytecode」のところに貼り付ける
  7. 「browser-solidity」に戻り、「ABI」をコピー
    1. 「ABI」の文字のすぐ右、バインダーに紙のようなマークをクリックするとコピーできます
  8. SIKEN COREに戻り、「Interface (ABI)」のところに貼り付ける
    1. ABIは実行するために必要なのでどこかにメモしておきましょう
  9. コンストラクトの入力情報がある場合は、「Constructor」に入力欄ができるので入力する
    1. サンプルコードの場合、入力情報はないため出てきません。
  10. 「Create Contract」をクリック
    1. リザルト画面の「ContractAddress」は実行するために必要なのでどこかにメモしておきましょう
  11. コントラクトが生成されるまで少し待つ
    1. 「取引画面」で、「Contract send」が1検証完了(下図の状態)すれば、コントラクトの生成が完了しているはずです

コントラクト実行編に進んで、もし「Address does not exist (code -5)」と出る場合はもう少し待ちましょう

コントラクト実行編(はじめに)
  • コントラクトの実行方法には「Call」と「SendTo」の2種類あります。
  • Call
    • Callは、コントラクトに情報を記憶しない関数を呼ぶことができます。
    • 実行が早く、手数料がかかりません。
    • また、戻り値として数値や文字列を返すことができます。
  • SendTo
    • SendTo、コントラクトに情報を記憶する関数を呼ぶことができます。
    • 例えば、コントラクトに文字列「Hello」を記憶させ、他の人に取得させることも可能です。
    • ブロックを生成するため実行完了まで時間がかかり、手数料が取られます。
    • また、戻り値を返すことはできません。(本当に方法がないか調査中・・・)

コントラクト実行編(Call)
  1. SIKEN COREの「Smart Contract」の「Call」を開く
  2. 「Contaract Address」にコントラクトを作成したときに表示された「ContractAddress」を入れる
  3. 「Interface (ABI)」に、コントラクトを作成したときに使用したABIを入れる
  4. 「Function」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ
    1. サンプルコードを使用した場合は、「HelloWorld」を選びましょう
  5. 引数がある関数を選択した場合、下に入力欄ができるので入力する
    1. 「HelloWorld」の場合、引数はないため出てきません。
  6. 「Call Contract」をクリック
    1. 実行結果が出力されます。

コントラクト実行編(SendTo)
  1. SIKEN COREの「Smart Contract」の「SendTo」を開く
  2. 「Contaract Address」にコントラクトを作成したときに表示された「ContractAddress」を入れる
  3. 「Interface (ABI)」に、コントラクトを作成したときに使用したABIを入れる
  4. 「Function」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ
    1. サンプルコードを使用した場合は、「SetMessage」を選びましょう
  5. 引数がある関数を選択した場合、下に入力値を入れる欄ができるので入力する
    1. 「SetMessage」の場合、引数「message」を入力してください。これがコントラクタに記憶されます。
  6. 「Send To Contract」をクリック
  7. ブロックが生成されるまで少し待つ
    1. 「取引画面」で、「Contract send」が1検証完了(下図の状態)すれば、コントラクトの生成が完了しているはずです
「SetMessage」を使用した場合、「GetMessage」関数を"Call"してみましょう。
ブロックの生成が完了していれば、先ほど設定したメッセージが取得できます。


サンプルコード(まずはこれを実行してみよう)

オリジナルSIKENトークン

作り方・使い方

  • 1.下記ソースコードでコントラクトを作成する
    • 入力情報があるため、コントラクト作成編手順9で入力欄が出ます。入力してください。
      • initialSupply:トークンの発行数
      • tokenName:トークンの名前
      • tokenSymbol:トークンの単位
    • コントラクト作成編手順10の前に、「Sender Address」で任意のアドレスを選択してください。
      • 最初に発行されたトークンは、このアドレスに送金されます。
    • コードの「uint8 public decimals = 18;」の数字が、トークンの小数点以下の桁数です。
      • 桁数を変更したい場合は、数字を書き換えてください。
  • 2.SIKEN COREの「VRC Token」を開き、「Add Token」をクリック
  • 3.「Contract Address」にトークンを作成したときのContact Addressを入れる
  • 4.「Token Address」にトークン作成時に選択したアドレスを入れる
  • 5.「Confirm」をクリック
  • 6.作成したトークンを送金する場合は、一覧からトークンを選択し、「Send」をクリック
  • 7.「PayTo」に送金先アドレスを、「Amount」に送金額を入力し、「Confirm」をクリック
(注意)仕様上約5000阿僧祇を越えると自動的に限界値に落とされます(例え1無量大数枚発行してても)

ソースコード

あんたがた向けスマートコントラクト

  • あんたがたに使えそうなスマートコントラクト(アルファ版)

遊び方(概要)

  • みんなでコントラクトにSIKENを送金をして、コントラクト上にSIKENを貯めていきます。
  • コントラクトにはある問題の答えが設定されています。
  • 問題に解答し、正解すると報酬をもらうためのキーをもらえます。
  • キーを入力すると、みんなが送金したSIKENがすべてもらえます。

ソースコード

  • 問題:「基本」と言えば?

遊び方(詳細)

コントラクトへの送金
  • 「SendTo」で関数「SendSiken」を選択
  • 「Amount」に送金額を入れ、「Send To Contract」
問題への回答
  • 「Call」で関数「Answer」を選択
  • 「YourAnswer」に回答を入れ、「Call Contract」
    • 正解すると報酬をもらうためのキーをもらえます。
報酬のもらい方
  • 「SendTo」で関数「GetReward」を選択
  • 「Key」にキーを入る
  • 「Sender Address」に任意のアドレスを入れる
  • 「Send To Contract」をクリック
    • コントラクトにお金が入っていれば、SIKENを受け取れます。
    • 「Sender Address」で入力したアドレス宛に、送金されます。
    • 「Send To Contract」を押すとき、「Amount」を0にしておくこと。0にしないとコントラクトへ送金されちゃいます。
コントラクトに貯まっているSIKENの額の確認
  • 「Call」で関数「GetBalance」を選択
  • 「Call Contract」

課題

  • 出題者はキーを知っている。報酬を持ち逃げしないか?
    • → 解決案があったらディスコまでお願いします!
  • セキュリティに問題がないか?
    • 問題に成功する以外でキーを取得する方法がないか?等

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

初心者向けページ

どなたでも編集できます