【问题标题】:Can you develop an independent, secure oracle for your dApp?你能为你的 dApp 开发一个独立、安全的预言机吗?
【发布时间】:2022-01-18 13:13:16
【问题描述】:
我需要为我正在开发的 dApp 生成随机数,并且希望不必为像 Chainlink 或 Provable 这样的服务付费。不是我不支持他们的工作,而是bootstrapping就是bootstrapping,资金有限。
我假设开发一个独立的预言机是可能的,但可能不鼓励,因为安全是一个完整的行业,但我想知道是否有人尝试过,或者这里的任何专家是否认为可以做到这一点并且对决定。
期待一场热烈的辩论!也许这是一个简单的问题要回答,我错过了一些东西......
【问题讨论】:
标签:
security
random
ethereum
solidity
chainlink
【解决方案1】:
随机数和区块链不能很好地结合在一起,因为区块链是确定性的。这意味着你不应该依赖任何链上值作为随机源(如区块哈希或时间戳等),因为它们可以被矿工操纵或预先确定,并用于玩依赖随机性的合约。
除此之外,强烈建议不要仅使用预言机从外部 API 获取随机源,因为没有真正的方法知道返回的数字是否实际上是随机的它被一个恶意行为者发回,想要玩弄你依赖它的合约。即如果你的预言机返回 123456789,你怎么知道它是否是一个真正的随机数,或者它是否返回它,因为它知道如果使用该随机数,它可以调用你的合约并获取资金?
这就是可验证的随机数发挥作用的地方。使用可验证的随机数,使用预言机,但是在调用预言机(调用将种子传递给神谕)。一旦预言机生成了一个随机数,VRF 函数就可以使用数学和密码学来实际验证该随机数是根据初始种子创建的,并且它不仅仅是从空中抽取的一些随机数(并且可能是恶意的)。这就是 VRF 的魔力,能够验证随机数是使用先前提交的种子创建的。因此,将 VRF 函数与预言机相结合是智能合约中安全可靠的随机源的最佳方式。
Chainlink VRF 是区块链随机性的行业标准,我强烈建议您研究一下。如果您担心成本,我认为在 Polygon 或 BSC 等其他链上使用它会更便宜。此外,如果您与 Chainlink Labs 团队交谈,他们可能会达成一些对自举项目更可行的协议