Роялти на смарт-контракты реализованы, но владелец не получает никакой доли

Я реализовал функцию роялти в свой смарт-контракт ERC721 NFT. Когда я развертываю свой контракт, контракт роялти совпадает с моим адресом, поэтому я определил, на какой адрес будут переведены роялти.

Во-вторых, я установил свой процент на 3. Стоимость чеканки составляет 2,50 eth, поэтому всякий раз, когда люди продают свои NFT, я должен получать процент 3%, который равен 0,075 eth, но я этого не делаю. Я вижу, что когда я вызываю функцию RoyaltyInfo в Remix с tokenID, получатель является адресом владельца, а значение равно 0,075 eth в wei.

Затем я развертываю свой контракт в rinkeby, чеканю несколько токенов с другим адресом, продаю их на другой адрес в OpenSea, но баланс владельца контракта не увеличивается, равно как и баланс контракта.

Вот мои коды. Кстати, я получаю это предупреждение, но не понимаю, как мне разместить там _tokenId, он выдает ошибку всякий раз, когда я пытаюсь это сделать.

          uint256 public royaltyPerc = 3;
    uint256 public cost = 2.50 ether;
    address payable public royaltyContract;
    bytes4 private constant _INTERFACE_ID_ERC2981 = 0x2a55205a;
    
    
    constructor (
        string memory _name,
        string memory _symbol,
        string memory _initBaseURI
        ) ERC721(_name, _symbol) {
            
            royaltyContract = payable(msg.sender);
            setBaseURI(_initBaseURI);
            mint(msg.sender, 1);
            
        }
        
        // public
        function mint(address _to, uint256 _mintAmount) public payable {
            uint256 supply = totalSupply();
            require(!paused);
            require(_mintAmount > 0);
            require(_mintAmount <= maxMintAmount);
            require(supply + _mintAmount <= maxSupply);
            
            for (uint256 i = 1; i <= _mintAmount; i++) {
                _safeMint(_to, supply + i);
            }
            
        }
        
        function setRoyaltyPercent ( uint256 _perc ) public onlyOwner {
            royaltyPerc = _perc;
        }

        function royaltyInfo( uint256 _tokenId, uint256 _salePrice ) public  view returns ( address receiver, uint256 royaltyAmount ) {
            receiver = royaltyContract;
            royaltyAmount = _salePrice * royaltyPerc / 100;
        }

Я также попытался найти другой пример, чтобы попытаться понять, в чем я ошибаюсь, но я понятия не имею, откуда эти значения «получатель» и «значение», поскольку мы их не присваиваем.

0 ответов

Другие вопросы по тегам