Solidity编写智能合约
1 pragma solidity ^0.4.4;//版本声明 ^代表向上兼容 pragma代表版本声明 solidity 代表开发语言 2 //定义类 3 contract Person { 4 //定义属性,属性名规范前面加_ 5 uint _height; 6 uint _age; 7 address _owner;//代表合约的拥有者 8 //方法名与合约名相同时属于构造函数 9 function Person(){ 10 _height = 180; 11 _age = 29; 12 _owner = msg.sender; 13 } 14 //set方法,去掉属性前面下划线,首字母大写,采用驼峰式 15 function setHeight(uint height){ 16 _height = height; 17 } 18 //get方法,方法名不需要写get constant代表方法只读,returns(uint)代表方法返回值类型 19 function height() constant returns(uint){ 20 return _height; 21 } 22 23 function setAge(uint age){ 24 _age = age; 25 } 26 function age() constant returns(uint){ 27 return _age; 28 } 29 30 function owner() constant returns(address){ 31 return _owner; 32 } 33 34 //析构函数 35 function kill() { 36 if(_owner == msg.sender){ 37 selfdestruct(_owner); 38 } 39 } 40 41 //0x692a70d2e424a56d2c6c27aa97d1a86395877b3a 当前合约地址 42 }
部署合约时,因为要往区块链写入数据,需要矿工进行验证,所以需要花费一些gas奖励给矿工,还有当我们每次调用increment
方法时,也属于写入数据,同样需要花费gas,但是调用getCount
方法时只是从区块链读取数据,无需验证,读取数据无须花费gas。