Open1

Ethereum

YuheiNakasakaYuheiNakasaka

LINEのBlockchainで雰囲気が掴めたのでスマートコントラクトの中心となる本家Ethereumのドキュメントを一通り目を通す。既知の内容も多いので気になったことだけメモした。

Ethereum

リソース

やること

  • Ethereumの全貌を把握する

メモ

  • EVM

    • Ethereum Virtual Machine, or EVM
    • いわゆるEthereumのブロックチェーン本体のネットワーク
  • EVM storage

    • Ethereumを使ったアプリのコード(dapps)をアップする場所
  • ガス代

    • Ethereumでのトランザクションに必要となる計算力の総量に比例してかかるコスト
      • 悪意のあるdappsが無限ループとかを含めて実行しようとしても実行側にめっちゃコストがかかるのでそういった攻撃に抑止力がある
  • 単位

    • 実用的にはETHより小さい単位の方が使いやすいのでWeiとGWeiが使われたりする
      • Wei: 10**-18
      • GWei: 10**-9
  • 取引履歴

  • dApps

    • P2Pネットワーク上で実行されるアプリ
    • Web2とWeb3
      • Web2.0の次としてのWeb3.0。非中央集権の分散型BlockChain上に構築されるインターネット。dAppsはWeb3.0のアプリ。
  • アカウントの種類 => Walletとは違う。Walletはトランザクションを作ったりアカウントを管理するやつ。

    • 個人所有のもの
      • private keyを持った個人のやつ
      • 個人間送金とかで使う
    • コントラクト
      • smart contractのやつ
    • Ethereumネットワーク上の「個人」と「法人」みたいな違い。(で合ってる?)
  • transaction

    • ユーザーがblockをtransactionを作成 -> poolされてネットワークにbroadcastされる -> minerに検証される -> chainに追加される
  • ブロック

    • transactionのまとまり。Ethereumだと15秒ごとにコミットされる。
  • EVM

    • state machine: Y(S, T)= S' (S=old state, T=new transaction, S'=new state)
    • state: modified Merkle Patricia Trieのデータ構造を利用してる
    • Image
  • Gas

    • ガス代: ネットワーク上のスパムや脅威を防ぐために必要
    • 例(LONDON Upgrade前)
      • Let's say Alice had to pay Bob 1 ETH. In the transaction the gas limit is 21,000 units and the gas price is 200 gwei.

      • Total fee would have been: Gas units (limit) * Gas price per unit i.e 21,000 * 200 = 4,200,000 gwei or 0.0042 ETH>

      • When Alice sent the money, 1.0042 ETH would be deducted from Alice's account. Bob would be credited 1.0000 ETH. Miner would receive 0.0042 ETH.

    • 例(LONDON Upgrade後)
      • Calculating the total transaction fee works as follows: Gas units (limit) * (Base fee + Tip)

      • Let’s say Jordan has to pay Taylor 1 ETH. In the transaction the gas limit is 21,000 units and the base fee is 100 gwei. Jordan includes a tip of 10 gwei.

      • Using the formula above we can calculate this as 21,000 * (100 + 10) = 2,310,000 gwei or 0.00231 ETH.

      • When Jordan sends the money, 1.00231 ETH will be deducted from Jordan's account. Taylor will be credited 1.0000 ETH. Miner receives the tip of 0.00021 ETH. Base fee of 0.0021 ETH is burned.

      • Additionally, Jordan can also set a max fee (maxFeePerGas) for the transaction. The difference between the max fee and the actual fee is refunded to Jordan, i.e. refund = max fee - (base fee + priority fee). Jordan can set a maximum amount to pay for the transaction to execute and not worry about overpaying "beyond" the base fee when the transaction is executed.

    • 21000 units of gasが必要なのに20000 units of gasしか指定しなかった場合は20000だけminerに消費されるがtransactionは失敗され戻ってこない。
    • なぜガス代が上がるのか?
      • トランザクション数がめっちゃ増えてるから。処理能力に限りがあるから早く処理してもらうために高いfeeを払う必要がある。
    • Ethereum 2.0でPoS(Proof of Stake)が導入されるとガス代は下がるはず
    • Ethereum2.0のPoS
      • 32ETH以上(=1000万円くらい)持ってる人がminerになれる
  • Node

    • 分散ネットワークのNode。具体的には世界中の人たちのPCとかサーバーとかそれぞれ。
    • サービスとしてのノードというのもある
      • 自前でNodeを持たずにサービスプロバイダのAPIやGUIを使ってNodeを利用できる。PasSとかIasSに近いのかな。
      • 主なサービス一覧はここ
  • ネットワーク

    • Public
      • MainNetとTestNetがある
      • dappsは必ずTestNetでデプロイして調整する必要あり。
    • Private
      • Development Network
  • Ethereumアプリ開発をする時の技術スタック

  • 言語

    • Solidity
      • C++,Javascripライク
      • リソースが一番多い。
    • Vyper
      • Pythonライク
    • Yul
      • EVMの中間表現
      • 上級者向け
    • Fe
  • スマートコントラクトプログラミングの全容