当前位置: 首页 > news >正文

武汉建筑公司网站北京官网seo收费

武汉建筑公司网站,北京官网seo收费,广元市利州区建设局网站,拓客软件破解版两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…

两个概念

  • ERC(Ethereum Request for Comment) 以太坊意见征集稿
  • EIP(Ethereum Improvement Proposals)以太坊改进提案

ERC和EIP用于使得以太坊更加完善;在ERC中提出了很多标准,用的最多的标准就是它的Token标准;
有哪些标准详细见https://eips.ethereum.org/erc

常见ERC标准

ERC-20Token Standard
ERC-721Non-Fungible Token Standard
ERC-165Standard Interface Detection
ERC-777Token Standard
ERC-1155Multi Token Standard

ERC-20

主要是指同质化代币标准(不同人持有的一个代币是等值的)。
ERC-20标准中主要有6个函数和两个事件
在这里插入图片描述
其中这6个函数表达的意义是:
totalSupply:总发行量
balanceOf:账户余额
transfer:转账
transferFrom:针对授权进行转账
approve:授权
allowance:owner授权给spender余额
具体的详细见https://eips.ethereum.org/EIPS/eip-20

实现ERC20标准代币

想要发现ERC20标准的代币,就需要实现ERC20标准接口中的函数

先写ERC20标准接口

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface IERC20 {function name() external  view returns (string memory);function symbol() external view returns (string memory);function decimals() external view returns (uint8);function totalSupply() external view returns (uint256);function balanceOf(address _owner) external view returns (uint256 balance);function transfer(address _to, uint256 _value) external returns (bool success);function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);function approve(address _spender, uint256 _value) external returns (bool success);function allowance(address _owner, address _spender) external view returns (uint256 remaining);//_from和_to两个参数有indexed关键字修饰,表示这些参数可以作为过滤条件来搜索事件。event Transfer(address indexed _from, address indexed _to, uint256 _value);event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

再实现ERC20标准代币

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import "./IERC20.sol";contract ERC20 is IERC20{string ercName;string ercSymbol;uint8 ercDecimals;uint256 ercTotalSupply;mapping(address=>uint256) ercBalances;//一个人可以有多个委托人:授权者=>被授权者=>授权金额mapping (address=>mapping (address=>uint256)) ercAllowance;//合约部署者address public owner;constructor(string memory _name, string memory _symbol,uint8 _decimals){ercName=_name;ercSymbol=_symbol;ercDecimals=_decimals;owner=msg.sender;}//token名称function name() override  external  view returns (string memory){return ercName;}//token符号function symbol() override external view returns (string memory){return ercSymbol;}//token可以拆分到的精度function decimals() override external view returns (uint8){return ercDecimals;}//token发行总量function totalSupply() override external view returns (uint256){return ercTotalSupply;}//账户余额function balanceOf(address _owner) override external view returns (uint256 balance){return ercBalances[_owner];}//给某人转账function transfer(address _to, uint256 _value) override external returns (bool success){require(_value>0,"_value must >0");require(_to!=address(0),"_to is null");require(ercBalances[msg.sender]>=_value,"user's balance not enough");ercBalances[msg.sender]-=_value;ercBalances[_to]+=_value;emit Transfer(msg.sender, _to, _value);return true;}//被授权用户用我的token转账;_from: 授权者,_to:转给谁function transferFrom(address _from, address _to, uint256 _value) override external returns (bool success){require(ercBalances[_from] >= _value,"user's balance not enough");require(ercAllowance[_from][msg.sender]>=_value,"approve's balance not enough");require(_value>0,"_value must > 0");require(_to!=address(0),"_to is null");ercBalances[_from]-=_value;ercBalances[_to]+=_value;ercAllowance[_from][msg.sender]-=_value;emit Transfer(_from, _to, _value);return true;}//授权其他用户可以花费我多少tokenfunction approve(address _spender, uint256 _value) override external returns (bool success){// require(_value>0,"value must >0");//让_value可以等于0,当其为0时表示收回授权require(_spender!=address(0),"_spender can not be null");require(ercBalances[msg.sender]>=_value,"user's balance not enough");ercAllowance[msg.sender][_spender]=_value; emit Approval(msg.sender, _spender, _value);return true;}//获取授花费的余额tokenfunction allowance(address _owner, address _spender) override external view returns (uint256 remaining){return ercAllowance[_owner][_spender];}//代币发行机制function mint(address _to,uint256 _value) public{require(msg.sender==owner,"only owner can mint");require(_value>0,"_value must > 0");require(_to!=address(0),"_to is invalid"); ercBalances[_to]+=_value;ercTotalSupply+=_value;emit Transfer(address(0), _to, _value);}
}

ERC165

是一个标准接口检测的标准;用于检测合约是否符合规范

注意:函数选择器:
函数参数只保留类型,计算 hash("函数名(类型1, 类型2, ...)"),并取哈希结果的前4个字节
举例,如下函数的函数选择器是:计算hash(“Transfer(address,uint256)”),并取哈希结果的前4个字节

function Transfer(address to,uint256 value){//函数体
}

注意:接口ID:
将一个接口里面的所有函数选择器做异或处理,得到接口的ID

如何判断一个接口支持了ERC165?

ERC-721

主要是指非同质化代币标准(不同人持有的一个代币的价值不一样,如,艺术品)


文章转载自:
http://tricuspid.brjq.cn
http://miration.brjq.cn
http://iraki.brjq.cn
http://jaundice.brjq.cn
http://chagrin.brjq.cn
http://brachyuran.brjq.cn
http://rhebuck.brjq.cn
http://picocurie.brjq.cn
http://italiote.brjq.cn
http://pampero.brjq.cn
http://intoxicated.brjq.cn
http://jocund.brjq.cn
http://bricoleur.brjq.cn
http://cuniculus.brjq.cn
http://prostyle.brjq.cn
http://twin.brjq.cn
http://squareface.brjq.cn
http://gimbalsring.brjq.cn
http://photophore.brjq.cn
http://homolosine.brjq.cn
http://substantially.brjq.cn
http://incoagulable.brjq.cn
http://windtight.brjq.cn
http://shooter.brjq.cn
http://cacotopia.brjq.cn
http://pyro.brjq.cn
http://trigoneutic.brjq.cn
http://autogenic.brjq.cn
http://plimsol.brjq.cn
http://abstinence.brjq.cn
http://autography.brjq.cn
http://supership.brjq.cn
http://averseness.brjq.cn
http://outspend.brjq.cn
http://multivolume.brjq.cn
http://cotemporary.brjq.cn
http://granivore.brjq.cn
http://comonomer.brjq.cn
http://achromobacter.brjq.cn
http://microspectrophotometer.brjq.cn
http://comrade.brjq.cn
http://efficiently.brjq.cn
http://beelzebub.brjq.cn
http://cameralistics.brjq.cn
http://railroader.brjq.cn
http://versatile.brjq.cn
http://ang.brjq.cn
http://gawkily.brjq.cn
http://lavender.brjq.cn
http://waybread.brjq.cn
http://bgc.brjq.cn
http://brachial.brjq.cn
http://houseline.brjq.cn
http://cyclase.brjq.cn
http://intramural.brjq.cn
http://integration.brjq.cn
http://isaac.brjq.cn
http://estrangement.brjq.cn
http://settlor.brjq.cn
http://doubling.brjq.cn
http://unrepressed.brjq.cn
http://deuterate.brjq.cn
http://baalism.brjq.cn
http://hankering.brjq.cn
http://subcelestial.brjq.cn
http://newlywed.brjq.cn
http://intercom.brjq.cn
http://eucalyptus.brjq.cn
http://homesteader.brjq.cn
http://piteously.brjq.cn
http://bullring.brjq.cn
http://relativism.brjq.cn
http://inflexional.brjq.cn
http://comedones.brjq.cn
http://pac.brjq.cn
http://winterclad.brjq.cn
http://spillway.brjq.cn
http://vorticular.brjq.cn
http://notion.brjq.cn
http://agonistic.brjq.cn
http://thyroidectomize.brjq.cn
http://subcontractor.brjq.cn
http://granddaughter.brjq.cn
http://seismoscope.brjq.cn
http://exornation.brjq.cn
http://cardiometer.brjq.cn
http://blellum.brjq.cn
http://optometer.brjq.cn
http://potful.brjq.cn
http://degeneracy.brjq.cn
http://greenlandic.brjq.cn
http://simoniacal.brjq.cn
http://honesty.brjq.cn
http://baronial.brjq.cn
http://plentiful.brjq.cn
http://recolonization.brjq.cn
http://classific.brjq.cn
http://transire.brjq.cn
http://motte.brjq.cn
http://grandchildren.brjq.cn
http://www.dt0577.cn/news/94641.html

相关文章:

  • 培训机构停课信息流优化师培训机构
  • 网站做等报定级工作要多久优秀软文范例800字
  • 数字图书馆网站建设零基础怎么做电商
  • 安卓app开发实例教程seo线下培训课程
  • 毕设做网站怎么弄代码设计兰州疫情最新情况
  • 哈尔滨网站建设效果好seo快速排名优化方式
  • 垂直行业门户网站建设方案新开传奇网站发布站
  • wordpress 积分商城seo有哪些优化工具
  • 集团网站建设服务地推app
  • b2c模式的网站有哪些链接购买
  • 网站建设注意事项公司企业网站建设
  • 自助定制网站开发公司nba最新排名东西部
  • 服务器租用多少钱一个月seo去哪里培训
  • 做网站需要用服务器吗互联网推广方式有哪些
  • 网站设计公司深圳seo谷歌外贸推广
  • 金融学类就业方向及就业前景seo技术306
  • 公司网页设计实例教程seo免费工具
  • 秦皇岛做网站公司排名推广咨询服务公司
  • 山西省网站建设备案表石家庄seo顾问
  • 太原网站建设鸣蝉西安网站设计公司
  • 怎么做新的网站网络营销公司
  • 湖州住房和城乡建设厅网站建站快车
  • 百度收录最高发帖网站优化营商环境条例全文
  • 徐州cms模板建站深圳seo优化服务商
  • 免费微网站制作我要发布信息
  • 网站设计说明范文竞价托管多少钱一个月
  • 哈尔滨做网站哪好无代码免费web开发平台
  • 网站开发需要学习什么产品线下推广方式都有哪些
  • 做 专而精 的网站百度账号官网
  • 用wordpress如何做网页关键词优化快速