Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | bilibili | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构 | 微信号 netkiller-ebook | QQ群:128659835 请注明“读者”

Netkiller Blockchain 手札

(2021版)

Mr. Neo Chan, 陈景峯(BG7NYT)



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


电子书最近一次更新于 2021-09-17 21:05:41

版权声明

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

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信订阅号 netkiller-ebook
微信:13113668890 请注明“读者”
QQ:13721218 请注明“读者”
QQ群:128659835 请注明“读者”
知乎专栏 | 多维度架构

内容摘要

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

为什么会写区块链电子书?因为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


致读者

Netkiller 系列手札 已经被 Github 收录,并备份保存在北极地下250米深的代码库中,备份会保留1000年。

Preserving open source software for future generations

The world is powered by open source software. It is a hidden cornerstone of modern civilization, and the shared heritage of all humanity.

The GitHub Arctic Code Vault is a data repository preserved in the Arctic World Archive (AWA), a very-long-term archival facility 250 meters deep in the permafrost of an Arctic mountain.

We are collaborating with the Bodleian Library in Oxford, the Bibliotheca Alexandrina in Egypt, and Stanford Libraries in California to store copies of 17,000 of GitHub’s most popular and most-depended-upon projects—open source’s “greatest hits”—in their archives, in museum-quality cases, to preserve them for future generations.

https://archiveprogram.github.com/arctic-vault/

目录

