【汇编5】区块链 存证

来源:大圣2017 作者:大圣2017 2018-04-24 15:10:21

2016-1-26 NxtChina.org 区块链应用之存在性证明
2017-02-11 qkldx.net huanghonghuo 基于区块链的存在性证明解决方案
2017-03-01 巴比特 kyle 透过比特币区块链的PoE特征学习加密技术
2017-05-08 简书 闪电 隔离见证有效达成链上扩容效果的阻力 【推荐】
2015-12-22 简书 怒马 比特币背后的密码学原理
2016-12-07 网录科技 汪波 区块链做存证的原理及方式 【推荐】
2017-07-05 法链存证 润田 观点 | 区块链存证的电子合同:复印件=原件tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


(kyle)透过比特币区块链的存在性证明(PoE)特征学习加密技术

存在性证明(PoE)是比特币区块链内置的一种特征,比特币区块链允许任何人以不可变的方式存储记录。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

在比特币区块链上存储记录

区块链上存储的记录也许目前并不被法律所承认,但在不远的未来很有可能会。例如美国亚利桑那州已经批准了一项法案,承认基于区块链的合约具有法律效力。即便如此,使用区块链这种分布式数据库来保护特定数据将会确保你的记录巩固于历史长河中。这些记录可以包括一些文件,如遗嘱、土地所有权、数字版权等等。要将你的记录数字化地存储在比特币区块链上就需要一些任何人都能完成的实践。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

RSA加密、信息摘要和比特币公有链

创建存储文件——在公有链上保持私有——的最佳方式就是对数据进行加密。第一件事就是使用自己的计算机创建一些公钥和私钥。Linux和苹果操作系统用户可以通过使用像sshkeygen程序来生成这些密钥,Windows用户可以使用一种叫做Puttygen的软件来生成。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

公钥或非对称密码使用了数学系密钥,允许有加密和解密协议。使用Puttygen,用户只需要启动该程序并点击“生成RSA密钥(generate RSA keys)“,输入一个独一无二的密钥密码,然后保存新创建的公钥和私钥。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

使用Puttygen保存私钥和公钥

收到这个密钥对之后,下一步就是创建一个信息摘要,在这里你可以为这个文件、记录或文本添加一个哈希函数。信息摘要软件可以在网上下载,这种软件可以计算一系列不同的加密算法,如MD2、MD4、MD5和SHA-256。通过创建这个信息摘要,这将为你记录的的数据创建一个独一无二的输入。顺着这个步骤,你可以使用你新创建的私钥对信息进行加密,同时将你的数字签名添加的这些信息中。有一些不同的方法可以用来为区块链存在性证明(PoE)提供数据。例如软件开发者Chris Ellis在Github上解释了如何通过一种使用了数字签名和区块链的XML或JSON文档来创建一种世界公民证书。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

将你的私钥与信息摘要系在一起

最后,如果你想要把这个签过名的信息摘要与你的文档系在一起并将其添加到比特币区块链上。那么你就必须记住比特币区块链可以被用来将这个信息摘要的字符串变成哈希放入交易中,这与将文档”附属“到区块链上不同。这个文档并不是被存储在那里,而是只有密钥或数字串与交易连接并记录到公有链上。本质上这就是你的文件的一个数字化的经过签名的“代表”。区块链上许多其他的信息都是十六进制代码,如中本聪创世区块文本。这些特定种类的区块链信息都是通过使用coinbase的100字节的任意文本创建的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

美国麻省理工学院(MIT)也正在研究一种 PoE证书项目,可以将学生的学历记录到区块链上。然而,当使用这些服务的时候,你要记住,你需要将对数据完整性的信任交给第三方机构,因为是他们将你的学历信息记录到区块链上的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

比特币区块链拥有大量的十六进制的宣传文本,包括一种致敬Nels mandela的文本,中本聪创世信息,维基泄密密电门数据和其他数千种。除此之外,人们已经使用比特币区块链来记录婴儿出生证明,创建全球护照和结婚证书。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

创世区块中发现的中本聪信息

证明所有权和学习加密技术

