在这个辞旧迎新之际,先给大家拜个早年!祝大家新年快乐,龙年继续努力! 这篇文章主要介绍一下适合初学者学习的一个游戏网站
🤔今天给大家介绍一下这个适合小白学习的僵尸游戏,可以一边学习一边看到效果,以下是学习链接
加密僵尸游戏中文版。cryptozombies.io/zh/course/
为什么选择这个,请听我细细道来
在教程中我选择了两个我认为比较适合初学者学习的两个章节,我们可以看到图中的内容
第一章的内容有以下几点:
1、solidity语言的编码知识,主要是介绍solidity的特性和编码方式
2、ERC721非同质化货币的概念和相关的接口标准
3、web3.js主要用于和solidity智能合约进行交互,前端主要使用web3.js相关的接口,实例化智能合约的ABI和Address,使用合约实例去调用方法,与WEB2有些许的不同
第二章的内容有以下几点:
1、Truffle,那么什么是truffle呢,相当于java中的sringcloud或者是vue脚手架,使用truffle,能够帮我们实例化一个基础的项目,里面包含以下的目录,学习truffle,能够帮助我们去编译、测试、部署我们的合约代码
build目录是我们使用truffle migration时,会将我们的solidity代码编译生成.json格式的文件,文件中的内容是用于web3.js用来实例化与链上的solidity交互
contracts目录中包含的是solidity开发的后端代码
migrations则是我们编写的编译规则,需要编译的solidity
test目录则是存放我们编写的测试用例,用来在不部署合约的情况下测试我们的代码
预言机
我的理解,预言机也是寻常的solidity,根据学习课程的用例,描述预言机是用来访问链下的数据,但是交互逻辑是,链下的数据通过前端获取,前端A执行更新的预言机B接口,预言机B接口回调了我们需要更新的C实例接口进行更新并发送事件,前端A根据监听事件知道更新成功,就获取C实例的数据进行展示
以下是上述几个目录的样例内容
migrations则是我们编写的编译规则
const NoahNFT = artifacts.require("NoahNFT");
// const { copyAbiFile, updateEnvFile } = require("../../utils/deploy");
module.exports = function (deployer) {
deployer.deploy(NoahNFT, 'name:Noah', 'symbol:NOAH', 'baseURI:https://gateway.pinata.cloud/ipfs/').then(() => {
// const { address } = NoahNFT;
// copyAbiFile('noah-nft');
// updateEnvFile('NFT_CONTRACT_ADDRESS', address);
});
};
test目录的内容
const MetaCoin = artifacts.require("NoahNFT");
contract("MetaCoin", (accounts) => {
it("should put 10000 MetaCoin in the first account", async () => {
const metaCoinInstance = await MetaCoin.deployed();
const balance = await metaCoinInstance.balanceOf(accounts[0]);
assert.equal(balance.valueOf(), 0, "10000 wasn't in the first account");
});
it("should call a function that depends on a linked library", async () => {
const metaCoinInstance = await MetaCoin.deployed();
const metaCoinBalance = (
await metaCoinInstance.balanceOf(accounts[0])
).toNumber();
const metaCoinEthBalance = (
await metaCoinInstance.balanceOf(accounts[0])
).toNumber();
assert.equal(
metaCoinEthBalance,
2 * metaCoinBalance,
"Library function returned unexpected function, linkage may be broken"
);
});
it("should send coin correctly", async () => {
const metaCoinInstance = await MetaCoin.deployed();
// Setup 2 accounts.
const accountOne = accounts[0];
const accountTwo = accounts[1];
// Get initial balances of first and second account.
const accountOneStartingBalance = (
await metaCoinInstance.balanceOf(accountOne)
).toNumber();
const accountTwoStartingBalance = (
await metaCoinInstance.balanceOf(accountTwo)
).toNumber();
// Make transaction from first account to second.
const amount = 10;
await metaCoinInstance.transferFrom(accountOne,accountTwo, amount, { from: accountOne });
// Get balances of first and second account after the transactions.
const accountOneEndingBalance = (
await metaCoinInstance.balanceOf(accountOne)
).toNumber();
const accountTwoEndingBalance = (
await metaCoinInstance.balanceOf(accountTwo)
).toNumber();
assert.equal(
accountOneEndingBalance,
accountOneStartingBalance - amount,
"Amount wasn't correctly taken from the sender"
);
assert.equal(
accountTwoEndingBalance,
accountTwoStartingBalance + amount,
"Amount wasn't correctly sent to the receiver"
);
});
});
contracts目录
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IERC721 {
// 事件
event Transfer(
address indexed from,
address indexed to,
uint256 indexed tokenId
);
event Approval(
address indexed owner,
address indexed approved,
uint256 indexed tokenId
);
event ApprovalForAll(
address indexed owner,
address indexed operator,
bool approved
);
// 查询
function balanceOf(address owner) external view returns (uint256 balance);
function ownerOf(uint256 tokenId) external view returns (address owner);
// 转账
function safeTransferFrom(
address from,
address to,
uint256 tokenId
) external;
function safeTransferFrom(
address from,
address to,
uint256 tokenId,
bytes calldata data
) external;
function transferFrom(
address from,
address to,
uint256 tokenId
) external;
// 授权
function approve(address to, uint256 tokenId) external;
function getApproved(uint256 tokenId)
external
view
returns (address operator);
function setApprovalForAll(address operator, bool _approved) external;
function isApprovedForAll(address owner, address operator)
external
view
returns (bool);
}
interface IERC721Receiver {
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
interface IERC721Metadata {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
build目录,编译出来的solidity代码
{
"contractName": "IERC721",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/IERC721.sol\":{\"keccak256\":\"0x70be2d6bc1ab763925b82bde15c2c5fc3baed193998633f42c18c46c30eb914c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://382ee7b3003bfaf140e5e8d29753bd1f2ef920c81527b3df86a77541636e065b\",\"dweb:/ipfs/QmVNxZw1P4mJrZ1WRTCeqTzn8NHpSGa9zhQLQ45TPo32FK\"]}},\"version\":1}",
"bytecode": "0x",
"deployedBytecode": "0x",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [],
"sourceMap": "",
"deployedSourceMap": "",
"source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\ninterface IERC721 {\n // 事件\n event Transfer(\n address indexed from,\n address indexed to,\n uint256 indexed tokenId\n );\n event Approval(\n address indexed owner,\n address indexed approved,\n uint256 indexed tokenId\n );\n event ApprovalForAll(\n address indexed owner,\n address indexed operator,\n bool approved\n );\n\n // 查询\n function balanceOf(address owner) external view returns (uint256 balance);\n\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n // 转账\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) external;\n\n // 授权\n function approve(address to, uint256 tokenId) external;\n\n function getApproved(uint256 tokenId)\n external\n view\n returns (address operator);\n\n function setApprovalForAll(address operator, bool _approved) external;\n\n function isApprovedForAll(address owner, address operator)\n external\n view\n returns (bool);\n}\n\ninterface IERC721Receiver {\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n\ninterface IERC721Metadata {\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n",
"sourcePath": "E:\\随便玩玩\\web3-examples-main\\web3-test\\contracts\\IERC721.sol",
"ast": {
"absolutePath": "project:/contracts/IERC721.sol",
"exportedSymbols": {
"IERC721": [
109
],
"IERC721Metadata": [
141
],
"IERC721Receiver": [
123
]
},
"id": 142,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 11,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:23:1"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IERC721",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 109,
"linearizedBaseContracts": [
109
],
"name": "IERC721",
"nameLocation": "68:7:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"id": 19,
"name": "Transfer",
"nameLocation": "102:8:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 18,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 13,
"indexed": true,
"mutability": "mutable",
"name": "from",
"nameLocation": "136:4:1",
"nodeType": "VariableDeclaration",
"scope": 19,
"src": "120:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "120:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 15,
"indexed": true,
"mutability": "mutable",
"name": "to",
"nameLocation": "166:2:1",
"nodeType": "VariableDeclaration",
"scope": 19,
"src": "150:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 14,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "150:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17,
"indexed": true,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "194:7:1",
"nodeType": "VariableDeclaration",
"scope": 19,
"src": "178:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 16,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "178:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "110:97:1"
},
"src": "96:112:1"
},
{
"anonymous": false,
"eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
"id": 27,
"name": "Approval",
"nameLocation": "219:8:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 26,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "253:5:1",
"nodeType": "VariableDeclaration",
"scope": 27,
"src": "237:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 20,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "237:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 23,
"indexed": true,
"mutability": "mutable",
"name": "approved",
"nameLocation": "284:8:1",
"nodeType": "VariableDeclaration",
"scope": 27,
"src": "268:24:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 22,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "268:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 25,
"indexed": true,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "318:7:1",
"nodeType": "VariableDeclaration",
"scope": 27,
"src": "302:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 24,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "302:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "227:104:1"
},
"src": "213:119:1"
},
{
"anonymous": false,
"eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31",
"id": 35,
"name": "ApprovalForAll",
"nameLocation": "343:14:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 34,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 29,
"indexed": true,
"mutability": "mutable",
"name": "owner",
"nameLocation": "383:5:1",
"nodeType": "VariableDeclaration",
"scope": 35,
"src": "367:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 28,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "367:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 31,
"indexed": true,
"mutability": "mutable",
"name": "operator",
"nameLocation": "414:8:1",
"nodeType": "VariableDeclaration",
"scope": 35,
"src": "398:24:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 30,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "398:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 33,
"indexed": false,
"mutability": "mutable",
"name": "approved",
"nameLocation": "437:8:1",
"nodeType": "VariableDeclaration",
"scope": 35,
"src": "432:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 32,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "432:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "357:94:1"
},
"src": "337:115:1"
},
{
"functionSelector": "70a08231",
"id": 42,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "balanceOf",
"nameLocation": "481:9:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 38,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 37,
"mutability": "mutable",
"name": "owner",
"nameLocation": "499:5:1",
"nodeType": "VariableDeclaration",
"scope": 42,
"src": "491:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 36,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "491:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "490:15:1"
},
"returnParameters": {
"id": 41,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 40,
"mutability": "mutable",
"name": "balance",
"nameLocation": "537:7:1",
"nodeType": "VariableDeclaration",
"scope": 42,
"src": "529:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 39,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "529:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "528:17:1"
},
"scope": 109,
"src": "472:74:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "6352211e",
"id": 49,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "ownerOf",
"nameLocation": "561:7:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 45,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "577:7:1",
"nodeType": "VariableDeclaration",
"scope": 49,
"src": "569:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 43,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "569:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "568:17:1"
},
"returnParameters": {
"id": 48,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 47,
"mutability": "mutable",
"name": "owner",
"nameLocation": "617:5:1",
"nodeType": "VariableDeclaration",
"scope": 49,
"src": "609:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 46,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "609:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "608:15:1"
},
"scope": 109,
"src": "552:72:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "42842e0e",
"id": 58,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "653:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 56,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 51,
"mutability": "mutable",
"name": "from",
"nameLocation": "687:4:1",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "679:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 50,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "679:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 53,
"mutability": "mutable",
"name": "to",
"nameLocation": "709:2:1",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "701:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 52,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "701:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 55,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "729:7:1",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "721:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 54,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "721:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "669:73:1"
},
"returnParameters": {
"id": 57,
"nodeType": "ParameterList",
"parameters": [],
"src": "751:0:1"
},
"scope": 109,
"src": "644:108:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "b88d4fde",
"id": 69,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "safeTransferFrom",
"nameLocation": "767:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 67,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 60,
"mutability": "mutable",
"name": "from",
"nameLocation": "801:4:1",
"nodeType": "VariableDeclaration",
"scope": 69,
"src": "793:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 59,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "793:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 62,
"mutability": "mutable",
"name": "to",
"nameLocation": "823:2:1",
"nodeType": "VariableDeclaration",
"scope": 69,
"src": "815:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 61,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "815:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 64,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "843:7:1",
"nodeType": "VariableDeclaration",
"scope": 69,
"src": "835:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 63,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "835:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 66,
"mutability": "mutable",
"name": "data",
"nameLocation": "875:4:1",
"nodeType": "VariableDeclaration",
"scope": 69,
"src": "860:19:1",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 65,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "860:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "783:102:1"
},
"returnParameters": {
"id": 68,
"nodeType": "ParameterList",
"parameters": [],
"src": "894:0:1"
},
"scope": 109,
"src": "758:137:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "23b872dd",
"id": 78,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "transferFrom",
"nameLocation": "910:12:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 76,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 71,
"mutability": "mutable",
"name": "from",
"nameLocation": "940:4:1",
"nodeType": "VariableDeclaration",
"scope": 78,
"src": "932:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 70,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "932:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 73,
"mutability": "mutable",
"name": "to",
"nameLocation": "962:2:1",
"nodeType": "VariableDeclaration",
"scope": 78,
"src": "954:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 72,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "954:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 75,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "982:7:1",
"nodeType": "VariableDeclaration",
"scope": 78,
"src": "974:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 74,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "974:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "922:73:1"
},
"returnParameters": {
"id": 77,
"nodeType": "ParameterList",
"parameters": [],
"src": "1004:0:1"
},
"scope": 109,
"src": "901:104:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "095ea7b3",
"id": 85,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "approve",
"nameLocation": "1034:7:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 83,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 80,
"mutability": "mutable",
"name": "to",
"nameLocation": "1050:2:1",
"nodeType": "VariableDeclaration",
"scope": 85,
"src": "1042:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 79,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1042:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 82,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "1062:7:1",
"nodeType": "VariableDeclaration",
"scope": 85,
"src": "1054:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 81,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1054:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1041:29:1"
},
"returnParameters": {
"id": 84,
"nodeType": "ParameterList",
"parameters": [],
"src": "1079:0:1"
},
"scope": 109,
"src": "1025:55:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "081812fc",
"id": 92,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "getApproved",
"nameLocation": "1095:11:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 88,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 87,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "1115:7:1",
"nodeType": "VariableDeclaration",
"scope": 92,
"src": "1107:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 86,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1107:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1106:17:1"
},
"returnParameters": {
"id": 91,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 90,
"mutability": "mutable",
"name": "operator",
"nameLocation": "1179:8:1",
"nodeType": "VariableDeclaration",
"scope": 92,
"src": "1171:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 89,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1171:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1170:18:1"
},
"scope": 109,
"src": "1086:103:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "a22cb465",
"id": 99,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setApprovalForAll",
"nameLocation": "1204:17:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 97,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 94,
"mutability": "mutable",
"name": "operator",
"nameLocation": "1230:8:1",
"nodeType": "VariableDeclaration",
"scope": 99,
"src": "1222:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 93,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1222:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 96,
"mutability": "mutable",
"name": "_approved",
"nameLocation": "1245:9:1",
"nodeType": "VariableDeclaration",
"scope": 99,
"src": "1240:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 95,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1240:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1221:34:1"
},
"returnParameters": {
"id": 98,
"nodeType": "ParameterList",
"parameters": [],
"src": "1264:0:1"
},
"scope": 109,
"src": "1195:70:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "e985e9c5",
"id": 108,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "isApprovedForAll",
"nameLocation": "1280:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 104,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 101,
"mutability": "mutable",
"name": "owner",
"nameLocation": "1305:5:1",
"nodeType": "VariableDeclaration",
"scope": 108,
"src": "1297:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 100,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1297:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 103,
"mutability": "mutable",
"name": "operator",
"nameLocation": "1320:8:1",
"nodeType": "VariableDeclaration",
"scope": 108,
"src": "1312:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 102,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1312:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1296:33:1"
},
"returnParameters": {
"id": 107,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 106,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 108,
"src": "1377:4:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 105,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1377:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "1376:6:1"
},
"scope": 109,
"src": "1271:112:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 142,
"src": "58:1327:1",
"usedErrors": [],
"usedEvents": [
19,
27,
35
]
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IERC721Receiver",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 123,
"linearizedBaseContracts": [
123
],
"name": "IERC721Receiver",
"nameLocation": "1397:15:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "150b7a02",
"id": 122,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "onERC721Received",
"nameLocation": "1428:16:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 118,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 111,
"mutability": "mutable",
"name": "operator",
"nameLocation": "1462:8:1",
"nodeType": "VariableDeclaration",
"scope": 122,
"src": "1454:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 110,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1454:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 113,
"mutability": "mutable",
"name": "from",
"nameLocation": "1488:4:1",
"nodeType": "VariableDeclaration",
"scope": 122,
"src": "1480:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 112,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1480:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 115,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "1510:7:1",
"nodeType": "VariableDeclaration",
"scope": 122,
"src": "1502:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 114,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1502:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 117,
"mutability": "mutable",
"name": "data",
"nameLocation": "1542:4:1",
"nodeType": "VariableDeclaration",
"scope": 122,
"src": "1527:19:1",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 116,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1527:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1444:108:1"
},
"returnParameters": {
"id": 121,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 120,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 122,
"src": "1571:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 119,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "1571:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "1570:8:1"
},
"scope": 123,
"src": "1419:160:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 142,
"src": "1387:194:1",
"usedErrors": [],
"usedEvents": []
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IERC721Metadata",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 141,
"linearizedBaseContracts": [
141
],
"name": "IERC721Metadata",
"nameLocation": "1593:15:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "06fdde03",
"id": 128,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "name",
"nameLocation": "1624:4:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 124,
"nodeType": "ParameterList",
"parameters": [],
"src": "1628:2:1"
},
"returnParameters": {
"id": 127,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 126,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 128,
"src": "1654:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 125,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1654:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1653:15:1"
},
"scope": 141,
"src": "1615:54:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "95d89b41",
"id": 133,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "symbol",
"nameLocation": "1684:6:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 129,
"nodeType": "ParameterList",
"parameters": [],
"src": "1690:2:1"
},
"returnParameters": {
"id": 132,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 131,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 133,
"src": "1716:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 130,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1716:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1715:15:1"
},
"scope": 141,
"src": "1675:56:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"functionSelector": "c87b56dd",
"id": 140,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "tokenURI",
"nameLocation": "1746:8:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 136,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 135,
"mutability": "mutable",
"name": "tokenId",
"nameLocation": "1763:7:1",
"nodeType": "VariableDeclaration",
"scope": 140,
"src": "1755:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 134,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1755:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "1754:17:1"
},
"returnParameters": {
"id": 139,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 138,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 140,
"src": "1795:13:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 137,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "1795:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "1794:15:1"
},
"scope": 141,
"src": "1737:73:1",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"scope": 142,
"src": "1583:229:1",
"usedErrors": [],
"usedEvents": []
}
],
"src": "33:1780:1"
},
"compiler": {
"name": "solc",
"version": "0.8.21+commit.d9974bed.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.4.16",
"updatedAt": "2024-01-26T06:46:42.262Z",
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}