@levxdao/ens
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -67,31 +67,2 @@ [ | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "deposits", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -154,2 +125,31 @@ "name": "ens", | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "registrations", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -156,0 +156,0 @@ "name": "resolver", |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../../../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../../../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../../../../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../../../../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../build-info/5dee614c8adc5880a284eece24460d47.json" | ||
"buildInfo": "../../build-info/e5a918af443e7bf6873aa2972b3af1ec.json" | ||
} |
@@ -71,31 +71,2 @@ { | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "deposits", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -158,2 +129,31 @@ "name": "ens", | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "registrations", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -198,6 +198,6 @@ "name": "resolver", | ||
], | ||
"bytecode": "0x61012060405234801561001157600080fd5b50604051610ef3380380610ef383398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610dad610146600039600081816092015281816103fb01526104a901526000818161014c0152818161028b015281816103c0015261051401526000818160eb015281816102fe0152818161042a0152610551015260008181610181015281816106560152610830015260006101250152610dad6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063d70754ec14610147578063fc0c546a1461017c578063fc7e286d146101a357600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610b9f565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610c61565b61068e565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61016e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101e36101b1366004610c61565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b8151600381101561025c5760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b60448201526064015b60405180910390fd5b60008360405160200161026f9190610caa565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102c5929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103699190610cc6565b6001600160a01b0316146103b15760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b6044820152606401610253565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af115801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190610ce3565b5060078311156105d34262127500610cfc565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a48015610686576106866001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a7640000610866565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816106fd5760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b6044820152606401610253565b60008367ffffffffffffffff161161074c5760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b6044820152606401610253565b428367ffffffffffffffff1611156107985760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b6044820152606401610253565b80156107d85760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b6044820152606401610253565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a261085f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a76400006108d7565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108d19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261090c565b50505050565b6040516001600160a01b03831660248201526044810182905261090790849063a9059cbb60e01b9060640161089a565b505050565b6000610961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109de9092919063ffffffff16565b805190915015610907578080602001905181019061097f9190610d22565b6109075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b60606109ed84846000856109f7565b90505b9392505050565b606082471015610a585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b6001600160a01b0385163b610aaf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610acb9190610caa565b60006040518083038185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5091509150610b1d828286610b28565b979650505050505050565b60608315610b375750816109f0565b825115610b475782518084602001fd5b8160405162461bcd60e51b81526004016102539190610d44565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8c57600080fd5b50565b8035610b9a81610b77565b919050565b60008060408385031215610bb257600080fd5b823567ffffffffffffffff80821115610bca57600080fd5b818501915085601f830112610bde57600080fd5b813581811115610bf057610bf0610b61565b604051601f8201601f19908116603f01168101908382118183101715610c1857610c18610b61565b81604052828152886020848701011115610c3157600080fd5b826020860160208301376000602084830101528096505050505050610c5860208401610b8f565b90509250929050565b600060208284031215610c7357600080fd5b81356109f081610b77565b60005b83811015610c99578181015183820152602001610c81565b838111156108d15750506000910152565b60008251610cbc818460208701610c7e565b9190910192915050565b600060208284031215610cd857600080fd5b81516109f081610b77565b600060208284031215610cf557600080fd5b5051919050565b60008219821115610d1d57634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d3457600080fd5b815180151581146109f057600080fd5b6020815260008251806020840152610d63816040850160208701610c7e565b601f01601f1916919091016040019291505056fea2646970667358221220a6da54b590f0a7a384b9f0ed4e9b41106352781736c1d51386cda1e7800c389764736f6c634300080d0033", | ||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063d70754ec14610147578063fc0c546a1461017c578063fc7e286d146101a357600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610b9f565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610c61565b61068e565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61016e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101e36101b1366004610c61565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b8151600381101561025c5760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b60448201526064015b60405180910390fd5b60008360405160200161026f9190610caa565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102c5929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103699190610cc6565b6001600160a01b0316146103b15760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b6044820152606401610253565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af115801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190610ce3565b5060078311156105d34262127500610cfc565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a48015610686576106866001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a7640000610866565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816106fd5760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b6044820152606401610253565b60008367ffffffffffffffff161161074c5760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b6044820152606401610253565b428367ffffffffffffffff1611156107985760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b6044820152606401610253565b80156107d85760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b6044820152606401610253565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a261085f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a76400006108d7565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108d19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261090c565b50505050565b6040516001600160a01b03831660248201526044810182905261090790849063a9059cbb60e01b9060640161089a565b505050565b6000610961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109de9092919063ffffffff16565b805190915015610907578080602001905181019061097f9190610d22565b6109075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b60606109ed84846000856109f7565b90505b9392505050565b606082471015610a585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b6001600160a01b0385163b610aaf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610acb9190610caa565b60006040518083038185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5091509150610b1d828286610b28565b979650505050505050565b60608315610b375750816109f0565b825115610b475782518084602001fd5b8160405162461bcd60e51b81526004016102539190610d44565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8c57600080fd5b50565b8035610b9a81610b77565b919050565b60008060408385031215610bb257600080fd5b823567ffffffffffffffff80821115610bca57600080fd5b818501915085601f830112610bde57600080fd5b813581811115610bf057610bf0610b61565b604051601f8201601f19908116603f01168101908382118183101715610c1857610c18610b61565b81604052828152886020848701011115610c3157600080fd5b826020860160208301376000602084830101528096505050505050610c5860208401610b8f565b90509250929050565b600060208284031215610c7357600080fd5b81356109f081610b77565b60005b83811015610c99578181015183820152602001610c81565b838111156108d15750506000910152565b60008251610cbc818460208701610c7e565b9190910192915050565b600060208284031215610cd857600080fd5b81516109f081610b77565b600060208284031215610cf557600080fd5b5051919050565b60008219821115610d1d57634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d3457600080fd5b815180151581146109f057600080fd5b6020815260008251806020840152610d63816040850160208701610c7e565b601f01601f1916919091016040019291505056fea2646970667358221220a6da54b590f0a7a384b9f0ed4e9b41106352781736c1d51386cda1e7800c389764736f6c634300080d0033", | ||
"bytecode": "0x61012060405234801561001157600080fd5b50604051610f5a380380610f5a83398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610e146101466000396000818160920152818161046201526105100152600081816101b4015281816102f201528181610427015261057b01526000818160eb015281816103650152818161049101526105b80152600081816101e9015281816106bd0152610897015260006101250152610e146000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063942e6bcf14610147578063d70754ec146101af578063fc0c546a146101e457600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610c06565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610cc8565b6106f5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610187610155366004610cc8565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205467ffffffffffffffff16156102775760405162461bcd60e51b815260206004820152601860248201527f4c4556583a204f4e455f444f4d41494e5f414c4c4f574544000000000000000060448201526064015b60405180910390fd5b815160038110156102c35760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b604482015260640161026e565b6000836040516020016102d69190610d11565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161032c929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610d2d565b6001600160a01b0316146104185760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b604482015260640161026e565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610d4a565b50600783111561063a4262127500610d63565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a480156106ed576106ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a76400006108cd565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816107645760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b604482015260640161026e565b60008367ffffffffffffffff16116107b35760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b604482015260640161026e565b428367ffffffffffffffff1611156107ff5760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b604482015260640161026e565b801561083f5760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b604482015260640161026e565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a26108c66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a764000061093e565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109389085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610973565b50505050565b6040516001600160a01b03831660248201526044810182905261096e90849063a9059cbb60e01b90606401610901565b505050565b60006109c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a459092919063ffffffff16565b80519091501561096e57808060200190518101906109e69190610d89565b61096e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026e565b6060610a548484600085610a5e565b90505b9392505050565b606082471015610abf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161026e565b6001600160a01b0385163b610b165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026e565b600080866001600160a01b03168587604051610b329190610d11565b60006040518083038185875af1925050503d8060008114610b6f576040519150601f19603f3d011682016040523d82523d6000602084013e610b74565b606091505b5091509150610b84828286610b8f565b979650505050505050565b60608315610b9e575081610a57565b825115610bae5782518084602001fd5b8160405162461bcd60e51b815260040161026e9190610dab565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bf357600080fd5b50565b8035610c0181610bde565b919050565b60008060408385031215610c1957600080fd5b823567ffffffffffffffff80821115610c3157600080fd5b818501915085601f830112610c4557600080fd5b813581811115610c5757610c57610bc8565b604051601f8201601f19908116603f01168101908382118183101715610c7f57610c7f610bc8565b81604052828152886020848701011115610c9857600080fd5b826020860160208301376000602084830101528096505050505050610cbf60208401610bf6565b90509250929050565b600060208284031215610cda57600080fd5b8135610a5781610bde565b60005b83811015610d00578181015183820152602001610ce8565b838111156109385750506000910152565b60008251610d23818460208701610ce5565b9190910192915050565b600060208284031215610d3f57600080fd5b8151610a5781610bde565b600060208284031215610d5c57600080fd5b5051919050565b60008219821115610d8457634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d9b57600080fd5b81518015158114610a5757600080fd5b6020815260008251806020840152610dca816040850160208701610ce5565b601f01601f1916919091016040019291505056fea2646970667358221220867d0aa528cec2285b5fbd9b97e00e773fcea1d5e5eb3fc340ff3afbb725ce7464736f6c634300080d0033", | ||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063942e6bcf14610147578063d70754ec146101af578063fc0c546a146101e457600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610c06565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610cc8565b6106f5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610187610155366004610cc8565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205467ffffffffffffffff16156102775760405162461bcd60e51b815260206004820152601860248201527f4c4556583a204f4e455f444f4d41494e5f414c4c4f574544000000000000000060448201526064015b60405180910390fd5b815160038110156102c35760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b604482015260640161026e565b6000836040516020016102d69190610d11565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161032c929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610d2d565b6001600160a01b0316146104185760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b604482015260640161026e565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610d4a565b50600783111561063a4262127500610d63565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a480156106ed576106ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a76400006108cd565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816107645760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b604482015260640161026e565b60008367ffffffffffffffff16116107b35760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b604482015260640161026e565b428367ffffffffffffffff1611156107ff5760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b604482015260640161026e565b801561083f5760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b604482015260640161026e565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a26108c66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a764000061093e565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109389085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610973565b50505050565b6040516001600160a01b03831660248201526044810182905261096e90849063a9059cbb60e01b90606401610901565b505050565b60006109c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a459092919063ffffffff16565b80519091501561096e57808060200190518101906109e69190610d89565b61096e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026e565b6060610a548484600085610a5e565b90505b9392505050565b606082471015610abf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161026e565b6001600160a01b0385163b610b165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026e565b600080866001600160a01b03168587604051610b329190610d11565b60006040518083038185875af1925050503d8060008114610b6f576040519150601f19603f3d011682016040523d82523d6000602084013e610b74565b606091505b5091509150610b84828286610b8f565b979650505050505050565b60608315610b9e575081610a57565b825115610bae5782518084602001fd5b8160405162461bcd60e51b815260040161026e9190610dab565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bf357600080fd5b50565b8035610c0181610bde565b919050565b60008060408385031215610c1957600080fd5b823567ffffffffffffffff80821115610c3157600080fd5b818501915085601f830112610c4557600080fd5b813581811115610c5757610c57610bc8565b604051601f8201601f19908116603f01168101908382118183101715610c7f57610c7f610bc8565b81604052828152886020848701011115610c9857600080fd5b826020860160208301376000602084830101528096505050505050610cbf60208401610bf6565b90509250929050565b600060208284031215610cda57600080fd5b8135610a5781610bde565b60005b83811015610d00578181015183820152602001610ce8565b838111156109385750506000910152565b60008251610d23818460208701610ce5565b9190910192915050565b600060208284031215610d3f57600080fd5b8151610a5781610bde565b600060208284031215610d5c57600080fd5b5051919050565b60008219821115610d8457634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d9b57600080fd5b81518015158114610a5757600080fd5b6020815260008251806020840152610dca816040850160208701610ce5565b601f01601f1916919091016040019291505056fea2646970667358221220867d0aa528cec2285b5fbd9b97e00e773fcea1d5e5eb3fc340ff3afbb725ce7464736f6c634300080d0033", | ||
"linkReferences": {}, | ||
"deployedLinkReferences": {} | ||
} |
{ | ||
"address": "0xE36dc9Bb91B9d4335aCd430780C4c19BFD83bB24", | ||
"address": "0xFDA734ac0a84F42b8E5D0728177a512FBa06FA50", | ||
"abi": [ | ||
@@ -69,31 +69,2 @@ { | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "deposits", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -156,2 +127,31 @@ "name": "ens", | ||
{ | ||
"inputs": [ | ||
{ | ||
"internalType": "address", | ||
"name": "", | ||
"type": "address" | ||
} | ||
], | ||
"name": "registrations", | ||
"outputs": [ | ||
{ | ||
"internalType": "uint64", | ||
"name": "deadline", | ||
"type": "uint64" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "paid", | ||
"type": "bool" | ||
}, | ||
{ | ||
"internalType": "bool", | ||
"name": "withdrawn", | ||
"type": "bool" | ||
} | ||
], | ||
"stateMutability": "view", | ||
"type": "function" | ||
}, | ||
{ | ||
"inputs": [], | ||
@@ -196,15 +196,15 @@ "name": "resolver", | ||
], | ||
"transactionHash": "0xd626ac6686d76441e2356af7735c2d9d0ca4d5b3b0dd40ea3d41cf2edbff62f5", | ||
"transactionHash": "0x1d565f9cb093feaa90f609b7a615a7d151ef05c9c7ca3d593a5203cbc21fd6b6", | ||
"receipt": { | ||
"to": null, | ||
"from": "0x5b8C253517b6Bd003369173109693B01cb6841B5", | ||
"contractAddress": "0xE36dc9Bb91B9d4335aCd430780C4c19BFD83bB24", | ||
"transactionIndex": 251, | ||
"gasUsed": "810254", | ||
"contractAddress": "0xFDA734ac0a84F42b8E5D0728177a512FBa06FA50", | ||
"transactionIndex": 199, | ||
"gasUsed": "832401", | ||
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", | ||
"blockHash": "0xf2458652a0829c1097fdef4565eb804c364c8c7976f71d1dbcdca454b21ce88c", | ||
"transactionHash": "0xd626ac6686d76441e2356af7735c2d9d0ca4d5b3b0dd40ea3d41cf2edbff62f5", | ||
"blockHash": "0x83641b5402d598e7d763cb4387261cac88a3a13f6b4fadf96d8f4e7739fff13e", | ||
"transactionHash": "0x1d565f9cb093feaa90f609b7a615a7d151ef05c9c7ca3d593a5203cbc21fd6b6", | ||
"logs": [], | ||
"blockNumber": 14751144, | ||
"cumulativeGasUsed": "19375297", | ||
"blockNumber": 14751270, | ||
"cumulativeGasUsed": "13683289", | ||
"status": 1, | ||
@@ -219,6 +219,6 @@ "byzantium": true | ||
], | ||
"solcInputHash": "88a1396653fd4dbe060a3f949d7ceeac", | ||
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"paid\",\"type\":\"bool\"}],\"name\":\"Register\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"paid\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"withdrawn\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SubdomainsRegistry.sol\":\"SubdomainsRegistry\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using Address for address;\\n\\n function safeTransfer(\\n IERC20 token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20 token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"contracts/SubdomainsRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: WTFPL\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\n\\ninterface ENS {\\n function owner(bytes32 node) external view returns (address);\\n\\n function setSubnodeRecord(\\n bytes32 node,\\n bytes32 label,\\n address owner,\\n address resolver,\\n uint64 ttl\\n ) external;\\n\\n function setSubnodeOwner(\\n bytes32 node,\\n bytes32 label,\\n address owner\\n ) external returns (bytes32);\\n}\\n\\ninterface PublicResolver {\\n function setAddr(bytes32 node, address a) external;\\n}\\n\\ncontract SubdomainsRegistry {\\n using SafeERC20 for IERC20;\\n\\n address public immutable owner;\\n address public immutable token;\\n address public immutable ens;\\n bytes32 public immutable node;\\n address public immutable resolver;\\n\\n mapping(address => Deposit) public deposits;\\n\\n struct Deposit {\\n uint64 deadline;\\n bool paid;\\n bool withdrawn;\\n }\\n\\n event Register(bytes32 indexed label, address indexed to, bool indexed paid);\\n event Withdraw(address indexed to);\\n\\n constructor(\\n address _token,\\n address _ens,\\n bytes32 _node,\\n address _resolver\\n ) {\\n owner = msg.sender;\\n token = _token;\\n ens = _ens;\\n node = _node;\\n resolver = _resolver;\\n }\\n\\n function register(string memory domain, address to) external {\\n uint256 length = bytes(domain).length;\\n require(length >= 3, \\\"LEVX: DOMAIN_TOO_SHORT\\\");\\n\\n bytes32 label = keccak256(abi.encodePacked(domain));\\n bytes32 subnode = keccak256(abi.encodePacked(node, label));\\n require(ENS(ens).owner(subnode) == address(0), \\\"LEVX: DUPLICATE\\\");\\n\\n ENS(ens).setSubnodeRecord(node, label, address(this), resolver, 0);\\n\\n PublicResolver(resolver).setAddr(subnode, to);\\n ENS(ens).setSubnodeOwner(node, label, to);\\n\\n bool paid = length <= 7;\\n deposits[msg.sender].deadline = uint64(block.timestamp + 2 weeks);\\n deposits[msg.sender].paid = paid;\\n emit Register(label, to, paid);\\n if (paid) {\\n IERC20(token).safeTransferFrom(msg.sender, address(this), 1e18);\\n }\\n }\\n\\n function withdraw(address to) external {\\n Deposit storage deposit = deposits[msg.sender];\\n (uint64 deadline, bool paid, bool withdrawn) = (deposit.deadline, deposit.paid, deposit.withdrawn);\\n require(paid, \\\"LEVX: NON_PAID\\\");\\n require(deadline > 0, \\\"LEVX: NON_EXISTENT\\\");\\n require(deadline <= block.timestamp, \\\"LEVX: TOO_EARLY\\\");\\n require(!withdrawn, \\\"LEVX: WITHDRAWN\\\");\\n\\n deposit.withdrawn = true;\\n emit Withdraw(to);\\n IERC20(token).safeTransfer(to, 1e18);\\n }\\n}\\n\",\"keccak256\":\"0x063158ac903c1ab5cfa837a990047e44ca5943e212f19beb39defefcd49f6f36\",\"license\":\"WTFPL\"}},\"version\":1}", | ||
"bytecode": "0x61012060405234801561001157600080fd5b50604051610ef3380380610ef383398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610dad610146600039600081816092015281816103fb01526104a901526000818161014c0152818161028b015281816103c0015261051401526000818160eb015281816102fe0152818161042a0152610551015260008181610181015281816106560152610830015260006101250152610dad6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063d70754ec14610147578063fc0c546a1461017c578063fc7e286d146101a357600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610b9f565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610c61565b61068e565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61016e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101e36101b1366004610c61565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b8151600381101561025c5760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b60448201526064015b60405180910390fd5b60008360405160200161026f9190610caa565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102c5929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103699190610cc6565b6001600160a01b0316146103b15760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b6044820152606401610253565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af115801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190610ce3565b5060078311156105d34262127500610cfc565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a48015610686576106866001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a7640000610866565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816106fd5760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b6044820152606401610253565b60008367ffffffffffffffff161161074c5760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b6044820152606401610253565b428367ffffffffffffffff1611156107985760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b6044820152606401610253565b80156107d85760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b6044820152606401610253565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a261085f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a76400006108d7565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108d19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261090c565b50505050565b6040516001600160a01b03831660248201526044810182905261090790849063a9059cbb60e01b9060640161089a565b505050565b6000610961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109de9092919063ffffffff16565b805190915015610907578080602001905181019061097f9190610d22565b6109075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b60606109ed84846000856109f7565b90505b9392505050565b606082471015610a585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b6001600160a01b0385163b610aaf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610acb9190610caa565b60006040518083038185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5091509150610b1d828286610b28565b979650505050505050565b60608315610b375750816109f0565b825115610b475782518084602001fd5b8160405162461bcd60e51b81526004016102539190610d44565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8c57600080fd5b50565b8035610b9a81610b77565b919050565b60008060408385031215610bb257600080fd5b823567ffffffffffffffff80821115610bca57600080fd5b818501915085601f830112610bde57600080fd5b813581811115610bf057610bf0610b61565b604051601f8201601f19908116603f01168101908382118183101715610c1857610c18610b61565b81604052828152886020848701011115610c3157600080fd5b826020860160208301376000602084830101528096505050505050610c5860208401610b8f565b90509250929050565b600060208284031215610c7357600080fd5b81356109f081610b77565b60005b83811015610c99578181015183820152602001610c81565b838111156108d15750506000910152565b60008251610cbc818460208701610c7e565b9190910192915050565b600060208284031215610cd857600080fd5b81516109f081610b77565b600060208284031215610cf557600080fd5b5051919050565b60008219821115610d1d57634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d3457600080fd5b815180151581146109f057600080fd5b6020815260008251806020840152610d63816040850160208701610c7e565b601f01601f1916919091016040019291505056fea26469706673582212200dab8b8a6daabf4294696bd2c360984a214df716d5fe261da9bf3f4571695b9564736f6c634300080d0033", | ||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063d70754ec14610147578063fc0c546a1461017c578063fc7e286d146101a357600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610b9f565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610c61565b61068e565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61016e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101e36101b1366004610c61565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b8151600381101561025c5760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b60448201526064015b60405180910390fd5b60008360405160200161026f9190610caa565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102c5929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103699190610cc6565b6001600160a01b0316146103b15760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b6044820152606401610253565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af115801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190610ce3565b5060078311156105d34262127500610cfc565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a48015610686576106866001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a7640000610866565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816106fd5760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b6044820152606401610253565b60008367ffffffffffffffff161161074c5760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b6044820152606401610253565b428367ffffffffffffffff1611156107985760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b6044820152606401610253565b80156107d85760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b6044820152606401610253565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a261085f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a76400006108d7565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108d19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261090c565b50505050565b6040516001600160a01b03831660248201526044810182905261090790849063a9059cbb60e01b9060640161089a565b505050565b6000610961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109de9092919063ffffffff16565b805190915015610907578080602001905181019061097f9190610d22565b6109075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b60606109ed84846000856109f7565b90505b9392505050565b606082471015610a585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b6001600160a01b0385163b610aaf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610acb9190610caa565b60006040518083038185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5091509150610b1d828286610b28565b979650505050505050565b60608315610b375750816109f0565b825115610b475782518084602001fd5b8160405162461bcd60e51b81526004016102539190610d44565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8c57600080fd5b50565b8035610b9a81610b77565b919050565b60008060408385031215610bb257600080fd5b823567ffffffffffffffff80821115610bca57600080fd5b818501915085601f830112610bde57600080fd5b813581811115610bf057610bf0610b61565b604051601f8201601f19908116603f01168101908382118183101715610c1857610c18610b61565b81604052828152886020848701011115610c3157600080fd5b826020860160208301376000602084830101528096505050505050610c5860208401610b8f565b90509250929050565b600060208284031215610c7357600080fd5b81356109f081610b77565b60005b83811015610c99578181015183820152602001610c81565b838111156108d15750506000910152565b60008251610cbc818460208701610c7e565b9190910192915050565b600060208284031215610cd857600080fd5b81516109f081610b77565b600060208284031215610cf557600080fd5b5051919050565b60008219821115610d1d57634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d3457600080fd5b815180151581146109f057600080fd5b6020815260008251806020840152610d63816040850160208701610c7e565b601f01601f1916919091016040019291505056fea26469706673582212200dab8b8a6daabf4294696bd2c360984a214df716d5fe261da9bf3f4571695b9564736f6c634300080d0033", | ||
"solcInputHash": "291b129b75af22fe30bdc2698c516432", | ||
"metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"paid\",\"type\":\"bool\"}],\"name\":\"Register\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"domain\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registrations\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"paid\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"withdrawn\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SubdomainsRegistry.sol\":\"SubdomainsRegistry\"},\"evmVersion\":\"london\",\"libraries\":{\":__CACHE_BREAKER__\":\"0x00000000d41867734bbee4c6863d9255b2b06ac1\"},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 amount\\n ) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using Address for address;\\n\\n function safeTransfer(\\n IERC20 token,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(\\n IERC20 token,\\n address from,\\n address to,\\n uint256 value\\n ) internal {\\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n /**\\n * @dev Deprecated. This function has issues similar to the ones found in\\n * {IERC20-approve}, and its usage is discouraged.\\n *\\n * Whenever possible, use {safeIncreaseAllowance} and\\n * {safeDecreaseAllowance} instead.\\n */\\n function safeApprove(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n require(\\n (value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n uint256 newAllowance = token.allowance(address(this), spender) + value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(\\n IERC20 token,\\n address spender,\\n uint256 value\\n ) internal {\\n unchecked {\\n uint256 oldAllowance = token.allowance(address(this), spender);\\n require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n uint256 newAllowance = oldAllowance - value;\\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n // the target address contains contract code and also asserts for success in the low-level call.\\n\\n bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n if (returndata.length > 0) {\\n // Return data is optional\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\"},\"contracts/SubdomainsRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: WTFPL\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\n\\ninterface ENS {\\n function owner(bytes32 node) external view returns (address);\\n\\n function setSubnodeRecord(\\n bytes32 node,\\n bytes32 label,\\n address owner,\\n address resolver,\\n uint64 ttl\\n ) external;\\n\\n function setSubnodeOwner(\\n bytes32 node,\\n bytes32 label,\\n address owner\\n ) external returns (bytes32);\\n}\\n\\ninterface PublicResolver {\\n function setAddr(bytes32 node, address a) external;\\n}\\n\\ncontract SubdomainsRegistry {\\n using SafeERC20 for IERC20;\\n\\n address public immutable owner;\\n address public immutable token;\\n address public immutable ens;\\n bytes32 public immutable node;\\n address public immutable resolver;\\n\\n mapping(address => Registration) public registrations;\\n\\n struct Registration {\\n uint64 deadline;\\n bool paid;\\n bool withdrawn;\\n }\\n\\n event Register(bytes32 indexed label, address indexed to, bool indexed paid);\\n event Withdraw(address indexed to);\\n\\n constructor(\\n address _token,\\n address _ens,\\n bytes32 _node,\\n address _resolver\\n ) {\\n owner = msg.sender;\\n token = _token;\\n ens = _ens;\\n node = _node;\\n resolver = _resolver;\\n }\\n\\n function register(string memory domain, address to) external {\\n require(registrations[msg.sender].deadline == 0, \\\"LEVX: ONE_DOMAIN_ALLOWED\\\");\\n\\n uint256 length = bytes(domain).length;\\n require(length >= 3, \\\"LEVX: DOMAIN_TOO_SHORT\\\");\\n\\n bytes32 label = keccak256(abi.encodePacked(domain));\\n bytes32 subnode = keccak256(abi.encodePacked(node, label));\\n require(ENS(ens).owner(subnode) == address(0), \\\"LEVX: DUPLICATE\\\");\\n\\n ENS(ens).setSubnodeRecord(node, label, address(this), resolver, 0);\\n\\n PublicResolver(resolver).setAddr(subnode, to);\\n ENS(ens).setSubnodeOwner(node, label, to);\\n\\n bool paid = length <= 7;\\n registrations[msg.sender].deadline = uint64(block.timestamp + 2 weeks);\\n registrations[msg.sender].paid = paid;\\n emit Register(label, to, paid);\\n if (paid) {\\n IERC20(token).safeTransferFrom(msg.sender, address(this), 1e18);\\n }\\n }\\n\\n function withdraw(address to) external {\\n Registration storage registration = registrations[msg.sender];\\n (uint64 deadline, bool paid, bool withdrawn) = (\\n registration.deadline,\\n registration.paid,\\n registration.withdrawn\\n );\\n require(paid, \\\"LEVX: NON_PAID\\\");\\n require(deadline > 0, \\\"LEVX: NON_EXISTENT\\\");\\n require(deadline <= block.timestamp, \\\"LEVX: TOO_EARLY\\\");\\n require(!withdrawn, \\\"LEVX: WITHDRAWN\\\");\\n\\n registration.withdrawn = true;\\n emit Withdraw(to);\\n IERC20(token).safeTransfer(to, 1e18);\\n }\\n}\\n\",\"keccak256\":\"0x1ec869b96889091a87ad742410fedd2d5ba38eaa3a3ca8195c6678e885d307f2\",\"license\":\"WTFPL\"}},\"version\":1}", | ||
"bytecode": "0x61012060405234801561001157600080fd5b50604051610f5a380380610f5a83398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610e146101466000396000818160920152818161046201526105100152600081816101b4015281816102f201528181610427015261057b01526000818160eb015281816103650152818161049101526105b80152600081816101e9015281816106bd0152610897015260006101250152610e146000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063942e6bcf14610147578063d70754ec146101af578063fc0c546a146101e457600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610c06565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610cc8565b6106f5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610187610155366004610cc8565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205467ffffffffffffffff16156102775760405162461bcd60e51b815260206004820152601860248201527f4c4556583a204f4e455f444f4d41494e5f414c4c4f574544000000000000000060448201526064015b60405180910390fd5b815160038110156102c35760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b604482015260640161026e565b6000836040516020016102d69190610d11565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161032c929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610d2d565b6001600160a01b0316146104185760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b604482015260640161026e565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610d4a565b50600783111561063a4262127500610d63565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a480156106ed576106ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a76400006108cd565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816107645760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b604482015260640161026e565b60008367ffffffffffffffff16116107b35760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b604482015260640161026e565b428367ffffffffffffffff1611156107ff5760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b604482015260640161026e565b801561083f5760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b604482015260640161026e565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a26108c66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a764000061093e565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109389085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610973565b50505050565b6040516001600160a01b03831660248201526044810182905261096e90849063a9059cbb60e01b90606401610901565b505050565b60006109c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a459092919063ffffffff16565b80519091501561096e57808060200190518101906109e69190610d89565b61096e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026e565b6060610a548484600085610a5e565b90505b9392505050565b606082471015610abf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161026e565b6001600160a01b0385163b610b165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026e565b600080866001600160a01b03168587604051610b329190610d11565b60006040518083038185875af1925050503d8060008114610b6f576040519150601f19603f3d011682016040523d82523d6000602084013e610b74565b606091505b5091509150610b84828286610b8f565b979650505050505050565b60608315610b9e575081610a57565b825115610bae5782518084602001fd5b8160405162461bcd60e51b815260040161026e9190610dab565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bf357600080fd5b50565b8035610c0181610bde565b919050565b60008060408385031215610c1957600080fd5b823567ffffffffffffffff80821115610c3157600080fd5b818501915085601f830112610c4557600080fd5b813581811115610c5757610c57610bc8565b604051601f8201601f19908116603f01168101908382118183101715610c7f57610c7f610bc8565b81604052828152886020848701011115610c9857600080fd5b826020860160208301376000602084830101528096505050505050610cbf60208401610bf6565b90509250929050565b600060208284031215610cda57600080fd5b8135610a5781610bde565b60005b83811015610d00578181015183820152602001610ce8565b838111156109385750506000910152565b60008251610d23818460208701610ce5565b9190910192915050565b600060208284031215610d3f57600080fd5b8151610a5781610bde565b600060208284031215610d5c57600080fd5b5051919050565b60008219821115610d8457634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d9b57600080fd5b81518015158114610a5757600080fd5b6020815260008251806020840152610dca816040850160208701610ce5565b601f01601f1916919091016040019291505056fea26469706673582212204308545de02c1a2c9b1ca5badbd44566c831ec85831fb41da1a850eddeae8b5e64736f6c634300080d0033", | ||
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063942e6bcf14610147578063d70754ec146101af578063fc0c546a146101e457600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610c06565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610cc8565b6106f5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610187610155366004610cc8565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205467ffffffffffffffff16156102775760405162461bcd60e51b815260206004820152601860248201527f4c4556583a204f4e455f444f4d41494e5f414c4c4f574544000000000000000060448201526064015b60405180910390fd5b815160038110156102c35760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b604482015260640161026e565b6000836040516020016102d69190610d11565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161032c929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610d2d565b6001600160a01b0316146104185760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b604482015260640161026e565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610d4a565b50600783111561063a4262127500610d63565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a480156106ed576106ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a76400006108cd565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816107645760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b604482015260640161026e565b60008367ffffffffffffffff16116107b35760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b604482015260640161026e565b428367ffffffffffffffff1611156107ff5760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b604482015260640161026e565b801561083f5760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b604482015260640161026e565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a26108c66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a764000061093e565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109389085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610973565b50505050565b6040516001600160a01b03831660248201526044810182905261096e90849063a9059cbb60e01b90606401610901565b505050565b60006109c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a459092919063ffffffff16565b80519091501561096e57808060200190518101906109e69190610d89565b61096e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026e565b6060610a548484600085610a5e565b90505b9392505050565b606082471015610abf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161026e565b6001600160a01b0385163b610b165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026e565b600080866001600160a01b03168587604051610b329190610d11565b60006040518083038185875af1925050503d8060008114610b6f576040519150601f19603f3d011682016040523d82523d6000602084013e610b74565b606091505b5091509150610b84828286610b8f565b979650505050505050565b60608315610b9e575081610a57565b825115610bae5782518084602001fd5b8160405162461bcd60e51b815260040161026e9190610dab565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bf357600080fd5b50565b8035610c0181610bde565b919050565b60008060408385031215610c1957600080fd5b823567ffffffffffffffff80821115610c3157600080fd5b818501915085601f830112610c4557600080fd5b813581811115610c5757610c57610bc8565b604051601f8201601f19908116603f01168101908382118183101715610c7f57610c7f610bc8565b81604052828152886020848701011115610c9857600080fd5b826020860160208301376000602084830101528096505050505050610cbf60208401610bf6565b90509250929050565b600060208284031215610cda57600080fd5b8135610a5781610bde565b60005b83811015610d00578181015183820152602001610ce8565b838111156109385750506000910152565b60008251610d23818460208701610ce5565b9190910192915050565b600060208284031215610d3f57600080fd5b8151610a5781610bde565b600060208284031215610d5c57600080fd5b5051919050565b60008219821115610d8457634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d9b57600080fd5b81518015158114610a5757600080fd5b6020815260008251806020840152610dca816040850160208701610ce5565b601f01601f1916919091016040019291505056fea26469706673582212204308545de02c1a2c9b1ca5badbd44566c831ec85831fb41da1a850eddeae8b5e64736f6c634300080d0033", | ||
"devdoc": { | ||
@@ -239,6 +239,6 @@ "kind": "dev", | ||
"contract": "contracts/SubdomainsRegistry.sol:SubdomainsRegistry", | ||
"label": "deposits", | ||
"label": "registrations", | ||
"offset": 0, | ||
"slot": "0", | ||
"type": "t_mapping(t_address,t_struct(Deposit)666_storage)" | ||
"type": "t_mapping(t_address,t_struct(Registration)666_storage)" | ||
} | ||
@@ -257,12 +257,12 @@ ], | ||
}, | ||
"t_mapping(t_address,t_struct(Deposit)666_storage)": { | ||
"t_mapping(t_address,t_struct(Registration)666_storage)": { | ||
"encoding": "mapping", | ||
"key": "t_address", | ||
"label": "mapping(address => struct SubdomainsRegistry.Deposit)", | ||
"label": "mapping(address => struct SubdomainsRegistry.Registration)", | ||
"numberOfBytes": "32", | ||
"value": "t_struct(Deposit)666_storage" | ||
"value": "t_struct(Registration)666_storage" | ||
}, | ||
"t_struct(Deposit)666_storage": { | ||
"t_struct(Registration)666_storage": { | ||
"encoding": "inplace", | ||
"label": "struct SubdomainsRegistry.Deposit", | ||
"label": "struct SubdomainsRegistry.Registration", | ||
"members": [ | ||
@@ -269,0 +269,0 @@ { |
@@ -106,3 +106,3 @@ { | ||
}, | ||
"version": "1.2.0" | ||
"version": "1.3.0" | ||
} |
@@ -85,31 +85,2 @@ /* Autogenerated file. Do not edit manually. */ | ||
{ | ||
inputs: [ | ||
{ | ||
internalType: "address", | ||
name: "", | ||
type: "address", | ||
}, | ||
], | ||
name: "deposits", | ||
outputs: [ | ||
{ | ||
internalType: "uint64", | ||
name: "deadline", | ||
type: "uint64", | ||
}, | ||
{ | ||
internalType: "bool", | ||
name: "paid", | ||
type: "bool", | ||
}, | ||
{ | ||
internalType: "bool", | ||
name: "withdrawn", | ||
type: "bool", | ||
}, | ||
], | ||
stateMutability: "view", | ||
type: "function", | ||
}, | ||
{ | ||
inputs: [], | ||
@@ -172,2 +143,31 @@ name: "ens", | ||
{ | ||
inputs: [ | ||
{ | ||
internalType: "address", | ||
name: "", | ||
type: "address", | ||
}, | ||
], | ||
name: "registrations", | ||
outputs: [ | ||
{ | ||
internalType: "uint64", | ||
name: "deadline", | ||
type: "uint64", | ||
}, | ||
{ | ||
internalType: "bool", | ||
name: "paid", | ||
type: "bool", | ||
}, | ||
{ | ||
internalType: "bool", | ||
name: "withdrawn", | ||
type: "bool", | ||
}, | ||
], | ||
stateMutability: "view", | ||
type: "function", | ||
}, | ||
{ | ||
inputs: [], | ||
@@ -214,3 +214,3 @@ name: "resolver", | ||
const _bytecode = | ||
"0x61012060405234801561001157600080fd5b50604051610ef3380380610ef383398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610dad610146600039600081816092015281816103fb01526104a901526000818161014c0152818161028b015281816103c0015261051401526000818160eb015281816102fe0152818161042a0152610551015260008181610181015281816106560152610830015260006101250152610dad6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063d70754ec14610147578063fc0c546a1461017c578063fc7e286d146101a357600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610b9f565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610c61565b61068e565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b61016e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101e36101b1366004610c61565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b8151600381101561025c5760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b60448201526064015b60405180910390fd5b60008360405160200161026f9190610caa565b60405160208183030381529060405280519060200120905060007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102c5929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa158015610345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103699190610cc6565b6001600160a01b0316146103b15760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b6044820152606401610253565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af115801561059c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c09190610ce3565b5060078311156105d34262127500610cfc565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a48015610686576106866001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a7640000610866565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816106fd5760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b6044820152606401610253565b60008367ffffffffffffffff161161074c5760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b6044820152606401610253565b428367ffffffffffffffff1611156107985760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b6044820152606401610253565b80156107d85760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b6044820152606401610253565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a261085f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a76400006108d7565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526108d19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261090c565b50505050565b6040516001600160a01b03831660248201526044810182905261090790849063a9059cbb60e01b9060640161089a565b505050565b6000610961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166109de9092919063ffffffff16565b805190915015610907578080602001905181019061097f9190610d22565b6109075760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610253565b60606109ed84846000856109f7565b90505b9392505050565b606082471015610a585760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610253565b6001600160a01b0385163b610aaf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610253565b600080866001600160a01b03168587604051610acb9190610caa565b60006040518083038185875af1925050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5091509150610b1d828286610b28565b979650505050505050565b60608315610b375750816109f0565b825115610b475782518084602001fd5b8160405162461bcd60e51b81526004016102539190610d44565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610b8c57600080fd5b50565b8035610b9a81610b77565b919050565b60008060408385031215610bb257600080fd5b823567ffffffffffffffff80821115610bca57600080fd5b818501915085601f830112610bde57600080fd5b813581811115610bf057610bf0610b61565b604051601f8201601f19908116603f01168101908382118183101715610c1857610c18610b61565b81604052828152886020848701011115610c3157600080fd5b826020860160208301376000602084830101528096505050505050610c5860208401610b8f565b90509250929050565b600060208284031215610c7357600080fd5b81356109f081610b77565b60005b83811015610c99578181015183820152602001610c81565b838111156108d15750506000910152565b60008251610cbc818460208701610c7e565b9190910192915050565b600060208284031215610cd857600080fd5b81516109f081610b77565b600060208284031215610cf557600080fd5b5051919050565b60008219821115610d1d57634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d3457600080fd5b815180151581146109f057600080fd5b6020815260008251806020840152610d63816040850160208701610c7e565b601f01601f1916919091016040019291505056fea2646970667358221220a6da54b590f0a7a384b9f0ed4e9b41106352781736c1d51386cda1e7800c389764736f6c634300080d0033"; | ||
"0x61012060405234801561001157600080fd5b50604051610f5a380380610f5a83398101604081905261003091610071565b336080526001600160a01b0393841660a05291831660c05260e05216610100526100be565b80516001600160a01b038116811461006c57600080fd5b919050565b6000806000806080858703121561008757600080fd5b61009085610055565b935061009e60208601610055565b9250604085015191506100b360608601610055565b905092959194509250565b60805160a05160c05160e05161010051610e146101466000396000818160920152818161046201526105100152600081816101b4015281816102f201528181610427015261057b01526000818160eb015281816103650152818161049101526105b80152600081816101e9015281816106bd0152610897015260006101250152610e146000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610120578063942e6bcf14610147578063d70754ec146101af578063fc0c546a146101e457600080fd5b806304f3bcec1461008d5780631e59c529146100d15780633f15457f146100e657806351cff8d91461010d575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e46100df366004610c06565b61020b565b005b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100e461011b366004610cc8565b6106f5565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610187610155366004610cc8565b60006020819052908152604090205467ffffffffffffffff81169060ff600160401b8204811691600160481b90041683565b6040805167ffffffffffffffff909416845291151560208401521515908201526060016100c8565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b3360009081526020819052604090205467ffffffffffffffff16156102775760405162461bcd60e51b815260206004820152601860248201527f4c4556583a204f4e455f444f4d41494e5f414c4c4f574544000000000000000060448201526064015b60405180910390fd5b815160038110156102c35760405162461bcd60e51b8152602060048201526016602482015275131155960e881113d350525397d513d3d7d4d213d49560521b604482015260640161026e565b6000836040516020016102d69190610d11565b60405160208183030381529060405280519060200120905060007f00000000000000000000000000000000000000000000000000000000000000008260405160200161032c929190918252602082015260400190565b60408051808303601f190181529082905280516020909101206302571be360e01b82526004820181905291506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906302571be390602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610d2d565b6001600160a01b0316146104185760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a204455504c494341544560881b604482015260640161026e565b6040516305ef2c7f60e41b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018390523060448201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690635ef2c7f09060a401600060405180830381600087803b1580156104d557600080fd5b505af11580156104e9573d6000803e3d6000fd5b505060405162d5fa2b60e81b8152600481018490526001600160a01b0387811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063d5fa2b009150604401600060405180830381600087803b15801561055657600080fd5b505af115801561056a573d6000803e3d6000fd5b50506040516306ab592360e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018590526001600160a01b0387811660448301527f00000000000000000000000000000000000000000000000000000000000000001692506306ab592391506064016020604051808303816000875af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610d4a565b50600783111561063a4262127500610d63565b336000908152602081905260408082208054851515600160401b810268ffffffffffffffffff1990921667ffffffffffffffff9690961695909517179055516001600160a01b0388169186917fec70afbd65b171786ffda4b0655d145a1d6e0bc9407e225c9864fbd1b4e910429190a480156106ed576106ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330670de0b6b3a76400006108cd565b505050505050565b336000908152602081905260409020805467ffffffffffffffff81169060ff600160401b8204811691600160481b900416816107645760405162461bcd60e51b815260206004820152600e60248201526d131155960e881393d397d410525160921b604482015260640161026e565b60008367ffffffffffffffff16116107b35760405162461bcd60e51b8152602060048201526012602482015271131155960e881393d397d1561254d511539560721b604482015260640161026e565b428367ffffffffffffffff1611156107ff5760405162461bcd60e51b815260206004820152600f60248201526e4c4556583a20544f4f5f4541524c5960881b604482015260640161026e565b801561083f5760405162461bcd60e51b815260206004820152600f60248201526e2622ab2c1d102ba4aa24222920aba760891b604482015260640161026e565b835469ff0000000000000000001916600160481b1784556040516001600160a01b038616907ff67611512e0a2d90c96fd3f08dca4971bc45fba9dc679eabe839a32abbe58a8e90600090a26108c66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686670de0b6b3a764000061093e565b5050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526109389085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610973565b50505050565b6040516001600160a01b03831660248201526044810182905261096e90849063a9059cbb60e01b90606401610901565b505050565b60006109c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610a459092919063ffffffff16565b80519091501561096e57808060200190518101906109e69190610d89565b61096e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026e565b6060610a548484600085610a5e565b90505b9392505050565b606082471015610abf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161026e565b6001600160a01b0385163b610b165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026e565b600080866001600160a01b03168587604051610b329190610d11565b60006040518083038185875af1925050503d8060008114610b6f576040519150601f19603f3d011682016040523d82523d6000602084013e610b74565b606091505b5091509150610b84828286610b8f565b979650505050505050565b60608315610b9e575081610a57565b825115610bae5782518084602001fd5b8160405162461bcd60e51b815260040161026e9190610dab565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610bf357600080fd5b50565b8035610c0181610bde565b919050565b60008060408385031215610c1957600080fd5b823567ffffffffffffffff80821115610c3157600080fd5b818501915085601f830112610c4557600080fd5b813581811115610c5757610c57610bc8565b604051601f8201601f19908116603f01168101908382118183101715610c7f57610c7f610bc8565b81604052828152886020848701011115610c9857600080fd5b826020860160208301376000602084830101528096505050505050610cbf60208401610bf6565b90509250929050565b600060208284031215610cda57600080fd5b8135610a5781610bde565b60005b83811015610d00578181015183820152602001610ce8565b838111156109385750506000910152565b60008251610d23818460208701610ce5565b9190910192915050565b600060208284031215610d3f57600080fd5b8151610a5781610bde565b600060208284031215610d5c57600080fd5b5051919050565b60008219821115610d8457634e487b7160e01b600052601160045260246000fd5b500190565b600060208284031215610d9b57600080fd5b81518015158114610a5757600080fd5b6020815260008251806020840152610dca816040850160208701610ce5565b601f01601f1916919091016040019291505056fea2646970667358221220867d0aa528cec2285b5fbd9b97e00e773fcea1d5e5eb3fc340ff3afbb725ce7464736f6c634300080d0033"; | ||
@@ -217,0 +217,0 @@ export class SubdomainsRegistry__factory extends ContractFactory { |
@@ -24,3 +24,2 @@ /* Autogenerated file. Do not edit manually. */ | ||
functions: { | ||
"deposits(address)": FunctionFragment; | ||
"ens()": FunctionFragment; | ||
@@ -30,2 +29,3 @@ "node()": FunctionFragment; | ||
"register(string,address)": FunctionFragment; | ||
"registrations(address)": FunctionFragment; | ||
"resolver()": FunctionFragment; | ||
@@ -36,3 +36,2 @@ "token()": FunctionFragment; | ||
encodeFunctionData(functionFragment: "deposits", values: [string]): string; | ||
encodeFunctionData(functionFragment: "ens", values?: undefined): string; | ||
@@ -45,2 +44,6 @@ encodeFunctionData(functionFragment: "node", values?: undefined): string; | ||
): string; | ||
encodeFunctionData( | ||
functionFragment: "registrations", | ||
values: [string] | ||
): string; | ||
encodeFunctionData(functionFragment: "resolver", values?: undefined): string; | ||
@@ -50,3 +53,2 @@ encodeFunctionData(functionFragment: "token", values?: undefined): string; | ||
decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; | ||
decodeFunctionResult(functionFragment: "ens", data: BytesLike): Result; | ||
@@ -56,2 +58,6 @@ decodeFunctionResult(functionFragment: "node", data: BytesLike): Result; | ||
decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; | ||
decodeFunctionResult( | ||
functionFragment: "registrations", | ||
data: BytesLike | ||
): Result; | ||
decodeFunctionResult(functionFragment: "resolver", data: BytesLike): Result; | ||
@@ -114,13 +120,2 @@ decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; | ||
functions: { | ||
deposits( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
ens(overrides?: CallOverrides): Promise<[string]>; | ||
@@ -138,2 +133,13 @@ | ||
registrations( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
resolver(overrides?: CallOverrides): Promise<[string]>; | ||
@@ -149,13 +155,2 @@ | ||
deposits( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
ens(overrides?: CallOverrides): Promise<string>; | ||
@@ -173,2 +168,13 @@ | ||
registrations( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
resolver(overrides?: CallOverrides): Promise<string>; | ||
@@ -184,13 +190,2 @@ | ||
callStatic: { | ||
deposits( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
ens(overrides?: CallOverrides): Promise<string>; | ||
@@ -208,2 +203,13 @@ | ||
registrations( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise< | ||
[BigNumber, boolean, boolean] & { | ||
deadline: BigNumber; | ||
paid: boolean; | ||
withdrawn: boolean; | ||
} | ||
>; | ||
resolver(overrides?: CallOverrides): Promise<string>; | ||
@@ -230,4 +236,2 @@ | ||
estimateGas: { | ||
deposits(arg0: string, overrides?: CallOverrides): Promise<BigNumber>; | ||
ens(overrides?: CallOverrides): Promise<BigNumber>; | ||
@@ -245,2 +249,4 @@ | ||
registrations(arg0: string, overrides?: CallOverrides): Promise<BigNumber>; | ||
resolver(overrides?: CallOverrides): Promise<BigNumber>; | ||
@@ -257,7 +263,2 @@ | ||
populateTransaction: { | ||
deposits( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise<PopulatedTransaction>; | ||
ens(overrides?: CallOverrides): Promise<PopulatedTransaction>; | ||
@@ -275,2 +276,7 @@ | ||
registrations( | ||
arg0: string, | ||
overrides?: CallOverrides | ||
): Promise<PopulatedTransaction>; | ||
resolver(overrides?: CallOverrides): Promise<PopulatedTransaction>; | ||
@@ -277,0 +283,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
1443956
44
26158