连接断开时缓存数据

Caching data if connection is down

我有一个服务器,我正在中继我想对智能合约执行的每个操作,但假设服务器无法连接到智能合约(连接已断开)。我将如何缓存此类操作并在连接建立后执行它们。

我不太了解智能合约和区块链,但听起来您需要某种持久性数据存储。就像关系数据库一样。也许您可以使用 node-postgres and some kind of task scheduler, such as node-cron 之类的东西来经常查询和执行缓存的操作。

正如我所说,我对智能合约几乎一无所知,所以这种缓存可能与区块链等的去中心化原则相矛盾。

编辑: 如果容量足够低,您可以简单地使用 MapObject 缓存 in-memory,然后仍然可能使用某种任务调度实用程序。

与智能合约(SC)的交互有两种类型:

  • 调用更新状态(写入数据)
  • 调用查看函数(读取数据)

为了写入数据,我们需要:

  • SC地址
  • 方法名称
  • 数据选项
  • 参数
  • 发件人

所以我们可以组织成一个JS对象

{
 'address': 0x..,
 'method': 'transfer',
 'dataOption': { 
    'from': '0x...',
    'value': 100 (wei)
  },
 'params': ['param1', 'param2', ...]
}

然后您可以根据用例来确定我们应该在哪里使用它:

  • 可以使用以下方式存储在服务器上:SQL、MongoDB、json 文件...
  • 可以存储在 front-end 中,使用:存储