Solidity

合約繼承自代幣合約

  • July 26, 2021

我有一個代幣合約(ERC20)A,然後是另一個從 A 繼承的合約 B(B 是 A)。A 契約 C 進口 B.

問題是:

  1. 如果我單獨部署B,這個合約B的地址是不是代表代幣A的地址?
  2. 如果我先部署 A,然後部署 B,那麼從 A 鑄造的代幣和從 B 鑄造的代幣是否相同?
  3. 如果我單獨部署 C,Token A 的地址是什麼?
  4. 如果我想在 C 中鑄造 A 代幣,最好的方法是什麼?

請幫幫我。我很混亂。

  1. 由於 B 繼承自 A 部署的合約包含來自 A 和 B 的方法,因此相同的地址可以用作 A 和 B
  2. 當合約 A 和 B 分別部署時,您有兩個不相關的地址。例如,您可以兩次部署同一個合約並獲得兩個完全獨立的地址。
  3. 如果合約 C 導入 B 但它沒有從 B 繼承,那麼在部署 C 時就沒有 A。

如果合約 C 繼承自 B 則 1. 應用 C 地址 = B 地址 = A 地址 4. 從合約 C 中導入 A,並將 A 地址作為參數傳遞給 C 建構子,在其中儲存對 A 的引用。

import "A.sol";

contract C {
   A token;

   constructor(A _token) public {
       token = _token;
   }

   function deposit(uint amount) public {
       token.transferFrom(msg.sender, address(this), amount);
   }
}

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