摘要:本文主要幫助大家快速編寫并運行第一個智能合約。是提供的一種事件和訂閱機制,智能合約能夠發(fā)出一些,合約調(diào)用者能夠監(jiān)聽這些事件并作出相應(yīng)的反應(yīng)。
引言
本文假設(shè)你已經(jīng)對區(qū)塊鏈有一定的了解。智能合約是1990年代由尼克薩博提出的理念,以太坊首先看到了區(qū)塊鏈和智能合約的契合,發(fā)布了白皮書《以太坊:下一代智能合約和去中心化應(yīng)用平臺》,并一直致力于將以太坊打造成最佳智能合約平臺。因此目前的智能合約基本都是運行在以太坊區(qū)塊鏈上的計算機程序。本文主要幫助大家快速編寫并運行第一個智能合約。
語言和IDE選擇目前智能合約最受歡迎的編程語言為Solidity,但是并不只有Solidity。編寫Solidity代碼,我們可以使用Remix,它是一個基于瀏覽器的Soldity IDE,網(wǎng)址為http://remix.ethereum.org/。Remix支持編寫、測試和部署智能合約。Remix界面如下圖
學(xué)一門語言的第一個程序毋庸置疑都是HelloWorld,那么我們就來寫一個HelloWorld的智能合約吧。合約代碼如下。
pragma solidity ^0.4.21; contract HelloWorld { string hello = "Hello World!!!"; event say(string _value); function sayHello() public { emit say(hello); } }
合約代碼第一行指定該合約使用的Solidity版本為0.4.21,不支持高于0.4.21版本的Solidity特性。
在Solidity中,contract關(guān)鍵字包含的代碼段即表示一個智能合約,它擁有一些成員變量,表示該合約的數(shù)據(jù),如我們的HelloWorld中的hello,我們可以修改操作這些成員。同時它擁有一些function,可以被他人調(diào)用。
event是Solidity提供的一種事件和訂閱機制,智能合約能夠發(fā)出一些event,合約調(diào)用者能夠監(jiān)聽這些事件并作出相應(yīng)的反應(yīng)。
這個合約沒有做很多事情,它只會在有人調(diào)用它的sayHello方法時,發(fā)出一個say事件。接下來讓我們來部署和執(zhí)行它。
部署和運行合約首先我們需要編譯這段代碼,在Remix的右邊有一個Compile的tab,點擊Start to compile,編譯成功,如果失敗會有錯誤提示,改正即可。
然后我們需要將其部署到區(qū)塊鏈上,切換tab到Run。
Remix支持三種環(huán)境運行合約。其中如果為JavaScript VM,則合約會在瀏覽器JavaScript沙箱區(qū)塊鏈中被執(zhí)行,可以理解為Remix使用了瀏覽器的JS環(huán)境虛擬了一個區(qū)塊鏈虛擬機。如果為Injected Provider,則Remix將會鏈接Matamask或者Mist這些區(qū)塊鏈錢包,通過它們來間接部署和調(diào)用合約。最后為Web3 Provider,Remix會鏈接Geth等遠(yuǎn)程區(qū)款連節(jié)點,來部署和調(diào)用合約。
簡單起見,我們將使用JavaScript VM,它將為我們初始化出五個區(qū)塊鏈賬號,使用默認(rèn)賬號即可。將Environment設(shè)置為JavaScript VM。如下圖。
上圖除了Environment和Account依次往下,我們將能夠看到Gas Limit,這是執(zhí)行一個Transaction我們能夠接受的最大代價。Value表示下一次調(diào)用我們將向合約賬戶轉(zhuǎn)賬多少ether。
接下來的HelloWorld表示我們將創(chuàng)建的合約。點擊Create既能夠創(chuàng)建這個合約。如下圖我們看到HelloWorld合約已被創(chuàng)建。
我們可以點擊sayHello調(diào)用。可以看到已經(jīng)調(diào)用成功,在logs中打印出了我們發(fā)出的event。
在本文中,我們編寫了一個最簡單的智能合約,并部署和運行了該合約。我們并沒有將合約部署到實際的鏈上,只是在JS 沙箱虛擬機中執(zhí)行了它。后面的文章中我們將會繼續(xù)講解如何將合約部署到鏈上。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24013.html
摘要:年的區(qū)塊鏈牛市已經(jīng)過去了,目前看來,年會是一個大熊市,投資抄幣估計也撈不著什么。熊市囤技術(shù),其實是技術(shù)人員很好的選擇。三期同學(xué)討論積累資料的地址等風(fēng)來區(qū)塊鏈熊市,技術(shù)人就要做技術(shù)投資。 2017 年的區(qū)塊鏈牛市已經(jīng)過去了,目前看來,2018 年會是一個大熊市,投資抄幣估計也撈不著什么。熊市只能囤囤幣,囤囤技術(shù),只能等下一輪風(fēng)起了。熊市囤技術(shù),其實是技術(shù)人員很好的選擇。等區(qū)塊鏈牛市來了,...
摘要:由于使用的人數(shù)眾多,主網(wǎng)絡(luò)的魯棒性很強,能夠?qū)构簦瑓^(qū)塊鏈也不易被篡改,因此主網(wǎng)絡(luò)是具有功能的,其上的以太幣是有價值的。結(jié)語本文主要介紹了如何使用和將智能合約部署到區(qū)塊鏈上,我們使用了以太坊的區(qū)塊鏈網(wǎng)絡(luò)。 引言 在上一篇文章中《快速上手第一個智能合約中》,我們介紹了如何編寫與運行我們的第一個智能合約。但那只是將合約運行在了瀏覽器的區(qū)塊鏈虛擬環(huán)境中,與區(qū)塊鏈還是有一定的區(qū)別,另外也無法...
摘要:所以最簡單的智能合約只需實現(xiàn)文件。我們看到文件中已經(jīng)聲明了這個,并說明了這個的李嘉圖合約,大概意思是本合約的輸入為一串字符,本合約意圖是打印輸出,沒有其他效果。 Hello World! 稍微了解 EOS 系統(tǒng),你就會知道 EOS 的智能合約基于 WebAssembly(WASM) 技術(shù),這種技術(shù)在性能和跨平臺兼容性之間取得了很好的平衡,通過將原始代碼編譯成字節(jié)碼,使得代碼可以在多種平...
摘要:原文發(fā)表于以太坊智能合約開發(fā)第七篇智能合約與網(wǎng)頁交互上一篇中,我們通過開發(fā)框架快速編譯部署了合約。智能合約與網(wǎng)頁交互啟動腳本修改完了之后,就需要與網(wǎng)頁進行整合。 原文發(fā)表于:以太坊智能合約開發(fā)第七篇:智能合約與網(wǎng)頁交互 上一篇中,我們通過truffle開發(fā)框架快速編譯部署了合約。本篇,我們將來介紹網(wǎng)頁如何與智能合約進行交互。 編寫網(wǎng)頁 首先我們需要編寫一個網(wǎng)頁。打開 smartcon...
摘要:流程總結(jié)就是下載安裝插件錢包,如果自己的不需要跳過這一步。然后將編譯后的合約參數(shù)配置在的配置文件,如下圖全紅部分是測試網(wǎng)合約配置參數(shù)調(diào)用插件錢包。開發(fā)出優(yōu)秀的應(yīng)用。 安裝使用插件錢包 1. 打開Google瀏覽器的應(yīng)用商店,搜索Bystore showImg(https://segmentfault.com/img/bVbq0Ol?w=2554&h=1312); 下載鏈接:http:/...
閱讀 383·2023-04-25 16:38
閱讀 1497·2021-09-26 09:46
閱讀 3342·2021-09-08 09:35
閱讀 2793·2019-08-30 12:54
閱讀 3260·2019-08-29 17:06
閱讀 1032·2019-08-29 14:06
閱讀 3356·2019-08-29 13:00
閱讀 3473·2019-08-28 17:53