HOMMESこの広告は、90日以上更新していないブログに表示しています。2018-02-09Ubuntu17でSolidityでスマートコントラクトをするざっくりすぎるタイトルである。Solidityで感覚を掴んでいくことにします。JavaScriptに寄せた記述方式になっているので、モダンで高級な言語が眩しい化石エンジニアでもとっつきやすそうです。.とりあえずメインのアカウントに大量のEthereumが付与され、テストで使えるようになります。devオプションをつけた場合、マイニングが行われるのはアカウント間の送金が発生するときだけとのことなので、トランザクションを実行した後に必ず送金処理が必要なことに注意しましょう。参考:https://github.com/ethereum/go-ethereum/issues/15646gethコンソールを開く別のターミナルを開いてコンソールとして使用します。ここにあるmodulesっていうのがすでにあるインスタンス。ためしに打ち込んでみます。function()}adminインスタンスの持ってる変数やら関数やらが見れます。やって使うのかはよくわからない...昔のが残っていることもあり、使えないのも結構ある。ドキュメントを読むかソースコードを読むしかない。eth.getBalance(eth.accounts[0])1.15792089237316195423570985008687907853269984665640564039457584007911129021018e+77大金持ちです。テスト用なので最初から大量の付与してくれているみたいです。eth.accounts[0]は自動で作成されるアカウントで、coinbaseとして設定されています。personal.newAccount()パスフレーズが要求されるけど、テスト用でプライベートなので特に設定しなくても良いです(設定しても良いアドレスっぽい文字列が表示されればOK。personal.unlockAccount(eth.accounts[1])trueパスフレーズを求められるけど、アカウント作成のときに使ったやつを入れればOK.gasPriceを設定するEthの仕様なのかSolidityの仕様なのかまだちゃんと読んでないので知らないが、SmartContractを実行するのにgasPriceという手数料が課される模様。開発者モードではデフォルトが0なので、本番環境でアレ?ってならないようにとりあえず0より大きな数を設定しておきます。miner.setGasPrice(1)truegethノードを実行しているターミナルの方でpriceがアップデートされてればたぶんOK。failed"って言われるが特に気にしなくてよい。Solidityですまずソースコードを書きますとりあえず公式ドキュメントのサンプルプログラムを動かしてみます。//includeみたいなもの。//payableとかreturnの型とかも設定できる。}}写経(コピペ)したらtest.solという名前で保存します。安心する見た目ですね。コンパイルするコンパイルはコマンドラインから。Remix使ってもいいけどとりあえず導入がめんどくさいし大した手間でもないので。コンパイルは新しいターミナルを開いてから。gasオプションを指定しているから)。ABI[{"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]結構バスバスgasを消費するようです。Setのほうがコストが高いんだなぁ。gathノードでSolidityアプリケーションを動かすアナクロな方法でSolidityアプリケーションをGethに認識させます(デプロイします)。ここからの作業はgethコンソールで。ABIをコピペして貼り付けるのです。Binaryは0xをつけてダブルクオテーションでくくること。準備ができたのでインスタンスを作成します。"0x6b2690deca3d191dde77ec4e88f51192437023feb684219b0b51d4409aa7e209"}これでインスタンスは作成されたけど、まだブロックチェーンには登録されていません。addressがundefinedです。登録するためにEthを動かします。function()}addressにアドレスが設定されているのでOKです。get/setを使ってみます。test_inst.get.call()1ちなみにeth.getBalance(eth.accounts[1])とすると適度にEth(というかwei)が消費されていますデリゲートも使えるみたいなんで自由度高いですね。docoptPythonとか...2015-02-28いまさらか!なんだけどWindowsバッチのはなしそれでもやっぱり時々は書かなきゃいけないWindowsバッチ。(1)はてなブログをはじめよう!still_nonameさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。