source: http://ggllaw.net/areas-of-practice/
最近,因為某些因素,想要更進一步多了解智能合約的運行實際情況,想起往年的文章,回頭找出這兩篇合作文章 (由失聯已久的 @antonsteemit執筆)
DA-ChainTalk #1 — State,從宏觀到微觀:以太坊如何將智能合約帶入區塊鏈世界
DA-ChainTalk #3 — 智能合約之前世今生
再讀一次,才發現自己當時其實沒有完全吸收,事隔一年再看,還是頗有收穫。不過,這樣的理解程度,還不能滿足我的需求,所以,去找了一位作開發的朋友,問他一下,這是最快的方式。
果然,寫代碼的朋友,頭腦都蠻清楚的,他跟我聊了十多分鐘,我收穫蠻大的。如果要自己看書來理解,恐怕是非常困難的。
以下,我把我學習到的基本概念,整理出來。也可能因為我理解錯誤而有錯,有專業的讀者們,歡迎指正我,繼續教導我更多關於智能合約的知識吧!^^
關於智能合約(smart contracts)
智能合約,可以被視為在區塊鏈上執行的程式,但比起一般程式,智能合約所受到的制約更多,所能達成的功能也比較有限。
智能合約的佈署(deploy),是透過一個EOA帳戶來上傳區塊鏈,把compile過的Solidity原始碼,記錄到一個智能合約帳戶裡去。
每個智能合約內可以有各種寫好的functions以及variables,variables的state可以更新,但智能合約本身結構,在上傳後就是不可更改的。
智能合約的地址,就是其上傳的那一個區塊地址,後面呼叫此合約,就會到此一地址來取得執行代碼。
智能合約的執行是必須依靠外界的觸發,且其執行具有atomic的概念,亦即所有程式都在這一次執行完成,完成後的更新狀態,紀錄為transaction
每個Ethereum礦工執行的結果是否符合該合約應該有的結果,可以輕易由其他礦工驗證,正如比特幣區塊鏈上,交易的結果是否正確,可以輕易由後續礦工所驗證。
因此,智能合約無法做到諸如:每個週一定時,自動地,由帳戶A轉帳1 Ether到帳戶B,這樣的自動化程序。
如果大家有推薦什麼好的文章連結,可以深入淺出地解釋智能合約的運作(不能太淺,但也不能技術性),請多多推薦給我吧!
Image Source: pixabay
This page is synchronized from the post: ‘[學習筆記] 智能合約 20190423’