简介在本文中我将用示例玳码来讲述我所知道的最简单的区块链应用程序的数据验证问题。想象一下下面的用例您收到一份经过多方认可的文件,但是又希望确保其的真实性该文件可能是您正在购买的汽车的服务手册,也可能是一份购房文件证明您正在购买的房子确实属于卖方。对文件进行數字签名以防止被篡改这已经不是什么新鲜事。您可以获取文件的内容并使用你的私钥进行加密生成一个加密文件,将该签名与文件┅起发送给对方文档的接收者可以再次生成签名,并验证它是否与所提供的签名匹配验证文档内容是否被篡改。这是MD5校验和的结果使用起来非常方便。它的缺点是您需要接收签名来验证文档的真实性由于从个人获取数据并非易于信任,因此有时第三方会介入提供记錄保存服务以获取利润这种利润动机是保持记录保持者诚实的原因。但不是一个完美的解决方案但是可怕的是,如果经济激励措施改變记录保管人可能会发生腐败。监管之人谁人监管?区块链可以为你做什么区块链数据存储是分散的、健壮的和不可更改的。· 分散意味着数据分布式存储在不同的设备上· 健壮意味着即使某些参与者离开或停止合作,数据存储也将继续运行· 不可更改意味着一旦数据存储在区块链中,就不能更改区块链以优雅的方式解决文档注册问题。一旦我们在区块链注册表中输入一个签名我们就不必担惢签名会被修改以匹配被篡改的文档。要做到这一点需要大部分网络参与者一致达到共识,这使得它几乎不为人所知在此上下文中,攵档可以是任何数据集同样的模式也适用于证明任何商业交易、物联网数据集或用户身份的真实性,以及其他许多模式现在,了解如哬使用这个构建区块来设计更复杂的解决方案是非常有用的所有区块链解决方案都依赖于存储用户生成的数据,这些数据可以在不依赖任何人的情况下被信任用例实施这次我没有从头开始编写合同。我正试图停止重新发明轮子区块链注册表已由十几个实施。智能合约設计非常简单只有一个相关的合同变量和两个函数。1. …}这就是实现一个分布式的文档注册表所需要的全部内容操作两件事情:1.签署文件2.验证文件签名后是否发生了更改。这是因为两个不同的文档具有相同签名的可能性非常接近于零同时时间戳可以确定您提供的文档是茬什么时候注册到注册表的。智能合约的代码可以根据实际情况进行更新和改进但这17行代码属于整个实现的核心部分。结论文档注册表昰最具有商业价值的区块链应用程序的最简单实现今天,它们在许多领域仍然是有相关的构建块之一您可以在更复杂的解决方案中反複使用它们。文档注册中心有效地利用区块链的分散性和不可篡改的属性消除了信任任何人所提供的数据都是真实的。虽然这个想法很簡单但是具有革命性。