主页 > 怎么看出来imtoken真伪 > 以太坊(九)truffle ganache加密代币开发
以太坊(九)truffle ganache加密代币开发
2021-06-07
上一章,我们讲解了宠物店开发的实际操作。 相信大家已经了解了整体的开发流程。 接下来说一下现在流行的代币;
在本章中,我们将使用 truffle + ganache 来实现可以存储在以太坊钱包中的加密代币。
如果你已经根据前面的章节学会了一些操作,相信这一章对你来说是非常简单的。 您已经设置了基本环境。 你需要知道的是令牌是什么以及如何转换它;
1.创建项目我们可以直接应用已经集成了create-react-app的名为react-box的模板,可以直接用于开发react web,节省项目搭建的时间。
1.1 mkdir xiliangMaCoin
1.2 松露拆箱反应盒
2.开发准备打开终端,启动Ganache,继续通过Ganache模拟以太坊区块链测试环境。 创建的代币如果想通过以太坊钱包进行转账和收款,就必须兼容以太坊的ERC20标准。 ERC20 定义了支持钱包所必需的合约接口。 在本文中,我们将安装 OpenZeppelin 以简化加密钱包开发过程。 OpenZeppelin 是一组函数库,可以为我们编写加密合约提供便利。 同时还提供了兼容ERC20的智能合约安装zeppelin-solidity
npm 安装 zeppelin-solidity
node_modules中最后一个文件夹是zeppelin-solidity的内容
3.准备代码
在 contracts/ 目录下创建 xiliangMaCoin.sol 文件:
truffle创建合约xiliangMaCoin,替换为以下内容
pragma solidity ^0.4.4; import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol"; contract xiliangMaCoin is StandardToken { string public name = "xiliangMaCoin"; //代币名称 string public symbol = "XLMC"; //代币简称 uint8 public decimals = 4; uint256 public INITIAL_SUPPLY = 5000000; //发行总量 function xiliangMaCoin() { balances[msg.sender] = INITIAL_SUPPLY; } }
我们在继承 StandardToken 合约的同时,还支持 ERC20 标准规定的以下功能。
函数法
总供应量()
代币发行总量(这个版本的ERC20好像没有这个功能)
余额(A)
查询账户A下代币数量
转移(A,X)
发送 x 代币到账户 A
转移自(A,X)
从账户 A 中取出 x 个代币
批准(A,X)
同意账户A从我的账户中提取代币
津贴(A,B)
查询B账户可以从A账户提现多少代币
主要解释是uint8 public decimals = 4;
这里设置参数的目的是为了指定这个token的一些特性。 以人民币为例,人民币名称为RMB,美元代号为¥。 如果你拿100元找零,你能找的最小零钱是一分钱,也就是0.0001元。 因为1元可以分到小数点后4位(0.0001),所以最小交易单位(小数)为4。
这里,加密后的代币名为BloggerCoin(部落币)以太坊的代币开发,代币符号为BLC,最小分割单位为4(最低可找到0.0001部落币)。
以下是人民币、比特币、以太坊、Hordecoin的对比表,供参考:
名称符号小数
人民币
¥
4个
比特币
比特币
8个
以太坊
以太币
18
博客币
基本信用证
4个
4.编译、部署、验证
4.1 vim 迁移/2_deploy_contracts.js
4.2 truffle编译
4.3 松露迁移
4.4 truffle console(经过测试可以看到自己的token已经创建了,一共500000,分配给了主账户以太坊的代币开发,因为他是部署合约的账户)
xiliangMadeMacBook-Pro:xiliangMaCoin xiliangMa$ 松露控制台
松露(开发)> var xiliangMaCoinTest
不明确的
松露(开发)> xiliangMaCoin.deployed().then(function(instance){xiliangMaCoinTest = instance})
不明确的
松露(开发)> xiliangMaCoinTest.balanceOf(web3.eth.accounts[0])
BigNumber { s: 1, e: 6, c: [ 5000000 ] }
松露(开发)> web3.eth.accounts[0]
'0x6268a45a404f24196c5efbbcd9d4e7a3e48ebdca'
转发100,000个代币到账户'0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca';
松露(开发)> xiliangMaCoinTest.transfer('0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca', 100000);
{ tx: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',
收据:
{ transactionHash: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',
交易指数:0,
blockHash: '0x4332bf2929821b9eeb8268dc2a96c180c9ecc3a16f7e3040148bf330fb6dfeb0',
块数:11,
使用的气体:51697,
累计使用气体:51697,
合同地址:空,
日志:[ [对象] ],
状态:'0x01',
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000002400000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000002000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000004000000000000' },
日志:
[{ 日志索引:0,
交易指数:0,
transactionHash: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',
blockHash: '0x4332bf2929821b9eeb8268dc2a96c180c9ecc3a16f7e3040148bf330fb6dfeb0',
块数:11,
地址:'0x078975013d1f2267ba751199d39f40e57cd7bce2',
类型:'开采',
事件:'转移',
参数:[对象] } ] }
查看代币
松露(开发)>xiliangMaCoinTest.balanceOf('0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca')
BigNumber { s: 1, e: 5, c: [ 100000 ] }
5.用钱包倒代币(可以用mist,我这里用metaMask)
5.1 产检合约地址
松露(开发)> xiliangMaCoinTest.address
'0x078975013d1f2267ba751199d39f40e57cd7bce2'
5.2 打开metamask,点击add token 添加token,会自动读取合约的参数;
好吧,现在你可以跟别人吹牛说你用token了。。。哈哈,你可以用mist弄以太坊钱包,界面比较直观,这里做一个基本的演示;
本章结束,下章见;
分类:
技术要点:
相关文章: