Sun(泰山眾籌)系統開發|眾籌DAPP開發搭建技術

搭建猿punk2558發表於2023-02-13

  目前的智慧合約基本都是執行在以太坊上。本文將透過一個簡單而具體的智慧合約例項來幫助大家理解智慧合約的編寫、部署與呼叫。這個例子很簡單,但透過它你可以瞭解開發一個以太坊的智慧合約的完整過程。在之後的教程中,我們將結合不同的場景案例,分別舉出不同的例子例如投票、眾籌、拍賣、ERC20/ERC721代幣發行等,


  編寫程式碼


  學一門語言的第一個程式毋庸置疑都是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既能夠建立這個合約。


  我們可以點選sayHello呼叫。可以看到已經呼叫成功,在logs中列印出了我們發出的event。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2934924/,如需轉載,請註明出處,否則將追究法律責任。

相關文章