Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | 云栖社区 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Github | Search | About

Netkiller Blockchain 手札

电子书广告位招租,代发企业招聘信息,看中哪个位置跟作者说 13113668890

Mr. Neo Chan, 陈景峯(BG7NYT)



中国广东省深圳市望海路半岛城邦三期
518067
+86 13113668890


文档始创于2018-02-10

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信订阅号 netkiller-ebook (微信扫描二维码)
QQ:13721218 请注明“读者”
QQ群:128659835 请注明“读者”

2018-06-01

内容摘要

这一部关于区块链开发及运维的电子书。

为什么会写区块链电子书?因为2018年是区块链年,区块链是一个风口,前几个风口我都错过了。例如web2.0, 云, 大数据等等,都从身旁擦肩而过。所以我要抓住这次。

这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。

这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将理论或是大谈特谈区块链行业,这些内容更多是头脑风暴,展望区块链,均无法落地实施。本书与那些书籍完全不同,不讲理论和原理,面向应用落地,注重例子,均是干货。

写作原则,无法落地的项目作者绝对不会写。凡是写入电子的内容均具备可操作,可落地。

电子书更新频率?每天都会有新内容加入,更新频率最迟不会超过一周,更新内容请关注 https://github.com/netkiller/netkiller.github.io/commits/master

本文采用碎片化写作,原文会不定期更新,请尽量阅读原文。 http://www.netkiller.cn/blockchain/index.html

您的打赏是我的写作动力: http://www.netkiller.cn/blockchain/donations.html

接受 ETH 捐赠: 0x3e827461Cc53ed7c75A29187CfF39629FCAE3661

喜大普奔!读者币(Netkiller eBook Reader Coin - NBRC)正式开始空投,请在钱包中添加NBRC代币即可看到1000枚读者币。建议使用 Ethereum Wallet (Mist) 操作 NBRC,在 CONTRACTS菜单点击WATCH TOKEN按钮,输入合约地址 0x4488ed050cd13ccfe0b0fcf3d168216830142775 。注意imtoken 计算 Gas 有问题,转账会失败。MetaMask 建议 Gas Price 4GWei, Gas Limit 200000 费用 0.0004 左右的ETH

表 1. 企业招聘信息广告位,区块链工作机会


LOGO 广告位招租 LOGO 广告位招租 LOGO 广告位招租

广告发布,请联系 13113668890


目录

