提到区块链的运行机制,通常人们都会按照以下方式进行解释:
1、 用户将交易广播给一些区块链的节点;
2、 这些区块链节点接收到用户的交易信息进行验证,确认没有问题后,向全网广播该交易;
3、 矿工节点将交易打包到区块里,最终该交易被记录进区块链。
这里面有一个很关键的操作:节点验证交易的正确性。如果交易是错误的,这个交易则不会被记录到区块链上。那么,问题来了:节点怎样验证交易的正确性呢?
在比特币等类型的无中心数字货币区块链系统中,验证交易是一件非常正常而又简单的事情:节点只需检查该交易引用的前一笔交易是否匹配即可。
仔细注意这里面的操作,节点通过区块链上已有的数据来验证新来的数据是否正确。也就是说,由于比特币区块链系统的封闭性,使得节点具有验证交易正确性的能力。
那么,交易之外的数据呢?比特币系统可以在发起交易的时候,利用转账脚本的功能,附带一些额外的信息。对于这些信息,比特币节点会直接忽略掉他们,并不去验证这新信息的真伪,因为节点并没有能力去验证这些信息的真伪。
回想上一篇文章中,我们提到的区块链系统是可以当作一个底层的存储系统使用的,这也是目前很多区块链应用中,使用区块链系统的方式。但要注意一点:一旦区块链被作为存储系统使用,区块链系统自身则无法保证上面数据的正确性。区块链系统只能保证所有节点上数据的一致性,但是无法验证这些数据的真实性。
例如,现在很多企业在用区块链技术做产品溯源系统。在这样的系统里,区块链只能保证传输到链上的数据不会被篡改,但是没有办法保证一开始传到系统上的数据是真实的。在这种类型的应用中,输入数据的真实性才是关键。然而这个问题常常容易被忽略,对于很多普通用户,往往就认为区块链溯源系统上的数据都是真实可信的。
区块链作为一个产生和传递信用的机器,经常被提到可以用于征信领域。然而,在征信领域中,面临的问题也是一样:输入数据的真实性才是关键。除了输入数据的问题,存储和使用数据方面也有很多问题。
例如,在某些企业间共享数据的应用中,由于企业数据隐私保护的需要,在区块链上,很多数据都是以加密的形式存储在区块链上的。当需要企业间分享数据时,企业只需要把对应数据的密钥私下传给另一个企业,这家企业就可以在链上读取到全部的密文,解密后获得需要的数据。
这种应用通常是利用了区块链技术不可篡改的特性:即企业无法临时造假,早期数据传到链上的样子,企业没有办法改变。
然而,这里依然存在一个问题:企业如果在早期就传输了很多份不同的有真有假的数据到链上,那么在未来需要某个数据的时候,直接取出企业希望展现数据的对应密钥给对方,就实现了不同企业看到不同数据的愿望。
因此,对于区块链而言,只有数据封闭的应用,才能充分发挥出区块链的能力。区块链只是一种底层的信息技术,技术以内的问题可以解决,技术以外的问题则无法解决。区块链可以保证数据的公开和共享。但对于很多应用来说,最大的问题不在于公开和共享,而在于数据的安全可靠,而这些输入的数据是否真实,区块链则是无法保证的。
原文发布时间为:2017-11-09
本文作者:敖萌
本文来源:[雷锋网](),如需转载请联系原作者。