Ethereum

スマートコントラクト開発の準備をする(ethereum5)

前回はこちら。マイニングと譲渡をHTTP経由で改めてやってみる

概要

開発者はコードを書き、サーバ(ここではブロックチェー ン)にデプロイします。ユーザはブラウザでサーバにアクセスし、目的の処理を行います。まず開発者はチューリング完全な高レベルの言語でコントラクトを記述します。そしてそれを EVMコンパイラでコンパイルして EVM バイトコード(EVM 固有のバイナリ形式)にし、ブロックチェー ンにデプロイします(EVMとは Ethereum Virtual Machine の略)。EVMバイトコードは、個々のEVM上で実行されます。なお「ブロックチェーンにデプロイする」とは、ブロック内にEVMバイトコードを保存することを意 味します。ブロックチェーンネットワークに参加する全ノードは同じブロックを保持しますので、全ノードがEVMバイトコードを保持して実行できることになります。

スクリーンショット 2017-12-26 18.59.02.png

次はコントラクト(EVM バイトコード)へのアクセスについて説明します。ユーザはブラウザやコンソールからブロックチェーン上の EVM バイトコードに JSON-RPC 等でアクセスします。EVMバイトコードは接続したノードの EVM上で実行され、データの更新を行う場合は、(送金などと同様に) 更新内容がブロックチェーンネットワークに配信されます。

スクリーンショット 2017-12-26 19.01.20.png

コンパイラをインストール

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"]