Eth(以太坊)不知道你有沒有聽說過撰豺,ICO你一定聽說過耻讽。
但你知道ICO其實是借助Eth的智能合約實現(xiàn)的嗎洒琢?
什么是智能合約秧秉,Eth為啥這么火?
智能合約的特點是什么纬凤,我怎么寫智能合約福贞?
基于智能合約還有Dapp撩嚼,即分布式app停士,Dapp又是什么?
本系列文章將講述Ethereum的原理完丽,特點和機制恋技。
區(qū)塊鏈的運行機制
首先大家必須了解區(qū)塊鏈,可以閱讀之前的文章逻族。
這里只做一個簡單的描述蜻底,區(qū)塊鏈就是一條全網(wǎng)賬單鏈,鏈的使用者憑著自己的私鑰加密交易內(nèi)容聘鳞,然后發(fā)送到網(wǎng)絡上后薄辅,礦工通過比拼算力將內(nèi)容加密提交到區(qū)塊鏈上,同時獲得使用者支付的手續(xù)費抠璃。
由于大家都在競爭加密內(nèi)容站楚,所以全網(wǎng)的算力都是使用者提交內(nèi)容的見證人,因此區(qū)塊鏈交易有迅速搏嗡,不可逆的特點窿春。
賬戶和消息傳遞
Ethereum把交易抽象成消息傳遞,在Ethereum中采盒,每一個區(qū)塊(block)都包含多個消息旧乞。
每一次消息傳遞有發(fā)送者,也有接受者磅氨,消息內(nèi)容可以是一筆交易尺栖,也有可能是一段代碼。
在Ethereum中有兩種賬戶烦租,一種是人操作的正常賬戶延赌,另一種是智能賬戶,正常賬戶中只有當前的Eth錢數(shù)左权,而智能賬戶中存儲了兩個東西:狀態(tài)和代碼皮胡,每當收到相應的消息時,這些代碼就會被執(zhí)行赏迟,從而改變其狀態(tài)屡贺。這些賬戶也就是所謂的智能合約的載體。
這些智能賬戶就是智能合約的基礎(chǔ),要了解智能合約是怎么執(zhí)行的甩栈,先要了解EVM泻仙。
EVM
前面提到了,真正的計算是在各個礦工的電腦中進行的量没。Ethereum的改進之處玉转,就是在礦工收集消息,準備加密生成一個Block時殴蹄,必須啟動一個運行時環(huán)境究抓,也就是EVM,來運行智能賬戶收到消息時對應的代碼袭灯。
通過EVM運行代碼后刺下,智能賬戶的狀態(tài)發(fā)生了變化,這些狀態(tài)同正常賬戶里的資金轉(zhuǎn)移合起來的內(nèi)容加密生成新block稽荧,鏈接到全網(wǎng)賬單上橘茉。因此只有code執(zhí)行結(jié)果在大部分以太坊節(jié)點上都能驗證,才可以成功掛載姨丈,保證了代碼執(zhí)行的正確性畅卓。
智能合約的示例
概念有時候比較晦澀,我們舉一個募捐的智能合約的例子來幫助理解:
假設(shè)我們想向全網(wǎng)用戶發(fā)起募捐蟋恬,那就先可以定義一個智能賬戶翁潘,它有三個狀態(tài):當前募捐總量,捐款目標和被捐贈人的地址筋现,然后給它定義兩個函數(shù):
- 接收募捐函數(shù)
接收募捐函數(shù)每次收到發(fā)過來的轉(zhuǎn)賬請求唐础,先核對下發(fā)送者是否有足夠多的錢(EVM會提供發(fā)送請求者的地址,程序可以通過地址獲取到該人當前的區(qū)塊鏈財務狀況)
然后每次募捐函數(shù)調(diào)用時矾飞,都會比較下當前募捐總量跟捐款目標的比較一膨,如果超過目標,就把當前收到的捐款全部發(fā)送到指定的被捐款人地址洒沦,否則的話豹绪,就只更新當前募捐總量狀態(tài)值。
- 捐款函數(shù)
將所有捐款發(fā)送到保存的被捐贈人地址申眼,并且將當前捐款總量清零见擦。
每一個想要募捐的人溉愁,用自己的eth地址向該智能賬戶發(fā)起一筆轉(zhuǎn)賬,并且指明了要調(diào)用接受其募捐函數(shù)。
于是我們就有一個募捐智能合約啦辽社,人們可以往里面捐款雷滋,達到限額后錢會自動發(fā)送到指定賬戶内狗,全世界的礦工都在為這個合約進行計算和擔保凫碌,不再需要人去盯著看有沒有被挪用啦膜,這就是智能合約的魅力所在。
Ethereum最核心的智能合約機制大概就是這樣淌喻,其實也并不復雜僧家,接下來我們還會講一下,ICO是怎么借助智能合約實現(xiàn)的裸删,其實原理非常簡單八拱,等你明白了你一定會大吃一驚。
QQ群:654894791
微信公眾號: 94ETH
官網(wǎng): https://www.94eth.com
頭條號: 周期與泡沫