我们怎么知道添加到区块链的信息是真实的?

How do we know that information added to a blockchain is true?

假设存在一个记录出租房地产历史的区块链属性。如果我想添加对我在 属性 生活经历的评论,区块链将如何验证评论的真实性?让我们假设来自真正住在那里或真正访问过那里的人的任何评论都是真实的。我们要避免的是没有住在那里或没有去过那里的人留下永久添加到区块链的评论。

我的猜测是试图验证评论的区块链节点将连接到数据库,该数据库将包含有关某人是否居住或访问过 属性 的信息。但我也可能完全不知道区块链是如何工作的。

提前致谢

我的猜测是你的意识形态有点正确。区块链中有一种叫做工作证明的东西......负责在添加区块之前验证链上的区块,因为它就像一个数学难题,包括验证这个人是否留下或不能是算法的一个因素

你快到了。鉴于您用于租赁 属性 的区块链示例,我假设区块链上的每笔交易都记录了当前正在租赁 属性 的人。以 Alice 和 Bob 作为示例名称,假设 Alice 是当前的租客,但她的租赁协议已过期。如果鲍勃接下来要出租这个地方,爱丽丝首先将所有权转回给房东,然后房东再将所有权转给鲍勃。在区块链上,它看起来像这样:

Alice 将所有权转让给 房东

房东 将所有权转让给 Bob

现在,假设 Bob 想稍后发表评论。我们如何验证 Bob 是以前的房客?好吧,这很简单。我们需要做的就是回顾区块链的历史并检查租赁所有权是否已在某个时候转移给 Bob,在本例中是这样。区块链数据库。之前在区块链上写过名字的任何人都可以发表评论。

编辑

在评论中回答你的问题,我们怎么知道交易Alice transfers ownership to Landlord是真的?好吧,如果我们可以验证 Alice 是提交它的人,那么这个交易就被认为是有效的。但这是如何工作的?

Alice 在为区块链设置地址时会得到一个私钥和一个 public 密钥。您可以将 public 密钥视为她的唯一标识符,在本例中只是“Alice”,因为在此示例中没有其他 Alice。私钥就像密码:您需要它才能访问您的帐户并向区块链提交有效交易。

为了让 Alice 以她的名义提交有效交易,她必须使用她的私钥对其进行数字签名。签名功能如下所示:

Sign(transaction, private key) = Signature

给定一笔交易,爱丽丝可以使用她的私钥“签名”并生成发送给矿工的签名。当矿工获得此交易和签名时,他们可以使用第二个函数进行验证:

Verify(transaction, Signature, public key) = True/False

使用此功能,矿工可以验证交易是否实际上是使用与 public 密钥关联的私钥进行的。如果是,则这是一个有效的交易,可以添加到区块链中。

我不知道这些函数背后的数学原理,因为它很复杂,所以很遗憾我不能在这里详细解释。

我建议观看 3Blue1Brown’s video on Bitcoin,其中介绍了数字签名。这是一个很长的视频,但它以一种易于理解的方式介绍了理解区块链的所有基础知识。

编辑 2

在你的第二个后续问题中,必须有一条规则编码到区块链中,即当有当前租户时,房东不能将 属性 出租给任何其他人。在这种情况下,如果房东试图在 Alice 租房时提交此交易:

房东 将所有权转让给 Bob

验证器将返回区块链的历史并检查最后一个租户是否已将所有权转移回房东,在这种情况下是不正确的。区块链仍会将爱丽丝记录为当前租户,因此该交易将被视为无效。由于 Alice 是唯一拥有她帐户私钥的人,因此她是唯一可以将所有权转让回房东以便再次出租的人。