创建一个工程,新建一个EncryptedToken合约。
代码如下:
pragma solidity ^0.4.4;
contract EncryptedToken {
uint INITIAL_SUPPLY = 666666; //允许发布的代币数量
mapping (address => uint) balances;
function EncryptedToken() {
balances[msg.sender] = INITIAL_SUPPLY;
}
//转账到一个指定的地址
function transfer(address _to, uint _amount) {
assert(balances[msg.sender] >= _amount);
balances[msg.sender] -= _amount;
balances[_to] += _amount;
}
//查看地址余额
function balanceOf(address _owner) constant returns (uint) {
return balances[_owner];
}
}
然后进行:truffle develop
再编译:compile
接着在项目migrations中创建2_deploy_encryptedToken.js文件。
var EncryptedToken = artifacts.require("./EncryptedToken.sol");
module.exports = function(deployer) {
deployer.deploy(EncryptedToken);
};
接着部署:migrate
与合约互动
先声明一个变量 contract。
truffle(develop)> let contract
给变量赋值
truffle(develop)> contract = EncryptedToken.deployed().then(instance => contract = instance)
此时contract获得值,进行转账查询等操作。
代币默认创建再第一个地址上:0x627306090abab3a6e1400e9345bc60c78a8bef57,对其进行查询。
Accounts:
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
(1) 0xf17f52151ebef6c7334fad080c5704d77216b732
(2) 0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
(4) 0x0d1d4e623d10f9fba5db95830f7d3839406c6af2
(5) 0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e
(6) 0x2191ef87e392377ec08e7c08eb105ef5448eced5
(7) 0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5
(8) 0x6330a553fc93768f612722bb8c2ec78ac90b3bbc
(9) 0x5aeda56215b167893e80b4fe645ba6d5bab767de
truffle(develop)> contract.balanceOf("0x627306090abab3a6e1400e9345bc60c78a8bef57")
等价于:truffle(develop)> contract.balanceOf(web3.eth.coinbase)
转账
contract.transfer(web3.eth.accounts[1], 666)