智能合约-建立标准币

truffle Boxes功能,react-box样板,已经整合了create-react-app,可以直接开发react web,省下项目设置的时间。

不再用truffle init

再终端,mkdir 新项目,切换到项目文件夹

执行

truffle unbox react-box

网路不好多试几次

Commands:

  Compile:              truffle compile   //编译命令

  Migrate:              truffle migrate //部署

  Test contracts:       truffle test //测试

  Test dapp:            npm test

  Run dev server:       npm run start //打开web端

  Build for production: npm run build  //发布的时候通过这个命令

运行web端看下 npm run start

Failed to compile.

Error in ./src/App.js Module not found: ../build/contracts/SimpleStorage.json in /Users/zhangheng/Desktop/0921demo/demo2/src @ ./src/App.js 14:21-69

报错,!!!!!!

原因是没有编译,部署。

atom打开项目目录

contracts  合约文件

migrations 部署文件

node_modules 相关的依赖包

src  主要用来写react,

App.js 可以调用合约的部署的相关的方法,和部署到区块              链的合约互动

package.json   node_modules相关的依赖包

开发前准备

1、打卡终端,启动testrpc,通过testrpc模拟以太坊区块链测试环境

2、创建的代币如果想要能够通过以太币钱包来进行转账和收账,必须兼容于以太坊的ERC20标准,ERC20定义了支持钱包所必须的合约界面。

3、安装OpenZeppeLin来简化加密钱包开发的过程。OpenZeppeLin是一套能够给我们方便提供编写加密合约的函数库,同时也提供了兼容ERC20的智能合约。

查看项目package.json 中的dependencies只有3个依赖库

控制台执行 npm install zeppelin-solidity然后会发现package.json 中的dependencies会多出一个依赖库并且node_modules文件夹会多出一个

zenppelin-solidity文件夹

contracts  合约文件夹

token   //写代码是会调用到这个标准的合约

在项目合约文件夹下新建合约文件写入以下代码(文件名自取)

pragma solidity ^0.4.2;
import “zeppelin-solidity/contracts/token/StandardToken.sol”;
//这时区块链上就多了一个币种zhangheng币这是一个比较夯实的合约了
contract ZhanghengCoin is StandardToken {
string public name = “ZhanghengCoin”; //全名
string public symbol = “ZTC”; //简写
uint8 public decimals = 4 ; //最小分割单位0.0001个可以找零,如果是8就是0.00000001个
uint256 public INITIAL_SUPPLY = 888888; //初始化数字货币的数量
function ZhanghengCoin() {
totalSupply = INITIAL_SUPPLY; //初始化的货币数量,totalSupply从父类继承
balances[msg.sender] = INITIAL_SUPPLY;

}

}

在部署合约文件夹下新建部署合约文件

var ZhanghengCoin = artifacts.require(“./ZhanghengCoin.sol”);

module.exports = function(deployer) {
deployer.deploy(ZhanghengCoin);
};

部署,编译,验证,世界上新的币种就要诞生了

.编译,打开终端,在当前项目目录下输入命令

truffle compile      项目目录下会多出一个build文件夹

在终端当前项目目录下执行truffle migrate开始部署(别忘了配置文件配置本地服务)

验证几个方法是否可用

控制台 truffle console

let contract //声明变量

ZhanghengCoin.deployed().then(instance=>contract=instance) //实例化合约并存储

contract.address //查看部署的合约地址,当前部署的合约的钱包的地址,一个钱包可以部署多个合约地址,每个合约都有一个地址。

contract.balanceOf(web3.eth.coinbase) //查看钱包的余额

contract.balanceOf(web3.eth.accounts[1]) // 查看下标为1的钱包余额

contract.name.call()  // 查看属性

contract.transfer(web3.eth.accounts[5],60000)  //向测试钱包转账

contract.balanceOf(web3.eth.coinbase) //查看余额变了

控制台切换项目根目录执行  npm run start //打开网页查看

代码在app.js中

react与合约互动开始了

https://gist.github.com/anonymous/e6cf9aa2e063641d1dfa4b0d22bb6896

发表评论

电子邮件地址不会被公开。 必填项已用*标注