Hyperledger锯齿数据权限

问题描述 投票:0回答:1

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

blockchain hyperledger hyperledger-sawtooth
1个回答
0
投票

有可能。您的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是否正在更新。如果是这样,则读取您之前存储的设置密钥。检查公钥是否与交易请求标头中的公钥匹配。

© www.soinside.com 2019 - 2024. All rights reserved.