#この記事について
ブロックチェーンの勉強している学生が、Ethereumを実装するための言語であるSolidityについて学んだことの備忘録です。
#Ethereumの構成要素
- account
- transaction
- Messages
それぞれ、以下のような特徴がある。
##account
Ethereumでは、あらゆる状態はアカウントと呼ばれるオブジェクトから作り上げられる。アドレスとアカウント間における値や情報の直接的やりとりで状態遷移を保持する。4つのフィールドを含む。
- nonce
- ether balance
- contract code
- storage
##transaction
- 受信者
- 送信者を特定する署名
- 送付されるetherの量
- オプショナルデータフィールド
-
STARTGAS
値 -
GASPRICE
値
EOAから送信されたメッセージを貯蔵する署名付きデータパッケージを参照するために使用される。
##Messages
- 送信者
- 受信者
- etherの量
- オプショナルデータフィールド
-
STARTGAS
値
contractにより生成され、外部では作動しない。
#コーディングするためのメモ
##Contract
classのようなもの。デプロイすると、アドレスが割り当てられる。継承することもできる。
##Library
delegatecallやJUMP命令が内部的に使用されている。
internalがある→JUMP命令
internalがない→delegatecall命令
が実行される。
usingで型にライブラリ関数をバインドできる。そうすると、self的な使い方が可能になる。
<型の変数>.<関数>()
で呼び出しができるようになる。
#参考文献
Solidityドキュメント https://solidity.readthedocs.io/en/develop/
Ethereum白書
https://github.com/ethereum/wiki/wiki/%5BJapanese%5D-White-Paper#ethereum