在前面的章节中,我们主要进行了两个步骤:搭建了truffle和testrpc环境;学习了sodility的语法和以太坊的基本概念。
有了这两部分知识,我们很容易开发一款基于testrpc的测试加密数字货币:
一 首先新建一个dapp2文件夹
mkdir dapp2
二 truffle初始化
truffle init
三 创建合约myToken
truffle create contract myToken
四 编写业务代码
cd contract;
vim myToken.sol;
pragma solidity ^0.4.4;contract EncryptedToken {//storage变量永久存储在区块链上uint256 INITIAL_SUPPLY = 10000;//地址到账户余额的映射mapping(address => uint256) balances;//构造函数,合约部署的时候只执行一次,将function EncryptedToken() {balances[msg.sender] = INITIAL_SUPPLY;}// 转账到⼀个指定的地址function transfer(address _to, uint256 _amount) {assert(balances[msg.sender] > _amount);balances[msg.sender] -= _amount;balances[_to] += _amount;}// 查看指定地址的余额function balanceOf(address _owner) constant returns (uint256) {return balances[_owner];}}
五 配置部署文件
编辑migrations/1_initial_migration.js部署脚本,将我们刚才创建的Hello_mshk_top.sol文件设置到发布配置文件中,内容如下:
var myToken= artifacts.require('./myToken.sol');module.exports = function(deployer) {deployer.deploy(myToken);}
六 到truffle.js配置网络相关
module.exports = {networks: {development: {host: "localhost",port: 8545,network_id: "*"}}};
七 编译部署
退到dapp2目录下
truffle compiletruffle deply
八 测试合约
truffle console;//开启控制台
web3.eth.coinbase;//查看合约拥有者帐号token数量web3.eth.accounts[0];web3.eth.accounts[1];
accounts[0]和coinbase是一个账户
然后调用合约contract的查询余额方法balancesOf:
然后调用合约contract的转账方法transfer向accounts[1]转账8888个token:
然后查询accounts[1]的余额,发现从0变成8888个token了:
九 总结
在这篇文章中,只是简单介绍了代币系统的逻辑,并没有对安全进行相关操作,比如:余额不够
的处理、地址合不合法的处理等等。我想有了前面学习的基础应该很容易看懂这里面的操作逻辑。