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