是否可以创建我们自己的 Solidity 库?
Is it possible to create our own Solidity library?
我现在正在基于以太坊构建一个彩票D-App。
在创建智能合约时,我发现 Solidity 没有生成随机数的方法。
Solidity 无法创建随机数。
所以我创建了自己的方法来使用时间戳生成随机数。
是否可以把这个方法做成一个库,让大家通过一个简单的导入命令就可以使用我的方法?
如果可能的话,许多开发人员可以节省他们的时间。
我相信你可以部署你的 PRNG 合约,并允许其他调用者使用它,或者将它的代码发布到某个 public 存储库(例如 github),允许开发人员直接添加它在他们的代码中(使用导入命令)。
请注意使用块时间戳作为随机源被认为是不安全的:
https://medium.com/dedaub/bad-randomness-is-even-dicier-than-you-think-7fa2c6e0c2cd
这 post 建议使用外部 oracle(需要对 oracle 操作员的信任)或一些提交-揭示方案(例如,多个参与者发送随机种子的哈希值——这是承诺,并且后来他们都揭示了原像。种子被定义为原像的某种混合,例如它们的异或)。
另一种方法是使用 VDF(可验证延迟函数)。这是 StarkWare 实现 VDF 的示例,包括有关如何使用它在以太坊上提供安全随机性的详细信息 https://medium.com/starkware/presenting-veedo-e4bbff77c7ae。
我现在正在基于以太坊构建一个彩票D-App。 在创建智能合约时,我发现 Solidity 没有生成随机数的方法。 Solidity 无法创建随机数。 所以我创建了自己的方法来使用时间戳生成随机数。
是否可以把这个方法做成一个库,让大家通过一个简单的导入命令就可以使用我的方法?
如果可能的话,许多开发人员可以节省他们的时间。
我相信你可以部署你的 PRNG 合约,并允许其他调用者使用它,或者将它的代码发布到某个 public 存储库(例如 github),允许开发人员直接添加它在他们的代码中(使用导入命令)。
请注意使用块时间戳作为随机源被认为是不安全的: https://medium.com/dedaub/bad-randomness-is-even-dicier-than-you-think-7fa2c6e0c2cd
这 post 建议使用外部 oracle(需要对 oracle 操作员的信任)或一些提交-揭示方案(例如,多个参与者发送随机种子的哈希值——这是承诺,并且后来他们都揭示了原像。种子被定义为原像的某种混合,例如它们的异或)。 另一种方法是使用 VDF(可验证延迟函数)。这是 StarkWare 实现 VDF 的示例,包括有关如何使用它在以太坊上提供安全随机性的详细信息 https://medium.com/starkware/presenting-veedo-e4bbff77c7ae。