課程鏈結: 這裡

前言:

最近開始決定來清理一下 Coursera 上面積欠的課程,但是也想到竟然有這幾天的假期,不如來好好的學習一些有趣的知識. Ethereum 就是一個我之前一直想好好學習,但是沒有時間可以了解的. 剛好看到 Coursera 也有相關的課程,所以決定把這個系列課程剛好這幾天學習了解.

「Blockchain Basics」 算是比較粗淺的入門課程,並沒有任何的 Programming 的部分,主要是做概念的講解與名次的解釋.

課程內容:

Week1:

基本的 Blockchain 結構:

UTXO

UTXO(Unspent Transaction Output): 結構包含如下

  • Unique identifier of the transaction that created the UTXO
  • Index
  • Value
  • (option): Condition under output can be spent

一個 Transaction 會有 Input UTXO 也會有 Output UTXO,

Genesis Block

Genesis Block 指的是第一筆的交易,不論是 Bitcoin 或是 Ethereum 都有他們的 Block #0 ,我們可以透過以下的工具來查看:

  • Block Explorer: https://blockexplorer.com/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
    • 具有 1 個 transaction
    • Reward: 50
    • Difficulty: 1
    • 時間: 2009 (如果你那時候開始玩.. )
  • EtherScan: https://etherscan.io/block/0
    • 具有 8893 個 transactions
    • 0 個 contract
    • Gas: 5
    • Reward: 5

Week2:

Smart Contracts:

Smart contracts 是透過類似 Solidity 的高階程式語言,寫成一段程式碼可以透過 EVM (Ethereum Virtual Machine) 跑在任何的 ethereum client 上面.

Ethereum 貨幣單位

交易產生 Smart Contracts 流程:

每一筆交易可以帶有可執行的程式碼 (smart contracts) ,但是執行該 Smart Contracts 的算力(Gas) 會被反映到手續費裡面.並且有嚴格的 Gas Limit 來掌控一個 Block 所能使用的上限.

節點功用:

  • Full node:
    • 交易的啟動,認證
    • 挖礦
    • 區塊的建立
    • 智能合約的執行
  • Minor node:
    • 接收,驗證並且執行交易

Gas Point:

Gas Point 是給所有節點為了執行 Smart Contract 的手續費,計算範例如下:

  • Step: 1
  • Load from memory: 20
  • Store into memory: 100
  • Transaction base fee: 21000
  • Contract creation: 53000

如果 Gas Point 不夠或是消耗完了,該筆交易就會被取消.

Mining incentive model

Prove of work puzzle winner 拿到所有的 Block reward ,但是緊接在後面的 miner 叫做 Ommer miner .而它們挖出來的 Block 也會放著作為 Security check 之死,並且拿到一小筆的 reward.

Ethereum Accounts:

  • EOA(Externally owned account): 透過一組 PK (private key) 來代表你是帳號擁有者,並且可以執行相關操作.
  • Contract: 透過相關 smart contract 的 code 來控制的帳號.

Block creation sequence

  • 交易開始
  • 交易認證 (Validation)
  • 交易綁定與廣播
  • PoW 解決 Puzzle
  • 增加新的 Block 到鍊上

Refer: Life cycle of ethereum transaction

Week 3:

ECC (Elliptic curve cryptographyphy)

Strong than RSA,

256 bits ECC key pair ~= 3072 bits RSA key pair 

Hash function

  • Simple Hashing:
    • Fixed number of items (block header)
  • Tree hashing:
    • Number of items differ from block to block

All hashing output:

  • Account address
  • Digital signiatures
  • State hash
  • Receipt hash

如何保證 block 的一致性 (Integrity)

  • 不可串改的 block header
  • Transaction 不可被串改
  • State 的移轉是透過計算Hash 編碼並且認證過的

Bitcoin 與 Ethereum 都是透過 SHA-3 演算法 Keccak 來作加密

Bitcoin 如何計算這個 block 的 hash value? 需要以下資訊:

  • Previous block hash
  • Version
  • Merkle Root Hash
  • Timestamp
  • Bits
  • Nonce