使用比特币区块链的存在性证明(PoE)功能可以很好地证明文档的数字所有权。比特币区块链同样在交易被处理时立即为其添加时间戳。这就意味着将数据安全地注册在一个全球分布式网络上,可以让用户在未来任何时候通过这个数字签名来证明所有权。因为此举消除了未来对一些第三方机构的需要,所以比特币区块链的这种用例可能会影响法律系统,法律公司公证服务等等。学习如何创建私钥/公钥以及应用安全的文档到强大的比特币区块链将会让我们加密技术领域的迷人之处。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


(qkldx)基于区块链的存在性证明解决方案

数字世界的存在性证明问题由来已久,前人也设计总结了很多算法用于证明某件事物在某一个时刻就已经存在。在《应用密码学》这本书中,就提出了一种时间标记服务密码学协议,他们认为数字时间标记协议必须具有下列三个性质:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 数据本身必须有时间标记,而不用考虑它所用的物理媒介
  • 改变文件的1个位而文件却没有明显变化是不可能的
  • 不可能用不同于当前日期和时间的日期和时间来标记文件

这三个性质也逐渐成为存在性证明的三要素。在没有区块链之前,存在性证明即便有密码学协议的支撑,仍然复杂不堪。往简单点说,无非是将文件与时间戳关联起来然后加密广播,使得篡改的成本激增。具体思路可以查看《应用密码学》中级协议之时间标记服务。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

那在有了区块链这样的技术之后,事情是不是变得简单点了呢?我相信任何一个对区块链技术有所了解的人都会不假思索的告诉你,岂止是简单了,简直是量身定做!区块链就是一个由时间戳关联起来的交易链,任何对其中某一交易进行造假都会在后续交易中暴露出来。下面我就简单阐述一下我理解的基于区块链的存在性证明解决方案。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

首先,我们需要明确:怎么样才能唯一确定一个文件?现在大多数都使用哈希算法获取文件的唯一标识,一般为sha1。无可避免的会引出两个问题:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 哈希重复性问题:在数据量达到一定程度以后,可能会产生不同文件拥有相同的哈希值,在学术界,我们称之为哈希碰撞。虽然有概率显示,这样的碰撞其实是很难发生的,但是在数据量极其大的时候,比如每天一亿次请求的这样的需求下,我们就不能简单的说没关系,碰撞的概率是很小的。那么我们是怎么解决的呢?在我们看来,一种哈希算法的结果容易产生碰撞,那么两种或两种以上的哈希混合在一起之后得到的结果应该是会使得碰撞概率急剧减小。我们最终采用的方案是SHA3-512(SHA256(doc) MD5(doc) Length(doc))。
  • 文件重复提交问题:因为基于区块链的存在性证明是一个异步过程,这样不可避免的请求与验证之间存在时间差。如果在这段时间内用户重新提交相同文件,系统该作何应答?由于我们现在不涉及所有权证明,所以多个用户上传同一份文件我们也可以视为一个用户在不同时间点上传同一份文件多次。在这样的情况下,我们就不能使用问题1中的文件复合哈希作为文件ID了,我们最终的解决方案就是在问题1解决方案的基础上,增加时间戳(请求接收时间)作为每个请求的唯一ID,而文件复合哈希作为文件ID。他们之间的关系是一个文件ID可以对应N个请求ID。

