我是刚接触过坚实和客观的东西。我试图理解这个简单的彩票游戏示例中的代码:
https://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/
当他们在Lottery.sol第57行中调用Lottery.sol时,我感到很困惑。但是我没有看到randomness()函数在任何契约文件中都没有实现。
下面的答案解释了未实现的函数将在CEth cToken = CEth(_cEtherContract);提供的合同中实现。
https://stackoverflow.com/a/64734548/4488843
但是在GitHub抽奖示例中,我看到函数在任何契约(lottery.sol、randomness.sol和governance.sol)中都没有声明。
是否在调用治理契约的init()函数并设置randomness状态变量时启动该函数?还是我在密码里遗漏了什么?
发布于 2022-01-10 15:59:54
对于您的randomness示例,重要的是要知道Solidity为所有公共变量生成getter。在governance契约中,有一个公共变量randomness,它以getter:https://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/Governance.sol#L6的形式生成上述函数。
通常,在将契约转换到该接口时,如果契约实现了特定的接口,则不执行任何检查。有关这方面的更多信息可以在这里找到:接口是如何初始化的? (还有很多其他问题也解释了这一点;)
https://ethereum.stackexchange.com/questions/118522
复制相似问题