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


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

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

概要

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

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

コントラクト作成編
  • 1.solidityをコンパイルできるサイト「browser-solidity」を開く
  • 2.画面中央部のエディタにソースコードを書く
  • 3.画面右の「Compile」タブにある「Start to compile」をクリック
    • 画面右に緑背景でコンストラクト名が出れば成功
  • 4.画面右の「Compile」タブにある「Details」をクリック
  • 5.出てきたウィンドウの「BYTECODE」の"object": の右のダブルクォーテーション内(長い)をコピー
    • ダブルクォーテーション内をダブルクリックすると簡単に全選択できます
    
  • 6.SIKEN COREの「Smart Contract」の「Create」を開き、「Bytecode」のところに貼り付ける
  • 7.「browser-solidity」に戻り、「ABI」をコピー
    • 「ABI」の文字のすぐ右、バインダーに紙のようなマークをクリックするとコピーできます
    
  • 8.SIKEN COREに戻り、「Interface (ABI)」のところに貼り付ける
    • ABIは実行するために必要なのでどこかにメモしておきましょう
  • 9.コンストラクトの入力情報がある場合は、「Constructor」に入力欄ができるので入力する
    • サンプルコードの場合、入力情報はないため出てきません。
  • 10.「Create Contract」をクリック
    • リザルト画面の「ContractAddress」は実行するために必要なのでどこかにメモしておきましょう
  • 11.コントラクトが生成されるまで少し待つ
    • 「取引画面」で、「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」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ
    • サンプルコードを使用した場合は、「HelloWorld」を選びましょう
  • 5.引数がある関数を選択した場合、下に入力欄ができるので入力する
    • 「HelloWorld」の場合、引数はないため出てきません。
  • 6.「Call Contract」をクリック
    • 実行結果が出力されます。
コントラクト実行編(SendTo)
  • 1.SIKEN COREの「Smart Contract」の「SendTo」を開く
  • 2.「Contaract Address」にコントラクトを作成したときに表示された「ContractAddress」を入れる
  • 3.「Interface (ABI)」に、コントラクトを作成したときに使用したABIを入れる
  • 4.「Function」のプルダウンリストに呼び出せる関数の候補が表示されるので、呼び出したい関数を選ぶ
    • サンプルコードを使用した場合は、「SetMessage」を選びましょう
  • 5.引数がある関数を選択した場合、下に入力値を入れる欄ができるので入力する
    • 「SetMessage」の場合、引数「message」を入力してください。これがコントラクタに記憶されます。
  • 6.「Send To Contract」をクリック
  • 7.ブロックが生成されるまで少し待つ
    • 「取引画面」で、「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


メニュー

初心者向けページ

どなたでも編集できます