学习区块链(十)--基于truffle和testrpc创建加密数字货币
程序员文章站
2024-02-29 17:22:58
...
在前面的章节中,我们主要进行了两个步骤:搭建了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 compile
truffle 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了:
九 总结
在这篇文章中,只是简单介绍了代币系统的逻辑,并没有对安全进行相关操作,比如:余额不够
的处理、地址合不合法的处理等等。我想有了前面学习的基础应该很容易看懂这里面的操作逻辑。