ITPub博客

首页 > 区块链 > 区块链 > 代币合约系统开发搭建丨DAPP代币模式项目开发技术方案

代币合约系统开发搭建丨DAPP代币模式项目开发技术方案

原创 区块链 作者:Tg_StPv888 时间:2023-04-10 15:57:37 0 删除 编辑

  SocialFi可以透过去中心化机制,让平台的所有权与治理权回归到用户身上,由整个社群来拟定审查机制,同时也能避开恼人的演算法,用户能够只看到自己追踪的人,


  pragma solidity=0.5.16;照例指定确定的使用的Solidity版本。


  import'./interfaces/IUniswapV2ERC20.sol';import'./libraries/SafeMath.sol';这两行导入了该合约必须实现的接口IUniswapV2ERC20.sol和一个防溢出的数学工具库SafeMath。一个合约实现的接口代表了它的基本功能;防溢出数学工具库应用很常见,主要是因为数值是可以无限大的,但是存储位数是有限的。例如最大256位,因此最大的无符号整数就是是2**256-1。再大就会溢出,这时就会得到预期外的结果。另外,因为在Solidity中,应用最多的是无符号整数,如果减法得到了负数,根据二进制的表示法,结果会被认为成另一个无符号整数。在早期的智能合约中,存在溢出漏洞或者得到负值而遭受损失的情况。当前编写的智能合约一般都会防范这种问题的发生,使用SafeMath工具库是最常见的预防手段。注意,该库里只有加、减和乘三种计算,没有除法。因为除法不会有溢出;如果被零除,Solidity语言本身会报错重置整个交易,不需要额外处理。


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


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


  string public constant name='Uniswap V2';


  string public constant symbol='UNI-V2';


  uint8 public constant decimals=18;


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


  uint public totalSupply记录代币发行总量的状态变量。为什么是访问权限是public的呢?这个在学习系列(一)中已经讲过了。主要是利用编译器的自动构造同名函数功能来实现相应接口。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70016646/viewspace-2944777/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专业区块项目开发团队:18028578624微電

注册时间:2022-04-13

  • 博文量
    158
  • 访问量
    95686