@uniswap/universal-router
Version:
Smart contracts for Universal Router
344 lines (343 loc) • 21.9 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ReenteringWETH",
"sourceName": "contracts/test/ReenteringWETH.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "NotAllowedReenter",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "deposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_universalRouter",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "setParameters",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60e0604052346103dc576040516100176040826103e0565b600e81526d0a4cacadce8cae4d2dcceae8aa8960931b60208201526040516100406040826103e0565b6002815261525760f01b602082015281516001600160401b03811161030f576100695f54610403565b601f811161038d575b50602092601f821160011461032e57928192935f92610323575b50508160011b915f199060031b1c1916175f555b80516001600160401b03811161030f576100bb600154610403565b601f81116102ac575b50602091601f821160011461024c579181925f92610241575b50508160011b915f199060031b1c1916176001555b60126080524660a0526040515f905f54918161010d84610403565b9182825260208201946001811690815f1461022557506001146101db575b610137925003826103e0565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a081526101ab60c0826103e0565b51902060c052604051610c6d908161043c823960805181610786015260a05181610a7c015260c05181610aa20152f35b505f80805290915f805160206110a98339815191525b8183106102095750509060206101379282010161012b565b60209193508060019154838588010152019101909183926101f1565b60ff191686525061013792151560051b8201602001905061012b565b015190505f806100dd565b601f1982169260015f52805f20915f5b8581106102945750836001951061027c575b505050811b016001556100f2565b01515f1960f88460031b161c191690555f808061026e565b9192602060018192868501518155019401920161025c565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c81019160208410610305575b601f0160051c01905b8181106102fa57506100c4565b5f81556001016102ed565b90915081906102e4565b634e487b7160e01b5f52604160045260245ffd5b015190505f8061008c565b601f198216935f8052805f20915f5b868110610375575083600195961061035d575b505050811b015f556100a0565b01515f1960f88460031b161c191690555f8080610350565b9192602060018192868501518155019401920161033d565b5f80525f805160206110a9833981519152601f830160051c810191602084106103d2575b601f0160051c01905b8181106103c75750610072565b5f81556001016103ba565b90915081906103b1565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761030f57604052565b90600182811c92168015610431575b602083101461041d57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161041256fe60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146108fd578063095ea7b31461089757806318160ddd1461087a57806323b872dd146107aa578063313ce5671461076d5780633644e5151461074b578063472ec4431461059857806370a08231146105605780637ecebe001461052857806395d89b411461044e578063a9059cbb146103d9578063d0e30db0146102f8578063d505accf146101075763dd62ed3e146100b3575f80fd5b34610103576040366003190112610103576100cc610a11565b6100d4610a27565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b5f80fd5b346101035760e036600319011261010357610120610a11565b610128610a27565b6044356064359260843560ff8116809103610103574285106102b95760805f91602093610153610a79565b9060018060a01b03169687855260058652604085209889549960018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c081526101d060e0826109c4565b519020604051908682019261190160f01b845260228301526042820152604281526101fc6062826109c4565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102ae575f516001600160a01b0316801515806102a5575b1561026f575f80516020610c41833981519152916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b5082811461023a565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601760248201527614115493525517d11150511312539157d1561412549151604a1b6044820152606490fd5b5f3660031901126101035760065460405160075490916001600160a01b0316905f906103238161098c565b90600181169081156103c45750600114610387575b5090825f8094819403925af13d15610382573d61035481610a3d565b9061036260405192836109c4565b81525f60203d92013e5b1561037357005b631683197360e31b5f5260045ffd5b61036c565b60075f9081529091505f80516020610c018339815191525b8282106103b0575050820182610338565b60018160209254848801520191019061039f565b60ff1916855250801515028301905082610338565b34610103576040366003190112610103576103f2610a11565b60243590335f52600360205260405f2061040d838254610a58565b905560018060a01b031690815f52600360205260405f208181540190556040519081525f80516020610c2183398151915260203392a3602060405160018152f35b34610103575f366003190112610103576040515f60015461046e8161098c565b808452906001811690811561050457506001146104a6575b6104a283610496818503826109c4565b604051918291826109e7565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106104ea57509091508101602001610496610486565b9192600181602092548385880101520191019092916104d2565b60ff191660208086019190915291151560051b840190910191506104969050610486565b34610103576020366003190112610103576001600160a01b03610549610a11565b165f526005602052602060405f2054604051908152f35b34610103576020366003190112610103576001600160a01b03610581610a11565b165f526003602052602060405f2054604051908152f35b34610103576040366003190112610103576105b1610a11565b602435906001600160401b03821161010357366023830112156101035781600401356105dc81610a3d565b926105ea60405194856109c4565b818452366024838301011161010357815f926024602093018387013784010152600680546001600160a01b0319166001600160a01b039290921691909117905580516001600160401b0381116107375761064560075461098c565b601f81116106e7575b50602091601f821160011461068a579181925f9261067f575b50505f19600383901b1c191660019190911b17600755005b015190508280610667565b601f1982169260075f52805f20915f5b8581106106cf575083600195106106b7575b505050811b01600755005b01515f1960f88460031b161c191690558280806106ac565b9192602060018192868501518155019401920161069a565b60075f525f80516020610c01833981519152601f830160051c8101916020841061072d575b601f0160051c01905b818110610722575061064e565b5f8155600101610715565b909150819061070c565b634e487b7160e01b5f52604160045260245ffd5b34610103575f366003190112610103576020610765610a79565b604051908152f35b34610103575f36600319011261010357602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610103576060366003190112610103576107c3610a11565b6107cb610a27565b6001600160a01b039091165f818152600460209081526040808320338452825290912054604435935f80516020610c2183398151915292918560018201610855575b5050835f526003825260405f20610825868254610a58565b90556001600160a01b03165f818152600383526040908190208054870190555194855293a3602060405160018152f35b61085e91610a58565b5f8581526004845260408082203383528552902055858561080d565b34610103575f366003190112610103576020600254604051908152f35b34610103576040366003190112610103576108b0610a11565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182525f80516020610c4183398151915291a3602060405160018152f35b34610103575f366003190112610103576040515f805461091c8161098c565b80845290600181169081156105045750600114610943576104a283610496818503826109c4565b5f8080525f80516020610be1833981519152939250905b80821061097257509091508101602001610496610486565b91926001816020925483858801015201910190929161095a565b90600182811c921680156109ba575b60208310146109a657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161099b565b601f909101601f19168101906001600160401b0382119082101761073757604052565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010357565b602435906001600160a01b038216820361010357565b6001600160401b03811161073757601f01601f191660200190565b91908203918211610a6557565b634e487b7160e01b5f52601160045260245ffd5b467f000000000000000000000000000000000000000000000000000000000000000003610ac4577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610ad68461098c565b9182825260208201946001811690815f14610bc45750600114610b7a575b610b00925003826109c4565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610b7460c0826109c4565b51902090565b505f80805290915f80516020610be18339815191525b818310610ba8575050906020610b0092820101610af4565b6020919350806001915483858801015201910190918392610b90565b60ff1916865250610b0092151560051b82016020019050610af456fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a164736f6c634300081a000a290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563",
"deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde03146108fd578063095ea7b31461089757806318160ddd1461087a57806323b872dd146107aa578063313ce5671461076d5780633644e5151461074b578063472ec4431461059857806370a08231146105605780637ecebe001461052857806395d89b411461044e578063a9059cbb146103d9578063d0e30db0146102f8578063d505accf146101075763dd62ed3e146100b3575f80fd5b34610103576040366003190112610103576100cc610a11565b6100d4610a27565b6001600160a01b039182165f908152600460209081526040808320949093168252928352819020549051908152f35b5f80fd5b346101035760e036600319011261010357610120610a11565b610128610a27565b6044356064359260843560ff8116809103610103574285106102b95760805f91602093610153610a79565b9060018060a01b03169687855260058652604085209889549960018b01905560405190878201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b03169a8b6060840152898784015260a083015260c082015260c081526101d060e0826109c4565b519020604051908682019261190160f01b845260228301526042820152604281526101fc6062826109c4565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156102ae575f516001600160a01b0316801515806102a5575b1561026f575f80516020610c41833981519152916020915f526004825260405f20855f5282528060405f2055604051908152a3005b60405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606490fd5b5082811461023a565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601760248201527614115493525517d11150511312539157d1561412549151604a1b6044820152606490fd5b5f3660031901126101035760065460405160075490916001600160a01b0316905f906103238161098c565b90600181169081156103c45750600114610387575b5090825f8094819403925af13d15610382573d61035481610a3d565b9061036260405192836109c4565b81525f60203d92013e5b1561037357005b631683197360e31b5f5260045ffd5b61036c565b60075f9081529091505f80516020610c018339815191525b8282106103b0575050820182610338565b60018160209254848801520191019061039f565b60ff1916855250801515028301905082610338565b34610103576040366003190112610103576103f2610a11565b60243590335f52600360205260405f2061040d838254610a58565b905560018060a01b031690815f52600360205260405f208181540190556040519081525f80516020610c2183398151915260203392a3602060405160018152f35b34610103575f366003190112610103576040515f60015461046e8161098c565b808452906001811690811561050457506001146104a6575b6104a283610496818503826109c4565b604051918291826109e7565b0390f35b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106104ea57509091508101602001610496610486565b9192600181602092548385880101520191019092916104d2565b60ff191660208086019190915291151560051b840190910191506104969050610486565b34610103576020366003190112610103576001600160a01b03610549610a11565b165f526005602052602060405f2054604051908152f35b34610103576020366003190112610103576001600160a01b03610581610a11565b165f526003602052602060405f2054604051908152f35b34610103576040366003190112610103576105b1610a11565b602435906001600160401b03821161010357366023830112156101035781600401356105dc81610a3d565b926105ea60405194856109c4565b818452366024838301011161010357815f926024602093018387013784010152600680546001600160a01b0319166001600160a01b039290921691909117905580516001600160401b0381116107375761064560075461098c565b601f81116106e7575b50602091601f821160011461068a579181925f9261067f575b50505f19600383901b1c191660019190911b17600755005b015190508280610667565b601f1982169260075f52805f20915f5b8581106106cf575083600195106106b7575b505050811b01600755005b01515f1960f88460031b161c191690558280806106ac565b9192602060018192868501518155019401920161069a565b60075f525f80516020610c01833981519152601f830160051c8101916020841061072d575b601f0160051c01905b818110610722575061064e565b5f8155600101610715565b909150819061070c565b634e487b7160e01b5f52604160045260245ffd5b34610103575f366003190112610103576020610765610a79565b604051908152f35b34610103575f36600319011261010357602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610103576060366003190112610103576107c3610a11565b6107cb610a27565b6001600160a01b039091165f818152600460209081526040808320338452825290912054604435935f80516020610c2183398151915292918560018201610855575b5050835f526003825260405f20610825868254610a58565b90556001600160a01b03165f818152600383526040908190208054870190555194855293a3602060405160018152f35b61085e91610a58565b5f8581526004845260408082203383528552902055858561080d565b34610103575f366003190112610103576020600254604051908152f35b34610103576040366003190112610103576108b0610a11565b335f8181526004602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182525f80516020610c4183398151915291a3602060405160018152f35b34610103575f366003190112610103576040515f805461091c8161098c565b80845290600181169081156105045750600114610943576104a283610496818503826109c4565b5f8080525f80516020610be1833981519152939250905b80821061097257509091508101602001610496610486565b91926001816020925483858801015201910190929161095a565b90600182811c921680156109ba575b60208310146109a657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161099b565b601f909101601f19168101906001600160401b0382119082101761073757604052565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361010357565b602435906001600160a01b038216820361010357565b6001600160401b03811161073757601f01601f191660200190565b91908203918211610a6557565b634e487b7160e01b5f52601160045260245ffd5b467f000000000000000000000000000000000000000000000000000000000000000003610ac4577f000000000000000000000000000000000000000000000000000000000000000090565b6040515f905f549181610ad68461098c565b9182825260208201946001811690815f14610bc45750600114610b7a575b610b00925003826109c4565b51902060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152610b7460c0826109c4565b51902090565b505f80805290915f80516020610be18339815191525b818310610ba8575050906020610b0092820101610af4565b6020919350806001915483858801015201910190918392610b90565b60ff1916865250610b0092151560051b82016020019050610af456fe290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a164736f6c634300081a000a",
"linkReferences": {},
"deployedLinkReferences": {}
}