Solidity

solidity 介面 - 呼叫未實現函式的合約

  • January 10, 2022

我是 Solidity 和 OOP 的新手。我試圖理解這個簡單的彩票遊戲範例中的程式碼:

https://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/

governance.randomness()當他們在 Lottery.sol 的第 57 行呼叫時,我感到很困惑。但我沒有看到該randomness()功能在任何契約文件中的任何地方實現。

下面的答案解釋了未實現的功能將在提供的合約中實現CEth cToken = CEth(_cEtherContract);

https://stackoverflow.com/a/64734548/4488843

但在 GitHub 彩票範例中,我看到該函式在任何合約(lottery.sol、randomness.sol 和Governance.sol)中都沒有聲明。

該函式是在呼叫治理合約的init()函式並設置randomness狀態變數時啟動的嗎?還是我在程式碼中遺漏了什麼?

對於您的randomness範例,重要的是要知道 Solidity 為所有公共變數生成 getter。在governance合約中有一個公共變數randomness,它生成上述函式作為 getter:https ://github.com/alphachainio/chainlink-lottery/blob/master/ethereum/contracts/Governance.sol#L6 。

一般來說,Solidity 在將合約轉換為特定介面時不會執行任何檢查。可以在此處找到更多資訊:如何初始化介面?(還有很多其他問題也解釋了這一點;))

引用自:https://ethereum.stackexchange.com/questions/118522