Ethereumのコントラクト開発用IDEのRemixを使ってみます。
Remixって何?は他のWebサイトで説明されているので割愛。
Gethと協調してコントラクト開発とデプロイまでやってくれるすぐれものですが、今回はSolidityで書いたコードが動くかどうかの簡単なテスト(構文チェック)環境として使ってみます。
RemixはGithubから取得する方法と、Webサイトを開いて使う方法の2つがあります。
ここでは、Githubからダウンロードして使ってみます。
ダウンロードしたものを解凍して適当な場所に置きます。
以下のようなSolidityで書いた関数が動くかどうかチェックしてみます。
pragma solidity ^0.4.13;
contract test {
uint count;
function set_num(uint num){
count = num;
}
function get_num() returns(uint){
count++;
return count;
}
}
set_num()で変数countに値を入れます。
get_num()で変数に1を足したものを返します。
テストだけなので、Gethは使いません。
Githubからダウンロードして解凍したフォルダーの中にあるindex.htmlを適当なブラウザーで開きます。
左上のXアイコンをクリックして新しいsolを作成します。
なにやらワーニングが出ていますが気にしません。
Runタブをクリック。
Gethと連携する場合はRPCを使い、EnvironmentはWeb3Providerにしますが、今回はテストのみなので、Javascript VMのままでいきす。
CreateをクリックしてSolidityコードをバイトコードに変換します。
関数名が表示されたボタンがあります(get_num、set_num)。
set_numは引数を持つ関数なので右に引数を入れるフィールドがあります。適当に123と入れて、関数名のボタンをクリック。
左のペインのDetailasにコードの実行結果が表示されます。
inputsがブロックに記録される内容です。
最後の7bは16進数で、10進にすると123です。
decoded inputに表示されています。
get_numを実行してみます。
get_numはset_numで設定した値に1を加えて返します。
decode outputで値が1増えているのは確認できます。コントラクトのSolidityコードは実行されているようです。
ただ、inputの0x3e27a8e8が何を意味しているのかは不明です。
get_numでoutputは1づつ増えてはいくのですが。
コントラクトでのこのインクリメントされた値の意味は?
RemixはSolidityを使った開発用IDEとなっていますが、通常のアプリ開発用IDEとは少し意味合いが違っているように感じます。
何というか、仮想通貨というパラダイムの中で使われるIDEという感じ。
インクリメントという意味もこのパラダイムの中では通常と少し違った意味を持つように思えます。
うまく説明できるようになったらレポートします。
Next
Gethと連携してWeb3Provider環境でSendを実装
ところで、このバージョンのRemixでABIはどこで確認できるの?
ここです。
ちなみに、BYTECODEのobjectにあるのがBinary。
Leave a Reply