首页 > 其他分享 >区块链特辑——solidity语言基础(六)

区块链特辑——solidity语言基础(六)

时间:2023-01-20 00:12:00浏览次数:40  
标签:function uint256 代币 solidity returns external address 特辑 区块

Solidity语法基础学习

十、实战项目(二):

1.实战准备:

ERC20代币接口

ERC20 Token Interface接口

Interface IName {……}

·关键字:interface

  ·宣告一个接口,定义了需要满足的函数与事件

·在界面中的限制:

  ·所有宣告的函数接口必须是“external”,即使最终在合约使用的是public也一样。

  ·不能宣告构造函数(constructor)

  ·不能宣告在存储空间的变量(状态变量,state variables)

  ·不能宣告修饰符(modifier)

 

示例代码

ERC20接口

Interface IERC20{
    event Transfer(address indexed from,address indexed to,uint256 value);
    event Approval(address indexed owner,address indexed spender,uint256 value);

    funciton totalSupply() external view returns(unit256);

    funciton balance0f(address account) external view returns(uint256);
    function allowance(address owner,address spender) external view returns(uint256);

    function approve(address spender,uint256 amount) external returns(bool);
function transfer(address to,uint256 amount) external returns(bool);
    function transferFrom(address to,uint256 amount) external returns(bool);
}

2.分段解读:

发行量函数

·function totalSupply() external view returns(uint256);

·回传代币的发行量

·使用状态变量uint256_totalSupply来储存

 

账户函数查询函数

·function balance0f(address account) external view returns(uint256);

·给定一个账户(address),回传给该账户拥有的代币余额(uint256)

·因为是个address→uint256的关系,因此使用mapping来储存:mapping(address => uint256) _balance;

 

账户函数

·function transfer(address to,uint256 amount) external returns(bool);

·呼叫者“msg.sender”,转移“amount”数量的代币给特定账户“to”

·成功时回传true,反之,回传false

 

转账事件

·event Transfer(address indexed from,address indexed to,uint256 value);

·当发生代币转移时,必须触发此事件,即使转移的数量为“0”也是

 

授权函数

·function approve(address spender,uint256 amount) external returns(bool);

·呼叫者“msg.sender”,授权“amount”数量的代币给第三方账户“spender”使用

·成功时回传true,反之,回传false

 

授权事件

·event Approval(address indexed owner,address indexed spender,uint256 value);

·当授权函数被使用时,必须触发授权事件,即使授权的数量“value”为“0”也是。

 

授权数量查询函数

·function allowance(address owner,address spender) external view returns(uint256);

·回传代币拥有者“owner”授权给第三方账户“spender”的代币数量

·我们可以观察到授权的行为是owner→spender→uint256

  ·因此在储存授权的资讯时,会使用

  ·mapping(address => mapping(address => uint256))

 

第三方转账函数

·function transferFrom(address from,address to,uint256 amount) external returns(bool);

·呼叫者为“被授权的第三方账户”,从授权者“from”转移“amount”数量的代币给接收者“to”

·成功时回传true,反之,回传false

标签:function,uint256,代币,solidity,returns,external,address,特辑,区块
From: https://www.cnblogs.com/wybsignal/p/17062325.html

相关文章

  • Solidity 中编写内联汇编(assembly)
    汇编相关知识介绍什么是汇编?任何以高级语言(例如C,Go或Java)编写的程序,在执行之前都将先编译为“汇编语言”。但是什么是汇编?汇编(也称为汇编语言)是指可使用​​汇编器​​转......
  • 区块链 | 基于区块链的电子印章怎么验证真假?
    引言在工作生活中,我们越来越多的遇到电子发票、电子文件、电子合同……但对我们使用者、技术小白来说,如何鉴别这些文件上的电子签名、电子签章、电子印章真伪,安全信任这些......
  • HTML之图像,表格,列表,区块(笔记小结)
    ((8)-HTML之图像,表格,列表,区块)1图像1.1图像标签图像由<img>标签定义;<img>是空标签,只包含属性,并且没有闭合标签;需要使用源属性(src),页面上才能显示图像,其值是图像的UR......
  • 李荣先辈区块链
    李荣先辈是国内区块链的最早的一批抽象技术开发人员。其代表作有《逸一时误一世区块链》和《逸久逸久罢一龄区块链》等,每部作品的深度都给后来学区块链的同学带......
  • solidity部分修饰符的使用以及合约的部分调用方法
    Viewpure修饰符:使用view与pure不需要gweiview:不能修改链上数据只能访问pure:不能访问链上数据,被修饰的方法里的变量只能在方法内使用contract ViewPureExample{ ......
  • solidity结构以及部分方法
    合约结构://SPDX-License-Identifier:GPL-3.0 //或者UNLICENSED表示非开源,无法审核 pragmasolidity>=0.4.0<0.9.0; //solidity版本设置import"name1.sol";/......
  • 区块链特辑——solidity语言基础(五)
    Solidity语法基础学习九、实战项目(一):学以致用UP主捐款合约·合约要求:·建立时,需将合约的建立者设定成owner(constructor,msg.sender)·需记录每个观众的捐款......
  • 重磅!瞄准 Web 3.0,谷歌云推出专为区块链服务的 Blockchain Node Engine!
    【本文由CloudAce整理发布,谷歌云服务请访问 CloudAce官网】区块链技术正在为世界各地的消费者和企业带来巨大的创新和价值创造。随着技术变得越来越主流,公司需要可扩......
  • 区块链特辑——solidity语言基础(四)
    Solidity语法基础学习七、事件:事件Event·日志(log),是用来快速索引并查询过往资料的手段。·而solidity是透过“事件”在区块链上写下日志,使用者或由触发的事件所产生的......
  • 区块链特辑——solidity语言基础(一)
     Solidity语法基础学习一、智能合约的结构:  首先以上是智能合约的结构,包含版权宣告、编译指示、Usingfor宣告、错误定义、输入、列举与枚举、常数、合约、函......