1

我有一个针对 orbit-db 的特定用例,但我对某种安全含义有点模糊。

我正在开发一个用户通过 Tronweb 钱包帐户登录的网络应用程序。
人们可以发布问题,而其他人可以回答问题并获得报酬。
为此,我将受访者的公钥添加到问题中并将其保存到 Orbit db。

现在我的理解是,对任何 orbit-db 实例的默认访问权限都授予默认创建它的应用程序(身份),或者您可以添加自定义访问控制器。比方说,如果我想创建一个数据库来管理标签,我可以基于我自己的 tronlink 帐户创建一个身份,并需要登录才能创建这些标签。没有其他人能够访问该数据库。

现在我有点模糊的是在以下情况下会发生什么:

一个 OP 创建一个问题,一个响应者注册一个答案。
当 OP 接受答案时,将执行通过 Tronlink 插件的支付。
但是由于 OrbitDB 可以在没有服务器的情况下运行(即基于本地 IPFS 节点的 p2p),所以阻止任何人在客户端 Javascript 代码中设置断点、获取 db 实例的句柄并执行更新调用来更新被访者在该问题文档中的本地地址,之后它将被同步到其他节点?
我将受访者的公钥存储在orbitdb中,但交易仍然由OP通过Tronlink钱包插件确认。但是,您仍然不能假设所有用户每次都检查它。

由于不涉及服务器,我看不出如何防止不需要的各方损坏数据库客户端。
你能开导吗?如果我的问题不清楚,请告诉我。

4

1 回答 1

0

是什么阻止了任何人在客户端 Javascript 代码中设置断点,获取数据库实例的句柄,并执行更新调用以在该问题文档中本地更新受访者的地址

没有什么。

之后它会同步到其他节点吗?

这就是 OrbitDB 安全的原因。每个同步到新节点的文档都需要通过该节点的验证器功能。因此,诚实的(具有正确 AccessController 的)节点将过滤掉恶意更改


那是什么意思?一个节点可以“损坏”,但不能“损坏”网络中的其他节点。

于 2021-09-15T15:55:25.970 回答