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