以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac

时间:2024-03-18 15:38:55

上章我们讲解了宠物店开发的实战操作,相信大家了解了整体的开发流程,下面咱们再来聊聊现在比较火的代币;

在本章中,我们将用truffle + ganache 实现能够存到以太币钱包加密代币。

如果你按照前面的章节学些操作了,相信这一章节对你开说是很简单的,基础的环境你已经搭建好了,你需要了解的是代币是啥,如果实现转换;

1. 创建项目

    我们可以直接套用称作react-box的样板,此样板已经整合create-react-app,可以直接用它来开发react web,省下项目设置的时        间。

    1.1  mkdir xiliangMaCoin

     1.2  truffle unbox react-box

以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac


2. 开发准备

  1. 打开终端,启动Ganache,继续通过ganache模拟以太坊区块链测试环境。
  2. 创建的代币如果想要能够通过以太币钱包来进行转账和收帐,必须兼容于以太坊的ERC20标准,ERC20定义了支持钱包所必需的合约界面。
  3. 在本篇文章中,我们将安装OpenZeppelin来简化加密钱包开发的过程。OpenZeppelin是一套能够给我们方便提供编写加密合约的函数库,同时里面也提供了兼容ERC20的智能合约
  4. 安装zeppelin-solidity

        npm install zeppelin-solidity

以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac

node_modules中的最后一个文件夹就是zeppelin-solidity的内容

以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac

3. 准备代码

contracts/目录下建立一个xiliangMaCoin.sol文件 :

truffle create contract 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标准中规定的函数。

函数 方法
totalSupply() 代币发行的总量(这个版本ERC20貌似没有这个函数)
balanceOf(A) 查询A帐户下的代币数目
transfer(A,x) 发送x个代币到A帐户
transferFrom(A,x) 从A帐户提取x个代币
approve(A,x) 同意A帐户从我的帐户中提取代币
allowance(A,B) 查询B帐户可以从A帐户提取多少代币

主要解释下 uint8 public decimals = 4; 

这边设定参数的目的是指定这个代币的一些特性。以人民币为例,人民币的名称(name)是RMB,美元的代号为¥,拿100元去找零最小可以拿到零钱是一分,也就是0.0001元。因为1元最小可分割到小数点后4位(0.0001),因此最小交易单位(decimals)为4

这里将这个加密代币取名(name)为BloggerCoin(部落币),代币的代号(symbol)为BLC,最小分割单位是4(最小可以找0.0001个部落币)。

以下为人民币比特币以太币部落币的对照表供参考:

name symbol decimals
RMB ¥ 4
Bitcoin BTC 8
Ethereum ETH 18
BloggerCoin BLC 4

4. 编译、部署、验证

4.1 vim migrations/2_deploy_contracts.js


以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac 4.2 truffle compile

 4.3 truffle migrate

 4.4 truffle console(经过测试你可以看到自己的代币创建完成,总量500000,已经分配置给主账户,因为他是合约部署的账户)

xiliangMadeMacBook-Pro:xiliangMaCoin xiliangMa$ truffle console

truffle(development)> var xiliangMaCoinTest

undefined

truffle(development)> xiliangMaCoin.deployed().then(function(instance){xiliangMaCoinTest = instance})

undefined

truffle(development)> xiliangMaCoinTest.balanceOf(web3.eth.accounts[0])

BigNumber { s: 1, e: 6, c: [ 5000000 ] }

truffle(development)> web3.eth.accounts[0]

'0x6268a45a404f24196c5efbbcd9d4e7a3e48ebdca'

向‘0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca’账户转发100000代币;

truffle(development)>  xiliangMaCoinTest.transfer('0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca', 100000);

{ tx: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',

  receipt: 

   { transactionHash: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',

     transactionIndex: 0,

     blockHash: '0x4332bf2929821b9eeb8268dc2a96c180c9ecc3a16f7e3040148bf330fb6dfeb0',

     blockNumber: 11,

     gasUsed: 51697,

     cumulativeGasUsed: 51697,

     contractAddress: null,

     logs: [ [Object] ],

     status: '0x01',

     logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000010000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000002400000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000002000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000004000000000000' },

  logs: 

   [ { logIndex: 0,

       transactionIndex: 0,

       transactionHash: '0x0e48e3caa985981af1eda2cbf97f5e9e71151f3cb5f2686dbb457b0ab25e8a29',

       blockHash: '0x4332bf2929821b9eeb8268dc2a96c180c9ecc3a16f7e3040148bf330fb6dfeb0',

       blockNumber: 11,

       address: '0x078975013d1f2267ba751199d39f40e57cd7bce2',

       type: 'mined',

       event: 'Transfer',

       args: [Object] } ] }

查看代币

truffle(development)> xiliangMaCoinTest.balanceOf('0xB603e062e5E99529C4A4389eA7DD9A21A5D597Ca')

BigNumber { s: 1, e: 5, c: [ 100000 ] }



5.  使用钱包倒入代币(可以使用mist,我这里使用metaMask)

5.1 产看合约地址 

truffle(development)> xiliangMaCoinTest.address

'0x078975013d1f2267ba751199d39f40e57cd7bce2'

5.2 打开metamask , 点击add token 添加token, 会自动读取合约的参数;

以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac

以太坊(9)truffle ganache 加密代币开发,以及代币在钱包的基础操作--mac




好了到此 你就可以跟别人吹牛逼说你搞过代币了......哈哈 ,可以用mist获取以太坊钱包,那些界面更直观,这里制作基础的演示;


本章结束,下章见;