solidity编写eth智能合约之contract 创建合约(二)

时间:2022-07-28
本文章向大家介绍solidity编写eth智能合约之contract 创建合约(二),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

环境说明: Ide:在线remix Solidity IDE 语言:solidity solidity 版本号:0.4.20 Tip:如果一点都不懂的建议从头开始看 运行结果截图我不赘述,所有合约代码均通过个人检测。请按照标准进行操作,如出问题检测是否网络连得上外网,且操作按照第一节内容类似操作;由于版本更新,可能会出现不同,但该教材代码均适用于在0.4.20 版本使用 为什么要用0.4.20 这个老版本。。。我可能习惯用,每次更新都一对老代码报错,太懒了就默默的用着0.4.20版本。。。

solidity中,合约的语法和面向对象很相似,在一般的面向对象语言中,我们使用class来定义一个类;在这一个类中我们将会有这个类的方法属性。

solidity中,我们使用contract来定义一个合约,这个合约可以用对应的合约变量,以及合约的方法。

一个简单合约的定义:

pragma solidity ^0.4.20;
contract Test{
    
}

首先:pragma solidity ^0.4.20; 声明版本号 contract 创建一个名为 Test 的合约

接下来在合约其中书写合约变量以及一些简单的读取函数:

pragma solidity ^0.4.20;
contract Test{
    uint256 val;//声明变量
    //设置方法
    function set(uint256 x)public{
        val=x;
    }
    //取值
    function get() public constant returns(uint256){
        return val;
    }
}

代码解析: set函数 pragma solidity ^0.4.20;

版本号说明

contract Test{}

合约定义

uint256 val;

声明uint 无符号整形256位类型的变量 val

function set(uint256 x)public{}

定义public的类型的函数set 并且接收参数x为uint256类型的参数。 在这里,我们类似于c++,java,类型修饰符大多是在函数开头修饰,在这里,public位于函数开头中后位置修饰,这点有点类似于golang,如果我们去掉public则默认为public函数。 在0.4.2版本如此,如果去掉public可能会比较好理解:function set(uint256 x){} 这样就和常规的声明函数差不多了。

函数内容: val=x;

把传入的参数x的值赋值给合约变量val,这个val就等于和类成员变量一样

get函数: function get() public constant returns(uint256){}

声明get函数 public修饰符修饰 constant 表示这个函数没有修改操作,只是读取之类 returns() 表示返回值为 uint256 表示返回值为uint256

return val;:

返回val的值

运行:

部署好之后:

随便输入一个值到set:

之后点击get将会返回刚刚你设置的值:

记住,一定要选择狐狸钱包和测试网络并且解锁,也就是刚登陆的时候打密码打开你的钱包。