目录
搭建私连网络
truflle初始化项目
智能合约示例
通用存证合约
初始化参数
接口
简易审批合约
初始化参数
数据结构
接口
智能合约的建立
谁在与智能合约交互?
智能合约的销毁
整个过程主要演示chrome扩展 METAMASK, OpenZepplin库和truffle框架的使用。
搭建私连网络
主要参考之前的以太坊-私有链搭建初步实践, 这里只用单节点的网络。
还是先准备账户:
mkdir node0
# 会在node0/keystore目录里生成一个keyfile json文件
geth --datadir node0 account new
#利用puppeth生成genesis.json的过程不表,参考上边的链接
geth --datadir node0 init genesis.json
# 把刚才的账号的密码写入node0/password文件
# 启动私链,顺便开启console
echo node0 > node0/password
geth --datadir node0 --port 30000 --nodiscover --unlock '0' --password ./node0/password --mine --rpc --rpccorsdomain "*" --rpcapi "eth,net,web3,admin,personal" console
我们把这个账号的json文件导入到chorme插件metamask里,便于后面调试和演示
ubuntu系统上的chrome插件会有窗口消失的bug,在URL栏里打开chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/popup.html
truflle初始化项目
需要下载truffle命令号
npm install -g truffle
mkdir token && cd token
# 利用trulle下载token代笔示例
truffle unbox tutorialtoken
npm intall zeppelin-solidity
如上必要的依赖框架和库已经下载到了本地, 接下来就创建自己的代币合约
在contract目录创建TutorialToken.sol文件,内容如下:
pragma solidity ^0.4.11;
import 'zeppelin-solidity/contracts/token/StandardToken.sol';
/**
* @title SimpleToken
* @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.
* Note they can later distribute these tokens as they wish using `transfer` and other
* `StandardToken` functions.
*/
contract TutorialToken is StandardToken {
string public name = "TutorialToken";
string public symbol = "SIM";
uint256 public decimals = 18;
uint256 public INITIAL_SUPPLY = 10000;
/**
* @dev Contructor that giv