【问题标题】:error executing hyperledger fabric code on localhost:3000 (through REST) - transactionId在 localhost:3000(通过 REST)上执行超级账本结构代码时出错 - transactionId
【发布时间】:2018-11-10 02:23:41
【问题描述】:

我在参考以下内容时尝试执行两个账户之间转账的示例案例: https://medium.freecodecamp.org/ultimate-end-to-end-tutorial-to-create-an-application-on-blockchain-using-hyperledger-3a83a80cbc71

我已经执行了所有步骤,从创建 .bna 和 .card 到安装它们、启动网络等。 在创建 RESTful API 时,我可以在 localhost:3000/explore 上看到区块链。 我还可以添加客户及其关联的帐户详细信息。

但是,在进行转账时,默认会生成两个字段:transactionId 和 timestamp。

screenshot showing 2 additional fields - timestamp and transactionId

造成麻烦的是transactionId。 它不允许我将其留空、填充任意值或完全删除该字段。

error when transactionId field is left blank

更新

即使写了"transactionId" : true"transactionId" : false,问题仍然存在。

另一个用户遇到了类似的问题。他们通过将 npm 和 node.js 设为非 root 来修复它。就我而言,它已经是非root用户了。 it is non-root 是否可能没有正确安装 npm 和 node.js?我在安装过程中收到了一些错误npm errors during installation

即使删除 transactionIdtimestamp 字段后,它也不起作用

【问题讨论】:

    标签: localhost hyperledger-fabric hyperledger-composer


    【解决方案1】:

    transactionID(在示例中)理想情况下不应出现在 POST 操作的 Swagger 示例中。该示例是由 LoopBack 代码(不是 Composer)完成的 LoopBack 到 Swagger 转换生成的。您需要在 JSON 中删除它(最好是时间戳,因为 Composer 会更新自己的)。

    请参阅Why can I submit a transactionID with a transaction in hyperledger composer REST? 以获得答案。此环回/招摇问题是针对环回创建的 - 创建的最后一个问题是 https://github.com/strongloop/loopback/issues/3510

    【讨论】:

    • 感谢您提供的链接,但问题仍然存在,即使在写入 "transactionId" : false 或 "transactionId":true 之后也是如此
    • 您好 .. 1) 您是否阅读了上述答案中的“您需要删除它”的说明?和 2)在您的第一个屏幕截图中,您的交易无论如何都不会工作 - 您需要为其提供完全限定的关系 - 用于交易中的“从”和“到”。所以一个例子是 { "$class": "test.AccountTransfer", "from": "resource:test.Account#1", "to": "resource:test.Account#2", "amount": 10 } ` - 我建议如果您对本教程有任何问题,请联系该教程的作者(这是某人个人分享给整个社区的内容)。但上述方法有效。
    • 我看到您添加了有关 root 与非 root Composer 安装的更新(与您遇到的业务网络/REST 问题无关,这仍然有效,因为毕竟您创建了资产和参与者) .最简单的方法是按照说明 hyperledger.github.io/composer/latest/installing/… 明确说明不要使用 sudo 或 root - 并在此处遵循 npm 最佳实践 docs.npmjs.com/getting-started/fixing-npm-permissions 并使用节点版本管理器来管理您的节点版本
    • 1) 我确实尝试过完全删除这些行,但它给了我错误 500。2) 我知道,我后来确实纠正了它,通过编写一个完全限定的“to”和“from”来引用通过其 ID 帐户。它仍然没有工作。另外,我确实按照网站上的说明进行操作,npm 是非 root 用户。但是我收到的错误太多了,请您看看它们是否正常?截图是 URL 编辑的,“安装过程中出现 npm 错误”
    • this 链接判断,您的节点包管理器可能已损坏 - 存在一些问题(如您所见,在 Composer 之外)导致您的屏幕截图中发布错误
    【解决方案2】:

    在研究并花费大量时间之后,我也遇到了类似的问题。我发现这不是 npm 的问题,并且 node.js,如果我们以非 root 身份安装它们。这是 Loopback 的问题,因此您必须在没有的情况下发出 API JSON 请求 "transactionId""timestamp" 表示同时删除它们。它会正常工作,因为环回招摇会自动更新它。 我希望它适用于所有面临同样问题的人。

    【讨论】:

    • 如何以及在何处删除它们?喜欢在我的链码中做一些事情并重新部署?
    • @deltu100 当您从 swagger 和邮递员发出 api 请求时。
    • aah ok,所以基本上忽略了这些属性的添加。我以为其他服务器不会喜欢这样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多