Solidity
數據合約和應用合約拆分合約
我在 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。