參考網址: https://cse.buffalo.edu/blockchain/blockhash.html

Ethereum Merkle Tree

用來作用比對交易的一致性 (integrity), leaf node 存放交易(transaction)的資料. Parent node 則存放該子結點的 Hash Value. 而 Root node 存放所有交易的 Hash Value. 這樣做的好處有:

  • 一致性檢查: 所有的 Hash value 環環相扣,不容易被人輕易修改.
  • 修改少: 如果一筆交易有修改,要修改得資料只有由這個子結點一路到 root node

參考:

  • https://www.youtube.com/watch?v=h1wzzhkHfTk
  • https://bitcoin.stackexchange.com/questions/10479/what-is-the-merkle-root

Week4:

Trust Trail flow:

  • 驗證Transaction
  • 驗證 gas 跟 資源(resources)
  • 選擇一群交易 (transactions) 來建立新的 block
  • 執行該 Transaction 來取得新的狀態 (state)
  • 建置一個新 block
  • 通過 consensus 驗證
  • 將 block 加入到 chain 的最尾端

Consensus of blockchain

  • https://www.coindesk.com/short-guide-blockchain-consensus-protocols/
  • https://blog.wavesplatform.com/review-of-blockchain-consensus-mechanisms-f575afae38f2

Double Spending

  • 指的是有兩個 block 在非常接近的時間產生出來.這樣的話兩個 block 會同時連接到 main chain 產生兩條 chain . 但是之後比較長的 子鍊 會取代成為主鍊

  • Ethereum 透過 Global nonce 跟 account number 來解決這樣的問題.

PoW v.s. PoS

這段影片很簡單扼要

簡單記錄一下:

  • Proof -of-Work: (Bitcoin, Ethereum ( 主鍊))
    • Miner 透過消耗算力來解開 puzzle ,驗證是否為適合的 block.
    • Miner 得到相對應的 reward
    • 風險:
      • 51% 攻擊,當有人能夠集結 51% 以上的算力的時候就可以偽造資料,修改 main chain
  • Proof-of-Stake: (目前用在 Ethereum testnet)
    • 所有總資產一開始就存在,而每筆交易需要手續費(賭注)
    • 沒有人負責 mine block 而是作為 validate block
    • 每個人都可以附上一筆手續費來提升自己被選為下一個 block 的費用(賭注)
    • 風險:
      • 只要有人能夠拿出 51% 的錢當手續費,就有機會攻擊.這部分有更多論文正在討論.

Forks:

  • Soft fork: Software patch
  • Hard fork: Protocol change which introduce two chain could not merged.

Soft-fork in Bitcoin

Bitcoin 有過一次 Soft-fork for P2SH Script ( pay-to-script-hash script) refer here https://bitcoin.org/en/developer-guide#p2sh-scripts

Hard-fork in Ethereum (Ethereum Homestead –> Ethereum Metropolis)

包括了以下的 EIP (Ethereum Improvement Proposal):

  • Parallel processing of transactions
  • Proof-Of-Works consesnsus still stay except that every hundren blocks, Proof-of-stake consensus protocol is applied for evaluating latter.
  • Miner incentive was reduce from 5 Ethers to 3 Ethers.

Final Course Project

最後的作業,會讓你跑一個本地端的 VM 內建已經安裝好的 Ethereum client (geth) .並且跑一系列動作新建節點,連線,挖礦,交易.簡單但是可以馬上感受到 Ethereum 的完整感受.

Reference:

  • http://www.takethiscourse.net/blockchain-online-courses-moocs/
  • https://medium.com/blockchannel/life-cycle-of-an-ethereum-transaction-e5c66bae0f6e
  • https://github.com/ethereum/wiki/wiki/Ethereum-Development-Tutorial
  • https://cse.buffalo.edu/blockchain/blockhash.html
  • https://medium.com/@fukuball

Buy Me A Coffee

Evan

Attitude is everything