09.01 關於以太坊智能合約,你所需要知道的都在這裡

我們常常聽到人們對於區塊鏈發展時期的劃分。以比特幣的出現定義區塊鏈1.0時代,以太坊的出現定義區塊鏈2.0時代。比特幣在整個區塊鏈世界裡,扮演了價值存儲的功能,所以被稱為數字黃金,而以太坊的出現則定義了智能合約的時代。

关于以太坊智能合约,你所需要知道的都在这里

如何準確的定義以太坊?我認為以太坊在區塊鏈世界中扮演了三個角色:它是一條以工作量證明為共識機制的公鏈,採用與比特幣不同的抗ASIC挖礦算法,計劃轉為POW+POS Hybrid,名為Casper的共識算法;它是一個應用平臺,具有幾乎圖靈完備的計算能力,能夠運行比較複雜的智能合約以及基於合約的app;它同時又是一種加密貨幣,用於支付在以太坊公鏈調用合約和記錄數據時產生的手續費;

之所以說以太坊開啟了一個時代,是因為它使得基於區塊鏈技術構建生態成為可能。美國SEC曾經定義所有的數字貨幣,本質上可以分為兩類,一類是security token,一類是utility token。前者指有融資功能的數字貨幣,後者指有實際效用的數字貨幣。由於大部分區塊鏈項目離落地應用非常遙遠,所以大多數數字貨幣屬於security token。而這一景象主要歸功於以太坊的問題,我認為,以太坊從去年到今年初的暴漲也主要由於它解決了一個極為剛需的問題——中小企業的融資問題。

今天我們就以ERC20代幣為例從技術層面來深入解讀一下以太坊智能合約。智能合約是1990s年代由尼克薩博提出的,由於缺乏可信的執行環境,一直沒有得到實際應用。區塊鏈技術出現後,人們發現區塊鏈天生可以喂智能合約提供可信的執行環境。以太坊的創始人Vitalik最早看到了區塊鏈與智能合約與區塊鏈的契合,發佈了《以太坊:下一代智能合約與去中心化應用平臺》。

我們知道,區塊鏈的本質是一個分佈式賬本系統,在比特幣網絡裡,區塊裡記錄的主要是比特幣的轉賬交易信息。而在以太坊的區塊中,記錄的除了轉賬信息以外,還有可執行的代碼。

首先,我們需要了解一個很重要的概念,叫做EVM(Ethereum Virtual Machine),也就是以太坊的虛擬機。以太坊的每個節點都會運行虛擬機,它不僅能夠執行代碼,還可以讀寫區塊中可執行的代碼和數據,校驗數據簽名等等。如果把比特幣比喻成功能手機,以太坊就像是智能手機。

在以太坊中,有兩種賬戶,一種叫外部賬戶,是人操作的正常賬戶,地址即公鑰,由私鑰控制;一種叫合約賬戶,地址隨機產生,有點像遊戲中的NPC(非玩家控制角色,non-player character)。

在外部賬戶發起並且改變區塊鏈上數據的行為叫交易,比如轉賬、部署合約和調用合約等等;與之相對應的是查詢,指僅僅查看鏈上的數據而不改變,這種操作並不消耗gas。

那麼什麼叫智能合約呢

?簡而言之,智能合約指能夠在EVM上運行的代碼和數據,是區塊鏈系統的內部應用,擁有自己的賬戶地址和存儲空間。外部賬戶可以部署智能合約,通過向合約地址提交一筆交易即可調用合約。而合約一旦部署,所有節點都會自動執行,並對執行結果進行驗證。同樣,智能合約本身是代碼,無論是代碼還是數據都具有可追溯、一致性、不可篡改的特點,即使是合約創建者也無法對代碼進行改動。

目前來說,最受歡迎的智能合約開發語言是Solidity,編譯為字節碼後部署到主網,通過外部賬戶發送轉賬進行調用。經過實測,大家可以嘗試發佈一個token玩玩。推薦步驟如下:

  1. 用MetaMask新建一個以太坊錢包
  2. 錢包選擇以太坊測試網絡Ropsten
  3. 用測試網絡獲取eth
  4. 用Remix進行編碼和編譯
  5. 用MEW進行合約部署
  6. 用EtherScan進行交易跟蹤和合約瀏覽

因為有了智能合約的加持,以太坊擁有了操作系統級別的想象空間,也是目前來說生態最好的公鏈,因為它找到了自己的強應用場景。迴歸到行業本身,雖然我們在開頭提到了區塊鏈的1.0與2.0時代,但整個行業依然處於非常早期,我們完全也可以說現在是0.1與0.2時代。

作為一個區塊鏈行業的從業者,我認為之所以有必要科普區塊鏈技術,正是為了明晰區塊鏈技術的邊界。區塊鏈本身作為一種高冗餘的數據存儲方式,以犧牲系統效率為代價提升安全性等等,並不是天生適用於所有的應用場景。對於所有公鏈來說,在未來一段時間的寒冬裡,有充足的耐心去解決現有的區塊鏈技術痛點以及培育生態才是真正不辜負這個時代。


分享到:


相關文章: