【Web3技术分享系列专题】-以太坊代币设计原理
【摘要】 背景-什么是以太坊代币 以太坊代币(Token) 以太坊代币,使用以太坊区块链创建的可替代币 标准:以太坊标准ERC20 by Fabin Vogelstellar (还有ERC721 ERC1155等) 代表资产、权利、所有权、访问权、加密货币或任何其他本身不唯一但可以转让的东西 官方文档:https://ethereum.org/en/developers/docs/standards...
背景-什么是以太坊代币
以太坊代币(Token)
以太坊代币,使用以太坊区块链创建的可替代币
标准:以太坊标准ERC20 by Fabin Vogelstellar (还有ERC721 ERC1155等)
代表资产、权利、所有权、访问权、加密货币或任何其他本身不唯一但可以转让的东西
官方文档:https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
代币(Token)的功能:
货币:作为货币形式,价值通过私人交易确定
资源:表示在共享经济或资源共享环境中获取或生成的资源,比如CPU资源
资产:代表内在或者外在、有形或者无形的资产所有权,例如黄金、能源
访问:可用于访问数字或者实体资产的权限,比如论坛、租车等
权益:代表数字组织(DAO等)或者法律虚拟主体(公司等)的股东权益
投票:代表数字或者法律系统中的投票权
藏品:代表数字(NFT)或者物理收藏品(绘画)
身份:代表数字(头像等)或者合法身份(国家ID等)
实际用途:用于访问或者支付服务
以太坊代币与以太币、比特币的区别
比特币、以太币、狗币、莱特币等:区块链原生加密货币,托于自己的区块链网络(Coin)
以太坊代币:开发者创建的符合以太坊标准的应用内货币,没有专属区块链,而是存放在以太坊区块链中(Token)
如何购买代币
以太币交易所:欧易OKX、火币全球专业站、HitBTC、ZBG、BitWell、Kine、币昇Sunbit、币位交易所、币虎CoinTiger、AAX等
知名以太坊代币
Tether USD(USDT)、USD Coin(USDC)、Binance USD(BUSD)、BNB(BNA)、MAKER(MKR) 等
以太坊代币的标准
ERC20:可替代的/同质化代币标准
每一种此类代币都是同质化的,可以将一个单位的代币交换为任何其他一个单位的该种代币,因为它们代表的价值相同。e.g. DeFi去中心化金融
ERC721:不可替代/非同质化代币标准
每个代币都具有独特价值,代表可验证的唯一数字对象。e.g. NFT数字艺术与收藏品、门票、房地产
ERC1155:多重代币标准
使用同一标准创建同质化、半同质化和非同质化的代币,制定一份合约即可支持多种类型的可单独配置的代币。e.g. NFT游戏中的独特资产,如皮肤、枪支、商品
如何创建以太坊代币
1、准备好以太坊开发环境
以remix+metamask为例,创建ERC20代币部署到Goerli测试网
openzeppelin-solidity:智能合约开发的模板库,提供了ERC20/721/777等的安全实现
Remix IDE:基于浏览器的开发以太坊智能合约的IDE
Metamask:基于浏览器扩展程序的以太坊加密货币钱包,存储ETH以及基于ERC20、ERC721的代币
Faucet水龙头获取Goerli测试ETH币:https://goerlifaucet.com/ 绑定alchemy账户,可每24h获取免费0.2的Goerli ETH
2、编写发行代币的智能合约
IERC20标准接口
event Transfer:转账事件,发生转账操作时该event会被触发
event Approval:授权事件,执行approve操作时该event会被触发
name(): 返回ERC-20 代币的名称
symbol(): 返回ERC-20 代币符号
decimals(): 当前代币支持小数位,智能合约里不存在小数的,而是通过 unit256 来存在
totalSupply(): 代币总发行量
balanceOf(): account 地址中代币的余额
transfer(address to, uint256 amount): 转账函数,假设地址 A 调用了 transfer 函数,则表示将地址 A 中amount 个 token 转给地址to
approve(address spender, uint256 amount): 授权函数,允许spender 地址从自己的账户地址中转移amount 个 token
allowance(address owner, address spender): 返回spender 地址还能从owner 地址中提取多少 token,默认是可以转移该地址中所有的 token 的
transferFrom(address from,address to,uint256 amount): 转账函数,与 approve 函数搭配使用,通过 approve 函数获得from 地址的授权,授权对象是当前调用 transferFrom 函数的合约地址,此时合约便可以转移from 地址中的amount 个 token 到to 地址中
openzeppelin-solidity ERC20实现的IERC20标准接口
使用SafeMath增强数字运算安全性
两个全局map,balances存储每个账户的当前余额,allowances存储A授权B可以使用的余额
构造函数传两个入参,为token的代币名称和代币符号
代币支持小数位默认为18位,可以用_setupDecimals()修改
可以自行实现_beforeTokenTransfer()方法,增强交易安全性
创建自己的ERC20标准代币
最基础可以直接使用is ERC20
ERC20()构造方法直接造token
name:代币名称,比如KaiKai Coin
symbol:代币单位,比如kai,一个代币为1kai
initialSupply:初次发行的代币数量,实际代币个数为initialSupply*10^(-decimals)
输入部署所需的参数,此处为发行test币,单位是t,发行量为100个
部署合约到remix VM
等待交易确认,智能合约部署成功
可以用Remix调用已部署的智能合约
decimals()返回18
name()返回test
symbol()返回t
totalSupply()返回100000000000000000000(100*10^18),实际上是100个代币
增加高级功能
可以自行实现IERC20接口,给合约添加自定义的高级功能,比如增发、冻结、销毁等
增发可以提高代币流通总量
冻结可以冻结某账户
销毁可以减少代币流通总量
可以增加安全选项,比如Ownable
可以用修饰器精简代码
查看钱包账户
1、合约使用metamask部署到goerli
2、打开metamask,选择添加资产
3、输入代币合约地址(etherscan中可查)
4、确认添加代币
5、代币已添加入钱包
如何使用以太坊代币
创始人:ICO发行代币用于众筹、融资
用户:使用代币进行投资、消费、投票、转账
交易所:Defi去中心化交易,收取佣金,uniswap
艺术家、游戏开发商:发布NFT数字藏品、GameFi
转账
1、调用已部署的智能合约的transfer()方法,输入对方的钱包地址还有转账金额
2、连接发送者的钱包,确认交易费和确认请求
3、等待交易确认,本次交易花费55Gwei的手续费
4、接收者钱包导入该token,已收到1kai的token
ICO
ICO-Initial Coin Offering,首次代币发行,也称为代币销售,是众筹和首次公开募股 (IPO)的混合体,出售数字资产,为基于区块链的项目筹集资金,无需经历传统 IPO 的密集监管和繁琐过程。以太坊最初也是通过 2014 年举行的 ICO 筹集资金的,投资者用比特币换以太币。
ICO 的流行加速了以太坊的爆发,但是缺乏监管,风险大,骗局多
成功的ICO案例:Ethereum、NEO、EOS等。Ethereum(以太坊ETH)国内外人气高,是迄今为止最大的一次ICO之一,筹措资金超过1800万美元
ICO与IPO(首次公开发行)的共同点:1、都有通过出售股份来筹措资金;2、都有潜在投资者为了潜在的巨大收益而冒险参与。不同点:1、ICO的大部分支持者是项目爱好者或不专业的投资者;2、ICO不需要注册经营牌照;3、ICO平台是第三方中立平台,投资者自担风险。
众筹:约定时间内,向公众筹资约定数额。设定时间、数额、兑换价格、受益人,智能合约实现自动兑换,实现目标后受益人可提款,未实现目标投资者可退款。
编写ICO智能合约,绑定代币的智能合约,合约接受eth,转出对应的token。定义筹集时间和筹集数量,以及兑换价格。定义ICO受益人,默认是合约创建者,使用fallback接受转账。众筹成功,受益人可转走所有eth;众筹失败,参与众筹者可申请退款。所有手续费均由调用方支出。
众筹示例
1、往ICO账户转eth
2、确认交易手续费
3、ICO账户收到eth,给该地址转了0.01Kai
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)