Fabric链码API文档 - Node.js

getBinding

getBinding()方法返回交易的nonce、creator和epoch拼接结果的SHA256哈希,作为特定 交易的表征,该哈希值可供那些需要独立验证身份的链码来阻止重放攻击。在一个链码提议 中,提交者需要首先被peer节点验证过身份,因此stub.getCreator()方法返回的身份就是 可信的。但是在某些场景下,链码需要独立域提议提交者对身份进行验证。

例如,Aclie是管理员,她安装并实例化一个管理资产的链码。在实例化链码时Alice将 Bob设置为资产的初始持有人。链码有一个方法transfer()用来将资产转义给另一个身份, 这通过修改资产的owner属性完成。显然应当只有Bob作为当前的资产持有者可以调用这个 方法。虽然链码可以依赖于stub.getCreator()方法来检查提交者的身份,并将其与当前 持有人进行比较,不过有时让资产持有人自己提交交易可能不现实。

让我们假设Bob雇了一家经纪公司来处理他的交易,经纪公司加入到区块链网络并以Bob的名义 执行交易。因此,链码必须有办法验证交易以确认资产转义交易有Bob的授权。这可以通过 要求Bob签名来实现。因此链码可以使用Bob的证书 —— 在链码实例化时获得 —— 来验证 签名并确保交易得到Bob的授权。

现在,为了组织Bob的签名在恶意攻击中被滥用,我们希望确保签名的唯一性。这就是引入 绑定概念的原因。正如之前所述,绑定字符串唯一地标识了包含链码提议和Bob授权的交易。 只要 sigma=Sign(BobSigningKey, tx.Payload||tx.Binding),就可以保证签名的唯一性 并且不会被作为漏洞而收到攻击。

返回值

返回一个16进制字符串,表示交易的nonce、creator和epoch拼接结果的SHA256哈希。