《2018年区块链与图计算.pdf》由会员分享,可在线阅读,更多相关《2018年区块链与图计算.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、区块链与图计算 Block Chain Overview 图模型设计 数据加载 增量数据更新 查询实现 Block Chain Overview Previous block hash(32 Previous block hash(32 bytes)bytes)=SHA256(SHA256(Previous Block Header)长链优先 保证了Block Header不可篡改 MerkleMerkle Root Root HashTx(A)=SHA256(SHA256(Tx(A)每两个Transaction的Hash值相加,并重新计算Hash 如果Block内的Transaction数目
2、为奇数,最后一个Transaction的Hash值和自己相加,并重新计算Hash 新得到的Hash值两两相加,并重新计算Hash 最后得到一个Hash值,Merkle Root 保证了Transaction表不可篡改 Block Header DataData formatformat of“/.bitcoin/blocks/blkNNNNN.dat”Difficulty BitsDifficulty Bits:A numeric representation of the current difficulty in obtaining the expected result.NonceNon
3、ce: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.Difficulty Target and Nonce 每10分钟生成一个Block,每个Block的Txn列表最大为1MB 每两周(或者2016个Blocks
4、)调整一次difficulty Transaction Chain 1 BTC=108 Satoshis 每个Transaction 可以有多个input和多个output UTXO:Unspent Transaction Output,没有作为其它Transaction的input的output Output中含有Pubkey script,表明再次消费需要满足的条件 Input中提供了Signature script,用于解锁Output Coinbase Transaction Block中的第一个Transaction 由挖矿者(miner)生成 包含单一的input:coinbase
5、 Coinbase中包含由于挖掘出本Block得到的奖励,以及本Block中的所有Transaction的交易费用 图模型设计 圆标识实体,线标识关系,带箭头线段标识有向边 一个Block可以包含(included)多个Txn,但是只能有一个Coinbase 一个Txn可以有多个Output,一个Output只能被一个Address锁定(locked)Coinbase作为关系存在,而不是实体 没有Input实体,与Txn节点通过_in关系连接的Output节点被视为Input 图模型设计-实例 图中Txn是Coinbase Txn Output1是coinbase Output2是UTXO A
6、ddress是矿工的地址 图模型设计-定义节点类型 图模型设计-定义边类型 数据加载-上传数据 数据加载-映射节点 数据加载-映射边 初始加载 VS 增量加载 curl-X POST-data-binary block.csvblock.csv http:/localhost:9000/ddl?tag=load_blockload_block&sep=,&eol=n curl-X POST-data-binary txn.csvtxn.csv http:/localhost:9000/ddl?tag=load_txnload_txn&sep=,&eol=n curl-X POST-data-b
7、inary output.csvoutput.csv http:/localhost:9000/ddl?tag=load_outputload_output&sep=,&eol=n 数据量 查询拥有最多比特币的地址 1.获取所有的Output节点集合AllOutput 2.得到所有有in出边的Output节点集合Spent 3.得到所有UTXO集合:Unspent=AllOutput MINUS Spent 4.从Unspent节点集出发,通过locked边访问Address节点,并累和到Address的比特币值 5.从Address节点集中选择topK,并输出结果 查询拥有最多比特币的地址-
8、1 2.得到所有有in出边的Output节点集合Spent 1.获取所有的Output节点集合AllOut 查询拥有最多比特币的地址-2 2.从Unspent节点集出发,通过locked边访问Address节点,并累和到Address的比特币值 1.得到所有UTXO集合 查询拥有最多比特币的地址-3 2.输出结果 1.从Address节点集中选择topK 查询花费最多比特币的地址 Demo 总结-图数据库开发流程 1.理解原始数据,特别是实体之间的关系 2.设计schema 3.建立数据到节点和边的映射关系 4.加载数据 5.实现查询 总结-图数据库的使用场景 1.不是取代区块链,或者关系数据库 2.深度关系查询 3.实时计算 4.反欺诈、反洗钱、物联网、企业图谱、社区发现、知识图谱,等等