【以太坊系列-010】通过truffle以及ganache进行代币功能调试

说明:

    环境使用ubuntu1804-desktop版本。

1 truffle以及ganache

1) Truffle

  Truffle 是最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。

  Truffle 需要以太坊客户端支持,需要支持标准的JSON RPC API。

2)Ganache

       Ganache可以快速启动个人以太坊区块链,并可以使用它来运行测试,执行命令、检查状态,同时控制链条的运行方式。

通过ganache可以快速查看所有账户的当前状态,包括他们的地址、私钥、交易和余额,查看Ganache内部区块链的日志输出,包括响应和其他重要的调试信息,检查所有块和交易,以获取相关问题的信息。

    Ganache前身即为testrpc,即将testrpc做成界面化。

2 工具安装

1) 安装truffle

apt-get install nodejs

apt-get install npm

npm install -g truffle

# truffle version

Truffle v4.1.14 (core: 4.1.14)

Solidity v0.4.24 (solc-js)

2) 安装ganache web版本

mkdir -p /home/lyh/003_ganache/

cd /home/lyh/003_ganache/

wget https://github.com/trufflesuite/ganache/releases/download/v1.2.2/ganache-1.2.2-x86_64.AppImage

chmod +x ganache-1.2.2-x86_64.AppImage

执行 ./ chmod +x ganache-1.2.2-x86_64.AppImage 即可将ganache运行起来。

更多版本见:https://github.com/trufflesuite/ganache/releases

3 代币功能开发

3.1 新建目录

mkdir -p /home/lyh/002_truffle/mycoin

cd /home/lyh/002_truffle/mycoin

 

3.2 初始化代码模板

truffle unbox tutorialtoken

 

3.3 下载代币模板

npm install openzeppelin-solidity

3.4 创建名为” TutorialToken”的智能合约

内容如下,ERC20.sol是一个标准代币模板

# cat contracts/TutorialToken.sol

pragma solidity ^0.4.24;

 

import "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol";

 

contract TutorialToken is ERC20 {

    string public name = "TutorialToken";

    string public symbol = "TT";

    uint8 public decimals = 2;

    uint public INITIAL_SUPPLY = 12000;

   

    constructor() public {

         _mint(msg.sender, INITIAL_SUPPLY);

    }

}

3.5 新增部署脚本

这个地方就是智能合约的类名、文件名需要保持一致,不然会导致部署失败。

# cat migrations/2_deploy_contracts.js

var TutorialToken = artifacts.require("./TutorialToken.sol");

 

module.exports = function(deployer) {

           deployer.deploy(TutorialToken);

};

 

3.6 编译智能合约

truffle compile

4 部署以及调试

4.1 运行ganache

./ ganache-1.2.2-x86_64.AppImage

4.2 ganache的运行效果图

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第1张图片

4.3 修改truffle.js配置文件

truffle中的port要与ganache中端口一致,当前是7545

# cat truffle.js

module.exports = {

  // See

  // for more about customizing your Truffle configuration!

  networks: {

    development: {

      host: "127.0.0.1",

      port: 7545,

      network_id: "*" // Match any network id

    }

  }

};

 

4.4 修改src/js/app.js配置

这个文件中默认的HttpProvider的端口是9545,会导致代币无法获取。

initWeb3: function() {

    // Initialize web3 and set the provider to the testRPC.

    if (typeof web3 !== 'undefined') {

      App.web3Provider = web3.currentProvider;

      web3 = new Web3(web3.currentProvider);

    } else {

      // set the provider you want from Web3.providers

      //App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:9545');

      App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:7545');

      web3 = new Web3(App.web3Provider);

    }

 

    return App.initContract();

  },

 

4.5 修改src/index.html配置

默认的https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js由于无法访问国外而导致无法获取代币数量,替换成官网的路径。

 

4.6 部署合约

# truffle migrate --reset

Using network 'development'.

 

Running migration: 1_initial_migration.js

  Replacing Migrations...

  ... 0x71626190150d848374aa0ed680e123b8307d2c09e8d6e943550e77ec691d6c11

  Migrations: 0x4bea8091d3ff6589bd7193cd04c1e31b37c3aea6

Saving successful migration to network...

  ... 0xe616eddc312bc94879291caf9294058eff656520b51386a065b7976c4399df56

Saving artifacts...

Running migration: 2_deploy_contracts.js

  Replacing TutorialToken...

  ... 0x60f3b3f2b92c6e80d9d4d9ffcc7af59b8538b17936cee078d64c4b09073fb94a

  TutorialToken: 0x538f4db70fd6f3b6dbdde7a3ca41b4d3aaa90e9f

Saving successful migration to network...

  ... 0x00ab482034f971e78feb9ec07e7c2b4bdd2e5197a334cee62efa91252758a71f

Saving artifacts...

 

4.7 看到ganache余额变少

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第2张图片

5 集成metamask钱包来展示代币信息

5.1 安装chrome浏览器

由于默认的firewall装完metamask一直无法登陆,所以使用chrome。

5.1.1 添加源

wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/

5.1.2 导入谷歌软件的公钥

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -

5.1.3 更新源

apt-get update

5.1.4 安装稳定版chrome

apt-get install google-chrome-stable

5.2 添家metamask插件

 

 

 

 

 

 

 

 

5.2.1 下载metamask

我使用的是:

MetaMask_v3.9.5.crx

(http://www.onlinedown.net/soft/1194708.htm)

5.2.2 chrome添加插件

选择more tools/extensions,然后将下载的插件拖过去即可(需要选择开发者模式)。

 

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第3张图片

 

 

5.2.3 效果

会在浏览器中多一个狐狸的标识

 

5.3 metamask配置

 

5.3.1 点击,基本全是accept

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第4张图片

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第5张图片

 

 

5.3.2 导入已经存在的秘钥

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第6张图片

 

 

5.3.3 导入已经存在秘钥界面

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第7张图片

 

 

5.3.4 获取wallet Seed

在ganache的设置界面中

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第8张图片

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第9张图片

将红框中的字体复制到metamask的wallet seed,设置用户密码即可。

5.3.5 登录metamaks效果

如图,可以通过点击+,与获取ganache中的私钥来导入账号。

 

 

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第10张图片

 

 

5.3.6 对接ganache私链

点击如下位置

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第11张图片

 

 

5.3.7 填写私链地址

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第12张图片

 

 

5.3.8 最终效果

可以看到ganache中的余额同步过来

 

 

5.4 运行代币网页

npm run dev

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第13张图片

 

 

5.5 使用chrome登录代币页面

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第14张图片

 

5.6 代币转移

复制ganache中第二个账号的地址,并转移200个代币

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第15张图片

 

5.7 钱包确认

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第16张图片

 

5.8 最终账号1代币数量减少

【以太坊系列-010】通过truffle以及ganache进行代币功能调试_第17张图片

可以在metamask中导入第二个账号,然后刷新 localhost:3000,可以看到代币的数量变为200。

6 参考资料

官网:

https://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin

metamask的配置:

https://truffleframework.com/tutorials/pet-shop#interacting-with-the-dapp-in-a-browser

一些遇到的问题:

https://blog.csdn.net/weixin_42350212/article/details/80753328

你可能感兴趣的:(区块链)