iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0

以太坊區塊鏈為了讓智能合約的撰寫變得便利,修改了許多底層資料處理的方式,交易不再是使用 UTXO 這種模式。

有人比喻說,UTXO 就像是要給你 3 元,但是我手中只有 5 元(一個 5 元的 UTXO),所以就給對方 5 元後,在找 2 元回來。但是以太坊中,使用 Merkle Patricia Tree(MPT,參考連結) 的結構來儲存帳戶資料,資料包含帳戶地址、以太餘額、nonce等,所以在以太坊中的交易,沿用剛剛說的 5 元範例,在以太坊就是直接將 3 元轉給對方。而智能合約的程式碼也是儲存在 MPT 之中。

智能合約(Smart contract) 就是一段可以透過 EVM 執行的程式碼。一個穩定的程式碼,同樣的輸入就會有同樣的輸出,透過發佈一個可執行的智能合約程式碼,通過共識點對點以太坊區塊鏈網路同步到每個節點。

當有一筆『交易』觸發智能合約程式碼,這個觸發程式碼的『交易』會包含 :

  1. 智能合約地址
  2. 觸發函式名稱(名稱 Hash 值的前八碼)
  3. 需要輸入參數的話,就會包含參數

當這筆交易被區塊打包上鏈,所有 EVM 節點就會依照『交易』開始執行指定的智能合約函式。若執行成功,執行結果就會被紀錄下來。因為所有 EVM 節點都是同一份程式碼,也都是執行相同的函式與相同的輸入,最後每個節點就會得到相同的輸出。

這樣代表什麼嗎?原本在比特幣區塊鏈中,『交易被區塊打包上鏈』這件事只有代表貨幣的轉移。現在透過以太坊區塊鏈的智能合約,交易這件事還能透過程式完成特定的狀態轉換,不再限於只有貨幣得轉移。

對於各位工程師大大們,只要能寫程式,就可以解決許多問題!所以當自己的程式碼發佈到網路上,不用在準備伺服器,所有人都可以使用!這麼美好的事情,就在以太坊區塊鏈中實現啦!

但是,在區塊鏈中撰寫智能合約(程式碼)與平常電腦所執行的程式碼相比,有更多的限制與不同之處。主要限制大概就是

  1. 發布後無法輕易更改(別忘了區塊鏈無法更改的特性)
  2. 所有 EVM 要幫你執行程式碼,所以是要花錢的,越耗能越貴而且有資源上限
  3. 因為資安問題,能執行的程式碼其實非常有限
  4. 平均執行速度非常慢,因為需要等待交易完成共識(平均15秒左右)
  5. 智能合約工程師薪水很高

有這麼多限制,那還能用嗎?
說個冷知識:任天堂第一代超級馬力歐只全部檔案大小有 40K bytes,你覺得工程師會有極限嗎?


上一篇
以太坊 Ethereum Blockchain
下一篇
創業募資自己來,Initial Coin Offering (ICO)
系列文
區塊鏈淺談:從創世到末日,上月球到落地30

尚未有邦友留言

立即登入留言