Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

Netkiller Blockchain 手札

本文作者最近在找工作,有意向致電 13113668890

Mr. Neo Chan, 陳景峯(BG7NYT)



中國廣東省深圳市望海路半島城邦三期
518067
+86 13113668890


電子書最近一次更新于 2020-11-15 02:41:05 .

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

http://www.netkiller.cn
http://netkiller.github.io
http://netkiller.sourceforge.net
微信訂閲號 netkiller-ebook (微信掃瞄二維碼)
QQ:13721218 請註明“讀者”
QQ群:128659835 請註明“讀者”
知乎專欄 | 多維度架構

2020-11-15 02:41:05

內容摘要

這一部關於區塊鏈開發及運維的電子書。

為什麼會寫區塊鏈電子書?因為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 系列電子書始於 2000 年,風風雨雨走過20年,將在 2020 年終結,之後不在更新。作出這種決定原因很多,例如現在的閲讀習慣已經轉向短視頻,我個人的時間,身體健康情況等等......

感謝讀者粉絲這20年的支持

雖然電子書不再更新,後面我還會活躍在知乎社區和微信公眾號

目錄

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. 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.2. 測試網
4.5.2.1. Public Testnet Endpoints(公共測試網絡的接入點)
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.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.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.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.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.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 v2.0.0
24.1. 安裝 Hyperledger Fabric v1.1.x
24.1.1. 依賴工具
24.1.2. 安裝Docker
24.1.3. 安裝 Node.js 環境
24.1.4. 安裝 hyperledger 1.1.0
24.1.5. 手工安裝 hyperledger v 1.1.0 開發環境
24.1.5.1. 登錄 docker
24.1.5.2. Docker 安裝
24.1.5.3. 編譯安裝
24.1.6. 啟動 docker 虛擬機
24.1.7. 管理 hyperledger
24.1.7.1. CouchDB 管理界面
24.1.8. 部署 chaincode
24.1.8.1. channel 管理
24.1.8.2. 部署連
24.1.8.3. 查詢合約
24.1.8.4. 調用合約
24.2. Ubuntu 環境安裝 Hyperledger Fabric v1.1.0
24.2.1. 安裝 Docker
24.2.2. 安裝 Hyperledger Fabric v1.1.0 Docker 鏡像
24.2.3. docker-compose
24.3. Netkiller OSCM 一鍵安裝
24.3.1. 安裝Docker
24.3.2. 清理 Docker 容器和鏡像
24.3.3. Hyperledger Fabric 1.0.6
24.3.4. Hyperledger Fabric 1.1.0
24.3.5. Hyperledger Fabric 1.2.0
24.4. CentOS 8.0 安裝 Fabric 2.0.0
24.4.1. CentOS 8 初始化
24.4.2. 安裝依賴命令和語言
24.4.3. 安裝 Docker
24.4.4. 安裝 Fabric 2.0.0
24.5. fabric-samples
24.5.1. test-network
24.5.2. fabcar
24.5.2.1. 智能合約
24.5.2.2. 創建記錄
24.5.2.3. 查詢單條記錄
24.5.2.4. 修改汽車所有者
24.5.3. balance-transfer
24.5.4. 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.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.1.7. 鏈碼升級
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.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. 智能合約對比