[Ethereum] 基礎

– EVM上で動く 
– Solidityはスマートコントラクトの開発によく使われている
– イーサリアムが評価されたのはスマートコントラクトをデプロイ・実行するためのプラットフォームを提供した為
– 世界中のイーサリアムノードで接続している
– パブリックイーサリアムネットワークに接続するには、ブルーノード(信頼性の高いIP)のリストがある
– フォークした場合、最も長いチェーンが勝つ
– Proof-of-stake: Ethereumを提供する
– トランザクション手数料をガスと言う
– トランザクションの処理は13秒に1つ程度
– メモリプールが起きた場合、高いガスを払うと、処理される
– メモリプールに複数のトランザクションが含まれている場合、ブロック作成者はナンスによってトランザクションを決める
– チェーンに新しいブロックが追加されてからトランザクションが確定
– ハードフォークを行なうときは議論になり、2016年のハードフォークで以前のプロトコルをイーサリアムクラシックと呼ぶ
– 1Gweiは10億ウェイで1イーサ
– プアブリックイーサリアムネットワークはmainnet、ステージング環境はtestnetでfaucetという無料配布の仕組みがある
– EVMのオペコードはPUSH1、MLOADといった命令があり、ガス費用が割り当てられる
– gasPriceを設定することができる フロントランニングでgasPriceを設定する
– gas属性とgasPrice属性が含まれていないといけない

### アカウント
– 基本的トランザクションはEOA間でのイーサ送金

### コントラクト
オブジェクト指向スタイル、 状態変数と関数
読み取り変数をpureとview

### ブロック作成者とトランザクション
gasPrice, origin, data, sender, sig, value, number, timestamp, blockhash, difficulty, gaslimit, coinbase
ブロック作成者はトランザクションの順序を操作できる

### トランザクション署名
秘密鍵、暗号署名はMetaMaskというウォレットソフトウェアに任せる
nonce, gasPrice, gas, to, value, data, chainId

### トークン
所有権を意味する

– ERC-20
相互に交換可能
totalSupply(), balanceOf(address _owner), transfer(address _to, unit256 _value), transferFrom(address _from, address _to, unit256 _value), approve(address _spender, unit256 _value), allowance(address _owner, address _spender)

– ERC-721
互いに異なっているトークン
balanceOf(address _owner), ownerOf(unit256 _tokenId), safeTranferFrom(address _from, address _to, unit256, _token_Id, bytes data), safeTranferFrom(address _from, address _to, unit256 _tokenId), tranferFrom(address _from, address _to, unit256 _tokenId), approve(address _approved, unit256 _tokenId), setApprovalForAll(address _operator, bool _approved), getApproved(unit256 _tokenId), isApprovedForAll(address _owner, address _operator)

– サプライチェーン
生産の条件やルートなどが記載される

### 永続的な記録
航空日誌を記録する など

チェーン上に記録できるのは、色々な機能としてできそう