1. 自述
1.1. 写给读者
1.2. 作者简介
1.3. 如何获得文档
1.4. 打赏(Donations)
1.5. 联系方式
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. 大数据问题
2.2.9. BI商业智能
2.2.10. 采集终端
2.2.11. 多媒体数据
2.2.12. 物流接口
2.2.13. 如何激励用户
2.2.14. 上链
2.2.15. 以太坊解决方案
2.2.15.1. 应用场景一
2.2.15.2. 应用场景二
2.2.15.3. 用户留言
2.2.16. Hyperledger 解决方案
2.2.16.1. 溯源合约涉及
2.2.16.1.1. 食品安全朔源
2.2.16.1.2. 水平移植
2.2.16.2. 积分通正(代币)
2.2.17. 总结
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. 智能合约
2.10. 艺术品区块链溯源防伪平台
2.10.1. 都有哪些角色参与其中
2.10.2. 需要运用的防伪技术
2.10.3. 技术架构
2.10.3.1. 前端技术
2.10.3.2. 微服务端
2.10.3.3. 存储层
2.10.3.4. 消息队列层
2.10.3.5. 搜索层
2.10.3.6. 区块链
2.10.3.7. 支持层
2.10.4. RFID/NFC
2.10.4.1. RFID
2.10.4.2. NFC
2.10.4.3. RFID/NFC 两种技术的差异
2.10.5. 资产投资与份额持有
2.10.6. 资产上链的
2.10.7. 原型设计
2.10.7.1. 注册与登录
2.10.7.2. 用户角色
2.10.7.3. 鉴定师角色
2.10.7.4. 机构角色
2.10.7.4.1. 地址管理
2.10.7.4.2. 申请溯源标签
2.10.7.4.3. 数字资产上链
2.10.7.4.4. 机构成员管理
2.10.7.4.5. 资产审核
2.10.7.4.6. 鉴定师隶属于机构
2.10.7.4.7. 评论
2.10.7.4.8. 安全
2.10.7.5. 钱包
I. Ethereum 以太坊
3. 以太坊
3.1. 名词解释
3.2. IBAN (International Bank Account Number)
3.2.1. iban:国际银行账号
3.2.2. 以太坊iban:新的国别码和BBAN编码方案
3.2.3. iban账号与以太坊地址的转换
3.2.4. 检查iban账号的有效性
3.3. 如何计算Gas手续费
3.4. 转出账号中所有 ETH,Ethereum Wallet 中的 Send everything 实现方法
3.5. (0/12 block confirmations)
3.6. 太坊账户管理 keystore 文件
3.6.1. 什么是 keystore 文件
3.6.2. keystore 文件的内容
3.6.3. keystore文件如何工作的?
3.6.3.1. 加密你的私钥
3.6.3.2. 用你的密码来保护它
3.6.3.3. 确认输入的密码是正确的
3.6.3.4. 将这三步结合起来
3.7. 批量转账遇到的问题与解决方案
3.8. 代币兑换
4. 以太坊私链入门
4.1. 软件安装与配置
4.1.1. Ubuntu
4.1.1.1. 安装 geth
4.1.1.2. 安装 solc
4.1.1.3. Node.js
4.1.2. CentOS 7
4.1.3. Windows
4.1.4. Mac OS
4.1.4.1. 安装 Node
4.1.4.2. Ethereum Wallet
4.1.5. 编译安装
4.1.6. Netkiller OSCM 一键安装
4.1.6.1. 1.8.10
4.1.6.2. 1.8.1
4.1.6.3. 1.8.10
4.1.7. 防止 geth 异常退出
4.2. 创世区块
4.2.1. 初始化创世区块
4.2.2. 创建主账号
4.2.3. 启动节点
4.2.4. 使用节点进行挖矿
4.2.4.1. 启动矿工开始挖矿
4.2.4.2. 停止挖矿
4.2.4.3. 查看所挖金额
4.2.5. 在创世链中制定矿工账号并为它充值
4.3. Blockchain explorer (区块链浏览器)
4.4. 单机多实例演示
4.4.1. 实例一
4.4.2. 实例二
4.4.3. 添加节点
4.4.4. 节点测试
4.5. 使用 pm2 启动以太坊
5. geth v1.8.16 命令详解
5.1. api 相关参数
5.1.1. rpcapi
5.1.2. rpcaddr
5.2. 启动 Websocket 端口
5.3. 日志
5.4. 控制台
5.5. 连接控制台
5.5.1. 指定 geth.ipc 文件位置
5.5.2. IPC 方式连接
5.5.3. TCP 连接控制台
5.5.4. WebSocket 方式
5.6. 账号管理
5.6.1. 新建账号
5.6.2. 查看账号
5.6.3. 从私钥导入以太坊地址
5.7. 配置自动解锁账号
5.8. 运行JS
5.9. 节点管理
5.10. 启动挖矿
5.10.1. 挖矿线程数
5.10.2. 指定旷工账号
5.11. 运行智能合约
5.12. Ropsten测试网络
5.13. 静态节点
5.14. JavaScript Console
5.14.1. personal 管理
5.14.1.1. 创建账号
5.14.1.2. 列出账号
5.14.1.3. 解锁账号
5.14.2. eth 管理
5.14.2.1. 矿工账号
5.14.2.2. 余额
5.14.2.3. 解锁账号
5.14.2.4. 转账
5.14.2.5. 查看挂起的交易
5.14.2.6. 查看当前区块总数
5.14.2.7. 查看当前Gas价格
5.14.2.8. 评估执行花费的GAS
5.14.2.9. 查看区块信息
5.14.2.10. 返回交易信息
5.14.2.11. 返回交易收据
5.14.2.12. eth.syncing 同步状态
5.14.2.13. 查看智能合约编译器
5.14.3. web3
5.14.3.1. Ether币的基本单位
5.14.3.2. web3.toWei
5.14.3.3. web3.fromWei
5.14.4. admin 管理
5.14.4.1. 看看 networkid
5.14.4.2. 节点管理
5.14.5. miner 挖矿管理
5.14.5.1. 开始挖矿
5.14.5.2. 停止挖矿
5.14.5.3. 设置默认矿工账号
5.14.6. txpool 管理
5.14.6.1. txpool.status
5.14.7. net
5.14.7.1. 监听状态
6. Wallet
6.1. Ethereum Wallet(Mist)
6.1.1. Ethereum Wallet 工作原理
6.1.1.1. geth 启动 ropsten 测试网
6.1.1.2. 连接到本地测试网络
6.1.1.3. 控制台
6.1.2. 主网络
6.1.2.1. 主网启动参数
6.1.2.2. 进入主网
6.1.2.3. 以太坊区块浏览器
6.1.3. Ropsten 测试网络
6.1.3.1. 启动参数
6.1.3.2. 获得测试币
6.1.3.3. Etherscan
6.1.4. Rinkeby 测试网络
6.1.4.1. 测试网络
6.1.4.2. 获取测试网络上的以太币
6.1.4.3. 连接节点(Light node)
6.1.4.4. 区块链浏览器
6.1.5. Solo Network
6.1.6. 私网
6.1.7. 删除废弃的合约
6.1.8. 免安装,在线使用
6.1.9. 获得空投币
6.2. MetaMask
6.2.1. 测试网络
6.2.1.1. 获取测试网络上的以太币
6.2.2. mnemonic - Reveal seed words
6.2.3. 添加 Token 币种
6.2.4. MetaMask Vault Decryptor
6.2.5. 部署合约
6.3. MyEtherWallet
6.3.1. 执行ERC20智能合约函数
6.3.1.1. 查询余额
6.3.1.2. 销毁代币
6.3.1.3. 冻结账号
6.3.1.4. 增发代币
6.3.1.5. 锁仓
6.3.1.6. 批量打币
6.3.1.7. 修改合约管理者
6.3.1.8. 设置兑换比例
6.3.1.9. 空投设置
6.4. MyCrypto
6.5. imToken
6.5.1. 添加 Token
7. Token
7.1. Ethereum Wallet 创建ERC20代币合约
7.1.1. 合约文件
7.1.2. 部署合约
7.1.3. 代币转账
7.1.4. Verify And Publish
7.1.5. Links 链接更新
7.2. ERC20 Token Solidity 0.4.24
7.2.1. 构造方法
7.2.2. 官方规定 Method 方法
7.2.2.1. name
7.2.2.2. symbol
7.2.2.3. decimals
7.2.2.4. totalSupply
7.2.2.5. balanceOf
7.2.2.6. transfer
7.2.2.7. approve
7.2.2.8. transferFrom
7.2.2.9. allowance
7.2.3. 事件
7.2.3.1. Transfer
7.2.3.2. Approval
7.3. Netkiller Crowdsale Contract
7.3.1. Solidity 0.4.24
7.3.2. Solidity 0.4.21
7.4. ERC721 - Non-Fungible Tokens
7.4.1.
7.4.2. ERC721Metadata (可选)
7.4.3. ERC721Enumerable (可选)
7.5. 经典参考案例
7.5.1. Enterprise Token Ecosystem (ETE)
7.5.2. 积分链 (PE Chain)
7.5.3. Global star league chain (GSLC)
7.5.4. Kyber Network
7.6. 代币合约官方文档
7.6.1. ERC20
7.6.1.1. 基本Token 官方提供的例子
7.6.1.2. 官方提供的例子 ADVANCED TOKEN
7.6.1.3. Netkiller Basic Token 的例子
7.6.1.4. Netkiller ADVANCED TOKEN
7.6.1.5. 空投代币
7.6.2. ERC223 token standard reference implementation.
7.6.3. ERC721 - Non-fungible Token Standard
7.6.4. ERC827 Token Standard (ERC20 Extension)
7.6.5. ERC875 for non fungible tokens and simple atomic swaps
7.6.6. ERC: Standard URI scheme with metadata, value and byte code
8. 智能合约语言 Solidity v0.5.0
8.1. Remix - browser-solidity
8.1.1. 将 Remix(browser-solidity) 安装到本地
8.1.2. 输入数组
8.2. solc 命令
8.2.1. 使用 solc 编译 *.sol 代码
8.3. 智能合约入门演示
8.4. 数据类型
8.4.1. 数值型
8.4.1.1. 加 +,减 -,乘 *,除 / 运算演示
8.4.1.2. 求余 % 运算演示
8.4.1.3. 幂运算演示
8.4.1.4. 与 &,| 或,非 ~,异或 ^ 演示
8.4.1.5. 位移演示
8.4.2. 字符串
8.4.2.1. 获取字符串长度
8.4.3. 布尔(Booleans)
8.4.4. 字节类型
8.4.5. 数组
8.4.5.1. length
8.4.5.2. push() 方法
8.4.6. 枚举类型
8.4.7. 结构体
8.4.7.1. 函数返回Struct
8.4.8. address
8.4.8.1. payable
8.4.8.2. .value()
8.4.8.3. .gas()
8.4.9. mapping
8.5. 单位
8.5.1. 货币单位(Ether Units)
8.5.2. 时间单位(Time Units)
8.6. 变量
8.6.1. 全局变量
8.6.2. storage
8.6.3. memory
8.7. 函数
8.7.1. 构造方法
8.7.2. 定义函数
8.7.3. 函数返回值
8.7.4. 参数传递
8.7.5. 函数的例子
8.7.6. Fallback function
8.7.7. modifier
8.8. 事件
8.9. 面向对象编程
8.9.1. 可见性修饰符
8.9.2. 错误处理
8.9.3. interface 接口
8.9.4. library 库
8.9.4.1. 使用库来扩展数据类型
8.9.5. 继承
8.10. 合约调用
8.11. 合约接收 ETH
8.11.1. 调用 selfdestruct(msg.sender); 取出合约中的 ETH
8.11.2. 自动退款合约
8.11.3. 收款合约自动转账
8.11.4. 指定账号提取 ETH
8.12. 合约中实例化一个接口
8.13. 合约中实例化另一个合约
8.13.1. msg.sender 与 this 的区别
8.13.2. 地址格式
8.14. Solidity 安全问题
8.14.1. 整型溢出
8.15. solidity example
8.15.1. Voting
8.15.2. MetaCoin
8.15.3. Anonymous voting on Ethereum without a tally authority. Protocol from this paper
8.15.4. Ballot
8.15.5. Conference
9. Truffle v4.1.8 开发框架
9.1. 安装 Truffle
9.2. 开发环境
9.2.1. truffle develop
9.2.2. Ganache
9.2.3. testrpc
9.3. Truffle 快速入门
9.3.1. Ubuntu 环境
9.3.1.1. 启动开发环境
9.3.1.2. 创建项目
9.3.1.3. 创建合约
9.3.1.4. 配置 Truffle
9.3.1.5. 编译智能合约
9.3.1.6. migrate
9.3.2. Mac 环境
9.3.3. ERC20 代币部署
9.3.3.1. 合约文件
9.3.3.2. 部署文件
9.3.3.3. 编译部署
9.3.3.4. 合约调用
9.3.4. 高级ERC20代币合约
9.3.4.1. 部署合约
9.3.4.2. 控制台检查合约
9.3.4.3. 测试转账
9.3.4.4. 锁仓
9.3.4.5. 测试空投
9.4. Truffle 命令详解
9.4.1. version
9.4.2. Truffle console 控制台
9.4.3. create
9.4.3.1. contract 创建合约
9.4.3.2. test 创建单元测试
9.4.4. migrate
9.4.5. compile
9.4.6. test
9.4.7. watch
9.5. 合约开发
9.5.1. 构造方法
9.6. truffle console
9.6.1. 获取账号列表
9.6.2. 余额
9.6.3. 实例化合约
9.6.4. 访问 public 变量
9.6.5. 调用 public 函数
9.7. 测试
9.7.1. balanceOf
9.7.2. transfer
9.8. TRUFFLE BOXES
9.9. Zeppelin Solidity - OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.
9.9.1. ERC20
9.9.2. ERC872
10. web3.js - 1.0.0
10.1. 开发环境
10.1.1. Ropsten 测试网
10.2. truffle-contract
10.3. 连接到以太坊客户端
10.3.1. http 方式
10.3.2. WebSocket 方式
10.3.3. IPC 方式
10.4. web3
10.4.1. version 显示web3版本号
10.5. web3.eth
10.5.1. 查看账号列表
10.5.2. 查询矿工账号
10.5.3. 获得余额
10.5.4. web3.eth.sendTransaction()
10.5.5. web3.eth.sendSignedTransaction() 私钥签名转账
10.5.5.1. 例子1
10.5.5.2. 例子2
10.5.6. web3.eth.getBlock() 获取区块
10.6. 账号管理
10.6.1. web3.eth.personal.unlockAccount()
10.7. 智能合约
10.7.1. 部署合约
10.7.2. 使用最佳手续费创建合约
10.7.3. 调用合约
10.7.4. event
10.8.
10.8.1.
10.8.2. 订阅 newBlockHeaders
10.8.3. 订阅 log
10.8.4. 订阅同步状态
10.9. utils
10.9.1. web3.utils.toWei()
10.9.2. 将 Wei 转换到指定单位
10.10. web3 编译合约
10.10.1. solc.compile
10.11. web3admin
10.12. ABI-encoded
10.13. 实用例子
10.13.1. 数据写入到区块链中
10.13.2. 编译部署智能合约
10.13.3. 部署合约
10.13.4. ERC20 Example
10.14. HD Wallet(Hierarchical Deterministic wallet)
10.14.1. 创建项目
10.14.2. 生成第二个钱包
10.14.3. Mnemonic Code Converter
10.14.4. HD Wallet 例子
10.14.5. 获得钱包地址和私钥
10.14.6. truffle.js 例子
10.14.7. Mnemonic To Seed 加密
10.14.8. 中文助记词
10.14.9. 代币转账
10.15. 从 .ethereum/keystore 文件导入私钥
10.16. Express + web3.js 实现简单网页钱包
10.16.1. 创建项目
10.16.2. 主程序 main.js
10.16.3. ABI 文件 abi/NKC.abi
10.16.4. 页面视图
10.16.4.1. views/account.ejs
10.16.4.2. views/balance.ejs
10.16.4.3. views/done.ejs
10.16.4.4. views/header.ejs
10.16.4.5. views/index.ejs
10.16.4.6. views/showbalance.ejs
10.16.4.7. views/transfer.ejs
10.16.5. 启动 Node 服务
11. web3j v3.4.0 - Jave Client
11.1. 安装命令行工具
11.1.1. Mac OS
11.1.2. 二进制包安装
11.2. 启动以太坊
11.3. Maven pom.xml 文件
11.4. Java 与 Solidity 数据类型映射关系
11.5. 常量
11.5.1. 默认 Gas
11.5.2. 默认 gaslimit gasprice
11.6. 连接到服务器获取版本号
11.7. 获得以太坊状态信息
11.7.1. 获取客户端版本
11.7.2. 协议版本
11.7.3. 查看当前区块
11.7.4. 同步状态
11.7.5. 挖矿状态
11.7.6. 矿工账号
11.7.7. 挖矿速度
11.7.8. Gas 价格
11.7.9. 评估GAS
11.7.10. 节点数量
11.8. 单位转换
11.8.1. GWEI to WEI
11.9. 账号管理
11.9.1. 获得账号列表
11.9.2. 获得账号信息
11.9.3. 创建账号
11.9.4. 解锁账号
11.10. Credentials
11.11. 交易
11.11.1. 获取余额
11.11.2. 通过 Keystore 转账
11.11.3. 通过私钥转账
11.11.4. 指定 gas 费用
11.11.5. 查询 Transaction Information
11.11.6. 交易结果查询
11.11.7. RawTransaction 编码与解码
11.12. 钱包
11.12.1. 创建钱包
11.12.2. 从钱包取出账号
11.12.3. 生成助记词钱包
11.12.4. 随机产生助记词
11.12.5. 导入 BIP39 钱包
11.13. 智能合约
11.13.1. 载入合约
11.14. ERC20合约
11.14.1. balanceOf
11.14.2. name
11.14.3. 合约转账
11.14.4. 完整的 ERC20 代币开发库
11.15. Infura
11.16. 助记词
11.16.1. 获取随机助记词
11.16.2. 助记词导出公钥和私钥
11.17. 过滤器 (Filter)
11.18. Subscription
11.18.1. 接收所有添加到区块链的新区块
11.18.2. 接收所有添加到区块链的新交易
11.18.3. 接收所有待处理的事务
11.18.4. 将区块块重放到当前的当前位置
11.18.5. 过滤主题
11.18.6. 停止订阅 Subscriptions
11.18.7.
11.19. 解锁账号
11.20. IBAN (International Bank Account Number)
11.21. Springboot with Ethereum (web3j)
11.21.1. Maven
11.21.2. application.properties
11.21.3. TestRestController
11.21.4. 测试
12. web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
12.1. 安装 web3.py 开发环境
12.1.1. CentOS
12.1.2. MAC OS
12.2. 连接到以太坊节点
12.2.1. HTTP
12.2.2. IPC
12.2.3. Websocket
12.3. 交易
12.3.1. 发送 ETH
12.3.2. 签名发送 ETH
12.4. ERC20 代币合约
12.4.1. 签名发送ERC20代币
13. Ethereum iOS
14. Ethereum Developer APIs
14.1. API Keys
14.2. 账号
14.2.1. 余额
14.2.2. 查询区块
14.2.3. 查询区块
14.3. 查询交易
14.3.1. 检查合约执行状态
14.4. Geth/Parity Proxy APIs
14.4.1.
14.5. JSON RPC 原生交口调用
15. infura
15.1. Infura 3.0
15.2. websocket
15.2.1. 订阅 newBlockHeaders
15.3. 配置 Truffle
15.4. infura.io web3.js 开发
15.4.1. Web3 通过 infura 连接到 Ropsten 测试网络
15.4.2. 使用 truffle-hdwallet-provider 连接到 https://ropsten.infura.io
15.4.3. 转账
15.4.4. 执行合约
15.5. Infura IPFS
15.5.1. 上传文件
15.5.2. 查看文件
15.5.3. 下载文件
15.5.4. 创建目录
15.5.5. 查看文件状态
15.5.6. 查看IPFS版本号
15.6. Infura 2.0 (已经废弃)
15.6.1. 注册账号
15.6.2. infura 接口
15.6.2.1. jsonrpc
15.6.2.2. INFURA API
16. 以太坊案例
16.1. EtherDelta
16.2. 以太猫(CryptoKitties)
16.3. CryptoZombies
16.4. Augur Project
16.5. Golem
16.6. FirstBlood
16.7. Bancor
17. FAQ
17.1. Error: etherbase missing: etherbase address must be explicitly specified
17.2. FAQ
17.3. Error: authentication needed: password or unlock
17.4. 新增节点后不生效
17.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
17.6. Error: exceeds block gas limit
17.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(...) { ... }" instead.
17.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4
II. Hyperledger
18. Hyperledger Fabric v2.0.0
18.1. 安装 Hyperledger Fabric v1.1.x
18.1.1. 依赖工具
18.1.2. 安装Docker
18.1.3. 安装 Node.js 环境
18.1.4. 安装 hyperledger 1.1.0
18.1.5. 手工安装 hyperledger v 1.1.0 开发环境
18.1.5.1. 登录 docker
18.1.5.2. Docker 安装
18.1.5.3. 编译安装
18.1.6. 启动 docker 虚拟机
18.1.7. 管理 hyperledger
18.1.7.1. CouchDB 管理界面
18.1.8. 部署 chaincode
18.1.8.1. channel 管理
18.1.8.2. 部署连
18.1.8.3. 查询合约
18.1.8.4. 调用合约
18.2. Ubuntu 环境安装 Hyperledger Fabric v1.1.0
18.2.1. 安装 Docker
18.2.2. 安装 Hyperledger Fabric v1.1.0 Docker 镜像
18.2.3. docker-compose
18.3. Netkiller OSCM 一键安装
18.3.1. 安装Docker
18.3.2. 清理 Docker 容器和镜像
18.3.3. Hyperledger Fabric 1.0.6
18.3.4. Hyperledger Fabric 1.1.0
18.3.5. Hyperledger Fabric 1.2.0
18.4. CentOS 8.0 安装 Fabric 2.0.0
18.4.1. CentOS 8 初始化
18.4.2. 安装依赖命令和语言
18.4.3. 安装 Docker
18.4.4. 安装 Fabric 2.0.0
18.5. fabric-samples
18.5.1. test-network
18.5.2. fabcar
18.5.2.1. 智能合约
18.5.2.2. 创建记录
18.5.2.3. 查询单条记录
18.5.2.4. 修改汽车所有者
18.5.3. balance-transfer
18.5.4. first-network
18.6. e2e_cli
18.7. Hyperledger Composer
18.8. 创世区块
18.8.1. crypto-config.yaml
18.8.2. configtx.yaml
18.9. hyperledger/fabric-ca
18.10. Restful 接口
18.10.1. 注册
18.10.2.
19. Hyperledger Fabric 运维
19.1. 背景
19.2. 部署拓扑
19.2.1. 依赖关系
19.2.2. 准备物理机
19.3. cli 管理节点安装
19.3.1. 安装 Docker 镜像
19.3.2. docker-compose-cli.yaml
19.3.3. 启动 cli 节点
19.3.4. 生成证书和创世区块
19.3.4.1. 创建配置文件
19.3.4.2. 生成证书
19.3.4.3. 生成创世区块
19.3.4.4. 生成通道配置文件
19.3.4.5. generate anchor peer transaction
19.3.5. 清理 Docker 容器
19.4. CA 节点安装
19.4.1. 安装 Docker 镜像
19.4.2. docker-compose-ca.yml
19.4.3. 启动 CA 节点
19.5. CouchDB 节点
19.5.1. 安装 Docker 镜像
19.5.2. 安装 CouchDB
19.5.3. 启动 CouchDB
19.5.4. 备份与恢复 CouchDB
19.6. Orderer 节点安装
19.6.1. 安装 Docker 镜像
19.6.2. docker-compose-orderer.yml
19.6.3. 启动 Orderer 节点
19.7. Peer 节点安装
19.7.1. 安装 Docker 镜像
19.7.2. docker-compose-peer.yml
19.7.3. 启动 Peer 节点
19.7.4. 创建 Channel
19.8. 验收与测试
19.8.1. 准备合约文件
19.8.2. 安装 chaincode
19.9. 总结
20. Chaincode 链码(智能合约)
20.1. 链码开发与测试
20.1.1. Docker 开发环境
20.1.2. chaincode 代码
20.1.3. 启动容器部署chaincode
20.1.4. 手工测试
20.1.5. 代码测试
20.1.6. 在宿主主机上编译合约
20.1.7. 链码升级
20.2. Chaincode 结构
20.2.1. 包
20.2.2. 导入库
20.2.3. 定义类
20.2.4. Init 方法
20.2.5. Query
20.2.6. Invoke
20.2.7. func main()
20.3. shim.ChaincodeStubInterface 接口
20.3.1. State 数据库曾,删,查 操作
20.3.1.1. PutState(key, value)写入区块
20.3.1.2. GetState(key) 读取区块
20.3.1.3. DelState(key) 删除区块
20.3.1.4. 修改数据
20.3.1.5. GetStateByRange(startKey, endKey) 范围查找
20.3.1.6. GetQueryResult(query string) CouchDB 查询
20.3.1.7. stub.GetHistoryForKey
20.3.1.8. shim.HistoryQueryIteratorInterface 接口
20.3.2. 复合键
20.3.2.1. 创建复合键
20.3.2.2. 分解复合键
20.3.3. stub.SetEvent(key, value) 事件
20.3.4. 调用其他链码
20.3.5. stub.GetCreator() 获得证书资料
20.4. 链码案例
20.4.1. 模仿以太坊 ERC20 规范的 Hyperledger Fabric 实现 Token 通证
20.4.2. 万能的通用合约
21. Hyperledger Fabric Client SDK for Node.js
21.1. package.json
21.2. Node.js 测试程序
21.3. 创建 package.json 文件
21.4. 查询操作
21.5. Event
21.6.
22. fabric-sdk-java
22.1. Maven
23. Hyperledger Explorer
24. 已知 Hyperledger 落地案例
24.1. 莱茨狗
25. Fabric Command
25.1. peer
25.1.1. channel
25.1.1.1. list
26. Fabric FAQ
26.1. ERROR: manifest for hyperledger/fabric-ca:latest not found
26.2. 卸载 hyperledger 环境
26.3. dseasb33srnrn.cloudfront.net 无法连接
26.4. 超级账本的硬伤
III. IPFS(InterPlanetary File System 星际文件系统)
27. IPFS(InterPlanetary File System,星际文件系统)
27.1. 什么是 IPFS
27.1.1. 传统的中心化HTTP服务
27.1.2. IPFS 解决方案
27.2. 安装 IPFS
27.2.1. go get 方式
27.2.2. 安装 ipfs-update
27.2.3. Ubuntu
27.2.4. Netkiller OSCM
27.2.4.1. 源码安装
27.2.4.2. ipfs-update
27.2.5. Mac OS
28. IPFS 命令
28.1. help
28.2. ipfs
28.3. 基本命令
28.3.1. 初始化节点
28.3.2. 添加文件或文本到 IPFS
28.3.2.1. 添加文件
28.3.2.2. 添加文本
28.3.2.3. 安静模式,仅返回 Hash
28.3.2.4. 尝试修改内容
28.3.2.5. 递归添加一个目录
28.3.3. 查看文件
28.3.4. 下载文件
28.3.5. 列出文件或目录
28.4. 数据结构命令
28.4.1. 块
28.4.1.1. 写入块
28.4.1.2. 读取块
28.4.1.3. 块状态
28.4.2. 对象
28.5. 高级命令
28.5.1. 守护进程
28.5.2. 发布并解析IPNS
28.5.3. 将 Pin 对象存储到本地
28.5.3.1. 演示 Pin 操作
28.5.3.2. 查看 pin
28.5.4. 查看状态
28.5.4.1. 仓库状态
28.5.4.2. 带宽状态
28.6. 网络命令
28.6.1. 显示 IPFS 信息
28.6.2. 节点
28.6.3. 管理P2P网络链接
28.6.4. 查看节点端口详情
28.7. 配置
28.7.1. 显示配置
28.7.2. 修改配置
28.7.3. API 配置
28.7.4. CORS
28.7.5. 配置 API 网关
28.8. ipfs mount
28.9. 守护进程
28.10. ipfs-update
28.11. DNS 解析
29. IPFS WebUI
29.1. 配置 CORS
29.2. 访问 Web UI
29.3. HTTP 网关
29.3.1. 查看网关地址
29.3.2. 添加测试文件
29.3.3. 配置代理服务器
29.3.4.
29.3.5. 监听地址
30. IPFS 集群配置
30.1. 手工添加节点
30.1.1.
30.1.2.
31. IPFS API
31.1. 启动 IPFS API
31.2. 原始 HTTP API
31.2.1. 查看节点
31.2.2. 上传文件
31.3. Infura IPFS API
31.3.1. 查看文件
31.3.2. 下载文件
31.4. java-ipfs-api
31.4.1. Maven 配置
31.4.2. 查看版本号
31.4.3. 添加文件到 IPFS
31.4.4. 添加文本到 IPFS
31.4.5.
31.5. js-ipfs-api
31.5.1. 开发环境
31.5.2. 链接到 IPFS
32. IPFS Faq
32.1. 一个大文件将会被分块存储
IV. EOS
33. EOS
33.1. EOS 资源
33.1.1. EOS 主网与投票状态
33.1.2. EOS 投票工具
33.1.3. EOS 区块链浏览器
33.1.4. EOS 钱包资源
34. EOS 安装
34.1. CentOS 8 Stream RPM包安装
34.2. CentOS 7 源码安装
34.3. Mac
34.4. Docker 开发环境
34.5. 主网
34.6. 启动 EOS 节点
34.6.1. EOS 本地网
34.6.1.1. 单节点私链
34.6.1.2. 单机多节点
34.6.1.3. 多机多节点
34.6.2. 测试网
34.6.2.1. Public Testnet Endpoints(公共测试网络的接入点)
34.6.2.2. 本地连接到测试网
34.6.2.3. EOS (testnet) Explorer (Dawn 2.0)
34.6.2.4. EOS Jungle Testnet Monitor (Dawn 4.0)
34.6.3. 主网
34.6.3.1. 创世区块
34.6.3.2. eosnodes.privex.io
34.6.3.3. mainnet.genereos.io
34.6.3.4. mainnet.eoswz.com
34.7. 区块数据同步到 mongodb
34.8. nodeos 命令
34.8.1.
34.8.1.1. --contracts-console
34.8.2. config.ini 配置文件
34.8.2.1. 插件配置
34.9. systemd
35. CLEOS
35.1. 钱包
35.1.1. 创建钱包
35.1.2. 钱包列表
35.1.3. 钱包锁
35.2. 账号
35.2.1. 创建公钥和私钥
35.2.2. 导入私钥
35.2.3. 查看私钥
35.2.4. 创建账号
35.3. set 命令
35.3.1. abi
35.4. 区块信息
35.4.1. 获得当前区块链信息
35.4.2. 获取指定区块数据
35.4.3. 从区块链获取交易信息
35.4.4. 获得账号信息
35.4.5. 从区块链上获取 abi 文件
35.5. 智能合约 - EOS 代币
35.5.1. 编译智能合约
35.5.2. 设置初始化账号 eosio
35.5.3. 创建账号
35.5.4. 部署合约 eosio.bios
35.5.5. 创建账号 netkiller
35.5.6. EOS 代币合约
35.5.7. 创建代币
35.5.8. 发放代币
35.5.9. 查看代币余额
35.5.10. 转账
36. 智能合约开发
36.1. WebAssembly
36.2. 只能合约文件
36.2.1. hpp 头文件
36.2.2. cpp 合约代码文件
36.2.3. abi 文件
36.3. eosiocpp 命令
36.3.1. 创建新合约
36.3.2. 编译 WAST 文件
36.3.3. 编译 ABI 文件
36.4. eosio.token 合约详解
36.4.1. token::create 方法
36.4.2. token::issue 方法
36.4.3. token::transfer 转账方法
36.5. 编译运行 hello 智能合约
36.6. dice
36.7. 智能合约数据库操作 CURD
36.7.1. 创建一个新项目
36.7.2. 创建结构体
36.7.3. 插入数据操作
36.7.4. 修改数据操作
36.7.5. 删除数据操作
36.7.6. 完整的合约例子
36.7.6.1. 编译
36.7.6.2. 启动EOS私链开发环境
36.7.6.3. 创建合约账号
36.7.6.4. 部署合约
36.7.6.5. 创建
36.7.6.6. 查找
36.7.6.7. 修改
36.7.6.8. 删除
36.7.7. 序列主键
37. EOS Dapp 开发
37.1. eosjs
37.1.1. 安装 eosjs
37.1.2. 实例演示
37.1.2.1. 智能合约
37.1.2.2. 通过 eosjs 访问智能合约
37.2. RPC接口
37.2.1. 获取节点信息
37.2.2. 获取区块信息
38. FAQ
38.1. Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations
38.2. Error 3080006: transaction took too long
38.3. 不显示合约中的 eosio::print() 输出
38.4. database dirty flag set (likely due to unclean shutdown): replay required
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.3. NXP(恩智浦)相关产品
1.3.1. MifareUltralight
1.3.2. MifareClassic
1.3.3. Mifare
1.4. NFC 数据格式
1.4.1. NFC 标准
1.4.2. NDEF (NFC Data Exchange Format)

表格清单

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