智能合约在区块链中存放在哪里(以太坊或Hyperledger)?

26

因此,让我们考虑一个典型的贸易金融流程。出口商部署了一份包含装运条件的合同,一旦部署完成,将生成哈希值。

问题:

1)合同存储在哪里?
2)海关和进口商等其他参与者如何访问此合同?
3)我们可以在区块链上激活参与者级别对合同的访问权限吗?


2
最好您能将不同的问题分开发表,而不是将它们合并成一个。这样有助于回答您的问题的人,也方便其他寻找至少一个问题答案的人。谢谢! - q9f
2个回答

26

以太坊和Hyperledger有几个方面使它们非常不同。我会提供一个相对简单的答案,不涉及过多细节。

首先,以太坊主要是公共区块链,按照一定的意图工作。类似地,比特币区块链也按照一定的意图工作。Hyperledger并不是这样,而是一个分布式账本技术的大伞(在我的术语中与区块链不同),它们都旨在提供非常灵活的架构,以便可以构建出各种带有所需属性的账本支持系统。可以将其比作提供生产自己的代币技术的虚构比特币大伞,其中包括一些可插拔的部件,例如共识、区块链存储、节点组成等等。简而言之,所有这些技术都旨在解决不同的问题,不能认为其中一个技术就适用于所有场景。

回到您的问题。

1)合约存储在哪里?

以太坊有合约(称为智能合约)存在链上,即代码被编译为字节码,生成的字节码通过交易发送到以太坊区块链进行持久化。一旦部署智能合约,就完成了此过程。之后可以使用其他交易与智能合约进行交互。

Hyperledger在理论上不会定义这个问题,它可能存储在账本上,也可能不存储。以Fabric为例,它将代码部署到一个隔离的Docker容器中,然后可以使用交易与其进行交互。

2)其他参与者,如海关和进口商如何访问该合约?

简短的回答是:他们通过凭证获得访问权限。

在以太坊和Hyperledger中,您都可以自行决定如何授权。我们现在假设在两种情况下,代码都已经作为代码在区块链上部署或在Fabric中作为Docker容器部署。

在以太坊中,代码是公开可见的,因此需要采取某种检查方式才能确保只允许应该与智能合约进行交互的用户进行交互。一种方法是检查发送者(交易的发送方),并仅允许特定的发送者进行交互。这类似于传统系统,通常需要进行身份验证/授权才能进入并查看/更改数据。
在Hyperledger中,它很可能以类似的方式进行建模,例如在Fabric中也有证书颁发机构(CA),颁发允许访问系统不同部分的证书,例如传输、认证或交易。
引用:
3)我们可以在区块链上激活参与者级别的合同访问权限吗?
答案是肯定的,在两个系统中,每个参与者都有凭据,智能合约的设计者可以利用这一点来控制访问权限。
另外,在Fabric中,还有可用于访问控制的分区分类账(channels)。
希望对你有所帮助。

12

1) 合约存储在分类账上。每当调用交易时,合约中对应的方法会在所有验证节点上执行。

2) 其他参与者可以使用预定义的用户凭证访问该合约,并使用这些凭证注册自己并在合约上调用交易。

3) 是的,我们可以通过为每个用户定义属性并仅允许拥有特定属性的用户访问合约的特定部分来激活参与者级别的访问权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接