以上两个问题解决了确定文件的思路,在设计开发过程中,我们还遇到了一些问题,我捡几个比较重要的说说。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 数据量增长与区块链存储成本间不可调和的矛盾。我们都知道,区块链简要来说就是去中心化的分布式kvs数据库。每个节点都完整保存全部数据(此处为全节点),这样就使得在区块链上存储数据的代价高昂,如果在数据量不大的情况下,区块链的增长还是可控的,但是一旦请求次数上去,区块链数据量会暴增。如何才能避免这样的一种情况发生呢?思来想去,我们根据侧链原理,将区块链只作为数据验证索引存储的地方。而且,在文件请求激增的情况下,根本无力在一次区块链交易中只携带一个文件。因此,我们又将一段时间内收到的文件请求统一整合到一个块文件中,将块文件作为区块链交易的输入。得到块文件索引后,将数据绑定到我们另外的持久层中,持久层的选择我们另外再说。
  • 持久层技术选型问题。在最初的需求里,明确说明每天至少1亿次请求,并且证明过程是异步的。因此就需要写数据很快,读取或更新相对不那么快的数据库系统。最开始的备选方案有LevelDB,Redis,SQLite,MySQL,Cassandra等,在持续分析需求后,我们发现必须得支持SQL语法,不然效率低下,这就排除了LevelDB,Redis等KV数据库。再者,在数据量持续增长的过程中,如何动态的容灾扩容是必须要解决的问题。其实,MySQL是可以解决我们的需求的,但是毕竟是属于传统的关系型数据库,在处理大量数据的时候,我们心里还是有些担心的。最后就只剩下Cassandra了,它是列式存储KV数据库,同时支持CQL查询语言,是一个完美的选择。
  • 请求缓存与转发路线。大量请求蜂拥而至,我们必定不能保证实时返回结果。那么如何保证每一请求都被处理,每一请求都有唯一标识?回到文件重复提交问题那里,我们制定了请求ID与文件ID之间的关系,可以看到,请求ID只与文件ID和提交时间有关,因此我们在接收到每个请求之后,马上计算出该请求所对应的唯一ID,作为后续查找该请求处理结果的标识。缓存请求消息队列中间件有很多,根据我们的业务逻辑,先将请求文件对象持久化,再将一段时间内的文件组合成块文件提交到区块链进行备案,区块链备案完成后,将哈希后的备案ID再与持久层文件请求关联起来。在描述的过程中,这是一个串行的过程,在实际操作中,如果是串行,无疑会增加系统的负担能力。有没有可能使得持久化与区块链备案并行执行呢?答案当然是可行的,这就是我们引入kafka的原因, kafka通过topic机制可以实现不同分组不同分发的策略,这样就使得我们的文件验证过程变得更加快捷。

上面这些就是我们在设计开发中遇到的一些问题,文笔有限,说的有些不清不楚。其实如果仅仅是利用区块链进行存在性证明,直接将文件信息存储在区块链上就可以了,但是因为是做产品,要考虑方方面面的问题,这才催生了整个平台的架构。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


(NXT)区块链应用之存在性证明

简介

存在性证明POE的基本原理就是将要存储的文件进行哈希计算,再将这个哈希值存入到区块链中。因为区块链存储了所有已经确认的交易,而且因为哈希值是唯一的,所以就可以证明某个特定文件的存在。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

比特币所引领的去中心化账本技术——区块链——已经在全世界范围内引起了重视,原因就是区块链有着广泛的应用前景。事实上,区块链科技具有改变我们记录很多事物的革命性的潜力,几乎可以应用到所有事情上。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

其中的用途之一就是将任何文档记录到不可更改的公开分布式账本中——区块链。存在性证明(Proof of Existence,POE)的服务工具已经出现了。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

存在性证明POE的基本原理就是将要存储的文件进行哈希计算,再将这个哈希值存入到区块链中。因为区块链存储了所有已经确认的交易,而且因为哈希值是唯一的,所以就可以证明某个特定文件的存在。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

时间戳

通过简单的在区块链上登记和加入时间戳信息,POE能够让任何人匿名和安全地存放任何文件的存在性证明。文件本身并没有存放在中心化的数据库或者区块链中,因此文件数据是隐私的。在区块链上存放的仅仅是文件的密码学哈希值,以及该文件的哈希值提交至区块链中的时间信息。这样一来,人们就可以基于公开的区块链,在无需揭露数据内容或所有者身份信息的情况下公开证明某个文件或信息属于某人。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

合约也可以加上时间戳和当事人的数字签名,来证明它们是何时签署这些合约的。可信的时间戳信息可以用来证明你在某个时间点持有某个文件、信息或数据,而且这些信息无法伪造。你可以给你开发的软件版本加上时间戳信息来证明在某个时间点你已经开发了某个版本的软件。你无需依赖任何机构。在以前的传统中,是由称之为TSAs(Time Stamping Authority)的可信赖的第三方来签署的可信时间戳信息的,但是容易出现数据腐败和篡改。而且在区块链中,您的时间戳信息是安全存放在全世界的,更难篡改。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

存在性证明POE的常见用途

存在性证明POE可以用于文件版权、专利等等。任何人都可以证明某个数据在某个时间点存在过。因为我们使用了比特币区块链来存放文件证明信息,因此任何人都可以在无需中心机构的情况下就能验证该文件证明信息。而且整个比特币网络的算力用来保护你的数据。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Proof of Existence project blockchain identity

