以太坊智能合约相关

truffle是本地的用来编译、部署智能合约的工具。testrpc不同于geth,geth是真正的以太坊环境,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷,当合约在testrpc中测试通过后,再部署到geth中去。所以可以说truffle和testrpc就是两大杀器。

安装 分别安装testrpc以及truffle

npm install -g ethereumjs-testrpc
npm install -g truffle

testrpc启动本地环境

truffle中注意windows中的坑(摸索了好几天,没人带就是麻烦)。windows中需要删除truffle.js

摸索期间一直用truffle init 初始化项目,然后再进行配置。

Truffle推出Boxes功能之后,我们可以直接套用称作pet-shop的样板,此样板已经整合,可以直接用它来开发react web,省下项目设置的时间。

命令如下:(pet-shop这里用的是别人做的宠物的盒子)

truffle unbox pet-shop

安装完成后修改truffle-config.js

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",//本机IP,
      port: 8545,//本地testrpc开放的端口号
      network_id: "*" // Match any network id
    }
  }
};

利用zeppelin-solidity简化加密钱包开发过程

npm install zeppelin-solidity
新建一个币的合约文件。例:contracts目录下新建guicoin.sol 内容如下:
pragma solidity ^0.4.4;
import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";

contract guicoin is StandardToken {
  string public name = "guicoin";//币名称
  string public symbol = "GC";//币简称
  uint8 public decimals = 4;//币位数,
  uint256 public INITIAL_SUPPLY = 200000;//这个币的数量
function guicoin() public{
totalSupply_= INITIAL_SUPPLY;
   balances[msg.sender] = INITIAL_SUPPLY;//将币赋值给开发者
  }
}

这里备注下zeppelin-solidity的部分函数以便以后开发用

contract guicoin is StandardToken
上面那条语句即表明我们继承了 StandardToken合约,也就支持了以下 ERC20标准中规定的函数。因此支持以下部分函数
函数方法
totalSupply()代币发行的总量
balanceOf(A)查询A帐户下的代币数目
transfer(A,x)发送x个代币到A帐户
transferFrom(A,x)从A帐户提取x个代币
approve(A,x)同意A帐户从我的帐户中提取代币
allowance(A,B)查询B帐户可以从A帐户提取多少代币

和之前一样,后面验证时会用到balanceOftransfer两个函数。因为StandardToken合约中已经帮我们实现了这些函数,因此我们不需要自己从头再写一次。

定义一个币编译的指向例:migrations目录下新建文件3_deploy_guichain.js内容如下
var EncryptedToken = artifacts.require('./guicoin.sol');//指向合约的引用
module.exports = function(deployer) { 
	deployer.deploy(EncryptedToken);
	} 

执行truffle compile编译合约

truffle compile

执行truffle migrate 部署合约

truffle migrate

验证币是否生成功,是否能支持交易(truffle console进入truffle控制台)

truffle console
let contract  (在控制台下定义个变量)
guicoin.deployed().then(instance => contract = instance)  //实例化guicoin为contract
contract.balanceOf(web3.eth.coinbase)//查看币的基数,实际上是开发者的币数

contract.balanceOf(web3.eth.accounts[1])//查看第二个用户的币数

contract.transfer(web3.eth.accounts[1], 800)//转800个币第二个账户,检测是否发送成功。
至此在私有链下创建币种成功完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值