我对orbit-db有一个特定的用例,但我对某些安全含义有点模糊。
我正在开发一个web应用程序,用户通过Tronweb钱包帐户登录。
人们可以发布问题,而其他人可以回答问题并获得报酬。
为此,我将应答者的公钥添加到问题中,并将其保存到Orbit db中。
现在这是我的理解,默认访问任何轨道数据库实例是给应用程序(身份),默认创建它,或者你可以添加自定义访问控制器。比方说,如果我想创建一个数据库来管理标签,我可以基于我自己的tronlink帐户创建一个身份,并需要登录才能创建这些标签。没有人可以访问这个数据库。
现在我有点模糊的是当:
OP创建问题,应答者注册答案。
当OP接受答案时,通过Tronlink插件执行付款。
但是,既然OrbitDB可以在没有服务器的情况下运行(即基于本地IPFS节点的p2p),有什么能阻止任何人在客户端Javascript代码中设置断点,获得db实例的句柄,并执行更新调用以在该问题文档中本地更新应答者的地址,之后它将同步到其他节点?
我将应答者的公钥存储在orbitdb中,但交易当然还是通过Tronlink钱包插件由OP确认的。但是,您仍然不能假设所有用户每次都检查它。
由于没有涉及到服务器,我不知道如何防止数据库客户端被不想要的人破坏。
你能开导一下吗?如果我的问题不清楚,请告诉我。
是什么阻止任何人在客户端Javascript代码中设置断点,获取数据库实例的句柄,并执行更新调用以在该问题文档中本地更新应答者的地址
。
之后将同步到其他节点?
这是使OrbitDB安全的原因。同步到新节点的每个文档都需要通过该节点的验证器函数。所以,诚实(那些有正确AccessController的)节点将过滤掉恶意更改.
这是什么意思?一个节点可以被"损坏"。但它不能"腐败"。网络中的其他节点