存在性证明POE的部分用途

  • 无需泄露真实的数据内容即可证明文件的所有者
  • 文件时间戳
  • 证明所有者和转让合同
  • 确认文件完整性

如果某人存储了他的文件证明,之后重新上传该文件,系统将会识别该文件是否与之前的文件完全一致。哪怕是轻微的变化,区块链都会识别出它与之前文件是不同的。这就给用户提供了必要的安全性,即已验证的文件是不可更改的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

存在性证明POE相关的项目:

目前在密码学货币界有很多存在性证明的项目,以下列出了比较重要的一些:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

技术原理

可以用密码学的算法来生成一个代表某个数据的密码学字符串。通过哈希函数生成的字符串是基于文件特性的。不存在两个相同的哈希字符串,除非用来生成这个哈希字符串的原文件是一样的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

通过将文件的SHA256哈希值嵌入到比特币区块链中来实现文件证明。这是通过OP_RETRUN脚本来生成一个特殊的比特币交易而实现的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Nxt的解决方案**

Nxt区块链以及钱包界面也提供了这样的存在性证明功能,而且操作流程也非常方便。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

生成要证明的文件的SHA256值tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

可以使用这些在线SHA256计算工具
进行生成,或者直接使用Nxt钱包界面中的Calculate Hash工具计算;tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

将生成的文件的SHA256值以信息的形式发送到Nxt区块链中,可以选择永久保存在区块链或只保存一段时间(默认90天);tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

填写接收者(任意存在的账户即可)、在信息框中输入生成的SHA256值,不要选择“加密信息”(这样信息是明文,任何人都可以看到信息内容)、选择“信息永远不会被删除”选框,然后输入密码发送即可。等确认后,含有证明文件SHA256值的信息就永久保存在了Nxt区块链中,实现了存在性证明的目的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


简书 闪电 隔离见证有效达成链上扩容效果的阻力

第1章 隔离见证带来扩容效果的原理

用户发送一笔比特币交易,数据可以分为简单两部分:一部分是UTXO交易数据,另外一部分是签名数据。在现有的比特币区块打包规则里,这两部分数据都是同时打包进区块,并且一个区块的数据大小上限是1MtEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

隔离见证使用新的交易格式,这种格式将签名数据放到了另一个区块里,现有1M区块里将只放UTXO交易数据tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

这样1M区块就相当于容纳了更多的交易。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如果1M区块按现在的交易格式,如果全部打包数据量最小的交易,即1个输入,1个输出,1个找零的交易,即226字节,1M区块能打包大约4400笔交易。其中:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 每笔签名数据大约为85字节,
  • UTXO交易数据约为141字节。

如果这种交易全部更换成隔离见证新创建的交易格式,1M区块里将能容纳141字节(226-85)的每笔交易共7000多笔,签名数据将会有0.6M,也有些人说是0.7M,这就是1.7M扩容效果的来源tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

现在比特币网络平均一个区块只有2500笔左右的交易,因为多输入输出会让交易数据更大。如果全部换成隔离见证交易,能增加多少,要看签名数据占总数据多少。但签名数据大小会依然签名方式和签名数量多少来决定,这个很难估算。最极端的是如果交易全是多重签名的交易,那签名数据会很大,在比特币测试网络上,打包出3.7M的双区块,其中1M UTXO交易数据,2.7M签名数据。但只包含了非常少的交易量。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

简书 怒马 比特币背后的密码学原理

2.2公钥与地址

我们知道比特币协议的区块链实际上是对交易的维护而不是对账户的维护,交易数据本身并不需要私钥,因此对公钥的封装也就是地址就显得格外重要,需要兼顾安全,效率和扩展。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

从公钥到地址经历了如下过程:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

A = RIPEMD160(SHA256(K))

公式中,K是公钥,A是生成的比特币地址tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

比特币地址与公钥不同。比特币地址是由公钥经过单向的哈希函数生成的。以公钥 K 为输入,计算其SHA256哈希值,并以此结果计算RIPEMD160 哈希值,得到一个长度为160比特(20字节)的数字后进行Base58Check编码即可得到比特币地址。从编码数据结构的视角看,是下图:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

需要注意的是,从地址已经无法反推公钥信息,因此,需要将私钥以及对应的公钥、地址一起存储tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

2.3比特币钱包

