我正在探索有关Hyperledger Fabric的更多信息,并对私有数据感兴趣。据我了解,对等节点创建私有数据时,它将与该私有数据的哈希一起存储在该节点上。未经授权的节点将仅存储私有数据的哈希,以便他们可以验证其存在。
我正在使用4个节点(三个对等节点,一个有序节点),其中Org1(对等节点)具有唯一的特权来创建值,该值必须对Org2(对等节点)可见,但必须对Org3(对等节点)不可见)。有没有一种方法可以做到这一点。这是来自IBM Blockchain Platform vscode扩展教程的Typescript链码样本,用于创建私有数据。
@Transaction()
public async createMyPrivateAsset(ctx: Context, myPrivateAssetId: string): Promise<void> {
const exists: boolean = await this.myPrivateAssetExists(ctx, myPrivateAssetId);
if (exists) {
throw new Error(`The asset my private asset ${myPrivateAssetId} already exists`);
}
const privateAsset: MyPrivateAsset = new MyPrivateAsset();
const transientData: Map<string, Uint8Array> = ctx.stub.getTransient();
if (transientData.size === 0 || !transientData.has('privateValue')) {
throw new Error('The privateValue key was not specified in transient data. Please try again.');
}
privateAsset.privateValue = transientData.get('privateValue').toString();
const collectionName: string = await getCollectionName(ctx);
await ctx.stub.putPrivateData(collectionName, myPrivateAssetId, Buffer.from(JSON.stringify(privateAsset)));
}
我需要在这里更改一些内容吗?
提前致谢!
是的,私有数据非常适合这种情况。有两种基本方法。
使用后一种方法,您无需提前创建静态集合。如果将来再次授权Org3使用私有数据,它还允许您与Org3隐式集合共享私有数据。
请注意,通过这种方法,Org3将知道Org1和Org2正在共享某些数据,但不会看到私有数据本身。如果您不希望Org3知道发生了交易,则可以使用Org1和Org2的通道,而不要使用私有数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句