Solidity

數據合約和應用合約拆分合約

  • May 30, 2021

我在 2 個不同的 Solidity 文件中籤訂了 2 個契約。為簡單起見,假設合約被稱為 A 和 B。A 包含數據和一些簡單的函式呼叫,B 包含更複雜的函式呼叫。我現在嘗試實現的是讓 B 中的函式呼叫 A 中的函式。為了做到這一點,我嘗試在定義合約 B 的文件中定義一個介面。我這樣做如下

B.sol
contract B
{
 function b1()
 {
    #implementation
 }
}
contract A
{
 function f1;
 function f2;
}

在 A.sol 中,我執行了契約 A:

A.sol
contract A
{
 #implementation
}

但是,我的編譯器返回錯誤。它說合約 A 定義的 B.sol 應該被稱為抽象的。根據我遵循的課程,我不應該得到這個錯誤。根據課程,這是在 B.sol 中定義合約 A 介面的正確方法,以便合約 B 能夠使用合約 A 中定義的功能。其他任何人都知道這裡有什麼問題以及如何解決它?

該課程應該基於舊的solidity版本。從 solc v0.6 開始,必須將沒有實現的類聲明為抽像類。目前 solc 為 v0.8。

正如編譯器所建議的那樣,將 B 中的 A 聲明為抽象應該可以工作。另一種選擇是直接從 B.sol 中“導入”A.sol。

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