区块链的工作原理2

现在我们已了解区块链的基础知识,接下来我们来看看它的工作原理。 这些信息可帮助你确定区块链是否适合自身方案。

数据是如何分布的?

在我们的方案中,假设有多家公司。 我们在乳制品加工公司建立了一个集中式数据库。 但所有参与者都不想成为中央机构。 我们可以使用区块链分布式账本。 使用区块链将不再需要中央机构。 此外,拥有区块链节点的每个参与者都可获得账本副本,以便他们能够自行审核并与自己的系统集成。 但并不要求每家公司都设置自己的下级节点。 合作伙伴之间可以共享这些节点。

每个节点都通过区块链网络连接到其他节点。 例如,Dalia Pelayo 农场、冰淇淋工厂和冰淇淋店都各自管理着一个节点。 Contoso West 和 Contoso East 是同属一家母公司的两个独立合作伙伴。 Contoso 有一个节点。 节点与公司之间不必存在一对一关系。

区块链的工作原理2

更改状态

区块链中的数据表示状态。 这就是为什么区块链非常适合使用加密货币之类的数字令牌。 我们可以把这种情况想象为实际货币的所有权:一枚硬币一次只能在一个人的口袋。 如果硬币在你的口袋,所有权就是你的。 如果将硬币给朋友,状态就会变为你的朋友拥有这枚硬币。 在我们的方案中,货物运输通过供应链。 产品的责任方也随运输转移。 我们想知道的数据包括责任方、温度以及产品是否合规。

区块链使用事务将数据的状态从一个值更改为另一个值。 例如,如果我们需要知道冰淇淋是否在低于冰点的温度下存储。 在运输冰淇淋的过程中,温度传感器会定期报告温度。 报告的温度是一个事务,会发送到区块链事务节点。

区块链的工作原理2

在冰淇淋方案中,在货物运输通过供应链的过程中,每当状态发生更改时,都会发送一个事务。 例如,下图展示了向冰淇淋工厂运送货物的典型事务。 每个事务都更改了责任方或温度。 账本的当前状态是按顺序应用的事务。

区块链的工作原理2

发送事务时,会发送到区块链事务节点。 假设 Dalia Pelayo 农场通过 Contoso West Shipping 运输牛奶。 Dalia Pelayo 农场的发货系统会向自己的区块链节点发送一个事务。 该事务会将运输责任方从农场主更新为 Contoso West Shipping。

区块链的工作原理2

在整个区块链网络中,区块链都会发送事务。 每个节点都会获取事务的副本。

区块链的工作原理2

每个节点都会处理事务,但仍需要使用共识机制进行验证。 共识实现了分布式账本的一致性和信任。

如何确保账本数据的一致性?

在分布式网络中,很难确定什么是真实的,因为所有节点都存在数据更改。 如果冰淇淋工厂节点没有收到运输事务,会发生什么情况? 他们如何知道牛奶已从农场运出? 如果运输公司的冷藏车出了故障,牛奶变质了怎么办? 送货公司是否会通过修改账本来逃避责任?

区块链采用一种共识机制,可验证所有区块链节点上的数据并达成一致。 共识提供一种方法,让所有分散管理的节点都达到相同的状态。 在转移价值或责任时,顺序很重要。 例如,如果你将汽车的所有权转给朋友,就无法再将该项所有权转给同事。 此类问题称为双重花费,可通过共识机制解决。 共识可确保事务的顺序正确以及区块链的诚信。 共识的原理是,一组事务作为一个块进行验证,至于这个块是否应属于区块链,整个网络必须达成一致。

区块链的工作原理2

有几种区块链共识算法,包括工作证明、所有权证明和授权证明。 每个算法都以不同的方式解决一致性问题。 简而言之,共识提供了一种方法,让分布式账本能达成共同的状态。

什么是块?

块是区块链中存储事务信息的数据群集。 块中的事务数通常是基于时间的。 例如,下图显示的块包含了过去 10 分钟内发生的事务。

区块链的工作原理2

经过共识后,已验证的块会添加到每个节点的区块链中。 由于所有节点在该链中都具有相同的块,所以账本能在网络上保持一致。 因此,所有节点都以一致的顺序包含相同的已验证数据。

如何确保账本不可变?

你可能会认为,如果能控制自己节点中的账本,就能更改副本中的数据。 这些数据怎么会不可变呢?

区块链使用加密哈希在块之间创建链接。 将块链接在一起后,可以通过共识算法确定事务顺序的一致性。 加密哈希是一种算法,可将任意大小的数据映射到固定大小的位表示形式。 我们可以将其视为数字指纹。 比特币使用 SHA-256 哈希算法。 如果在 100 页的文档上使用 SHA-256 哈希函数,则函数输出是一个 256 位哈希值。 如果只更改文档中的一个字符并重新生成了哈希,则输出是一个不同的 256 位哈希值。 现在,假设我们将一个块用作哈希函数的输入。 输出是块中数据的唯一哈希值。

区块链的工作原理2

区块链使用哈希来检测这些块有没有发生任何更改。 通过在生成下一个块的哈希时包含上一个块的哈希值,这些块会通过哈希链接在一起。

区块链的工作原理2

区块链通过使用哈希来证明数据历史记录未更改,从而实现信任。 通过在创建新块时包含上一个块的哈希,将按顺序创建不可变的事务链。

区块链的工作原理2

如果修改链中的任何块,后面块的哈希将有所不同。 验证时就会发现差异。

受信任的逻辑

通过区块链,我们可以存储一致且可信的数据。 如何添加在每个节点一致执行的逻辑?

在我们的方案中,需要使用逻辑来将产品的责任从一个参与者转到另一个参与者。 我们还需要使用 IoT 温度传感器中的数据来了解温度是否过高。

分散式应用程序 (DApp) 是分布式计算系统上的应用程序。 在本模块中,我们重点介绍如何使用 Ethereum 区块链协议。 Ethereum DApps 称为智能合同。 智能合同包含作为事务的一部分执行的逻辑。 在 Ethereum 上,我们使用名为 Solidity 的编程语言对逻辑进行编程。

智能合同部署到区块链,并按地址引用。 要使用智能合同,需创建一个实例。 智能合同实例包含状态数据和程序逻辑。 在我们的方案中,智能合同实例包含各种数据,例如负责的参与者、位置以及产品温度是否不合规等。 我们可以执行函数来转移责任或接收实例的温度遥测数据。

区块链的工作原理2

将产品的责任转到另一方时,会执行事务。 智能合同逻辑会更新状态数据。 在我们的冰淇淋方案中,冰淇淋工厂运输系统会为新的冰淇淋运输活动创建一个智能合同实例。 工厂运输系统将发送一个事务,该事务调用 TransferResponsibility 函数以将运输责任方改为 Contoso East shipping。 区块链网络将该事务发送到所有节点。 每个节点都会执行该智能合同逻辑。

区块链的工作原理2

在运输过程中,如果制冷装置出现故障且冰淇淋温度升至冰点以上,会怎样? IoT 温度传感器会监视冰淇淋温度并定期发送事务。 如果温度高于冰点,智能合同逻辑会将这批货物标记为不合规。

区块链的工作原理2

由于事务包含在块链中,因此当货物状态变为不合规时,会有一个不可变的记录。 冰淇淋店可以拒绝收货,避免产生食物安全问题。

与区块链中的数据一样,智能合同也是不可变的。 逻辑在部署后便不能更改。 因此,你可以信任智能合同逻辑始终在所有节点上一致地执行。 任何代码更改都需要在新的地址部署新的智能合同。