openzeppelin-contracts
Version:
Secure Smart Contract library for Solidity
141 lines (140 loc) • 16.4 kB
JSON
{
"contractName": "TransparentUpgradeableProxy",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_logic",
"type": "address"
},
{
"internalType": "address",
"name": "admin_",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "admin_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "changeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "implementation_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60806040526040516200105e3803806200105e83398181016040528101906200002991906200034d565b828160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd60001c6200005d919062000524565b60001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b14620000b9577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b620000ca82620001fb60201b60201c565b600081511115620001515760008273ffffffffffffffffffffffffffffffffffffffff1682604051620000fe91906200045b565b600060405180830381855af49150503d80600081146200013b576040519150601f19603f3d011682016040523d82523d6000602084013e62000140565b606091505b50509050806200014f57600080fd5b505b505060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610460001c62000185919062000524565b60001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b14620001e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b620001f2826200028260201b60201c565b5050506200064b565b6200021181620002b160201b6200041e1760201c565b62000253576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024a9062000474565b60405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b600080823b905060008111915050919050565b6000620002db620002d584620004ca565b62000496565b905082815260208101848484011115620002f457600080fd5b620003018482856200059d565b509392505050565b6000815190506200031a8162000631565b92915050565b600082601f8301126200033257600080fd5b815162000344848260208601620002c4565b91505092915050565b6000806000606084860312156200036357600080fd5b6000620003738682870162000309565b9350506020620003868682870162000309565b925050604084015167ffffffffffffffff811115620003a457600080fd5b620003b28682870162000320565b9150509250925092565b6000620003c982620004fd565b620003d5818562000508565b9350620003e78185602086016200059d565b80840191505092915050565b60006200040260368362000513565b91507f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160008301527f74696f6e206973206e6f74206120636f6e7472616374000000000000000000006020830152604082019050919050565b6000620004698284620003bc565b915081905092915050565b600060208201905081810360008301526200048f81620003f3565b9050919050565b6000604051905081810181811067ffffffffffffffff82111715620004c057620004bf62000602565b5b8060405250919050565b600067ffffffffffffffff821115620004e857620004e762000602565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000620005318262000593565b91506200053e8362000593565b925082821015620005545762000553620005d3565b5b828203905092915050565b60006200056c8262000573565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620005bd578082015181840152602081019050620005a0565b83811115620005cd576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200063c816200055f565b81146200064857600080fd5b50565b610a03806200065b6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100675780634f1ef286146100905780635c60da1b146100ac5780638f283970146100d7578063f851a440146101005761005d565b3661005d5761005b61012b565b005b61006561012b565b005b34801561007357600080fd5b5061008e6004803603810190610089919061068f565b610145565b005b6100aa60048036038101906100a591906106b8565b61019a565b005b3480156100b857600080fd5b506100c1610269565b6040516100ce91906108b5565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f9919061068f565b6102c1565b005b34801561010c57600080fd5b506101156103c6565b60405161012291906108b5565b60405180910390f35b610133610431565b61014361013e6104b1565b6104e2565b565b61014d610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018981610539565b610197565b61019661012b565b5b50565b6101a2610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561025b576101de83610539565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405161020792919061089c565b600060405180830381855af49150503d8060008114610242576040519150601f19603f3d011682016040523d82523d6000602084013e610247565b606091505b505090508061025557600080fd5b50610264565b61026361012b565b5b505050565b6000610273610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102b5576102ae6104b1565b90506102be565b6102bd61012b565b5b90565b6102c9610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103ba57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561036c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610363906108f9565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610395610508565b826040516103a49291906108d0565b60405180910390a16103b581610588565b6103c3565b6103c261012b565b5b50565b60006103d0610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104125761040b610508565b905061041b565b61041a61012b565b5b90565b600080823b905060008111915050919050565b610439610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610939565b60405180910390fd5b6104af6105b7565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610503573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b610542816105b9565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b565b6105c28161041e565b610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f890610919565b60405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60008135905061063f816109b6565b92915050565b60008083601f84011261065757600080fd5b8235905067ffffffffffffffff81111561067057600080fd5b60208301915083600182028301111561068857600080fd5b9250929050565b6000602082840312156106a157600080fd5b60006106af84828501610630565b91505092915050565b6000806000604084860312156106cd57600080fd5b60006106db86828701610630565b935050602084013567ffffffffffffffff8111156106f857600080fd5b61070486828701610645565b92509250509250925092565b61071981610975565b82525050565b600061072b8385610959565b93506107388385846109a7565b82840190509392505050565b6000610751603a83610964565b91507f5472616e73706172656e745570677261646561626c6550726f78793a206e657760008301527f2061646d696e20697320746865207a65726f20616464726573730000000000006020830152604082019050919050565b60006107b7603683610964565b91507f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160008301527f74696f6e206973206e6f74206120636f6e7472616374000000000000000000006020830152604082019050919050565b600061081d604283610964565b91507f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008301527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208301527f65740000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006108a982848661071f565b91508190509392505050565b60006020820190506108ca6000830184610710565b92915050565b60006040820190506108e56000830185610710565b6108f26020830184610710565b9392505050565b6000602082019050818103600083015261091281610744565b9050919050565b60006020820190508181036000830152610932816107aa565b9050919050565b6000602082019050818103600083015261095281610810565b9050919050565b600081905092915050565b600082825260208201905092915050565b600061098082610987565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b6109bf81610975565b81146109ca57600080fd5b5056fea2646970667358221220b3fb37b3b64dc87fb36793b8ebd4c6a7c9cd7b506028fb9fc852f19d390f4ef164736f6c63430008000033",
"deployedBytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100675780634f1ef286146100905780635c60da1b146100ac5780638f283970146100d7578063f851a440146101005761005d565b3661005d5761005b61012b565b005b61006561012b565b005b34801561007357600080fd5b5061008e6004803603810190610089919061068f565b610145565b005b6100aa60048036038101906100a591906106b8565b61019a565b005b3480156100b857600080fd5b506100c1610269565b6040516100ce91906108b5565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f9919061068f565b6102c1565b005b34801561010c57600080fd5b506101156103c6565b60405161012291906108b5565b60405180910390f35b610133610431565b61014361013e6104b1565b6104e2565b565b61014d610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018981610539565b610197565b61019661012b565b5b50565b6101a2610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561025b576101de83610539565b60008373ffffffffffffffffffffffffffffffffffffffff16838360405161020792919061089c565b600060405180830381855af49150503d8060008114610242576040519150601f19603f3d011682016040523d82523d6000602084013e610247565b606091505b505090508061025557600080fd5b50610264565b61026361012b565b5b505050565b6000610273610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102b5576102ae6104b1565b90506102be565b6102bd61012b565b5b90565b6102c9610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103ba57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561036c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610363906108f9565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610395610508565b826040516103a49291906108d0565b60405180910390a16103b581610588565b6103c3565b6103c261012b565b5b50565b60006103d0610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104125761040b610508565b905061041b565b61041a61012b565b5b90565b600080823b905060008111915050919050565b610439610508565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610939565b60405180910390fd5b6104af6105b7565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e8060008114610503573d6000f35b3d6000fd5b6000807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b9050805491505090565b610542816105b9565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b90508181555050565b565b6105c28161041e565b610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f890610919565b60405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60008135905061063f816109b6565b92915050565b60008083601f84011261065757600080fd5b8235905067ffffffffffffffff81111561067057600080fd5b60208301915083600182028301111561068857600080fd5b9250929050565b6000602082840312156106a157600080fd5b60006106af84828501610630565b91505092915050565b6000806000604084860312156106cd57600080fd5b60006106db86828701610630565b935050602084013567ffffffffffffffff8111156106f857600080fd5b61070486828701610645565b92509250509250925092565b61071981610975565b82525050565b600061072b8385610959565b93506107388385846109a7565b82840190509392505050565b6000610751603a83610964565b91507f5472616e73706172656e745570677261646561626c6550726f78793a206e657760008301527f2061646d696e20697320746865207a65726f20616464726573730000000000006020830152604082019050919050565b60006107b7603683610964565b91507f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160008301527f74696f6e206973206e6f74206120636f6e7472616374000000000000000000006020830152604082019050919050565b600061081d604283610964565b91507f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008301527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208301527f65740000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b60006108a982848661071f565b91508190509392505050565b60006020820190506108ca6000830184610710565b92915050565b60006040820190506108e56000830185610710565b6108f26020830184610710565b9392505050565b6000602082019050818103600083015261091281610744565b9050919050565b60006020820190508181036000830152610932816107aa565b9050919050565b6000602082019050818103600083015261095281610810565b9050919050565b600081905092915050565b600082825260208201905092915050565b600061098082610987565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b6109bf81610975565b81146109ca57600080fd5b5056fea2646970667358221220b3fb37b3b64dc87fb36793b8ebd4c6a7c9cd7b506028fb9fc852f19d390f4ef164736f6c63430008000033",
"linkReferences": {},
"deployedLinkReferences": {}
}