@openzeppelin/contracts-upgradeable
Version:
Secure Smart Contract library for Solidity
455 lines (454 loc) • 19.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC6909TokenSupplyUpgradeable",
"sourceName": "contracts/token/ERC6909/extensions/ERC6909TokenSupplyUpgradeable.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ERC6909InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ERC6909InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC6909InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC6909InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC6909InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC6909InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "OperatorSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "isOperator",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setOperator",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6080604052348015600e575f5ffd5b506109bd8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061008f575f3560e01c8063558a729711610063578063558a729714610102578063598af9e714610115578063b6363cf214610128578063bd85b0391461013b578063fe99049a14610179575f5ffd5b8062fdd58e1461009357806301ffc9a7146100b9578063095bcdb6146100dc578063426a8493146100ef575b5f5ffd5b6100a66100a13660046107c8565b61018c565b6040519081526020015b60405180910390f35b6100cc6100c73660046107f0565b6101c2565b60405190151581526020016100b0565b6100cc6100ea36600461081e565b6101e6565b6100cc6100fd36600461081e565b6101fd565b6100cc61011036600461084e565b61020a565b6100a6610123366004610887565b61021f565b6100cc6101363660046108c1565b61026f565b6100a66101493660046108f2565b5f9081527f9cc5ac148333cfaf4365d2d67a9c6e8fab8e8f4df7b569f769d68102db719600602052604090205490565b6100cc610187366004610909565b6102bb565b6001600160a01b0382165f9081525f5160206109685f395f51905f52602090815260408083208484529091529020545b92915050565b5f6001600160e01b0319821663bd85b03960e01b14806101bc57506101bc82610306565b5f6101f33385858561033a565b5060019392505050565b5f6101f3338585856103a3565b5f610216338484610473565b50600192915050565b6001600160a01b039283165f9081527f9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf902602090815260408083209490951682529283528381209181529152205490565b6001600160a01b039182165f9081527f9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf9016020908152604080832093909416825291909152205460ff1690565b5f336001600160a01b03861681148015906102dd57506102db868261026f565b155b156102ee576102ee86828686610542565b6102fa8686868661033a565b50600195945050505050565b5f6001600160e01b03198216630f632fb360e01b14806101bc57506301ffc9a760e01b6001600160e01b03198316146101bc565b6001600160a01b038416610368576040516301486a4160e71b81525f60048201526024015b60405180910390fd5b6001600160a01b03831661039157604051630b8bbd6160e41b81525f600482015260240161035f565b61039d848484846105e4565b50505050565b5f5160206109685f395f51905f526001600160a01b0385166103da5760405163198ecd5360e31b81525f600482015260240161035f565b6001600160a01b03841661040357604051636f65f46560e01b81525f600482015260240161035f565b6001600160a01b038581165f81815260028401602090815260408083209489168084529482528083208884528252918290208690559051858152869392917fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7910160405180910390a45050505050565b5f5160206109685f395f51905f526001600160a01b0384166104aa5760405163198ecd5360e31b81525f600482015260240161035f565b6001600160a01b0383166104d357604051636f65f46560e01b81525f600482015260240161035f565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350505050565b5f5160206109685f395f51905f525f61055c86868661021f565b90505f198110156105dc57828110156105a857604051632c51fead60e11b81526001600160a01b038616600482015260248101829052604481018490526064810185905260840161035f565b6001600160a01b038087165f9081526002840160209081526040808320938916835292815282822087835290522083820390555b505050505050565b7f9cc5ac148333cfaf4365d2d67a9c6e8fab8e8f4df7b569f769d68102db7196006106118585858561066c565b6001600160a01b038516610642575f838152602082905260408120805484929061063c908490610948565b90915550505b6001600160a01b038416610665575f838152602082905260409020805483900390555b5050505050565b5f5160206109685f395f51905f52336001600160a01b03861615610713576001600160a01b0386165f90815260208381526040808320878452909152902054838110156106ec576040516302c6d3fb60e61b81526001600160a01b038816600482015260248101829052604481018590526064810186905260840161035f565b6001600160a01b0387165f9081526020848152604080832088845290915290209084900390555b6001600160a01b03851615610758576001600160a01b0385165f9081526020838152604080832087845290915281208054859290610752908490610948565b90915550505b604080516001600160a01b03838116825260208201869052869281891692918a16917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a4505050505050565b80356001600160a01b03811681146107c3575f5ffd5b919050565b5f5f604083850312156107d9575f5ffd5b6107e2836107ad565b946020939093013593505050565b5f60208284031215610800575f5ffd5b81356001600160e01b031981168114610817575f5ffd5b9392505050565b5f5f5f60608486031215610830575f5ffd5b610839846107ad565b95602085013595506040909401359392505050565b5f5f6040838503121561085f575f5ffd5b610868836107ad565b91506020830135801515811461087c575f5ffd5b809150509250929050565b5f5f5f60608486031215610899575f5ffd5b6108a2846107ad565b92506108b0602085016107ad565b929592945050506040919091013590565b5f5f604083850312156108d2575f5ffd5b6108db836107ad565b91506108e9602084016107ad565b90509250929050565b5f60208284031215610902575f5ffd5b5035919050565b5f5f5f5f6080858703121561091c575f5ffd5b610925856107ad565b9350610933602086016107ad565b93969395505050506040820135916060013590565b808201808211156101bc57634e487b7160e01b5f52601160045260245ffdfe9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf900a2646970667358221220ac658756f88029ac899646c4ef322a01389a89fdfe39f387ddf13464d385795e64736f6c634300081f0033",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061008f575f3560e01c8063558a729711610063578063558a729714610102578063598af9e714610115578063b6363cf214610128578063bd85b0391461013b578063fe99049a14610179575f5ffd5b8062fdd58e1461009357806301ffc9a7146100b9578063095bcdb6146100dc578063426a8493146100ef575b5f5ffd5b6100a66100a13660046107c8565b61018c565b6040519081526020015b60405180910390f35b6100cc6100c73660046107f0565b6101c2565b60405190151581526020016100b0565b6100cc6100ea36600461081e565b6101e6565b6100cc6100fd36600461081e565b6101fd565b6100cc61011036600461084e565b61020a565b6100a6610123366004610887565b61021f565b6100cc6101363660046108c1565b61026f565b6100a66101493660046108f2565b5f9081527f9cc5ac148333cfaf4365d2d67a9c6e8fab8e8f4df7b569f769d68102db719600602052604090205490565b6100cc610187366004610909565b6102bb565b6001600160a01b0382165f9081525f5160206109685f395f51905f52602090815260408083208484529091529020545b92915050565b5f6001600160e01b0319821663bd85b03960e01b14806101bc57506101bc82610306565b5f6101f33385858561033a565b5060019392505050565b5f6101f3338585856103a3565b5f610216338484610473565b50600192915050565b6001600160a01b039283165f9081527f9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf902602090815260408083209490951682529283528381209181529152205490565b6001600160a01b039182165f9081527f9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf9016020908152604080832093909416825291909152205460ff1690565b5f336001600160a01b03861681148015906102dd57506102db868261026f565b155b156102ee576102ee86828686610542565b6102fa8686868661033a565b50600195945050505050565b5f6001600160e01b03198216630f632fb360e01b14806101bc57506301ffc9a760e01b6001600160e01b03198316146101bc565b6001600160a01b038416610368576040516301486a4160e71b81525f60048201526024015b60405180910390fd5b6001600160a01b03831661039157604051630b8bbd6160e41b81525f600482015260240161035f565b61039d848484846105e4565b50505050565b5f5160206109685f395f51905f526001600160a01b0385166103da5760405163198ecd5360e31b81525f600482015260240161035f565b6001600160a01b03841661040357604051636f65f46560e01b81525f600482015260240161035f565b6001600160a01b038581165f81815260028401602090815260408083209489168084529482528083208884528252918290208690559051858152869392917fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7910160405180910390a45050505050565b5f5160206109685f395f51905f526001600160a01b0384166104aa5760405163198ecd5360e31b81525f600482015260240161035f565b6001600160a01b0383166104d357604051636f65f46560e01b81525f600482015260240161035f565b6001600160a01b038481165f818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350505050565b5f5160206109685f395f51905f525f61055c86868661021f565b90505f198110156105dc57828110156105a857604051632c51fead60e11b81526001600160a01b038616600482015260248101829052604481018490526064810185905260840161035f565b6001600160a01b038087165f9081526002840160209081526040808320938916835292815282822087835290522083820390555b505050505050565b7f9cc5ac148333cfaf4365d2d67a9c6e8fab8e8f4df7b569f769d68102db7196006106118585858561066c565b6001600160a01b038516610642575f838152602082905260408120805484929061063c908490610948565b90915550505b6001600160a01b038416610665575f838152602082905260409020805483900390555b5050505050565b5f5160206109685f395f51905f52336001600160a01b03861615610713576001600160a01b0386165f90815260208381526040808320878452909152902054838110156106ec576040516302c6d3fb60e61b81526001600160a01b038816600482015260248101829052604481018590526064810186905260840161035f565b6001600160a01b0387165f9081526020848152604080832088845290915290209084900390555b6001600160a01b03851615610758576001600160a01b0385165f9081526020838152604080832087845290915281208054859290610752908490610948565b90915550505b604080516001600160a01b03838116825260208201869052869281891692918a16917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a4505050505050565b80356001600160a01b03811681146107c3575f5ffd5b919050565b5f5f604083850312156107d9575f5ffd5b6107e2836107ad565b946020939093013593505050565b5f60208284031215610800575f5ffd5b81356001600160e01b031981168114610817575f5ffd5b9392505050565b5f5f5f60608486031215610830575f5ffd5b610839846107ad565b95602085013595506040909401359392505050565b5f5f6040838503121561085f575f5ffd5b610868836107ad565b91506020830135801515811461087c575f5ffd5b809150509250929050565b5f5f5f60608486031215610899575f5ffd5b6108a2846107ad565b92506108b0602085016107ad565b929592945050506040919091013590565b5f5f604083850312156108d2575f5ffd5b6108db836107ad565b91506108e9602084016107ad565b90509250929050565b5f60208284031215610902575f5ffd5b5035919050565b5f5f5f5f6080858703121561091c575f5ffd5b610925856107ad565b9350610933602086016107ad565b93969395505050506040820135916060013590565b808201808211156101bc57634e487b7160e01b5f52601160045260245ffdfe9e75074fe7582401cc58901f6bda367c4d687c51437956963a7c06ef5cfaf900a2646970667358221220ac658756f88029ac899646c4ef322a01389a89fdfe39f387ddf13464d385795e64736f6c634300081f0033",
"linkReferences": {},
"deployedLinkReferences": {}
}