第一天上 谢文杰 智链ChainNova

blockchain

2018/10/12 发布于 技术 分类

文字内容
1. 区块链核心技术横向剖析 谢文杰 智链ChainNova CTO
3. 主讲⼈人简介 谢文杰 智链ChainNova CTO,联合创始人 原百度公有云高级产品经理,原金山云产品专家,原百度 移动事业部技术经理 IBM外部技术Champion,CSDN区块链金牌讲师 主持过多个大型系统设计,从零构建金山云云计算产品, 搜狐WebIM亿级PV技术产品创造者。
4. 01. 区块链技术基石 不不同区块链平台都依赖的⼏几个基础技术 2 智 能 合 约 及 数 据 模 型 智 能 合 约 的 发 展 历 史 及 主 流 的 两 类 数 据 模 型 3 经 典 项 目 概 览 经 典 项 ⽬目 彼 此 技 术 上 的 独 特 性
5. 01 0 基础技术概览 Hash和非对称加密等一系列密码学算法 是区块链技术体系最基础的构成 密码学算法 Merkle Tree Merkle Tree及其一系列衍生改进是区块链 数据结构的一大基础构成 01 02 04 03 链式快照 Blockchain即Block+Chain,Chain即区块 链的链式快照,链式快照的数据模型是区块 链数据结构的另一大基础构成 5! PoX 区块链保证不可篡改的核心即共识算法,简称 PoX(Proof of something)
6. 01 1 Hash算法 https://en.wikipedia.org/wiki/Hash_function •  区块链第一课,基础的基础 •  哈希又称散列算法,它是一种数据映射关系 •  任意长的数据经过哈希运算后,得到的是一个 固定长度的数据 •  特点:确定性、均匀性、不可逆…… •  应用场景:快速查找、重复检查、数据校验、 数字签名…… 6!
7. 01 2 Merkel Tree https://en.wikipedia.org/wiki/Merkle_tree •  区块链数据结构基础之一 •  以发明人Ralph Merkle命名,1979年 •  快速比对数据、快速定位变化…… •  应用场景:Blockchain、Git、BitTorrent、 Cassandra、Dynamo、ZFS、btrfs…… 7!
8. 01 3 Merkel Tree在bitcoin⾥里里的应⽤用 https://en.wikipedia.org/wiki/Blockchain •  交易数据即以此构建 https://bitcoin.org/en/developer-guide#block-chain-overview 8!
9. 01 4 应⽤用收益:SPV(轻量量化验证) •  快速验证,无需完整数据 •  轻量节点:移动端、快速初始化…… https://en.bitcoinwiki.org/wiki/Simplified_Payment_Verification 9!
10. 01 5 Trie以及Radix Tree https://en.wikipedia.org/wiki/Trie https://en.wikipedia.org/wiki/Radix_tree •  提高查询效率,减轻存储压力 •  Merkle Tree也对应有相应的改进及应用 10!
11. 01 6 Ripple应⽤用: SHAMap Root 3 A B 5 7 a3f6db3cc17c8 3c6f411d345 0 be768a245275 848cdd2c7415 35f275e46ccbf e22e8a0770b 378afd5f2bdc7 2825129ea50 379c80a5be39 bac261d64320 b0af595b8592f 3e901e0ccf8 5 •  Trie+Merkle Tree •  优势:快速定位数据 •  用于存储账户余额、 挂单信息等 b0523628408e 4df636add4fd b05607d8d215 d374ed7142de 11!
12. 01 7 Ethereum应⽤用: Merkle Patricia Tree •  Radix Tree+Merkle Tree •  存储效率更高 https://ethereum.stackexchange.com/questions/6415/eli5-how-does-a-merkle-patricia-trie-tree-work 12!
13. 01 8 Block+Chain https://bitcoin.org/en/developer-guide#block-chain-overview •  区块链数据结构基础之二 •  链式快照,快照中存储数据(比特 币:交易、时间、随机数……) •  当前Block包含前一个Block的 hash形成链 •  最新Block的Hash即可校验所有历 史数据的任一点篡改 13!
14. 01 9 PoX:Proof of something PoW! • 参与者竞争 计算,先算 出者获得记 账权及奖励! • 俗称挖矿! • 公平! • 但效率低! • 能耗巨⼤大! PoS! • 根据权益⽐比 例例概率性获 得记账权及 奖励! • 节能! • 但依赖权益 设计! DPoS! • 权益持有者 通过投票选 举领导者代 理理记账权及 奖励! • ⾼高效! • 但有中⼼心化 倾向! BFTs! CFT! • 联盟链常⽤用, 预选定节点 记账,算法 容忍⼀一定的 恶意节点! • ⾼高效! • 但预选定节 点规模有限! • 攻击容忍度 低! • 分布式系统 常⽤用,通常 为选举模式, 算法容忍⼀一 定的故障节 点! • ⾼高效! • 但恶意节点 容忍度低! •  不同的方法,共同的目的,为每个Block提供信任支撑 14!
15. 02. 智能合约及数据模型 智能合约的发展历史及主流的两类数据模型 1 区 块 链 技 术 基 石 不不 同 区 块 链 平 台 都 依 赖 的 ⼏几 个 基 础 技 术 3 经 典 项 目 概 览 经 典 项 ⽬目 彼 此 技 术 上 的 独 特 性
16. 02 1 智能合约演进历史 1994 2008 2012 智能合约概念提出 Nick Szabo 'A smart contract is a set of promises, specified in digital form, including protocols within which the parties perform on these promises.' Bitcoin/P2PKH Forth-like, stack based 简单脚本 非图灵完备 不支持循环体 Bitcoin/P2SH BIP 16 支持更复杂的脚本 如Multisig、Escrow 2013 2015 Ripple/NXT 内置合约模板,根据需 求选择使用,不支持定 制 Ethereum 图灵完备的智能合约, 运行在EVM虚拟机上, Solidity语言 16!
17. 02 2 Bitcoin⾥里里的合约: P2PKH, P2SH 17!
18. 02 3 Ripple⾥里里的合约: TX https://developers.ripple.com/transaction-common-fields.html 18! •  有限的交易类型 •  预置的参数字段 •  优点:简单
20. 02 5 两⼤大主流数据模型 UTXO •  以Bitcoin为代表 •  每一笔交易的输出作为下一 笔交易的输入 World State •  以Ripple、Ethereum、 HyperLedger Fabric为代表 •  一个全局的账户余额表 https://bitcoin.org/en/developer-guide#transaction-data https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/ 20!
21. 02 6 数据模型:UTXO •  UTXO即未花费交易输出 •  以Bitcoin为代表 •  安全性强 •  扩展性高 •  保护隐私 •  存储压力较大 •  复杂度提升 •  查询性能有损失 https://bitcoin.org/en/developer-guide#transaction-data 21!
22. 02 7 数据模型:World State •  保存当前所有账户状态 •  Copy on write模型 •  以Ripple、Ethereum、 HyperLedger Fabric为代表 •  结构简单 •  效率高 •  历史追溯效果较弱 •  易受双花攻击 https://ethereum.stackexchange.com/questions/268/ethereum-block-architecture/757#757 22!
23. 03. 经典项目概览 经典项⽬目彼此技术上的独特性 1 区 块 链 技 术 基 石 不不 同 区 块 链 平 台 都 依 赖 的 ⼏几 个 基 础 技 术 2 智 能 合 约 及 数 据 模 型 智 能 合 约 的 发 展 历 史 及 主 流 的 两 类 数 据 模 型
25. 03 2 主流项⽬目概览 ‫ݷ‬ᑍ ‫ ᥺᧍ݎ୏ ᦩو‬ฬᚆ‫ݳ‬ᕅ ਂ‫ ؙ‬୊᬴/TPS ᭇአ࣋ว ᔄࣳ ಘ઀௔ ౮ᆧଶ ᭗አ௔ හഝ‫و‬Ձ̵შ Fabric Kafka/ PBFT Go Docker/ Go LevelDB/ CouchDB 3sec/200 რ̵ᴠᓫද̵ හਁᩒԾԻ ᘶፑ᱾ ṛ Ӿ ṛ ฃ̵ᑌ‫ړ‬ ᶋଉᥢ҅ Corda ग़ᐿ‫ ᦩو‬Kotlin JVM/ Kotlin ᶋ‫ق‬ੴᨴ H2 ๜҅෫ဩᰁ ࿤‫׀҅غ‬ଫ᱾ ᰂᣟ ᘶፑ᱾ ۸ Ӿ ṛ Ӿ Ripple Quorum C++ No RocksDB 10sec/1K ࿤‫҅غ‬හਁᩒ ԾԻฃ ‫ํل‬᱾ Ӿ Ӿ Ӿ Ethereum POW Go EVM/ Solidity LevelDB 15sec/ 10+ ݄Ӿஞ۸ଫአ ‫ํل‬᱾ ṛ Ӿ ṛ Bitshares DPOS C++ No LevelDB 15sec/1M හਁᩒԾԻฃ ‫ํل‬᱾ Ӿ ֗ Ӿ ௔ᚆ Ӿ ṛ Ӿ ֗ ṛ Bitcoin POW C++ No LevelDB 10min/7 ݄Ӿஞ۸ᅩ੒ ᅩඪ՞ ‫ํل‬᱾ ֗ ṛ ֗ ֗ https://wiki.chainnova.com/pages/viewpage.action?pageId=3997747 25!