0
点赞
收藏
分享

微信扫一扫

以太坊智能合约语言Solidity - 1 走进Solidity

1. 走进Solidity

在本地编写我们可能会遇到各种各样的问题,所以使用在线的Remix编译器来编写合约:https://remix.ethereum.org是一个比较好的选择。 我们先来看看Remix的界面的基本情况,整体结构非常简单,具体情况如下
在这里插入图片描述
现在我们来创建一个HelloWorld文件,然后编写如下代码

//制定solidity的版本号,^代表向上兼容
pragma solidity ^0.4.0;

//合约,有点类似于于java中的class
contract Helloworld{
		
		//状态变量
    string Myname = "zhengjianxun";
    
    //public是修饰符,默认public类型的状态变量和函数,可供外部、子合约和内部合约调用,函数默认使用public
    //使用修饰符view修饰的函数不能修改状态变量,更准确的说不能修改以太坊区块链的状态

		//Getname是合约中的函数名
		//返回值要使用returns + 返回值类型的形式
    function Getname() public view returns(string)
    {
        return Myname;
    }

    function changeName(string _newName) public
    {
        Myname = _newName;
    }
		//pure修饰符既不允许修改状态变量也不允许读取状态变量
    function pureTest(string _name) pure public returns(string){
        return _name;
    }
    //如下的代码就不能通过编译
    //function pureTest(string _name) pure public returns(string){
    //   Myname = _name;
    }
}

现在我们编译并部署以上代码,成功部署后我们就会看到三个已经部署好的合约(函数)
在这里插入图片描述

现在我们开始执行这些合约,这里有三种情况:

changeName:因为在以太坊上执行改变状态变量的代码需要花费以太币,所以每执行一次它,都会消耗一定数量的以太币,以下是执行日志

status	true Transaction mined and execution succeed
transaction hash	0xa06020339bae8e9bf411486d61e48e3df690f3ff6d49128cc6860adeaddf2037
from	0x17F6AD8Ef982297579C203069C1DbfFE4348c372
to	Helloworld.changeName(string) 0xE2DFC07f329041a05f5257f27CE01e4329FC64Ef
gas	80000000 gas
transaction cost	29532 gas 
execution cost	29532 gas 
hash	0xa06020339bae8e9bf411486d61e48e3df690f3ff6d49128cc6860adeaddf2037
input	0x535...00000
decoded input	{
	"string _newName": "shiyiwei"
}
decoded output	{}
logs	[]
val	0 wei

Getname:只能读取状态变量所以无论执行多少次都不会有花费

pureTest:既不能读取也不能修改状态变量,所以执行时也不会有花费

举报

相关推荐

0 条评论