全球架构师峰会 Arch Summit 2018

TigerGraph 区块链与图计算 谭永

1. 区块链与图计算 谭永 TigerGraph Solution Architect
2. 谭永 • • Solution Architect 毕业于中科⼤大、中科院计算所,先后就职于 Sun、Microsoft、TigerGraph! 研究领域包括操作系统、搜索引擎、图计算、 ⼤大数据处理理、机器器学习!
3. • Block Chain Overview • 图模型设计 • 数据加载 • 增量数据更新 • 查询实现
4. Block Chain Overview • Previous block hash (32 bytes) = = SHA256 (SHA256 (Previous Block Header)) • 长链优先 • 保证了Block Header不可篡 改
5. Merkle Root • Hash[Tx(A)] = SHA256 (SHA256 (Tx(A))) • 每两个Transaction的Hash值相加,并重新 计算Hash • 如果Block内的Transaction数目为奇数,最 后一个Transaction的Hash值和自己相加, 并重新计算Hash • 新得到的Hash值两两相加,并重新计算 Hash • 最后得到一个Hash值,Merkle Root • 保证了Transaction表不可篡改
6. Block Header • Data format of “~/.bitcoin/ blocks/blkNNNNN.dat” • Difficulty Bits: A numeric representation of the current difficulty in obtaining the expected result. • Nonce: This is like a counter for each 10 minute iteration (individual block creation). It starts at an initialized number like 0 and is incremental in nature till either the puzzle is solved or else some other node solves it.
7. Difficulty Target and Nonce • • 每10分钟生成一个Block,每个Block的Txn列表最大为1MB 每两周(或者2016个Blocks)调整一次difficulty
8. Transaction Chain • 1 BTC = 10^8 Satoshis • 每个Transaction 可以有多个input和多 个output • UTXO: Unspent Transaction Output, 没有作为其它Transaction的input的 output • Output中含有Pubkey script,表明再次 消费需要满足的条件 • Input中提供了Signature script,用于 解锁Output
9. Coinbase Transaction • Block中的第一个Transaction • 由挖矿者(miner)生成 • 包含单一的input: coinbase • Coinbase中包含由于挖掘出本Block得到的奖励,以及本 Block中的所有Transaction的交易费用
10. 图模型设计 • 圆标识实体,线标识关系,带箭头线段 标识有向边 • 一个Block可以包含(included)多个 Txn,但是只能有一个Coinbase • 一个Txn可以有多个Output,一个 Output只能被一个Address锁定 (locked) • Coinbase作为关系存在,而不是实体 • 没有Input实体,与Txn节点通过_in关 系连接的Output节点被视为Input
11. 图模型设计-实例 • 图中Txn是Coinbase Txn • Output1是coinbase • Output2是UTXO • Address是矿工的地址
12. 图模型设计-定义节点类型
13. 图模型设计-定义边类型
14. 数据加载-上传数据
15. 数据加载-映射节点
16. 数据加载-映射边
17. 初始加载 VS 增量加载 curl -X POST --data-binary @block.csv "http://localhost:9000/ddl?tag=load_block&sep=,&eol=\n" curl -X POST --data-binary @txn.csv "http://localhost:9000/ddl?tag=load_txn&sep=,&eol=\n" curl -X POST --data-binary @output.csv "http://localhost:9000/ddl?tag=load_output&sep=,&eol=\n"
18. 数据量
19. 查询拥有最多比特币的地址 1. 获取所有的Output节点集合AllOutput 2. 得到所有有in出边的Output节点集合Spent 3. 得到所有UTXO集合:Unspent=AllOutput MINUS Spent 4. 从Unspent节点集出发,通过locked边访问Address节点, 并累和到Address的比特币值 5. 从Address节点集中选择topK,并输出结果
20. 查询拥有最多比特币的地址-1 1. 获取所有的Output节点集合AllOut 2. 得到所有有in出边的Output节点集合Spent
21. 查询拥有最多比特币的地址-2 1. 得到所有UTXO集合 2. 从Unspent节点集出发,通过locked边访问Address节点,并 累和到Address的比特币值
22. 查询拥有最多比特币的地址-3 1. 从Address节点集中选择topK 2. 输出结果
23. 查询花费最多比特币的地址
24. Demo
25. 总结-图数据库开发流程 1. 理解原始数据,特别是实体之间的关系 2. 设计schema 3. 建立数据到节点和边的映射关系 4. 加载数据 5. 实现查询
26. 总结-图数据库的使用场景 1. 不是取代区块链,或者关系数据库 2. 深度关系查询 3. 实时计算 4. 反欺诈、反洗钱、物联网、企业图谱、社区发现、知识图谱, 等等
27. Reference • TigerGraph开发者版(永久免费、非商用、单图、单机版) : https://www.tigergraph.com.cn/developer/ • TigerGraph Cloud(安全、备份、高可用、快速部署): https://www.tigergraph.com/cloud/ • 中文文档: http://docs.tigergraph.com.cn • 公众号:TigerGraph维加星

相关幻灯片