智慧型合約入門

2021-09-29 01:58:07 字數 1376 閱讀 8829

智慧型合約也稱為」自執行和約「,或者叫「**化的合約」。這個小節裡面我們不聊智慧型合約的社會意義,而是假設你是一位開發者,準備上手智慧型合約的開發,那麼動手之前都有哪些基礎知識是必備的呢?本文為你呈現。

智慧型合約的概念於 1994 年由 nick szabo 首次提出。廣義上來講,任何的能自動完成的合同就是乙個智慧型合約,例如我去自動售貨機買一瓶飲料,或者掃碼使用一輛共享單車。但是當前討論的智慧型合約,其實是跟區塊鏈密不可分的。所以我們這裡討論的智慧型合約的精確的定義是,乙個執行在區塊鏈上的程式。注意這個程式甚至不一定需要去模擬乙個商業合約,任何的一段程式只要是部署到了區塊鏈上,我們都叫它乙個智慧型合約,即使程式中只是完成了列印 hello world ,或者計數器加一的操作。

為何智慧型合約和區塊鏈結合如此緊密呢?szabo 提出智慧型合約的概念之後很長時間內,智慧型合約根本無法落地,主要原因是合約各方無法去達成信任。於是,區塊鏈作為所謂的信任機器,就剛好成為了智慧型合約的技術基礎。智慧型合約和傳統電腦程式最大的區別在於其執行結果的認可度,傳統電腦程式的執行結果沒有建立在共識機制上。而達成共識的前提是,合約的執行過程應該是公開的,合約產生的各項資料應該是不可篡改的。

位元幣作為區塊鏈之母,沒有真正成為智慧型合約的執行平台。原因就是位元幣指令碼是圖靈不完備的,不能實現豐富的邏輯,所以直接在位元幣上執行複雜的智慧型合約是不現實的。最終,是以太坊的出現帶來了智慧型合約的爆發。

雖然,以太坊之後的各個區塊鏈專案大都支援智慧型合約了,包括位元幣也在第二層有了 rsk 方案去支援智慧型合約。但是以太坊技術在智慧型合約方面的很多開創性的成果,目前已經被大家都預設為是行業標準了。

位元幣因為功能少,所以可以基本上看做乙個執行在區塊鏈上的資料庫,因為主要的功能就是存交易資料。而以太坊不一樣,可以認為是乙個執行在區塊鏈上的虛擬機器。以太坊區塊鏈上的虛擬機器叫做 evm ,evm 就是 solidity 語言的執行環境。以太坊號稱世界計算機,所有的部署到以太坊之上的合約**,網路上所有的計算機都會各自運算一遍,這樣就保證了計算過程是公開可信的。

但是退一步思考一下,為何位元幣指令碼不設計成圖靈完備的呢?是中本聰沒有考慮智慧型合約嗎?不是的。中本聰的考慮是這樣的,因為區塊鏈是乙個公有的環境,如果允許使用者寫迴圈語句,那麼攻擊者寫乙個死迴圈,就可以讓整個網路癱瘓。而這個擔憂顯然也適用於以太坊,那以太坊是如何避免這個問題的呢?以太坊之上,每次執行**是要花費少量的代幣的,也就是要花費 gas ,也就是汽油的意思。這個意義很明確,就是你想讓以太坊這輛車跑得快,就要給他加汽油,如果你寫乙個死迴圈,那麼很快你賬戶上的汽油就用光了,那麼**也就停止執行,避免了網路的癱瘓。

總之,學習任何平台上的智慧型合約開發,都避免不了要學習一下以太坊的各種思想和標準,其中比較重要的就是 solidity 語言,以及消耗 gas 來租用系統資源的這種思路。

那咱們用 solidity 實現了智慧型合約之後,如何編譯和執行呢?

智慧型合約入門

先從乙個非常基礎的例子開始 123 4567 891011 12 contract zhaoxistorage function get constant returns uint retval 在solidity中,乙個合約由一組 合約的函式 和資料 合約的狀態 組成。合約位於以太坊區塊鏈上的乙個...

位元幣智慧型合約入門(1)

當談及智慧型合約時,大多數人都會下意識地把位元幣排除在討論範圍之外,因為當下流行的觀點是位元幣不具有智慧型合約的能力。但是今天想跟大家介紹的內容則正好與此相反 即位元幣從誕生之日即擁有支援智慧型合約的能力,下面讓我們一起來探個究竟。位元幣底層採用了乙個很特別的交易模型設計,即 utxo unspen...

智慧型合約從入門到精通 智慧型合約的應用場景

簡介 上一章我們簡單介紹了區塊鏈技術的發展情況,並詳細介紹智慧型合約的基礎概念。可以說,區塊鏈1.0時代與現實生活相去甚遠。智慧型合約的出現,給區塊鏈帶來了驚天動地的變化,區塊鏈也從一種賬本形式,變成了下一代計算網路的雛形。這一章我們將聊聊智慧型合約的應用場景。一 黑客攻擊的風險。回到剛才的例子,人...