我已经为我的 ERC721 NFT 智能合约实现了版税功能。当我部署我的合同时,版税合同等于我的地址,所以这样我就定义了版税被转移到哪个地址。
其次,我将我的百分比设置为 3。铸币成本是 2.50 eth,所以每当人们出售他们的 NFT 时,我应该得到 %3 百分比,等于 0,075 eth,但我没有。我可以看到,当我在 Remix 中使用 tokenID 调用版税信息函数时,接收者是所有者的地址,在 wei 中的值为 0,075 eth。
然后我将我的合约部署到 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;
}
我还尝试找到另一个示例来尝试查看我错在哪里,但是我不知道这些“收件人”和“价值”值来自哪里,因为我们没有分配它们。