Я смог создать элемент управления с помощью IFrame для размещения URL-адреса предварительного просмотра. Проблема заключалась в URL-адресе, который был передан.
Мы хотим заключить простой договор ERC-721, в котором владельцы токенов могут (с односторонним согласием) обменять их на любой другой существующий токен.
Эта реализация должна соответствовать стандартам ERC-721 и генерировать два Transfer
события при выполнении этого обмена.
Давайте начнем с базовой реализации, не основанной на эталонной реализации, и включающей в себя функцию mint, чтобы мы могли создать несколько токенов для игры:
pragma solidity 0.5.1;
import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token.sol";
contract ExchangeableTokens is ERC721 {
/**
* @dev Mints a new NFT.
* @param _to The address that will own the minted NFT.
* @param _tokenId of the NFT to be minted by the msg.sender.
*/
function mint(
address _to,
uint256 _tokenId
)
external
onlyOwner
{
super._mint(_to, _tokenId);
}
}
добавьте желаемое поведение:
function exchangeStars(uint256 myToken, uint256 theirToken, address them)
public
{
require (idToOwner[myToken] == msg.sender);
require (idToOwner[theirToken] == them);
require (them != address(0));
_transfer(them, myToken);
_transfer(msg.sender, theirToken);
}
Эта реализация соответствует стандарту и генерирует события по мере необходимости.