如何防止将虚假数据发送到区块链

How to prevent fake data from being sent to a Blockchain

我正在为物联网应用程序开发区块链,其中有许多网关(矿工)遍布整个城市,并且有几个节点(传感器)连接到每个网关。每个网关都可以由最终用户添加,因此这是一个不受信任的环境。我怎样才能确保其中一位矿工没有向链发送虚假数据?

我查阅了一些共识协议,发现 none 适合这个特定问题,因为没有价值被交换。

每个矿工都向主服务器发送一个 ping,并从中接收网络上的矿工列表。然后他们通过 p2p 相互连接。

关于如何解决这个问题的任何想法?

为了防止发布垃圾邮件或虚假数据,必须将其作为共识规则添加到协议中。否则,它需要另一个层来验证基于链下数据的数据(但不阻止数据存储在块中)。区块链用于在无许可系统中实现分布式共识。限制谁可以参与不是无权限系统,而是中心化系统,因为必须有人决定谁可以参与。

区块链可以在无许可和许可两种情况下使用,如果你想防止任何人都可以广播数据,那么你必须在节点加入网络之前对它们进行身份验证。如果即使在对节点进行身份验证之后,经过身份验证的节点仍有可能发送 "fake data",则必须实施信任机制,节点验证数据源的可信度并决定节点是否受信任并接受数据。

查询的答案在Blockchain Oracles

迄今为止的 Oracle 都是中心化服务,这意味着使用此类服务​​的任何智能合约都存在单点故障,这抵消了从智能合约的去中心化性质中获得的任何好处。

为了填补这一空白,Chainlink 被开发为第一个可以为智能合约提供外部数据的去中心化预言机。因此,智能合约的安全性和确定性可以与现实世界外部事件的知识和广度相结合。 Chainlink 将提供一个智能合约,可以访问任何需要的外部 API。

根据 chainlink here and here

Blockchains and smart contracts cannot access data from outside of their network. In order to know what to do, a smart contract often needs access to information from the outside world that is relevant to the contractual agreement, in the form of electronic data, also referred to as oracles. These oracles are services that send and verify real world occurrences and submit this information to smart contracts, triggering state changes on the blockchain.