主页 > imtoken安卓官方下载 > 19_在以太坊测试链上发行代币
19_在以太坊测试链上发行代币
第一次发币成功后,我写了这篇文章。
参考链接:
这篇文章是按照参考链接的步骤做的,但是其中遇到的一些问题在我的文章中进行了补充。 还打了一些错别字。
现在默认的代币合约已经写好了,因为我目前不会写合约。 学完之后会考虑相关的博客。 这个教程比较初级,因为我刚入门,但是经过我的验证,确实发币成功了。
完成代币合约的编写后,即可将合约发布到Etherscan测试链上(公链需要购买以太币,速度比较慢,建议在测试上开发),合约部署方式为如下:
先贴上我的代币合约代码:
[清楚的]
务实性^0.4.19;
interfacetokenRecipient{functionreceiveApproval(address_from,uint256_value,address_token,bytes_extraData)public;}
合约TC{
字符串公共名称;
字符串公共符号;
uint8publicdecimals=18;//小数可以有的小数位数,最小的token单位。 18 是推荐的默认值
uint256 公共总供应量;
//使用映射保存每个地址对应的余额
映射(地址=>uint256)公共平衡;
//存储账户的控制权
映射(地址=>映射(地址=>uint256))公共津贴;
//事件,用于通知客户端有交易发生
事件转移(地址索引从,地址索引到,uint256value);
//事件,用于通知客户端令牌被消耗
eventBurn(地址索引,uint256value);
/**
*初始化构造函数
*/
functionTC(uint256initialSupply, stringtokenName, stringtokenSymbol) public{
totalSupply=initialSupply*10**uint256(decimals);//供应的份额,份额与最小代币单位有关,份额=币数*10**decimals。
balanceOf[msg.sender]=totalSupply;//创建者拥有所有代币
name=tokenName;//代币名称
symbol=tokenSymbol;//代币符号
}
/**
*代币交易转账内部实现
*/
function_transfer(address_from, address_to, uint_value) 内部 {
//确保目标地址不是0x0,因为0x0地址代表销毁
要求(_to!=0x0);
// 检查发送方余额
要求(balanceOf[_from]>=_value);
//保证转账是正数
要求(balanceOf[_to]+_value>balanceOf[_to]);
//以下用于检查交易,
uintpreviousBalances=balanceOf[_from]+balanceOf[_to];
//从发送者中减去
balanceOf[_from]-=_value;
//添加收件人
balanceOf[_to]+=_value;
转移(_from,_to,_value);
//使用断言检查代码逻辑。
断言(balanceOf[_from]+balanceOf[_to]==previousBalances);
}
/**
* 代币交易转账
*将“_value”代币从自己的(创建交易者)账户发送到“_to”账户
*
*@param_to 收件人地址
*@param_value 转账金额
*/
functiontransfer(address_to, uint256_value) public {
_transfer(msg.sender,_to,_value);
}
/**
* 账户间代币交易转账
*@param_from 发件人地址
*@param_to 收件人地址
*@param_value 转账金额
*/
函数 transferFrom(address_from, address_to, uint256_value) public returns(boolsuccess){
require(_value=_value);//检查发送者是否有足够的
balanceOf[msg.sender]-=_value;//从发送者中减去
totalSupply-=_value;//更新totalSupply
Burn(msg.sender,_value);
返回真;
}
/**
*销毁用户账户中的指定代币
*
*代表 _from 不可逆转地从系统中删除 _value 标记。
*
*@param_fromtheaddressofthesender
*@param_valuetheamountofmoneytoburn
*/
函数 burnFrom(address_from,uint256_value) public returns(boolsuccess){
require(balanceOf[_from]>=_value);//检查目标余额是否足够
require(_value Select new compiler version --> 选择一个大于你在合约第一行声明的版本
选择后过一会,编译成功,然后错误消失,出现一些警告,可以忽略。
现在可以发布,但是发布需要以太坊,插入MetaMask说明一下,顺便获取测试链的以太坊:
使用MetaMask(如果你能安装这个插件,你可以去谷歌商店直接安装。如果你不能,然后在百度上搜索“谷歌浏览器插件”,会有很多网站可以下载插件,下载后想办法安装插件,不知道怎么安装插件就百度)
由于我们是在以太坊测试链上发布合约,我们仍然需要以太币,但可以免费获得。 为了发布合约,我们需要一个测试链账户。 下面我们将插入并使用MetaMaskchrome插件链接创建一个账号:
安装完成后,浏览器右上角会出现一个图标。 点击图标,点击直到出现下图,填写你的密码,进入后创建一个MetaMask钱包。 MetaMask 将为用户创建 12 个英文助记词。 保存这些助记词,一定要保存这些助记词,一定要保存这些助记词,其他钱包导入这个新创建的账户的时候可能需要用到这些助记词。 详情请参考这篇文章。
创建后,您将获得一个默认帐户:
由于我们要基于以太坊测试链发行代币,所以我们选择测试链:
此时,我们发现我们的账户中没有以太币,按照以下步骤获取:
此时会打开网页,点击图标(建议点击一次或两次确定,每次都会在您的账户中放入1个以太币,1个以太币部署合约绰绰有余.)(我操作的时候没有成功,点击BUY后打开页面,应该是没有翻墙,然后让同事发了一些以太币到我的地址)。
一段时间后,您会发现您的帐户中有一笔金额;
准备工作终于完成了。 现在我们开始部署代币合约。 此时在IDE右侧栏中点击运行,根据1到3确认信息,在4中写入你要发行的代币信息,依次为100000000,“GaoTeB”, “GTB”(发行总量、发行币种全称、发行币种简称),4步确认后,点击创建按钮以太坊是代币吗,发布与测试链的代币合约。 (我操作的时候,图中的按钮5变成部署)
点击后会弹出对话框:(此为测试链,无需关注手续费,但在官链上,一定要关注GasPrice,如果手续费过高low而且没有旷工帮你打包,就尴尬了,我同事之前发币的时候遇到过这个,然后十几个小时发币不成功,还退了手续费,虽然不会有以太坊丢失,会耗费大量时间,大家需要注意。)
点击提交后以太坊是代币吗,如果没有报错,此时会出现你的合约信息:
点击合约会打开页面,可以看到正在创建中:
过一会就会看到(上面的页面,要刷新看是否成功,第一次没刷新,围观了一个小时。。。):
那么你的token发行就基本成功了!
如何在我们的账号下看到?
接下来我们使用MetaMask工具查看,依次点击:
在MetaMask打开的页面中填写信息,
这时候我们可以看到:
让我们再次尝试转账:
代币交易
MetaMask插件不提供代币交易功能,考虑到很多人没有以太坊钱包或者被以太坊钱包网络的同步问题折磨,今天我就用它来讲解代币交易。
第一次进入时,会有一系列的确认信息。 点击后会来到这个页面,选择和MetaMask相同的网络链(以太坊测试链):
然后点击如下图:
点击链接后,这个页面会链接到你的MetaMask,你会发现页面上会出现你的账户信息。
此时这里并没有出现你的Token信息,需要手动添加:
单击添加并在此处填写您的令牌信息:
此时,你会发现:
然后开始代币交易,我们尝试转账到另一个账户,填写信息依次点击:
此时你会发现你账户的Token已经减少了。
原始来源
打开应用程序并阅读笔记