Роялти на смарт-контракты реализованы, но владелец не получает никакой доли
Я реализовал функцию роялти в свой смарт-контракт 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;
}
Я также попытался найти другой пример, чтобы попытаться понять, в чем я ошибаюсь, но я понятия не имею, откуда эти значения «получатель» и «значение», поскольку мы их не присваиваем.