比特币钱包要解决的核心问题是私钥管理,早期的方式是随机生成私钥池并一次一密,这当然是安全性很高的方案。但是对存储,导入导出备份带来了极大的挑战,毕竟私钥丢了谁也没有办法。改进的私钥管理办法将私钥链式管理起来了,见下图:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

生成链式结构的过程如下:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


3.2 区块头

因此区块头之间的连接大约像下图所示:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


从上图我们可以知道如何避免双重支付问题,因为收款人有办法对这笔支付之前的所有消息进行检索直至追溯到原始的挖矿区块,实际上比特币世界里的每一枚比特币都是被标记可溯源,双重支付是可以避免的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

3.3 Merkle Tree

例如,下图就是一个Merkle Hash Tree形状,如果它是Merkle Hash Tree,则节点7的hash value必须是通过节点15、16上的value计算而得到.tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

在处理比对或验证的应用场景中时,特别是在分布式环境下进行比对或验证时,Merkle Tree会大大减少数据的传输量以及计算的复杂度。例如,就拿图一举例,假如是 15,16.......30是一个个数据块的hash值,我把这些数据从A传输到B,数据传输到B后,我想验证下传输到B上的数据的有效性型(验证数据是否在传输过程中发生变化),只需要验证A 和 B上所构造的Merkle Tree的root节点值是否一致即可,如果一致,表示数据是有效的,传输过程中没有发生改变。假如在传输过程中,15对应的数据被人篡改,通过Merkle Tree很容易定位找到(因为此时,节点0,1,3,7,15对应的hash值都发生了变化)。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

需要解释的是交易数据是怎么构建成树的呢,其实很简单:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 首先将所有交易作为叶子节点,
  • 两两相邻分组(总的交易数量如果是奇数就把单个的那个复制一份),
  • 然后对每一对交易分别计算哈希并依此向上构建树直至根节点。

4.交易

再次强调的是,比特币网络中流转的是交易信息,每个账户的余额是通过交易信息推算出来的,交易信息是双向的,有一个输入必定对应一个输出tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么


网录 汪波:区块链做存证的原理及方式

本文作者汪波,网录科技联合创始人、首席技术官CTO。汪波是原美国区块链公司公证通(Factom)工程副总裁,毕业于北京大学,后并获得美国密歇根大学信息管理硕士学位。他拥有20多年互联网及软件开发和管理经验,曾先后在中国和美国多次成功创业,对共识算法理论和代码都有精深造诣,可谓区块链共识算法和P2P网络先行实践者。雷锋网(公众号:雷锋网)已获得授权。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

为什么区块链是好的存证工具

区块链所建立的是一种去中心化的共识机制,这种共识机制结合了数字加密和博弈论,使得参与者无须任何外部强制约束的情况下即自行形成了相互牵制的可信环境。这种可信的环境去除了中心化授权外部的管制的必要性,甚至恰恰建立在互不信任的基础之上,于是这种去中心化、去信任的区块链架构所解决的正是这个充满虚拟与匿名的网络世界的信用与治理问题。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

存证证明这是一件很简单的事情,提供票据、通信记录之类的就可以办到,但这些并不严格,因为这些证据都是非常容易被伪造和销毁的。要完成证明,必须依赖强有力的证据链,这个必须是任何人都无法伪造和销毁的,或者说伪造成本是极其高昂近乎不可能。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

区块链技术是从比特币系统提炼出来的,具有强大的自保护能力的技术,与其说它是一项技术创新,不如确切的说它是一项规则与技术完美结合的生态系统创新。这个生态系统自带的规则与技术天然解决了保全证据公证遇到的一些根本问题:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录科技CTO汪波:区块链做存证的原理及方式
  • (1)第三方身份:区块链技术保全证据,是属于在关系双方之外,建立一个无利益的第三方身份,正如“公证”中的公证员的身份、“私证”中的见证人的身份。
  • (2)去中心化结构:区块的基础规则之一就是去中心化的结构,即不存在作为中心的硬件或管理机构,不需要也无法人为的进行干预。保全内容被区块链无数的结合点共同控制,有效的防止黑客、捣蛋者们对数据本身进行攻击、篡改。
  • (3)时间戳证明:每一次存取、变动等行为都会有一个时间戳记录,让每一个行为的时间点有据可查。
  • (4)证据链举证:区块链技术将每一次行为都保全下来,对行为形成了证据链证据,而非单点证据,有效还原了整个行为的真实过程。
  • (6)低成本:虽然区块链技术作用很大,但它还是一项低成本的技术,区块链技术本身对硬件的要求不高,也不需要很大的硬件投入,这点在它保全证据公证领域的推广利用方面也是至关重要的。

