【问题标题】:Hyperledger Sawtooth Data PermisionsHyperledger Sawtooth 数据权限
【发布时间】:2020-01-13 14:04:06
【问题描述】:

所以我一直在为我的下一个项目研究 Hyperledger Sawtooth,我想问问是否可以根据区块链的状态创建权限。例如,对于 Transaction Family IntegerKey,我只希望一个特定用户更改变量 X 的值。

【问题讨论】:

    标签: blockchain hyperledger hyperledger-sawtooth


    【解决方案1】:

    这是可能的。 IntegerKey 的事务处理程序中的智能合约逻辑应验证特定用户(您打算)是否正在更新变量 X 的值。

    开箱即用的identity-tp 将帮助您限制对可以执行 IntegerKey 事务的客户端的访问。此外,它将帮助您限制网络上仅允许运行的事务系列。但是当涉及到特定变量时,这取决于您决定将值存储在全局状态中的方式。一旦你决定了将变量存储在全局状态中的方式,你可以选择有一个验证逻辑来​​检查交易是否确实是由正确的人发送的。

    您可以使用在 TpProcessRequest 中发送的事务标头。这就是您在事务处理程序的 apply() 方法中看到的内容。您可以从交易标头中获取批处理器和交易签名者的公钥信息。

    以下解释了在 Go 中执行此操作的方法:

    在 Go SDK 的情况下,https://github.com/hyperledger/sawtooth-sdk-go/blob/727bba445a90dbcc5eb730fb20bf85084874d090/processor/handler.go#L65 是上下文如何传递给事务处理程序的 apply() 方法的。请注意请求https://github.com/hyperledger/sawtooth-sdk-go/blob/8422a911dbc13e735f3acbcc593914521468697d/protos/processor.proto#L82 中的标头参数。注意签名者的公钥信息https://github.com/hyperledger/sawtooth-sdk-go/blob/8422a911dbc13e735f3acbcc593914521468697d/protos/transaction.proto#L54。

    假设您使用settings-tp,并存储您自己的设置键以了解每个值的允许用户。如果是变量 X,则类似于 settings.variable.X=[List of <PUBLIC_KEY_OF_USER_INTENDED_FOR_X>]。在您的事务处理程序中,您可以查看该变量 X 是否正在更新。如果是这样,则读取您之前存储的设置密钥。检查公钥是否与交易请求标头中的公钥匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多