摘要:區(qū)塊鏈入門也從最基礎的智能合約開始。在正式部署執(zhí)行智能合約之前,我們需要在電腦上安裝。這時需要調用支付部署智能合約所需要的費。顯示智能合約的內(nèi)容是什么,在這里是。是析構函數(shù),用于銷毀數(shù)據(jù),終止合約。現(xiàn)在,錢仍然被鎖在合約里,永久凍結。
Hello world 是最簡單的程序之一,也是大部分程序員編寫的第一個程序。區(qū)塊鏈入門也從最基礎的Hello world智能合約開始。
在正式部署執(zhí)行Hello world智能合約之前,我們需要在電腦上安裝MetaMask for CMT。這是一個安裝在Chrome 瀏覽器的錢包工具,它的主要功能是管理 CyberMiles 帳號私鑰,實現(xiàn)從網(wǎng)頁上直接支付 CMTs (包括gas 費)等功能。
安裝過程比較簡單,去Chrome 應用商店中下載插件MataMask for CMT,打開開發(fā)者模式。
如果Chrome 瀏覽器中已經(jīng)安裝了其他版本的MetaMask,為了不影響使用,最好暫時停止使用其他版本的MetaMask,只留Metamask for CMT激活。
安裝好MetaMask for CMT,生成一個新的 CyberMiles 帳號來存儲 CMTs,在最上方選擇Main CyberMiles Network 或CMT Test Network。
MetaMask 需要有真實的CMT或者test CMT來支付執(zhí)行智能合約的gas 費,分別對應主鏈狀態(tài)、測試鏈狀態(tài)。
CMT轉賬速度非常快,差不多10秒就到賬了,并且不用支付gas費,轉賬體驗+1分!
在 Chrome 里打開Remix for CMT,將寫好的Hello World智能合約代碼放進中間的代碼編輯區(qū),當然,你也可以選擇自己寫代碼。
之后點擊右側的 Start to compile, 編譯器會自動檢查這段代碼是否存在常規(guī)性錯誤。沒有問題的話,編譯器會自動識別出該段合約的名稱,也就是 Contract 后面的Greet。
如果有問題,編譯器會給出提示,根據(jù)提示修改代碼,再次編譯即可。
檢查代碼沒有問題后,就可以把Greet智能合約部署到 CyberMiles 區(qū)塊鏈了。點擊右側最上方的Run,然后點擊Deploy。這時需要調用MetaMask for CMT 支付部署智能合約所需要的gas 費。
一般情況下,MetaMask 的支付頁面會自動跳出,點擊 Submit 進行支付就可以了。如果沒有自動跳出,手動點擊插件就好了??梢钥吹?,部署這個合約上鏈只需要花費0.000489個CMT。
支付完gas 費后,右下方Deployed Contracts 處就可以看到,我們的合約已經(jīng)在CyberMiles 鏈上部署好了。
紅色的terminate 可以終止這個合約,但只有合約owner 才可以執(zhí)行這項操作,終止合約同樣需要支持少量gas 費。
greet 顯示智能合約的內(nèi)容是什么,在這里是Hello World。當然,Hello World 這個詞只是程序員的選擇。作為智能合約的開發(fā)者,你可以讓 greet() 返回任何字符 — 可以是一首歌,一篇文章,一本書,或者是一段加密的文字。
owner 顯示這個合約的所有權歸哪個地址所有。你為這個合約支付部署gas費的賬號地址就是合約的所有者。
同時用區(qū)塊瀏覽器www.cmttracking.io/查詢交易地址信息,可以看到剛剛創(chuàng)建的合約地址。如果你的朋友有這個合約地址,在 At Address 欄內(nèi)輸入合約地址,點擊At Address 就可以收到別致的智能合約問候啦!
我們上面知道怎么用Hello World智能合約在區(qū)塊鏈存一段話,并讓世界上任何人看見這段話。那么,這是怎么在代碼里實現(xiàn)的呢?
pragma lity ^1.2.4;
這是智能合約所用的代碼語言及版本。
contract Greet { function greet() { } function terminate() { } }
以上代碼介紹了智能合約的名字Greet,以及兩個功能,greet和terminate。
address public owner; modifier onlyOwner() { assert(msg.sender == owner); _; } constructor () public { owner = msg.sender; }
以上的代碼設置了合約的owner,owner的地址信息是公開的。信息發(fā)送者,也就是誰支付了gas費,讓合約能夠部署到鏈上,誰就是owner,并且定義了只有owner能夠修改這個合約。
function greet() public pure returns (string) { return "Hello world"; }
以上代碼表明當你調用greet()時,就會出現(xiàn) Hello World。這個功能只是從區(qū)塊鏈上讀取數(shù)據(jù),所以不需要 gas 費用。這里你可以把 Hello World 改成任何文字。
function terminate() external onlyOwner { selfdestruct(owner); }
這就是智能合約最開始定義的terminate 終止合約的功能,并且定義了只有Owner可以執(zhí)行這項功能。selfdestruct是析構函數(shù),用于銷毀數(shù)據(jù),終止合約。
這個最基礎的合約既設置了合約的Owner,同時也設置了Owner 能夠銷毀合約,當執(zhí)行selfdesruct時,合約里的錢也會返還給Owner。
因為合約地址與錢包地址長地非常像,并且長度也一致,如果不小心把幣打到了合約地址,一般情況下,是無法找回的。但如果你知道合約的owner是誰,可以聯(lián)系合約的owner,在銷毀合約時拿回你的資產(chǎn)。
這只是個人的小損失,如果項目方?jīng)]有認真地對待代碼,帶來的資產(chǎn)損失是非常嚴重的。非常典型的案例是,今年7月份,Polkadot 有超過513,774.16 ETH 被凍結在Parity錢包中,就是因為合約中的 owner 被人設成 null 了,因此沒有人可以終止合約,拿回存在合約里的錢。現(xiàn)在,錢仍然被鎖在合約里,永久凍結。
謹慎對待,認真審查每一段代碼,尤其是涉及到錢的代碼,這是每個程序員該有的素質。
這是最簡單最基礎的Hello World,完整代碼可去github查看。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/24533.html
摘要:今天我們來一步一步從搭建以太坊智能合約開發(fā)環(huán)境開始,講解智能合約的如何編寫。開發(fā)環(huán)境搭建安裝強烈建議新手使用來進行開發(fā)。第行修改部署賬戶為新賬戶索引,即使用新賬戶來部署合約。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:智能合約開發(fā)環(huán)境搭建及Hello World合約原文已更新,請讀者前往原文閱讀 如果你對于以太坊智能合約開發(fā)還沒有概念(本文會假設你已經(jīng)知道這些概念),建議先閱讀入門篇。就先...
摘要:引言給迷失在如何學習區(qū)塊鏈技術的同學一個指引,區(qū)塊鏈技術是隨比特幣誕生,因此要搞明白區(qū)塊鏈技術,應該先了解下比特幣。但區(qū)塊鏈技術不單應用于比特幣,還有非常多的現(xiàn)實應用場景,想做區(qū)塊鏈應用開發(fā),可進一步閱讀以太坊系列。 本文始發(fā)于深入淺出區(qū)塊鏈社區(qū), 原文:區(qū)塊鏈技術學習指引 原文已更新,請讀者前往原文閱讀 本章的文章越來越多,本文是一個索引帖,方便找到自己感興趣的文章,你也可以使用左側...
摘要:在新智能合約的構造函數(shù)中,將引用我們的合約工廠的地址。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。以太坊入門教程,主要介紹智能合約與應用開發(fā),適合入門。這里是原文用工廠模式管理多個智能合約 我們寫了一份小的計算合約作為Hello World。如果我們可以創(chuàng)建一個允許用戶創(chuàng)建自己的計數(shù)器的合約怎么辦? showImg(https://segmentfault.com/img/...
摘要:以太坊是什么以太坊是一個建立在區(qū)塊鏈技術之上,去中心化應用平臺。運行環(huán)境以太坊虛擬機是以太坊中智能合約的運行環(huán)境。是由以太坊客戶端提供的是典型的開發(fā)以太坊時使用的客戶端,基于語言開發(fā)。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊是什么 - 以太坊開發(fā)入門指南原文已更新,請讀者前往原文閱讀 很多同學已經(jīng)躍躍欲試投入到區(qū)塊鏈開發(fā)隊伍當中來,可是又感覺無從下手,本文將基于以太坊平臺,以通俗...
摘要:與傳統(tǒng)方式不同,在去中心化的網(wǎng)絡及區(qū)塊鏈上運行后端代碼智能合約。這個博客涵蓋了什么在本博客中,我將展示如何設置區(qū)塊鏈并開發(fā)智能合約。 在我傾聽Bettina Warburg的演講之后,我對去中心化經(jīng)濟(dApps)的概念著迷。傳統(tǒng)的Web應用程序是: 前端→后端→數(shù)據(jù)庫 相比之下,dApp網(wǎng)站是: 前端→智能合約→區(qū)塊鏈 例如,當你進入電子銀行時,網(wǎng)頁將調用后端代碼來獲取你的個人數(shù)據(jù)并...
閱讀 1029·2021-11-18 10:02
閱讀 1909·2019-08-30 15:56
閱讀 2651·2019-08-30 13:47
閱讀 2726·2019-08-29 12:43
閱讀 955·2019-08-29 11:19
閱讀 1890·2019-08-28 18:23
閱讀 2762·2019-08-26 12:23
閱讀 3162·2019-08-23 15:29