【區塊鏈】以太坊Soliddity編程開發:使用Remix的基本流程

以太坊Solidity編程開發:使用Remix的基本流程

Hello World

先看一段代碼:

pragma solidity ^0.6.4; //指定所需編譯器版本


contract Hello{
	function helloWorld() returns(string) {
		return "Hello World";
	}
}

異常1:security/enforce-explicit-visibility: No visibility specified explicitly for helloWorld function. No visibility specified. Did you intend to add “public”?

解決辦法,在returns前添加public
原因是:未指定可見性,採用默認public可見範圍,這裏需要說明的是有4種函數可見性:

  • public:智能合約外部和內部都可使用的方法
  • internal:智能合約(包括派生合約)內部可用調用的方法
  • external:可通過其他合約和交易進行調用的方法
  • private:只有在定義的合約種纔可以調用,即使派生的合約也無法調用
function helloWorld() public returns(string) {

異常2:Data location must be “memory” for return parameter in function, but none was given.

解決辦法:在string後追加memory

function helloWorld() public returns(string memory) {

異常3:Function state mutability can be restricted to pure

解決辦法:在public後添加pure
原因:功能狀態可變性可以限制爲pure。在之前的版本中使用constant來限制一個方法的制度性,當用constant修飾後,此方法在被調用時不會進行存儲的變更,同樣不會產生交易和gas花費。而pure正式constant的替代品。

function helloWorld() public pure returns(string memory) {

異常4:security/no-tx-origin: Consider using ‘msg.sender’ in place of ‘tx.origin’.

解決辦法:使用msg.sender替代tx.origin

constructor() public {
  balances[msg.sender] = 10000;
 }

使用Remix

加載合約文件

打開本地sol文件

編譯合約文件

注意版本選擇。
編譯合約文件

運行/部署合約

部署合約文件

查看調用結果

查看合約調用情況
如果函數帶有參數,則測試參數輸入位置如下:
帶參數的函數調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章