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:既不能读取也不能修改状态变量,所以执行时也不会有花费