成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

區(qū)塊鏈智能合約入門:Hello world(1)

felix0913 / 1463人閱讀

摘要:區(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

相關(guān)文章

  • 智能合約開發(fā)環(huán)境搭建及Hello World合約

    摘要:今天我們來(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)知道這些概念),建議先閱讀入門篇。就先...

    Winer 評(píng)論0 收藏0
  • 區(qū)塊技術(shù)學(xué)習(xí)指引

    摘要:引言給迷失在如何學(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è)...

    Cristic 評(píng)論0 收藏0
  • 工廠模式管理多個(gè)以太坊solidity智能合約

    摘要:在新智能合約的構(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/...

    leone 評(píng)論0 收藏0
  • 以太坊是什么 - 以太坊開發(fā)入門指南

    摘要:以太坊是什么以太坊是一個(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),以通俗...

    tomlingtm 評(píng)論0 收藏0
  • 區(qū)塊平臺(tái)EOSIO開發(fā)智能合約和dapp(一)

    摘要:與傳統(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ù)并...

    tylin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<