上面谈到的是区块链在保全证据公证领域的天然优势,这个优势可以用于公证,当然更可以用于的私证。但从现实的、接地气的作用来讲,区块链对私证的意义更大,这是因为未来越来越微小的经济活动将逐步盛行,如:tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

P2P实现了几十、几百的贷款,淘宝实现了几十块钱的交易,这些细琐的经济活动会产生出大量的细琐的名事纠纷,而大家绝不会为几块、几十块、几百块的事情打官司,所以快速取得证据、快速处理纠纷成了必须解决的问题,区块链将成为大众提供这样的存证、取证工具,用技术提高“私证”的证据效力,让私证在非民事诉讼领域大展拳脚。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

区块链进行存证的本质在于区块链特殊的存储方式,用比特币举例,每一笔交易以UTXO记录,UTXO相当于记录流水的方式,而不是记录余额。记录中必须包含持有人的签名并被网络证明没有双花,同时会记录接收人的地址,而且这笔记录将被打上时间戳记录在区块中。这样确保了每一笔交易都能找到他的上一笔交易,这样保证了在没有第三方参与的情况下,交易是唯一的和不可篡改的。利用这个特性大家创造性的用来解决数据存证的问题。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

怎么做存证?

基于比特币的存证很好的利用了比特币网络的强大算力以增强公信力。但是大家都知道比特币每一个区块的容量十分有限,如何将庞大复杂的数据存入比特币的网络中呢?tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

中本聪在比特币中使用了默克尔树的方式对交易的验证进行简化,基本原理是将单条交易Hash,再将两条交易的Hash组合后在进行Hash,经过几次同样的过程后形成一个根Hash,存于区块头中。这样,任何树上任何一笔交易被更改,都会造成根的不同。做数据的存证时,采用同样的方式,将文件Hash以默克尔树的形式组织,最后将根Hash写入比特币的一个可以提供80字节空间的OP_Return这个区域中。相当于将数据存证于一笔不可篡改的交易中,从而完成了存证的过程。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

这个过程我们称为锚定,其实是将存证链条锚定到了比特币上tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录科技CTO汪波:区块链做存证的原理及方式

这通常是第一个out,后面就是他的操作代码,fa,就是factom的东西,就是一串字节,我们是怎么做呢?我们早期做,是把要存进去的东西,用一串编码,这个编码前面有两个字符作为标识,比如FA,WA什么东西,表示我们自己,所以每一个, 基本上有两个或者三个字符,早期的时候都是用来标识自己。然后,后面这部分就表示他的高度,最后面属于他的hash,整个block hash的32位,这是一个核心层次最简单的编码之一。最简单就是把hash直接放进去,更复杂的80个字符,像地址空间一样,地址空间可以做很多很多的变种,创建着很多的应用。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

因为这个OP-return比特币并不提供标准的借口,所以我们有两种方法去处理:一种是手工构建一个Transaction,怎么去做锚定,我们做了很多的工作。比较简单的是先获得UTXO,先找到钱包里面,针对地址找到没有花费的钱,没有花费的地址,创建一个Transaction,Transaction找到一个Transaction2,为了做存证,我们搞一个简单的Transaction,创建一个OP-return,剩下还有一些剩余的钱,在创建一个Transaction,做一些验证,把它发到网络里面去,这个过程中,放到网络里,并不是每一个Transaction都会被收录到网络里面去,放到链上面去,所以你的等到for bank所得的for bank就表示这个已经被收录了,被确认了多少次了,一般来讲如果确认6次以上,那么效率就比较靠谱了,确认了20次以上那么这个就不可逆了。这是一个锚定算法的基本东西。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录科技CTO汪波:区块链做存证的原理及方式

Op_return的其他应用

利用Op_return这个区域还可以被用于发行基于比特币的其他资产,如彩色币,在锚定这个我们用的最广泛的是颜色币,这些都是不同颜色币公司做的,每个公司都做的非常好,在我们这可能见得比较少,谈的比较少,可实际上在比特币这个网络上有很多实实在在的应用在做交易,在做发行,我们看看现在有谁再用这个OP-return,这个用比特币做数据存证,也可能是数据交易上的东西tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录科技CTO汪波:区块链做存证的原理及方式

