我想知道Hyperledger composer SDKs(Node JS)开箱即用是否提供了对事务数据的任何加密。让我们假设如果我通过以下composer终端命令将事务写入Hyperledger Fabric,
composer transaction submit -c admin@tutorial-network -d '{"$class":"net.biz.digitalPropertyNetwork.RegisterPropertyForSale","transactionId":"TRANSACTION_001","seller":"[email protected]","title":"TITLE_001"}'
或者通过hyperledger composer SDK提交trasaction,如下面的代码片段所示(摘自:https://hyperledger.github.io/composer/v0.19/reference/composer.transaction.submit.html)
const TransactionSubmit = require('composer-cli').Transaction.Submit;
let options = {
card: 'admin@tutorial-network',
data: '{"$class":"net.biz.digitalPropertyNetwork.RegisterPropertyForSale","transactionId":"TRANSACTION_001","seller":"[email protected]","title":"TITLE_001"}'
};
TransactionSubmit.handler(options);
我可以看到上述两种情况都提供了卡片值(admin @ tutorial-network)。我还可以理解,该卡包含必要的详细信息,以正确授权访问智能合约(在本例中为RegisterPropertyForSale)。
问题是,当我们将事务发送到超级分层结构(结构对等体)进行处理时,它们是否以加密形式发送并由卡签名?或者他们只是以纯文本格式发送?
Fabric事务未加密;他们当然签了名。所有SDK都使用与客户端标识关联的私钥(包括Composer使用的身份卡)对消息进行签名。
加密事务中的数据留给用户。请注意,如果您对数据进行加密,那么支持链代码/智能合约的每个对等方都必须能够访问加密/解密密钥。也可以通过事务消息中的瞬态数据字段传递它。您需要通过SDK直接执行此操作,因为这不是Composer客户端内置的。