如何获得属于一个州的所有交易?

时间:2019-02-09 15:29:43

标签: hyperledger-sawtooth

我想获取属于给定状态的所有交易。这应该按时间顺序并使用REST。

有什么建议可以轻松实现这一目标?

2 个答案:

答案 0 :(得分:1)

完成此操作的推荐方法是检测事务处理器,以便它发出Events并订阅来自可以将信息存储在链下DB中的单独应用程序的事务。这样,您就可以灵活地完成所需的工作。

没有REST API可以满足您的要求。您可以使用它们的组合来实现它,但这将意味着深入各个块和事务列表,并过滤到要获取其更改历史记录的状态。

答案 1 :(得分:-1)

好吧,我不知道这里的状态是什么,如果您想获得与特定家庭相关的状态,则可以使用对python或其他语言不太了解的任何sdks来完成,但是对于javascript,我有按照以下方式完成。

const getNamespace = family => hash(family).substring(0, 6);

const geturl = `${restapiAddress}/state`;
axios(geturl, {
  method: 'GET',
})
  .then((response) => {
    const resultArray = response.data.data.reduce((res, element) => {
      const namespace = getNamespace('TPNAME');
      if (element.address.startsWith(namespace)) {
        const buf = Buffer.from(element.data, 'base64');
        const responseStr = cbor.decode(Buffer.from(buf));
        res.push(responseStr);
      }
      return res;
    }, []);
     console.log("result",resultArray);
  })
  .catch((err) => {
    if (err.response && err.response.status === 404) { console.log("nothing there"); } else {
      console.log("Error");
    }
  });

然后您可以进行排序或您想执行的任何操作