如何在Hyperledger Composer交易处理器函数内获取交易ID?
在Hyperledger Composer交易处理器中获取交易ID的方法
嘿,刚好对这个问题很熟悉!在Hyperledger Composer的交易处理器函数里,获取交易ID其实非常直接——你只需要利用传入的交易上下文(Context)对象就能拿到。
核心思路
交易处理器函数的第二个参数ctx(上下文)里内置了交易的元数据,其中就包含了系统生成的唯一交易ID,直接通过ctx.transactionId就能访问到。
代码示例
假设你有一个自定义交易MyTransaction,对应的处理器函数可以这么写:
/** * 自定义交易处理器 * @param {org.example.MyTransaction} tx 交易实例 * @param {composer.runtime.Context} ctx 交易上下文 * @transaction */ async function handleMyTransaction(tx, ctx) { // 从上下文获取交易ID const txId = ctx.transactionId; // 这里可以根据需求使用交易ID,比如打印日志 console.log("当前提交的交易ID: ", txId); // 示例:把交易ID关联到某个资产上 const targetAsset = await ctx.assetRegistry.get('org.example.MyAsset', tx.assetId); targetAsset.lastTxId = txId; await ctx.assetRegistry.update(targetAsset); // 如果需要把交易ID返回给调用客户端,直接返回即可 return { transactionId: txId }; }
额外说明
ctx.transactionId是Hyperledger Fabric自动生成的唯一标识符,和你在交易模型里定义的字段无关- 客户端调用这个交易后,会收到处理器返回的对象,里面就包含了交易ID,刚好满足你“提交交易后返回交易ID”的需求
内容的提问来源于stack exchange,提问作者vanita siraparapu
相关产品推荐
相关产品推荐

