【第1课】如何在Tezos链上发布ERC20资产
1. 摘要
Tezos链是一条比较小众的公链,国内的技术人员相对比较少。本文作为该公链的第一批中国开发者,以图文并茂的形式介绍如何在Tezos链上发布ERC20资产。
2. 内容
(1)安装Temple-Tezos Wallet插件
翻墙,google 应用商店搜Temple-Tezos,Temple-Tezos Wallet(ex.Thanos)安装起来。类似metamask插件。
(2)新建钱包
地址:tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U 私钥:edskRkxztWUgQpgrkXKbjKRS7G76KkJqprgMVkHDCSCyWwTvzgDXER67HUipBANomcc8oxeqHrQumMG2ENmEgMT4wSWAsE1mFz 助记词:wait hill federal memory club wish shallow crumble web decrease grocery game square cake oppose pulse jelly train 密码:Mozik@2021
(3)从telegram获得测试币和开光
edo2net余额: 100.000000 xtz
然后记得开光reveal account。
地址:https://smartpy.io/origination
点击reveal account完成开光。
reveal account(4)编译合约
打开在线IDE编辑器网址:https://smartpy.io/ide
把“Moz-Token_FA2.py”新合约代码复制到编辑器中,点击"RUN"按钮完成编辑。
编译成功(5)修改administrator地址为自己的账号
部署合约前,修改administrator地址为自己的账号,对应的TAB为STORAGE JSON。
[1] 编译页点击“Deploy Michelson Contract”按钮
Deploy Michelson Contract[2] 部署页面完成账户关联后进行administrator修改
<1> 选择要部署网络,是主网还是florencenet测试网
<2>点击Temple钱包按钮,完成对应账号在选择的网络的关联
<3> 关联成功,可以查看3.,看到账号信息。
关联temple账户[3] 部署前修改管理账户
上面页面往下拉,点击 “EDIT MODE”按钮,把管理账户由tz1hdQscorfqMzFqYxnrApuS5i6QSTuoAp3w 改为自己控制的账户,例如 tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U。
修改管理账号(6)部署合约
https://smartpy.io/origination
[1] “ESTIMATE COST FROM RPC” 按钮
估算GAS费[2] "DEPLOY CONTRACT"按钮
点击部署合约按钮,完成跟Temple的钱包后,就可以获得合约了。
预签名信息 钱包确认签名 部署成功[3] 部署网址信息
<1> 点击"OPEN EXPLORER"可以查看部署合约的信息:
https://smartpy.io/explorer.html?address=KT1E8EVHGxpDxJKAfxVi8qUuRn93SmQdFrGV
OPEN EXPLORER<2> 点击“SAVE CONTRACT”可以保存合约信息:
https://smartpy.io/wallet.html
SAVE CONTRACT(7)发布ERC20 TOKEN
地址:https://smartpy.io/explorer.html?address=KT1E8EVHGxpDxJKAfxVi8qUuRn93SmQdFrGV
给管理账号:tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U发行1000万的ERC20 TOKEN。
[1] 调用mint函数
<1>Address:tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U
<2>Amount:1000,0000,000000000000000000 [输入amount去除,] <3>Metadata:one, 0x697066733a2f2f516d5950764e4e317843715a747864475766583458716233454e567170624659723872596a773867794454746b4d
<4> token id = 0
说明:
<1>其中ipfs://QmYPvNN1xCqZtxdGWfX4Xqb3ENVqpbFYr8rYjw8gyDTtkM转成16进制 0x697066733a2f2f516d5950764e4e317843715a747864475766583458716233454e567170624659723872596a773867794454746b4d
网址:https://www.sojson.com/hexadecimal.html
<2>对应信息: { "name": "Mozik", "symbol": "MOZ", "decimals": 18, "shouldPreferSymbol": true, "thumbnailUri": "ipfs://QmTYMWr7NC5a35WMTx6FutDKFysd4XiuJc86gb8UJnCqLU" }
<3> 可以点击https://gateway.pinata.cloud/ipfs/QmYPvNN1xCqZtxdGWfX4Xqb3ENVqpbFYr8rYjw8gyDTtkM查看。
设置如下:
设置mint参数要点击上面的“Build Transaction Parameters”生成参数:
生成参数[2] “Private Key and Account ”选择Temple,连接对应的钱包
连接钱包如果连接成功的话,可以看到该钱包的地址和XTZ余额。
钱包信息[3] 发送交易
点击"Send the Transaction"完成交易。
发送交易[4] Set metadata
调用Set metadata函数:
k选择空,V选择上面的16进制,k,v: ,0x697066733a2f2f516d6636746a7364376b774845534d4a68434c594e4846376a364164474e6d746e4272635643346153383759774c
set metadata说明:
<1> 其中 ipfs://Qmf6tjsd7kwHESMJhCLYNHF7j6AdGNmtnBrcVC4aS87YwL 转成16进制
网址:https://www.sojson.com/hexadecimal.html
<2> 对应信息: { "name": "Mozik", "description": "Music, Dream & Value", "version": "", "interfaces": [ "TZIP-12", "TZIP-16", "TZIP-21" ] }
<3> 点击以下链接可查看:https://gateway.pinata.cloud/ipfs/Qmf6tjsd7kwHESMJhCLYNHF7j6AdGNmtnBrcVC4aS87YwL
[5] 信息查看
<1> mint 交易详情:
https://florencenet.tzkt.io/opEUWTj7fto2y3CqZfi1Lp5epVsNFzC3w7AYEjXiTqmsKtS8jzj
Status状态为“Applied”表示应用成功了,pending表示还在等待。
部署成功<2> set metadata 交易详情
https://florencenet.tzkt.io/oo1H6oZjzyucSGuhvGhpD8pQzzZL6H9pMVmipQ6KsXHM8V2Qvuw
状态为Applied,表示执行成功了。
<3> 查看该账号下增发的TOKEN
https://florencenet.tzkt.io/tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U/tokens
对应的TOKEN:
KT1E8EVHGxpDxJKAfxVi8qUuRn93SmQdFrGV
(8)Temple增加TOKEN
[1] 打开Temple钱包,增加TOKEN:
Temple增加管理[2] 增加TOKEN
在VPN情况下,可以在temple中增加TOKEN。输入地址:KT1E8EVHGxpDxJKAfxVi8qUuRn93SmQdFrGV
增加TOKEN钱包增加MOZ TOKEN后,就可以直接在TEMPLE进行转账等操作了。
TEMPLE 钱包(9)授权转账
[1] 切换到当前管理账户:tz1dfmLJ1RRodNx9NSQy6YzgW2nJMiA3R5eq
任务目标:
把tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U的token id:0的权限授权给第三方账号:tz1eXdTsaQVbtRAW273gcQko4eH5DnusHaBr,测试第三方账号是不是可以直接转账对tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U的TOKEN进展转账。
[2] 授权TOKEN:
授权TOKEN[3] 转账:
切换到被授权账号tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U下,发起针对TOKEN 0的转账,转100个MOZ.
授权转账结果:
转账成功。授权之后,就等于裸奔了,又没有额度限制,有点可怕。
3. 参考
(1) 智能合约在线编辑器 https://smartpy.io/ide
(2) smartpy智能合约参考文档 https://smartpy.io/reference.html