【区块链】以太坊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文件

编译合约文件

注意版本选择。
编译合约文件

运行/部署合约

部署合约文件

查看调用结果

查看合约调用情况
如果函数带有参数,则测试参数输入位置如下:
带参数的函数调用

发布了279 篇原创文章 · 获赞 169 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/ARPOSPF/article/details/105463251