1. 自述
1.1. 系列文档
1.2. 作者简介
1.3. 写给读者
1.4. 文档下载
1.4.1. Netkiller 手札 2017版电子书(epub,kindle,chm,pdf)
1.5. 打赏(Donations)
1.5.1. 微信(Wechat)
1.5.2. 支付宝(Alipay)
1.5.3. PayPal Donations
1.5.4. 银行(Bank)
1. 区块链
1.1. 什么是区块链?
1.2. 什么是智能合约?
1.3. 我们应该怎么做?
1.4. 如何学习区块链
1.5. 币圈与链圈
1.6. 区块链能做什么
1.7. 区块链不能解决的问题
1.8. 理解去中心化
1.9. 理解不可撰改
1.10. 理解分布式记账
1.11. 安全问题
1.12. 区块链落地面临的问题
1.12.1. 性能问题
1.12.2. 颗粒度问题
1.12.3. 区块链不能替代传统数据
1.12.4. 链上,链下数据一致性问题
1.13. 区块链未来
1.14. 区块链的六层模型
1.15. 共识机制
1.15.1. PoW(Proofof Work,工作量证明)
1.15.2. PoS(Proofof Stake,权益证明)
1.15.3. DPoS(DelegatedProof-Of-Stake,股份授权证明)
1.16. SHA-256
1.17. Base58编码
1.18. Merkle
1.19. BIP39协议:使用助记词生成确定性钱包
1.19.1. 摘要
1.19.2. 动机
1.19.3. 生成助记词
1.19.4. 单词表
1.19.5. 从助记词到种子
1.19.6. 单词列表
1.19.7. 开发库
1.19.7.1. Node.js
1.19.7.2. Python
1.19.7.3. 其他实现
1.19.8. Netkiller 助记词词库
1.20. Ethereum vs Hypterledger Fabic vs EOS 对比
2. 区块链探索
2.1. 以太坊物流场景解决方案
2.2. 防伪溯源区块链应用场景
2.2.1. 背景
2.2.2. 安全问题
2.2.3. 防伪问题
2.2.4. 性能问题
2.2.5. 颗粒度问题
2.2.6. 存储规划
2.2.7. 大数据问题
2.2.8. BI商业智能
2.2.9. 采集终端
2.2.10. 多媒体数据
2.2.11. 物流接口
2.2.12. 如何激励用户
2.2.13. 上链
2.2.14. 以太坊解决方案
2.2.14.1. 应用场景一
2.2.14.2. 应用场景二
2.2.14.3. 用户留言
2.2.15. Hyperledger 解决方案
2.2.15.1. 溯源合约涉及
2.2.15.1.1. 食品安全朔源
2.2.15.1.2. 水平移植
2.2.15.2. 积分通正(代币)
2.3. 以太坊·电影院场景区块链应用探索
2.3.1. 合约文件
2.3.2. 合约用法
2.4. 游戏领域区块链探索
2.4.1. 游戏代币
2.4.2. 玩家属性与游戏装备
2.4.3. 装备属性与规范
2.4.4. 物品合成计算
2.4.5. 实施步骤
2.5. 以太坊竞猜活动区块链探索
2.6. 使用代币替代传统积分系统
2.6.1. 规划
2.6.1.1. 账号规划
2.6.1.2. 日志规划
2.6.1.3. 监控规划
2.6.1.4. 代币构成规划
2.6.2. 实施步骤
2.6.3. ERC20 代币合约
2.6.4. 打通用户注册
2.6.5. 现有用户怎么处理
2.6.6. 赠送代币
2.6.7. 赚取代币
2.6.8. 用户登录
2.6.9. 积分商城
2.6.10. 代币报表
2.6.10.1. 曾币报表
2.6.10.2. 积分商城报表
2.6.11. 代币交易
2.7. 区块链征信解决方案探索
2.7.1. 需求分析与概要设计
2.7.2. 数据结构
2.7.3. 将征信资料写入区块链
2.7.4. 查询区块数据
2.7.5. 删除区块
2.8. Hyperledger fabric 银行应用探索
2.8.1. 电汇年代
2.8.2. 通存通取年代
2.8.3. 跨境汇款
2.8.4. 区块链能做什么
2.8.5. 智能合约怎么落地
2.8.6. 总结
2.9. 区块链医院应用探索
2.9.1. 背景
2.9.2. 药品和器械上链
2.9.2.1. 药品上链
2.9.2.2. 器械上链
2.9.3. 电子病历上链
2.9.3.1. 医学影像上链
2.9.4. 健康信息
2.9.5. 出生证明
2.9.6. 保险
2.9.6.1. 保险信息上链
2.9.6.2. 区块链解决出险理赔过程
2.9.7. 智能合约
I. EOS
3. EOS
3.1. EOS 资源
3.1.1. EOS 主网与投票状态
3.1.2. EOS 投票工具
3.1.3. EOS 区块链浏览器
3.1.4. EOS 钱包资源
4. EOS 安装
4.1. CentOS
4.2. Mac
4.3. Docker 开发环境
4.4. 主网
4.5. 启动 EOS 节点
4.5.1. EOS 本地网
4.5.1.1. 单节点私链
4.5.1.2. 单机多节点
4.5.1.3. 多机多节点
4.5.1.3.1. 节点一
4.5.1.3.2. 节点二
4.5.1.3.3. 节点三
4.5.1.3.4. 进入 Node 1 创建钱包和部署合约
4.5.2. 测试网
4.5.2.1. Public Testnet Endpoints(公共测试网络的接入点)
4.5.2.1.1. testnet1.eos.io
4.5.2.1.2. http://testnet.eoswtz.com
4.5.2.2. 本地连接到测试网
4.5.2.3. EOS (testnet) Explorer (Dawn 2.0)
4.5.2.4. EOS Jungle Testnet Monitor (Dawn 4.0)
4.5.3. 主网
4.5.3.1. 创世区块
4.5.3.2. eosnodes.privex.io
4.5.3.2.1. 创世区块
4.5.3.2.2. 主网超级节点
4.5.3.3. mainnet.genereos.io
4.5.3.4. mainnet.eoswz.com
4.6. nodeos 命令
4.6.1.
4.6.1.1. --contracts-console
4.6.2. config.ini 配置文件
4.6.2.1. 插件配置
5. CLEOS
5.1. 钱包
5.1.1. 创建钱包
5.1.2. 钱包列表
5.1.3. 钱包锁
5.2. 账号
5.2.1. 创建公钥和私钥
5.2.2. 导入私钥
5.2.3. 查看私钥
5.2.4. 创建账号
5.3. set 命令
5.3.1. abi
5.4. 区块信息
5.4.1. 获得当前区块链信息
5.4.2. 获取指定区块数据
5.4.3. 从区块链获取交易信息
5.4.4. 获得账号信息
5.4.5. 从区块链上获取 abi 文件
5.5. 智能合约 - EOS 代币
5.5.1. 编译智能合约
5.5.2. 设置初始化账号 eosio
5.5.3. 创建账号
5.5.4. 部署合约 eosio.bios
5.5.5. 创建账号 netkiller
5.5.6. EOS 代币合约
5.5.7. 创建代币
5.5.8. 发放代币
5.5.9. 查看代币余额
5.5.10. 转账
6. 智能合约开发
6.1. WebAssembly
6.2. 只能合约文件
6.2.1. hpp 头文件
6.2.2. cpp 合约代码文件
6.2.3. abi 文件
6.3. eosiocpp 命令
6.3.1. 创建新合约
6.3.2. 编译 WAST 文件
6.3.3. 编译 ABI 文件
6.4. eosio.token 合约详解
6.4.1. token::create 方法
6.4.2. token::issue 方法
6.4.3. token::transfer 转账方法
6.5. 编译运行 hello 智能合约
6.6. dice
6.7. 智能合约数据库操作 CURD
6.7.1. 创建一个新项目
6.7.2. 创建结构体
6.7.3. 插入数据操作
6.7.4. 修改数据操作
6.7.5. 删除数据操作
6.7.6. 完整的合约例子
6.7.6.1. 编译
6.7.6.2. 启动EOS私链开发环境
6.7.6.3. 创建合约账号
6.7.6.4. 部署合约
6.7.6.5. 创建
6.7.6.6. 查找
6.7.6.7. 修改
6.7.6.8. 删除
6.7.7. 序列主键
7. EOS Dapp 开发
7.1. eosjs
7.1.1. 安装 eosjs
7.1.2. 实例演示
7.1.2.1. 智能合约
7.1.2.2. 通过 eosjs 访问智能合约
8. FAQ
8.1. Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations
8.2. Error 3080006: transaction took too long
8.3. 不显示合约中的 eosio::print() 输出
II. Ethereum 以太坊
9. 以太坊
9.1. 名词解释
9.2. IBAN (International Bank Account Number)
9.2.1. iban:国际银行账号
9.2.2. 以太坊iban:新的国别码和BBAN编码方案
9.2.3. iban账号与以太坊地址的转换
9.2.4. 检查iban账号的有效性
9.3. 如何计算Gas手续费
9.4. 转出账号中所有 ETH,Ethereum Wallet 中的 Send everything 实现方法
9.5. (0/12 block confirmations)
9.6. 太坊账户管理 keystore 文件
9.6.1. 什么是 keystore 文件
9.6.2. keystore 文件的内容
9.6.3. keystore文件如何工作的?
9.6.3.1. 加密你的私钥
9.6.3.2. 用你的密码来保护它
9.6.3.3. 确认输入的密码是正确的
9.6.3.4. 将这三步结合起来
9.7. 批量转账遇到的问题与解决方案
9.8. 代币兑换
10. 以太坊私链入门
10.1. 软件安装与配置
10.1.1. Ubuntu
10.1.1.1. 安装 geth
10.1.1.2. 安装 solc
10.1.1.3. Node.js
10.1.2. CentOS 7
10.1.3. Windows
10.1.4. Mac OS
10.1.4.1. 安装 Node
10.1.4.2. Ethereum Wallet
10.1.5. 编译安装
10.1.6. Netkiller OSCM 一键安装
10.1.6.1. 1.8.10
10.1.6.2. 1.8.1
10.1.6.3. 1.8.10
10.1.7. 防止 geth 异常退出
10.2. 创世区块
10.2.1. 初始化创世区块
10.2.2. 创建主账号
10.2.3. 启动节点
10.2.4. 使用节点进行挖矿
10.2.4.1. 启动矿工开始挖矿
10.2.4.2. 停止挖矿
10.2.4.3. 查看所挖金额
10.2.5. 在创世链中制定矿工账号并为它充值
10.3. Blockchain explorer (区块链浏览器)
10.4. 单机多实例演示
10.4.1. 实例一
10.4.2. 实例二
10.4.3. 添加节点
10.4.4. 节点测试
10.5. 使用 pm2 启动以太坊
11. geth v1.8.16 命令详解
11.1. api 相关参数
11.1.1. rpcapi
11.1.2. rpcaddr
11.2. 启动 Websocket 端口
11.3. 日志
11.4. 控制台
11.5. 连接控制台
11.5.1. 指定 geth.ipc 文件位置
11.5.2. IPC 方式连接
11.5.3. TCP 连接控制台
11.5.4. WebSocket 方式
11.6. 账号管理
11.6.1. 新建账号
11.6.2. 查看账号
11.6.3. 从私钥导入以太坊地址
11.7. 配置自动解锁账号
11.8. 运行JS
11.9. 节点管理
11.10. 启动挖矿
11.10.1. 挖矿线程数
11.10.2. 指定旷工账号
11.11. 运行智能合约
11.12. Ropsten测试网络
11.13. 静态节点
11.14. JavaScript Console
11.14.1. personal 管理
11.14.1.1. 创建账号
11.14.1.2. 列出账号
11.14.1.3. 解锁账号
11.14.2. eth 管理
11.14.2.1. 矿工账号
11.14.2.2. 余额
11.14.2.2.1. 单位转换
11.14.2.2.2. 一次检查所有账号余额
11.14.2.3. 解锁账号
11.14.2.4. 转账
11.14.2.5. 查看挂起的交易
11.14.2.6. 查看当前区块总数
11.14.2.7. 查看当前Gas价格
11.14.2.8. 评估执行花费的GAS
11.14.2.9. 查看区块信息
11.14.2.10. 返回交易信息
11.14.2.11. 返回交易收据
11.14.2.12. eth.syncing 同步状态
11.14.2.13. 查看智能合约编译器
11.14.3. web3
11.14.3.1. Ether币的基本单位
11.14.3.2. web3.toWei
11.14.3.3. web3.fromWei
11.14.4. admin 管理
11.14.4.1. 看看 networkid
11.14.4.2. 节点管理
11.14.4.2.1. 显示节点
11.14.4.2.2. 添加节点
11.14.4.2.3. 查看节点
11.14.4.2.4. networkid
11.14.5. miner 挖矿管理
11.14.5.1. 开始挖矿
11.14.5.2. 停止挖矿
11.14.5.3. 设置默认矿工账号
11.14.6. txpool 管理
11.14.6.1. txpool.status
11.14.7. net
11.14.7.1. 监听状态
12. Wallet
12.1. Ethereum Wallet(Mist)
12.1.1. Ethereum Wallet 工作原理
12.1.1.1. geth 启动 ropsten 测试网
12.1.1.2. 连接到本地测试网络
12.1.1.2.1. IPC
12.1.1.2.2. TCP
12.1.1.3. 控制台
12.1.2. 主网络
12.1.2.1. 主网启动参数
12.1.2.2. 进入主网
12.1.2.3. 以太坊区块浏览器
12.1.3. Ropsten 测试网络
12.1.3.1. 启动参数
12.1.3.2. 获得测试币
12.1.3.3. Etherscan
12.1.4. Rinkeby 测试网络
12.1.4.1. 测试网络
12.1.4.2. 获取测试网络上的以太币
12.1.4.3. 连接节点(Light node)
12.1.4.4. 区块链浏览器
12.1.5. Solo Network
12.1.6. 私网
12.1.7. 删除废弃的合约
12.1.8. 免安装,在线使用
12.1.9. 获得空投币
12.2. MetaMask
12.2.1. 测试网络
12.2.1.1. 获取测试网络上的以太币
12.2.2. mnemonic - Reveal seed words
12.2.3. 添加 Token 币种
12.2.4. MetaMask Vault Decryptor
12.2.5. 部署合约
12.3. MyEtherWallet
12.3.1. 执行ERC20智能合约函数
12.3.1.1. 查询余额
12.3.1.2. 销毁代币
12.3.1.3. 冻结账号
12.3.1.4. 增发代币
12.3.1.5. 锁仓
12.3.1.6. 批量打币
12.3.1.7. 修改合约管理者
12.3.1.8. 设置兑换比例
12.3.1.9. 空投设置
12.4. MyCrypto
12.5. imToken
12.5.1. 添加 Token
13. Token
13.1. Ethereum Wallet 创建ERC20代币合约
13.1.1. 合约文件
13.1.2. 部署合约
13.1.3. 代币转账
13.1.4. Verify And Publish
13.1.5. Links 链接更新
13.2. ERC20 Token Solidity 0.4.24
13.2.1. 构造方法
13.2.2. 官方规定 Method 方法
13.2.2.1. name
13.2.2.2. symbol
13.2.2.3. decimals
13.2.2.4. totalSupply
13.2.2.5. balanceOf
13.2.2.6. transfer
13.2.2.7. approve
13.2.2.8. transferFrom
13.2.2.9. allowance
13.2.3. 事件
13.2.3.1. Transfer
13.2.3.2. Approval
13.3. Netkiller Crowdsale Contract
13.3.1. Solidity 0.4.24
13.3.2. Solidity 0.4.21
13.4. ERC721 - Non-Fungible Tokens
13.4.1.
13.4.2. ERC721Metadata (可选)
13.4.3. ERC721Enumerable (可选)
13.5. 经典参考案例
13.5.1. Enterprise Token Ecosystem (ETE)
13.5.2. 积分链 (PE Chain)
13.5.3. Global star league chain (GSLC)
13.5.4. Kyber Network
13.6. 代币合约官方文档
13.6.1. ERC20
13.6.1.1. 基本Token 官方提供的例子
13.6.1.2. 官方提供的例子 ADVANCED TOKEN
13.6.1.3. Netkiller Basic Token 的例子
13.6.1.4. Netkiller ADVANCED TOKEN
13.6.1.5. 空投代币
13.6.1.5.1. 案例一
13.6.1.5.2. 案例二
13.6.1.5.3. 案例三
13.6.2. ERC223 token standard reference implementation.
13.6.3. ERC721 - Non-fungible Token Standard
13.6.4. ERC827 Token Standard (ERC20 Extension)
13.6.5. ERC875 for non fungible tokens and simple atomic swaps
13.6.6. ERC: Standard URI scheme with metadata, value and byte code
14. 智能合约语言 Solidity v0.5.0
14.1. Remix - browser-solidity
14.1.1. 将 Remix(browser-solidity) 安装到本地
14.1.2. 输入数组
14.2. solc 命令
14.2.1. 使用 solc 编译 *.sol 代码
14.3. 智能合约入门演示
14.4. 数据类型
14.4.1. 数值型
14.4.1.1. 加 +,减 -,乘 *,除 / 运算演示
14.4.1.2. 求余 % 运算演示
14.4.1.3. 幂运算演示
14.4.1.4. 与 &,| 或,非 ~,异或 ^ 演示
14.4.1.5. 位移演示
14.4.2. 字符串
14.4.2.1. 获取字符串长度
14.4.3. 布尔(Booleans)
14.4.4. 字节类型
14.4.5. 数组
14.4.5.1. length
14.4.5.2. push() 方法
14.4.6. 枚举类型
14.4.7. 结构体
14.4.7.1. 函数返回Struct
14.4.8. address
14.4.8.1. payable
14.4.8.2. .value()
14.4.8.3. .gas()
14.4.9. mapping
14.5. 单位
14.5.1. 货币单位(Ether Units)
14.5.2. 时间单位(Time Units)
14.6. 变量
14.6.1. 全局变量
14.6.2. storage
14.6.3. memory
14.7. 函数
14.7.1. 构造方法
14.7.2. 定义函数
14.7.3. 函数返回值
14.7.4. 参数传递
14.7.5. 函数的例子
14.7.6. Fallback function
14.7.7. modifier
14.8. 事件
14.9. 面向对象编程
14.9.1. 可见性修饰符
14.9.2. 错误处理
14.9.3. interface 接口
14.9.4. library 库
14.9.4.1. 使用库来扩展数据类型
14.9.5. 继承
14.10. 合约调用
14.11. 合约接收 ETH
14.11.1. 调用 selfdestruct(msg.sender); 取出合约中的 ETH
14.11.2. 自动退款合约
14.11.3. 收款合约自动转账
14.11.4. 指定账号提取 ETH
14.12. 合约中实例化一个接口
14.13. 合约中实例化另一个合约
14.13.1. msg.sender 与 this 的区别
14.13.2. 地址格式
14.14. Solidity 安全问题
14.14.1. 整型溢出
14.15. solidity example
14.15.1. Voting
14.15.2. MetaCoin
14.15.3. Anonymous voting on Ethereum without a tally authority. Protocol from this paper
14.15.4. Ballot
14.15.5. Conference
15. Truffle v4.1.8 开发框架
15.1. 安装 Truffle
15.2. 开发环境
15.2.1. truffle develop
15.2.2. Ganache
15.2.3. testrpc
15.3. Truffle 快速入门
15.3.1. Ubuntu 环境
15.3.1.1. 启动开发环境
15.3.1.2. 创建项目
15.3.1.3. 创建合约
15.3.1.4. 配置 Truffle
15.3.1.5. 编译智能合约
15.3.1.6. migrate
15.3.2. Mac 环境
15.3.3. ERC20 代币部署
15.3.3.1. 合约文件
15.3.3.2. 部署文件
15.3.3.3. 编译部署
15.3.3.4. 合约调用
15.3.4. 高级ERC20代币合约
15.3.4.1. 部署合约
15.3.4.2. 控制台检查合约
15.3.4.3. 测试转账
15.3.4.4. 锁仓
15.3.4.5. 测试空投
15.4. Truffle 命令详解
15.4.1. version
15.4.2. Truffle console 控制台
15.4.3. create
15.4.3.1. contract 创建合约
15.4.3.2. test 创建单元测试
15.4.4. migrate
15.4.5. compile
15.4.6. test
15.4.7. watch
15.5. 合约开发
15.5.1. 构造方法
15.6. truffle console
15.6.1. 获取账号列表
15.6.2. 余额
15.6.3. 实例化合约
15.6.4. 访问 public 变量
15.6.5. 调用 public 函数
15.7. 测试
15.7.1. balanceOf
15.7.2. transfer
15.8. TRUFFLE BOXES
15.9. Zeppelin Solidity - OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.
15.9.1. ERC20
15.9.2. ERC872
16. web3.js - 1.0.0
16.1. 开发环境
16.1.1. Ropsten 测试网
16.2. truffle-contract
16.3. 连接到以太坊客户端
16.3.1. http 方式
16.3.2. WebSocket 方式
16.3.3. IPC 方式
16.4. web3
16.4.1. version 显示web3版本号
16.5. web3.eth
16.5.1. 查看账号列表
16.5.2. 查询矿工账号
16.5.3. 获得余额
16.5.4. web3.eth.sendTransaction()
16.5.5. web3.eth.sendSignedTransaction() 私钥签名转账
16.5.5.1. 例子1
16.5.5.2. 例子2
16.5.6. web3.eth.getBlock() 获取区块
16.6. 账号管理
16.6.1. web3.eth.personal.unlockAccount()
16.7. 智能合约
16.7.1. 部署合约
16.7.2. 使用最佳手续费创建合约
16.7.3. 调用合约
16.7.4. event
16.8.
16.8.1.
16.8.2. 订阅 newBlockHeaders
16.8.3. 订阅 log
16.8.4. 订阅同步状态
16.9. utils
16.9.1. web3.utils.toWei()
16.9.2. 将 Wei 转换到指定单位
16.10. web3 编译合约
16.10.1. solc.compile
16.11. web3admin
16.12. ABI-encoded
16.13. 实用例子
16.13.1. 数据写入到区块链中
16.13.2. 编译部署智能合约
16.13.3. 部署合约
16.13.4. ERC20 Example
16.14. HD Wallet(Hierarchical Deterministic wallet)
16.14.1. 创建项目
16.14.2. 生成第二个钱包
16.14.3. Mnemonic Code Converter
16.14.4. HD Wallet 例子
16.14.5. 获得钱包地址和私钥
16.14.6. truffle.js 例子
16.14.7. Mnemonic To Seed 加密
16.14.8. 中文助记词
16.14.9. 代币转账
16.15. 从 .ethereum/keystore 文件导入私钥
16.16. Express + web3.js 实现简单网页钱包
16.16.1. 创建项目
16.16.2. 主程序 main.js
16.16.3. ABI 文件 abi/NKC.abi
16.16.4. 页面视图
16.16.4.1. views/account.ejs
16.16.4.2. views/balance.ejs
16.16.4.3. views/done.ejs
16.16.4.4. views/header.ejs
16.16.4.5. views/index.ejs
16.16.4.6. views/showbalance.ejs
16.16.4.7. views/transfer.ejs
16.16.5. 启动 Node 服务
17. web3j v3.4.0 - Jave Client
17.1. 安装命令行工具
17.1.1. Mac OS
17.1.2. 二进制包安装
17.2. 启动以太坊
17.3. Maven pom.xml 文件
17.4. Java 与 Solidity 数据类型映射关系
17.5. 常量
17.5.1. 默认 Gas
17.5.2. 默认 gaslimit gasprice
17.6. 连接到服务器获取版本号
17.7. 获得以太坊状态信息
17.7.1. 获取客户端版本
17.7.2. 协议版本
17.7.3. 查看当前区块
17.7.4. 同步状态
17.7.5. 挖矿状态
17.7.6. 矿工账号
17.7.7. 挖矿速度
17.7.8. Gas 价格
17.7.9. 评估GAS
17.7.10. 节点数量
17.8. 单位转换
17.8.1. GWEI to WEI
17.9. 账号管理
17.9.1. 获得账号列表
17.9.2. 获得账号信息
17.9.3. 创建账号
17.9.4. 解锁账号
17.10. Credentials
17.11. 交易
17.11.1. 获取余额
17.11.2. 通过 Keystore 转账
17.11.3. 通过私钥转账
17.11.4. 指定 gas 费用
17.11.5. 查询 Transaction Information
17.11.6. 交易结果查询
17.11.7. RawTransaction 编码与解码
17.12. 钱包
17.12.1. 创建钱包
17.12.2. 从钱包取出账号
17.12.3. 生成助记词钱包
17.12.4. 随机产生助记词
17.12.5. 导入 BIP39 钱包
17.13. 智能合约
17.13.1. 载入合约
17.14. ERC20合约
17.14.1. balanceOf
17.14.2. name
17.14.3. 合约转账
17.14.4. 完整的 ERC20 代币开发库
17.15. Infura
17.16. 助记词
17.16.1. 获取随机助记词
17.16.2. 助记词导出公钥和私钥
17.17. 过滤器 (Filter)
17.18. Subscription
17.18.1. 接收所有添加到区块链的新区块
17.18.2. 接收所有添加到区块链的新交易
17.18.3. 接收所有待处理的事务
17.18.4. 将区块块重放到当前的当前位置
17.18.5. 过滤主题
17.18.6. 停止订阅 Subscriptions
17.18.7.
17.19. 解锁账号
17.20. IBAN (International Bank Account Number)
17.21. Springboot with Ethereum (web3j)
17.21.1. Maven
17.21.2. application.properties
17.21.3. TestRestController
17.21.4. 测试
18. web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
18.1. 安装 web3.py 开发环境
18.1.1. CentOS
18.1.2. MAC OS
18.2. 连接到以太坊节点
18.2.1. HTTP
18.2.2. IPC
18.2.3. Websocket
18.3. 交易
18.3.1. 发送 ETH
18.3.2. 签名发送 ETH
18.4. ERC20 代币合约
18.4.1. 签名发送ERC20代币
19. Ethereum iOS
20. Ethereum Developer APIs
20.1. API Keys
20.2. 账号
20.2.1. 余额
20.2.2. 查询区块
20.2.3. 查询区块
20.3. 查询交易
20.3.1. 检查合约执行状态
20.4. Geth/Parity Proxy APIs
20.4.1.
20.5. JSON RPC 原生交口调用
21. infura
21.1. Infura 3.0
21.2. websocket
21.2.1. 订阅 newBlockHeaders
21.3. 配置 Truffle
21.4. infura.io web3.js 开发
21.4.1. Web3 通过 infura 连接到 Ropsten 测试网络
21.4.2. 使用 truffle-hdwallet-provider 连接到 https://ropsten.infura.io
21.4.3. 转账
21.4.4. 执行合约
21.5. Infura IPFS
21.5.1. 上传文件
21.5.2. 查看文件
21.5.3. 下载文件
21.5.4. 创建目录
21.5.5. 查看文件状态
21.5.6. 查看IPFS版本号
21.6. Infura 2.0 (已经废弃)
21.6.1. 注册账号
21.6.2. infura 接口
21.6.2.1. jsonrpc
21.6.2.2. INFURA API
22. 以太坊案例
22.1. EtherDelta
22.2. 以太猫(CryptoKitties)
22.3. CryptoZombies
22.4. Augur Project
22.5. Golem
22.6. FirstBlood
22.7. Bancor
23. FAQ
23.1. Error: etherbase missing: etherbase address must be explicitly specified
23.2. FAQ
23.3. Error: authentication needed: password or unlock
23.4. 新增节点后不生效
23.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
23.6. Error: exceeds block gas limit
23.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
23.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4
III. Hyperledger
24. Hyperledger Fabric v1.1.0 入门
24.1. Hyperledger Fabric
24.2. 安装 Hyperledger Fabric
24.2.1. 依赖工具
24.2.2. 安装Docker
24.2.3. 安装 Node.js 环境
24.2.4. 安装 hyperledger 1.1.0
24.2.5. 手工安装 hyperledger v 1.1.0 开发环境
24.2.5.1. 登录 docker
24.2.5.2. Docker 安装
24.2.5.3. 编译安装
24.2.6. 启动 docker 虚拟机
24.2.7. 管理 hyperledger
24.2.7.1. CouchDB 管理界面
24.2.8. 部署 chaincode
24.2.8.1. channel 管理
24.2.8.1.1. 列出 channel
24.2.8.1.2. 创建 Channel
24.2.8.1.3. 加入 Channel
24.2.8.2. 部署连
24.2.8.3. 查询合约
24.2.8.4. 调用合约
24.3. Ubuntu 环境安装 Hyperledger Fabric v1.1.0
24.3.1. 安装 Docker
24.3.2. 安装 Hyperledger Fabric v1.1.0 Docker 镜像
24.3.3. docker-compose
24.4. Netkiller OSCM 一键安装
24.4.1. 安装Docker
24.4.2. 清理 Docker 容器和镜像
24.4.3. Hyperledger Fabric 1.0.6
24.4.4. Hyperledger Fabric 1.1.0
24.4.5. Hyperledger Fabric 1.2.0
24.5. fabric-samples
24.5.1. fabcar
24.5.1.1. 智能合约
24.5.1.2. 创建记录
24.5.1.3. 查询单条记录
24.5.1.4. 修改汽车所有者
24.5.2. balance-transfer
24.5.3. first-network
24.6. e2e_cli
24.7. Hyperledger Composer
24.8. 创世区块
24.8.1. crypto-config.yaml
24.8.2. configtx.yaml
24.9. hyperledger/fabric-ca
24.10. Restful 接口
24.10.1. 注册
24.10.2.
25. Hyperledger Fabric 运维
25.1. 背景
25.2. 部署拓扑
25.2.1. 依赖关系
25.2.2. 准备物理机
25.3. cli 管理节点安装
25.3.1. 安装 Docker 镜像
25.3.2. docker-compose-cli.yaml
25.3.3. 启动 cli 节点
25.3.4. 生成证书和创世区块
25.3.4.1. 创建配置文件
25.3.4.1.1. crypto-config.yaml
25.3.4.1.2. configtx.yaml
25.3.4.2. 生成证书
25.3.4.3. 生成创世区块
25.3.4.4. 生成通道配置文件
25.3.4.5. generate anchor peer transaction
25.3.5. 清理 Docker 容器
25.4. CA 节点安装
25.4.1. 安装 Docker 镜像
25.4.2. docker-compose-ca.yml
25.4.3. 启动 CA 节点
25.5. CouchDB 节点
25.5.1. 安装 Docker 镜像
25.5.2. 安装 CouchDB
25.5.3. 启动 CouchDB
25.5.4. 备份与恢复 CouchDB
25.6. Orderer 节点安装
25.6.1. 安装 Docker 镜像
25.6.2. docker-compose-orderer.yml
25.6.3. 启动 Orderer 节点
25.7. Peer 节点安装
25.7.1. 安装 Docker 镜像
25.7.2. docker-compose-peer.yml
25.7.3. 启动 Peer 节点
25.7.4. 创建 Channel
25.8. 验收与测试
25.8.1. 准备合约文件
25.8.2. 安装 chaincode
25.9. 总结
26. Chaincode 链码(智能合约)
26.1. 链码开发与测试
26.1.1. Docker 开发环境
26.1.2. chaincode 代码
26.1.3. 启动容器部署chaincode
26.1.4. 测试
26.1.5. 在宿主主机上编译合约
26.1.6. 链码升级
26.2. Chaincode 结构
26.2.1. 包
26.2.2. 导入库
26.2.3. 定义类
26.2.4. Init 方法
26.2.5. Query
26.2.6. Invoke
26.2.7. func main()
26.3. shim.ChaincodeStubInterface 接口
26.3.1. State 数据库曾,删,查 操作
26.3.1.1. PutState(key, value)写入区块
26.3.1.2. GetState(key) 读取区块
26.3.1.3. DelState(key) 删除区块
26.3.1.4. 修改数据
26.3.1.5. GetStateByRange(startKey, endKey) 范围查找
26.3.1.6. GetQueryResult(query string) CouchDB 查询
26.3.1.7. stub.GetHistoryForKey
26.3.1.8. shim.HistoryQueryIteratorInterface 接口
26.3.2. 复合键
26.3.2.1. 创建复合键
26.3.2.2. 分解复合键
26.3.3. stub.SetEvent(key, value) 事件
26.3.4. 调用其他链码
26.3.5. stub.GetCreator() 获得证书资料
26.4. 链码案例
26.4.1. 模仿以太坊 ERC20 规范的 Hyperledger Fabric 实现 Token 通证
26.4.2. 万能的通用合约
27. Hyperledger Fabric Client SDK for Node.js
27.1. package.json
27.2. Node.js 测试程序
27.3. 创建 package.json 文件
27.4. 查询操作
27.5. Event
27.6.
28. fabric-sdk-java
28.1. Maven
29. Hyperledger Explorer
30. 已知 Hyperledger 落地案例
30.1. 莱茨狗
31. Fabric Command
31.1. peer
31.1.1. channel
31.1.1.1. list
32. Fabric FAQ
32.1. ERROR: manifest for hyperledger/fabric-ca:latest not found
32.2. 卸载 hyperledger 环境
32.3. dseasb33srnrn.cloudfront.net 无法连接
32.4. 超级账本的硬伤
IV. IPFS(InterPlanetary File System 星际文件系统)
33. IPFS(InterPlanetary File System,星际文件系统)
33.1. 什么是 IPFS
33.1.1. 传统的中心化HTTP服务
33.1.2. IPFS 解决方案
33.2. 安装 IPFS
33.2.1. go get 方式
33.2.2. 安装 ipfs-update
33.2.3. Ubuntu
33.2.4. Netkiller OSCM
33.2.4.1. 源码安装
33.2.4.2. ipfs-update
33.2.5. Mac OS
34. IPFS 命令
34.1. help
34.2. ipfs
34.3. 基本命令
34.3.1. 初始化节点
34.3.2. 添加文件或文本到 IPFS
34.3.2.1. 添加文件
34.3.2.2. 添加文本
34.3.2.3. 安静模式,仅返回 Hash
34.3.2.4. 尝试修改内容
34.3.2.5. 递归添加一个目录
34.3.3. 查看文件
34.3.4. 下载文件
34.3.5. 列出文件或目录
34.4. 数据结构命令
34.4.1. 块
34.4.1.1. 写入块
34.4.1.2. 读取块
34.4.1.3. 块状态
34.4.2. 对象
34.5. 高级命令
34.5.1. 守护进程
34.5.2. 发布并解析IPNS
34.5.3. 将 Pin 对象存储到本地
34.5.3.1. 演示 Pin 操作
34.5.3.2. 查看 pin
34.5.4. 查看状态
34.5.4.1. 仓库状态
34.5.4.2. 带宽状态
34.6. 网络命令
34.6.1. 显示 IPFS 信息
34.6.2. 节点
34.6.3. 管理P2P网络链接
34.6.4. 查看节点端口详情
34.7. 配置
34.7.1. 显示配置
34.7.2. 修改配置
34.7.3. API 配置
34.7.4. CORS
34.7.5. 配置 API 网关
34.8. ipfs mount
34.9. 守护进程
34.10. ipfs-update
34.11. DNS 解析
35. IPFS WebUI
35.1. 配置 CORS
35.2. 访问 Web UI
35.3. HTTP 网关
35.3.1. 查看网关地址
35.3.2. 添加测试文件
35.3.3. 配置代理服务器
35.3.4.
35.3.5. 监听地址
36. IPFS 集群配置
36.1. 手工添加节点
36.1.1.
36.1.2.
37. IPFS API
37.1. 启动 IPFS API
37.2. 原始 HTTP API
37.2.1. 查看节点
37.2.2. 上传文件
37.3. Infura IPFS API
37.3.1. 查看文件
37.3.2. 下载文件
37.4. java-ipfs-api
37.4.1. Maven 配置
37.4.2. 查看版本号
37.4.3. 添加文件到 IPFS
37.4.4. 添加文本到 IPFS
37.4.5.
37.5. js-ipfs-api
37.5.1. 开发环境
37.5.2. 链接到 IPFS
38. IPFS Faq
38.1. 一个大文件将会被分块存储
39. BaaS (Blockchain as a Service) 平台
39.1. Huawei BCS
39.1.1. 创建 BCS 服务
39.1.2. 管理通道
39.1.3. 安装链码
39.1.4. 下载 SDK 配置
39.1.5. 配置 SDK 文件
39.1.6. Fabric Java SDK Demo
39.1.6.1. Maven pom.xml 文件
39.1.6.2. chaincode_example02.go
39.1.6.3. bcs-whbsxu-sdk-config.yaml
39.1.6.4. FabricHelper.java
39.1.6.5. FabricUser.java
39.1.6.6. Main.java
39.1.6.7. 运行结果
40. BitCoin
40.1. 私钥
40.2. 比特币钱包
40.2.1. Bitcoin Core
40.2.2. 网页钱包
40.2.3. Coin.Space
40.2.4. BitGo
40.2.5. GreenAddress
40.3. bcoin
40.4. HD Wallet
41. 其他区块链相关
41.1. FISCO BCOS
41.2. 量子链(QTUM)
41.2.1. BeeChat
41.3. asch
41.4. K-Line 开发库
41.5. 数字货币行情
1. 附录
1.1. Hyperledger Fabric
1.2. Ethereum
1.2.1. web3.js Document
1.2.2. Standardizing of HD wallet derivation paths

表格清单

1. 企业招聘信息广告位,区块链工作机会
1.1. 智能合约对比