前回はこちら。マイニングと譲渡をHTTP経由で改めてやってみる
概要
開発者はコードを書き、サーバ(ここではブロックチェー ン)にデプロイします。ユーザはブラウザでサーバにアクセスし、目的の処理を行います。まず開発者はチューリング完全な高レベルの言語でコントラクトを記述します。そしてそれを EVMコンパイラでコンパイルして EVM バイトコード(EVM 固有のバイナリ形式)にし、ブロックチェー ンにデプロイします(EVMとは Ethereum Virtual Machine の略)。EVMバイトコードは、個々のEVM上で実行されます。なお「ブロックチェーンにデプロイする」とは、ブロック内にEVMバイトコードを保存することを意 味します。ブロックチェーンネットワークに参加する全ノードは同じブロックを保持しますので、全ノードがEVMバイトコードを保持して実行できることになります。
次はコントラクト(EVM バイトコード)へのアクセスについて説明します。ユーザはブラウザやコンソールからブロックチェーン上の EVM バイトコードに JSON-RPC 等でアクセスします。EVMバイトコードは接続したノードの EVM上で実行され、データの更新を行う場合は、(送金などと同様に) 更新内容がブロックチェーンネットワークに配信されます。
コンパイラをインストール
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
versionの確認
solc --version
solc, the solidity compiler commandline interface
Version: 0.4.19+commit.c4cbbb05.Linux.g++
gethを起動
nohup geth --networkid 4649 --nodiscover --maxpeers 0 --datadir /home/ubuntu/data_testnet --mine --minerthreads 1 --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --rpcapi "admin,db,eth,debug,miner,net,shh,txpool,personal, web3" --unlock 0,1 --verbosity 6 2>> /home/ubuntu/data_testnet/geth.log &
web console
geth attach rpc:http://localhost:8545
Geth に solc のパスをセットします
admin.setSolc("/usr/bin/solc")
"solc, the solidity compiler commandline interface\nVersion: 0.4.19+commit.c4cbbb05.Linux.g++\n"
正しくセットされたことを確認する
eth.getCompilers()
["Solidity"]