目录
- truffle 命令行帮助
- 初始化工程
- 使用 Debug 功能
- Zeppelin Solutions
- Pet Shop 示例
- 关于 BlockChain
- Quorum 建立企业私有区块链网络
- 使用自动化工具构建前端项目
- 创建一个命令行程序
相关链接
官方文档: http://truffleframework.com/docs/
代码模板: http://truffleframework.com/boxes/
一些更新新闻: http://truffleframework.com/blog/ 建议偶尔关注一下
Ganache: http://truffleframework.com/ganache
Drizzle: http://truffleframework.com/docs/drizzle/getting-started
truffle 命令行帮助
1 | truffle --help |
Truffle v4.1.3 - a development framework for Ethereum
Usage: truffle <command> [options]
Commands:
init 初始化新的 Ethereum 项目
compile 编译 Contract 源码
migrate 运行 migrations 将 Contract 部署到 Eth, migrate --reset会将部署重置, 消除执行某些语句的修改
deploy migrate 的别名
build Execute build pipeline (if configuration present)
test 执行test文件夹下的JS和Sol测试
debug txID 交互式调试区块链
opcode Print the compiled opcodes for a given contract
console Run a console with contract abstractions and commands available
develop Open a console with a local development blockchain
create Helper to create new contracts, migrations and tests
install 安装一个 Eth 包
publish 发布一个 Eth 包
networks 展示部署的 Contract 列表
watch 监听文件自动重建部署
serve Serve the build directory on localhost and watch for changes
exec Execute a JS module within this Truffle environment
unbox 下载一个预编译的Truffle工程
version 当前版本
See more at http://truffleframework.com/docs
执行部分命令的时候提示:
Could not find suitable configuration file.
在含有 truffle.js
配置文件的文件夹目录下执行即可.
初始化工程
1 | # 初始化项目目录结构 |
为了做版本规划, 编写 .gitignore
文件:
1 | node_modules |
为了解除经常拼写错误, 编写 Makefile 文件:
1 | main: compile migrate |
为了连接本地测试环境, 将 truffle.js 文件内容修改成:
1 | module.exports = { |
使用 Debug 功能
参考官方文档: http://truffleframework.com/tutorials/debugging-a-smart-contract
编写好 sol, js 文件后, 执行 make c 命令(compile) 进行编译, 然后运行测试环境 make t (test + develop) 进入命令行交互式模式.
交互式模式下, 执行 migrate
进行测试环境的部署, 运行某 Contract 中的方法, 之后会打印交互式结果, 记录 tx/transactionHash 字段的内容.
另一个 bash shell 控制台执行 truffle develop --log
监听相对详细的执行过程内容.
回到交互式模式控制台下, 执行 debug [tx/transactionHash]
, 其中 tx/transactionHash 为前面获取到的 ID, 0x… 开头的字符串.
然后就开始了该方法的调试, 使用 n 单步运行…
Zeppelin Solutions
参考官方文档: http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin
文档介绍Zeppelin Solutions主要功能就是将程序发往 Ethereum 前进行审计, 免于出错浪费 Gas. https://openzeppelin.org/ 就是一个用来完成目标的工具集.
1 | truffle unbox tutorialtoken |
使用 make 即可部署成功, npm run dev 运行示例, 如果有报错可能是因为 jquery.min.js 无法从 google 服务器下载, 只需要下载一个到本地, 并且修改 index.html 中的路径即可.
Pet Shop 示例
参考官方文档: http://truffleframework.com/tutorials/pet-shop
安装依赖
- 安装
Ganache
以太坊模拟器. - 浏览器安装
MetaMask
插件, https://metamask.io/ . - 下载本代码 https://github.com/NICKNAME/pet-store.
- 执行依赖安装
npm install
或者yarn install
- 安装执行环境
1 | yarn global add truffle |
启动项目
- 修改配置文件 truffle.js, 对应 ganache 的地址, 一般情况默认是对应的
- 启动 Ganache, 默认监听地址为 http://127.0.0.1:7545
- 执行代码编译
1 | make && make t |
- 运行程序
1 | npm run dev |
- 浏览器运行
http://localhost:3000
开启 MetaMask, 点击 Import Existing DEN, 填入 Ganache 中的 MNEMONIC 配置, 导入 Ganache 中的第一个账号.
- 试着玩儿一下吧…
关于 BlockChain
参考官方文档: http://truffleframework.com/tutorials/ethereum-overview
一个分布式数据库, 完全去中心化, 极高容错, 节点独立验证, 用于数据的交互存储.
挖矿 vs 矿工: 就是节点争夺记账权, 优先者有奖励; 矿工就是所有的计算单元.
哈希:
一系列交易产生区块(类似于数据库分页查询), 区块数据经过一致性单方向算法得到一个定长字符串, 称之为哈希. 如果原数据被更改, 哈希结果也随之更改, 而且用哈希值无法反向得出原数据, 这也就可以用哈希值简单的替代原数据. 未验证的数据经过相同算法得到的哈希值与要验证的哈希值比较, 如果相同说明数据有效.
超过一半的矿工验证过交易后, 认为该网络达到一致性, 区块被永远不可更改的写入链表, 并且向全部节点广播同步数据.
Ethereum: 一个可编程的受信任的区块链环境. 通过以太坊虚拟机(EVM)实现代码(smart contract)的解析.
智能合约: smart contract, 是一段代码, 一般可以由 Solidity 编写. 可以处理并存储以太币和自定义数据,
参考: Solidity
以太坊网络:
MainNet 主网络:8545, 数据公开
本地测试(Ganache:7545, truffle-develop:9545)网络, 单点, 重启即丢失数据.
公网测试(Ropsten, Ropsten, Rinkeby)
私有企业网(Quorum): 数据私有, 存储敏感数据, 更小的数据包实现高吞吐.
DApps: distributed applications, 分布式应用
以传统网页形式提供服务, 架设在传统 web 服务器或者去中心化文件服务 Swarm 或 IPFS 上.
脑洞大开的方向: 记录存储, 金融, 供应链, 不动产, 交易市场…
Quorum 建立企业私有区块链网络
参考官方文档: http://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains
Quorum 在 Ethereum 基础之上, 增加创建私有网络的功能, 参与者也增加权限限制, 并且提供交易数据隐私功能.
Truffle Ethereum
Quorum 简介 Quorum 文档
Solidity
集成环境用到的依赖: VirtualBox, Vagrant 和 Git
社区: https://gitter.im/ConsenSys/truffle
使用自动化工具构建前端项目
参考官方文档: http://truffleframework.com/tutorials/building-testing-frontend-app-truffle-3
Webpack Docker Travis CI 自动构建例子
创建一个命令行程序
参考官方文档: http://truffleframework.com/tutorials/creating-a-cli-with-truffle-3