Solidity
ERC20 介面覆蓋 ERC721 功能 - 可以遵守標準嗎?
是否有可能有一個合約既可以根據標準生成和管理自己的 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 } }