视图函数未返回的智能合约数据的安全性

Security of smart contract data not returned by a view function

我浏览了一些 NEAR 演示,发现了一个关于发布可以回答的测验以获得奖励的演示。

源代码在这里:https://github.com/Learn-NEAR/NCD-02--riddles

视频在这里:https://www.youtube.com/watch?v=u4jP2a2mbiI

我的问题与答案哈希的安全性有关。在当前的实现中,答案哈希与测验一起返回,但我想如果不是这样会更好。即便如此,如果哈希存储在 NEAR 网络上而没有被任何视图函数返回,那会有多安全?如果此合约中的代码在拒绝额外尝试之前只对每个帐户提供一定数量的猜测,那么有人是否能够通过其他方式获得哈希值,然后通过使用本地哈希值答案获得尽可能多的答案sha256 并查看是否匹配?

谢谢, 克里斯托弗

肯定链上的所有数据都是 public 所以存储任何东西都意味着与世界分享它

处理此类问题的一种合理方法是存储散列,但 接受原始字符串然后对其进行散列 比较两者以获得可能的胜利

如果您选择安全的散列算法,那么几乎不可能根据看到的散列来猜测所需的输入字符串

更新:有人向我指出这个答案不完整或具有误导性,因为如果可能的答案集很小,那么这仍然是一个糟糕的设计,因为您可以快速散列所有可能的答案(例如. 在多项选择题中)并将这些哈希值与答案进行比较


注意!

GitHub 组织中以 NCD 开头的所有内容都是学生在学习 NEAR

一周后提交的项目

所以那里有一大堆错误等待社区专家进行重构和评论

提交研究的项目均以前缀 sample

开头

这些是我们生成的,旨在帮助学生探索 NEAR 平台上合同的可能性以及我们所有的核心合同、Sputnik 合同和其他合同

在此处注册以了解有关 NEAR 认证开发人员计划的更多信息:https://near.training