2015年以后利用Op_return区域相关的交易持续上升,说明这一区域正在被大规模开发利用tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

OP_RETURN交易现状

tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

OP_RETURN Stats(来源: http://opreturn.org/ )

参考:OP_RETURN Stats

tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

企业级的存证解决方案

上面介绍了存证功的原理。而存证的复杂应用意味着我们需要一个企业级的存证,这个存证应该有如下特征tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 当锚定的交易被取消,仍然能再次进行锚定;
  • 存证的数据的原始关系必须被记录和保留,原始数据的版本能够保留;
  • 数据能够便捷的检索;
  • 交易的吞吐量和速度达到要求;
  • 能控进行隐私和权限控制。

做存证其实很简单,你把一个东西锚定到比特币这就完成了,但是对于一个企业还需要什么来解决呢?tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  • 刚刚说到一个很重要的问题,可能不会被收录,区块链有些硬分叉,软分叉,有些是在短期之内可以进行调整的,你在不同的节点,不形成共识的时候,每个节点在临时的在某一个块上面建立了下面的节点,而下面的节点有可能整个链都会换掉,这个链的重组是个很大的事情,我们要保证链是在主链上的
  • 第二个地方我们要谈的是数据往往是有关联的,举个简单例子,交易所你要把东西放进去的时候,你得资产首先对应的属性对应的拥有者都是有关联的,但是这个你放在区块链这个东西是有限的东西,比特币这个比较慢,企业级的这个比较快,这怎么解决吞吐量速度交易的问题
  • 其他方面考虑的比较多的,隐私、权限等等,这些属于企业级存证需要解决的一个部分。

讲几个例子,这是我们在美国做的几个东西,看一下数据架构,这是一个多层次的链条架构,这是一个数据链tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

(Encoding: ‘Wa’ (2 bytes) block_height (6 bytes) block_hash(32 bytes)tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

用户可以随意的创建一个数据链,上面有一个目录链,这个架构在当时还是比较新颖的,最近这个英国出来的一个英国国家货币原型它就借鉴了这个架构,它的发行部和交易部是分开的,所以这种还是有一定的价值的,当时我们觉得还是不错的。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

存证的示例介绍:

公证通tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

  1. 将原始文件的hash存入条目块(Entry Blocks)中,
  2. 条目快被以默克尔树的形式组织后进入公正链的块中,
  3. 公正块(Factom Blocks)与比特币锚定。
网录科技CTO汪波:区块链做存证的原理及方式

公证通还在做房产存证,美国房地产不像中国一样,他都是需要政府给你备书的所以都是第三方来做的,所以没有人来说我买了这个房子,这个房子就一定是买给我房子这个人拥有的,所以就需要溯源,从它成为房子的第一天起,它是属于谁的,所以这种追溯带来了很多的代价。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Blockstack:在锚定之前,将原始文件及文件的hash都进行了存储,当写入区块链后,交易信息和公钥将被返回,并同样被存储于数据库中。这样能够方便的对文件进行分类和查询。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录:假设我们的互联网没有IP地址,在这么个情况下,它怎么样转?我存一个东西,把它存在qq云上,但是没有IP帮我路由到那个地方去,那么怎么办呢?它这个追溯是放在比特币,然后对每一个域名它都有一个相对的公钥,它在这里作为一种像建一样,把它对应的文件存储在里面,这是一个非常简单的地址,但是可以做出很多的应用来,80个字节是可以颠倒的,这个编码空间可以产生很多种不同的应用,另外存证一个数据,它会再次分级,再次诠释,这是一个域名系统,很简单的域名系统。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

公证通有一件事在中国是做不了的,数据在中国的控制是有一定限制的,外国人接受不了这个。所以,我和Jack(网录CEO)回国做资产的发行交易在存证平台。举个简单的例子,发行一种成员卡一样的东西,本质是可以拨通的,当时发行是几百块钱,后面发行1200多块钱靠自己的名气。虽然这种平台可以做很多类似的东西,但有一天我们希望在我们这个上面发行网红币。网红币的适用场景是和比特币是一样的,因为其有一定特色,所以有一定价值。我们开发了不同智能合约的模板,针对不同的场景,根据他们所需要的东西进行发布,这个资产、代币、智能合约做一些锚定,融合比特币、以太坊的东西。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网录的存证系统在产品的初步架构上,延续了Factom的部分思路:支持多种文件存储,提供存证及分布式存储两种路径,便于源文件的保留和比对。结构化数据可以直接写入区块中,进行真正意义上的数据比对。在区块链上层构建强大的查询引擎用于存证数据的复杂快速检索。tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

雷锋网原创文章,未经授权禁止转载。详情见 转载须知tEqBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

公众号关注 bcfanscom 或搜索“区块链粉丝”,参与大咖直播和糖果空投活动

BCfans公众号

  • 比特币现金硬分叉,是技术革新还是权利之争?
    比特币现金硬分叉,是技术革新还是权利之争? 09-02 16:52

    在比特币诞生的短短不到十年的历史中,整个社区中爆发了多次的争论,不仅仅是核心开发者和矿工之间的矛盾,还包括开发者与开发...

  • LGGroup乐金钱包软件开发
    LGGroup乐金钱包软件开发 08-31 12:19

    LGGroup支付钱包系统软件开发欧生 137-6067-4940 (LGGroup支付钱包APP软件开发、LGGroup支付钱包APP系统开发、LGGroup支付钱包系统源码开发、LGGroup支...

  • 区块链跨链钱包开发,多币种钱包app开发
    区块链跨链钱包开发,多币种钱包app开发 08-31 12:19

    区块链跨链钱包开发,多币种钱包app开发  区块链钱包是最近非常火爆的一个方向,像新出的Plustoken、HOO等这些钱包app功能都是非常强大的,...

  • 基于华为云区块链服务快速部署和搭建链上应用
    基于华为云区块链服务快速部署和搭建链上应用 08-31 12:19

    华为云区块链服务的整体架构华为云区块链服务BCS是面向企业及开发者的高性能、高可用和高安全的区块链技术平台服务,可以帮助企业和开...

  • V神谈分片技术、等离子技术以及第二层解决方案
    V神谈分片技术、等离子技术以及第二层解决方案 08-31 12:19

    ​ V神,以太坊的创始人,今日在关于开发应该集中在第一层还是第二层这个问题上发表了自己的看法。他说两者之间的权衡这种将是这个......

  • 区块链交易平台开发 公开透明不可篡改
    区块链交易平台开发 公开透明不可篡改 08-30 21:32

    区块链给企业商家带来了不一样的惊喜,同时以区块链技术为基础诞生了许多的衍生系统.赢在移动区块链交易平台就是在这个基础上...

  • 区块链挖矿系统APP定制
    区块链挖矿系统APP定制 08-30 20:54

    区块链挖矿系统研发【咨询开发薇电180-2240-1717高坤】区块链挖矿系统软件定制 最近区块链行业非常热闹,币圈人,都是营销的集...

  • 区块链商城交易系统平台开发
    区块链商城交易系统平台开发 08-30 20:33

    区块链商城交易系统开发,区块链商城交易系统软件,区块链商城交易系统定制,区块链商城交易系统:138-2848-7919可微区块链给...

  • 以太坊开发者资源工具集合
    以太坊开发者资源工具集合 08-30 16:07

    image 1 开发语言、框架与工具 语言 Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语言。 Bamboo - 是一种将智...

  • POWH3D区块链开发
    POWH3D区块链开发 08-30 15:15

    POWH3D区块链开发【185→94O6→0l81微电 曾生】​a,从日活的角度说,以太坊上现在dapp是啥?不是idex,也不是分叉以德,更不是以太猫,是一个...

  • 币圈资讯(8月30日)
    币圈资讯(8月30日) 08-30 14:00

    币圈区块链联盟99%币圈的人都关注了 2018.8.30 周四 区块链资讯 1.广州开发区金融局近日联合广州开发区经济和信息化局下发通知,...

  • LGGroup钱包系统开发
    LGGroup钱包系统开发 08-30 12:35

    LGGroup支付钱包系统软件开发欧生 137-6067-4940 (LGGroup支付钱包APP软件开发、LGGroup支付钱包APP系统开发、LGGroup支付钱包系统源码开发、LGGroup支...