深入淺出以太坊智慧型合約

2021-09-20 08:32:24 字數 1611 閱讀 3663

本系列文章將全面講述ethereum的原理,特點和機制,以及涉及的各種概念。

區塊鏈的執行機制

首先大家必須了解區塊鏈。這裡只做乙個簡單的描述,區塊鏈就是一條全網賬單鏈,鏈的使用者憑著自己的私鑰加密交易內容,然後傳送到網路上後,礦工通過比拼算力將內容加密提交到區塊鏈上,同時獲得使用者支付的手續費。

由於大家都在競爭加密內容,所以全網的算力都是使用者提交內容的見證人,因此區塊鏈交易有迅速,不可逆的特點。

賬戶和訊息傳遞

在區塊鏈中的交易就是乙個位址往另乙個位址轉移基本單位,ethereum在這裡將這種行為抽象成訊息傳遞。每一次訊息傳遞有傳送者,也有接受者,訊息內容可以是一筆交易,也有可能是一段資訊。轉賬,其實就是乙個訊息傳遞。

在ethereum中有兩種賬戶,一種是人操作的正常賬戶,另一種是智慧型賬戶,正常賬戶中只有當前的eth錢數,而智慧型賬戶中儲存了兩個東西:狀態和**,每當收到相應的訊息時,這些**就會被執行,從而改變其狀態。這些賬戶也就是所謂的智慧型合約的載體。

這些智慧型賬戶就是智慧型合約的基礎,要了解智慧型合約是怎麼執行的,先要了解evm。

evm前面提到了,真正的計算是在各個礦工的電腦中進行的。ethereum的改進之處,就是在礦工收集足夠訊息,準備加密生成乙個block時,必須啟動乙個執行時環境,也就是evm,來執行智慧型賬戶收到訊息時對應的**。

通過evm執行**後,智慧型賬戶的狀態發生了變化,然後礦工將這些狀態同正常賬戶裡的資金變化一起,加密生成新的block,鏈結到全網賬單上。因此乙個交易只會在乙個block裡出現,並且要得到大多數算力的確認才能掛載,所以可以保證這些code執行的唯一性和正確性。

智慧型合約的示例

概念有時候比較晦澀,我們舉乙個募捐的智慧型合約的例子來幫助理解:

接收募捐函式

接收募捐函式每次收到發過來的轉賬請求,先核對下傳送者是否有足夠多的錢(evm會提供傳送請求者的位址,程式可以通過位址獲取到該人當前的區塊鏈財務狀況。)然後每次募捐函式呼叫時,都會比較下當前募捐總量跟捐款目標的比較,如果超過目標,就把當前收到的捐款全部傳送到指定的被捐款人位址,否則的話,就只更新當前募捐總量狀態值。

捐款函式

將所有捐款傳送到儲存的被捐贈人位址,並且將當前捐款總量清零。

每乙個想要募捐的人,用自己的eth位址向該智慧型賬戶發起一筆轉賬,並且指明了要呼叫接受其募捐函式。

於是我們就有乙個募捐智慧型合約啦,人們可以往裡面捐款,達到限額後錢會自動傳送到指定賬戶,全世界的礦工都在為這個合約進行計算和擔保,不再需要人去盯著看有沒有被挪用,這就是智慧型合約的魅力所在。

ethereum最核心的智慧型合約機制大概就是這樣,其實也並不複雜,接下來我們還會講一下,ico是怎麼借助智慧型合約實現的,其實原理非常簡單,等你明白了你一定會大吃一驚。

原文:智慧型合約實戰入門教程

2. 區塊鏈+ipfs+node.js+mongodb+express去中心化以太坊電商應用開發實戰

深入以太坊智慧型合約 ABI

編譯智慧型合約的 變成可在 evm 上執行的 bytecode binary code 同時可以通過編譯取得智慧型合約的 abi 部署智慧型合約,實際上是把 bytecode 儲存在鏈上 通過乙個transaction 並取得乙個專屬於這個合約的位址 如果要寫個程式呼叫這個智慧型合約,就要把資訊傳送...

智慧型合約 以太坊

智慧型合約是執行在可複製 共享的賬本上的電腦程式,可以處理資訊,接收 儲存和傳送價值。2.1 什麼是以太坊 以太坊 ethereum 是乙個分布式計算機,有許多的節點,其中的每乙個節點都會執行智慧型合約,然後把結果存在區塊鏈上。由於整個網路是分布式的,且應用就是乙個個的狀態組成,儲存了狀態就有了服務...

以太坊和智慧型合約

1 什麼是以太坊?以太坊的官方 告訴我們 以太坊是乙個執行著智慧型合約的分布式平台 應用程式完全按照程式執行,不存在故障 審查 欺詐或第三方干預的可能性 2 智慧型合約就是可以處理資金的指令碼。開發語言 solidity 整合開發工具ide remix,乙個基於瀏覽器的整合開發環境 開發框架 tru...