0

在 Tendermint 上实现应用程序的良好架构是什么?我担心这三个部分。

  1. 要实现智能联系人等业务逻辑,我们可以在任何语言上实现。
  2. 智能联系人和tendermint核心之间的接口。2.1 向 Tendermint 提交交易,我们总是调用“broadcast_tx_commit”吗?如果我们使用这个接口,我们如何提交JSON格式的数据呢?2.2 查询数据,通过api abci_query查询和直接从数据库查询哪个更好。
  3. 数据库部分-对于招标,他们有 2 个数据库,分别是 clevel 存储块和 badger 存储数据(smartcontact 阶段)。如果我想用 MongoDB 或 mysql 等其他数据库替换 badger,这是一个好的设计还是我们会有合适的数据库?
4

1 回答 1

0

要实现智能联系人等业务逻辑,我们可以在任何语言上实现。

如果您希望使用 Tendermint 实施智能合约,请查看https://www.cosmwasm.com/、https://github.com/datachainlab/hyperminthttps://github.com/ndidplatform/smart-contract . 他们都使用 WASM https://en.wikipedia.org/wiki/WebAssembly

要向 Tendermint 提交交易,我们是否总是调用“broadcast_tx_commit”?如果我们使用这个接口,我们如何提交JSON格式的数据呢?2.2 查询数据,通过api abci_query查询和直接从数据库查询哪个更好。

/broadcast_tx_commit应在测试期间使用。在生产中,使用/broadcast_tx_sync/broadcast_tx_async https://docs.tendermint.com/master/rpc/#/Tx/broadcast_tx_sync

要查询数据,请使用/abci_query它将代理调用您的 ABCI 应用程序https://docs.tendermint.com/master/spec/abci/abci.html#query

至于 JSON,Tendermint 与交易内容无关,并将其视为原始字节,因此您可以使用任何您想要的格式。如果那是 JSON,客户端可以使用任何 JSON 编组器(例如https://golang.org/pkg/encoding/json/ )对事务进行编码。在您的 ABCI 应用程序CheckTx/DeliverTx方法中,您需要对交易进行解码。

数据库部分-对于招标,他们有 2 个数据库,分别是 clevel 存储块和 badger 存储数据(smartcontact 阶段)。如果我想用 MongoDB 或 mysql 等其他数据库替换 badger,这是一个好的设计还是我们会有合适的数据库?

在哪里存储应用程序状态取决于您。它取决于所需的数据库属性(是否嵌入、ACID、容错、无模式等)。

于 2020-12-05T07:39:40.640 回答