Solidity

ERC20 介面覆蓋 ERC721 功能 - 可以遵守標準嗎?

  • July 29, 2019

是否有可能有一個合約既可以根據標準生成和管理自己的 NFT ERC721,又可以呼叫外部ERC20合約?我的合約目前繼承了ERC20介面或合約,這樣就可以呼叫ERC20的一個實例

someCoin = ERCInterface(xxxxxx); 
myCoin.transferFrom();

但是,approve()andtransferFrom()函式在兩個標準中具有完全相同的參數數量和類型,因此 ERC721 函式會被覆蓋。有誰知道解決方法?或者,有人可以提供一個如何編寫直接契約呼叫的範例嗎?謝謝

一份合約不能同時實現 ERC-20 和 ERC-721。您必須設計您的系統,以便它們是單獨的合約(部署在單獨的地址)。

是的,您可以讓 ERC-721 合約呼叫 ERC-20 合約。沒有什麼可以使這成為問題。

您不必為了呼叫其方法而繼承介面:

interface Foo {
 function doFoo () external;
}

contract Bar {
 function bar (Foo foo) public {
   foo.doFoo ();
 }
}

僅當您希望自己簽約實現此介面時才需要繼承介面:

contract MyFoo is Foo {
 function doFoo () public {
   // Do something useful here
 }
}

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