我需要为我正在开发的dApp生成随机数,我希望不必为Chainlink或Provable这样的服务付费。并不是说我不支持他们的工作,但自举就是自举,资金有限。
我认为开发一个独立的预言机是可能的,但可能会因为安全是一个完整的行业而气馁,但我想知道是否有人尝试过,或者这里的专家是否相信有可能做到这一点,并对这个决定感到满意。
期待一场精彩的辩论!也许这是一个简单的问题,我错过了一些。。。
由于区块链是确定性的,随机数和区块链不能很好地结合在一起。这意味着你不应该依赖任何链上值作为随机性的来源(如区块哈希或时间戳等(,因为它们可以由矿工操纵或预先确定,并用于与依赖随机性的合同博弈。
除此之外,只使用预言机从外部API获取随机性来源也是非常不鼓励的,因为没有真正的方法知道返回的数字是否是实际上是随机的,因为它是由恶意行为者发送回来的,该恶意行为者想要与依赖它的合同进行博弈。即,如果您的预言机返回23456789,你如何知道这是一个真正的随机数,或者它是否会返回,因为它知道如果使用了这个随机数,它可以调用你的合同并获取资金?
这就是可验证随机数发挥作用的地方。有了可验证的随机数,就使用了预言机,但在调用预言机之前(调用将种子传递给预言机(,会有一个基于某种东西生成的种子(可能是用户输入或链上数据,这无关紧要(。一旦预言机生成了一个随机数,VRF函数就可以使用数学和密码学来实际验证随机数是根据初始种子创建的,并且它不仅仅是从空中提取的随机数(而且可能是恶意的(。这就是VRF的神奇之处,它能够验证随机数是用之前提交的种子创建的。因此,将VRF函数与预言机相结合是智能合约中安全可靠的随机性来源的最佳方式。
Chainlink VRF是区块链随机性的行业标准,我强烈建议你研究一下。如果你担心它的成本,我认为在Polygon或BSC等其他链上使用它更便宜。此外,如果你与Chainlink实验室团队交谈,他们可能会达成一些协议,这些协议对于自举项目来说更可行