写点什么

马蹄链智能合约开发方案丨马蹄链智能合约系统开发(开发说明))

  • 2023-03-09
    广东
  • 本文字数:1165 字

    阅读完需:约 4 分钟

智能合约(或称加密合约)是一种计算机程序,搭建案例:I35 开发 7O98 系统 O7I8 在一定条件下直接自动控制双方的数字资产转移。智能合约的工作方式与传统合约相同,同时也自动执行合约。


智能合约是完全按照其创建者的设置(编码,编程)执行的程序。就像传统合同可由法律强制执行一样,智能合同可由代码强制执行。


代码逐行解读


确定的使用的 Solidity 版本


pragma solidity=0.5.16;


这两行导入了该合约必须实现的接口 IUniswapV2ERC20.sol 和一个防溢出的数学工具库 SafeMath。一个合约实现的接口代表了它的基本功能;防溢出数学工具库应用很常见,主要是因为数值是可以无限大的,但是存储位数是有限的。例如最大 256 位,因此最大的无符号整数就是是 2**256-1。再大就会溢出,这时就会得到预期外的结果。


另外,因为在 Solidity 中,应用最多的是无符号整数,如果减法得到了负数,根据二进制的表示法,结果会被认为成另一个无符号整数。在早期的智能合约中,存在溢出漏洞或者得到负值而遭受损失的情况。当前编写的智能合约一般都会防范这种问题的发生,使用 SafeMath 工具库是最常见的预防手段。注意,该库里只有加、减和乘三种计算,没有除法。因为除法不会有溢出;如果被零除,Solidity 语言本身会报错重置整个交易,不需要额外处理。


import"./interfaces/IUniswapV2ERC20.sol";


import"./libraries/SafeMath.sol";


定义了该合约必须实现导入的 IUniswapV2ERC20 接口。该接口是由标准 ERC20 接口加上自定义的线下签名消息支持接口组成,所以 UniswapV2ERC20 也是一个 ERC20 代币合约。最后一个花括号是作用域开始。


contract UniswapV2ERC20 is IUniswapV2ERC20{


代表在 uint256(uint 是它的同名)类型上使用 SafeMath 库。Solidity 中库函数在指定调用实例时(例如本例中的.sub 等)和 Rust 语言中的结构体的方法类似,实例自动作为库函数中的第一个参数。


using SafeMath for uint256;


这三行代码定义了 ERC20 代币的三个对外状态变量(代币元数据):名称,符号和精度。这里的精度就是小数点位数。注意,由于该合约为交易对合约的父合约,而交易对合约是可以创建无数个的,所以这无数个交易对合约中的 ERC20 代币的名称、符号和精度都一样。我们平常在交易所中看到的只是 ERC20 代币的符号,从这里可以看出,符号是可以重复的,并不是唯一确定的。代币之间根本区别是合约地址,这个是唯一的,不同的地址就是不同的代币,哪怕合约代码完全一样。


//token 名称,案例及模式:MrsFu123


string public constant name="Uniswap V2";


//token 缩写


string public constant symbol="UNI-V2";


//token 精度


uint8 public constant decimals=18;


记录代币发行总量的状态变量。为什么是访问权限是 public 的呢?主要是利用编译器的自动构造同名函数功能来实现相应接口。


uint256 public totalSupply;


用一个 map 记录每个地址的代币余额


mapping(address=>uint256)public balanceOf;

用户头像

还未添加个人签名 2020-12-10 加入

还未添加个人简介

评论

发布
暂无评论
马蹄链智能合约开发方案丨马蹄链智能合约系统开发(开发说明))_系统开发咨询1357O98O718_InfoQ写作社区