hardhat-gasless-deployer
Version:
Hardhat Plugin for deploying contracts using GSN
665 lines (664 loc) • 34.3 kB
JSON
{
"bytecode": "608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119028061007e6000396000f3fe6080604052600436106101c55760003560e01c80638222f07d116100f7578063bbdaa3c911610095578063df463a6611610064578063df463a661461062c578063e1838f8d14610641578063f2fde38b14610661578063f9c002f71461068157600080fd5b8063bbdaa3c9146105b6578063ce1b815f146105cd578063da742228146105eb578063dd1bcaa11461060b57600080fd5b80638da5cb5b116100d15780638da5cb5b14610518578063921276ea14610536578063b039a88f14610558578063b90b41cf146105a057600080fd5b80638222f07d14610498578063858437b0146104c857806386c0a9f8146104f857600080fd5b80634f28bfb911610164578063715018a61161013e578063715018a61461041157806376fa01c3146104265780637bb05264146104465780637bdf2ec71461046657600080fd5b80634f28bfb9146103ab5780634f33b4dd146103cc5780635c5e3db1146103ed57600080fd5b80630d4ca3a4116101a05780630d4ca3a41461030f57806312256054146103305780632d14c4b7146103505780633a0892e31461037057600080fd5b8062be5dd41461028857806301ffc9a7146102bf5780630613fef8146102ef57600080fd5b36610283576001546001600160a01b03166102275760405162461bcd60e51b815260206004820152601960248201527f72656c6179206875622061646472657373206e6f74207365740000000000000060448201526064015b60405180910390fd5b60015460405163aa67c91960e01b81523060048201526001600160a01b039091169063aa67c9199034906024016000604051808303818588803b15801561026d57600080fd5b505af1158015610281573d6000803e3d6000fd5b005b600080fd5b34801561029457600080fd5b506102a86102a336600461146a565b610698565b6040516102b692919061155f565b60405180910390f35b3480156102cb57600080fd5b506102df6102da3660046115a0565b6106e6565b60405190151581526020016102b6565b3480156102fb57600080fd5b5061028161030a3660046115de565b610738565b34801561031b57600080fd5b506002546102df90600160b01b900460ff1681565b34801561033c57600080fd5b5061028161034b3660046115de565b61076b565b34801561035c57600080fd5b5061028161036b366004611617565b61079e565b34801561037c57600080fd5b506102df61038b36600461163c565b600560209081526000928352604080842090915290825290205460ff1681565b3480156103b757600080fd5b506002546102df90600160a81b900460ff1681565b3480156103d857600080fd5b506002546102df90600160b81b900460ff1681565b3480156103f957600080fd5b5061040361290481565b6040519081526020016102b6565b34801561041d57600080fd5b50610281610810565b34801561043257600080fd5b50610281610441366004611671565b610824565b34801561045257600080fd5b50610281610461366004611701565b610833565b34801561047257600080fd5b506001546001600160a01b03165b6040516001600160a01b0390911681526020016102b6565b3480156104a457600080fd5b506102df6104b3366004611701565b60036020526000908152604090205460ff1681565b3480156104d457600080fd5b506102df6104e3366004611701565b60046020526000908152604090205460ff1681565b34801561050457600080fd5b5061028161051336600461171e565b6108c3565b34801561052457600080fd5b506000546001600160a01b0316610480565b34801561054257600080fd5b5061054b61092b565b6040516102b6919061177a565b34801561056457600080fd5b5061056d61094b565b6040516102b691908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b3480156105ac57600080fd5b5061040361c35081565b3480156105c257600080fd5b506104036201adb081565b3480156105d957600080fd5b506002546001600160a01b0316610480565b3480156105f757600080fd5b50610281610606366004611701565b6109b4565b34801561061757600080fd5b506002546102df90600160a01b900460ff1681565b34801561063857600080fd5b50610403610a44565b34801561064d57600080fd5b5061028161065c36600461178d565b610a56565b34801561066d57600080fd5b5061028161067c366004611701565b610a9f565b34801561068d57600080fd5b50610403620186a081565b606060006106a4610b18565b6106ad88610b72565b6106b688610c0a565b6106bf88610c65565b6106c98585610ccf565b6106d7888888888888610d21565b91509150965096945050505050565b60006001600160e01b031982166370d596f560e11b148061071757506001600160e01b03198216630704183b60e11b145b8061073257506301ffc9a760e01b6001600160e01b03198316145b92915050565b610740611032565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b610773611032565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6107a6611032565b60015460405163f3fef3a360e01b81526001600160a01b038381166004830152602482018590529091169063f3fef3a390604401600060405180830381600087803b1580156107f457600080fd5b505af1158015610808573d6000803e3d6000fd5b505050505050565b610818611032565b610822600061108c565b565b61082c610b18565b5050505050565b61083b611032565b6108556001600160a01b03821663e9fb30f760e01b6110dc565b6108a15760405162461bcd60e51b815260206004820152601f60248201527f746172676574206973206e6f7420612076616c6964204952656c617948756200604482015260640161021e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6108cb611032565b6002805461ffff60a01b1916600160a01b9515159590950260ff60a81b191694909417600160a81b931515939093029290921761ffff60b01b1916600160b01b9115159190910260ff60b81b191617600160b81b91151591909102179055565b60606040518060600160405280602981526020016118a460299139905090565b6109766040518060800160405280600081526020016000815260200160008152602001600081525090565b604051806080016040528061c350620186a061099291906117d6565b8152602001620186a081526020016201adb08152602001612904815250905090565b6109bc611032565b6109d66001600160a01b0382166309788f9960e21b6110dc565b610a225760405162461bcd60e51b815260206004820181905260248201527f746172676574206973206e6f7420612076616c69642049466f72776172646572604482015260640161021e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b610a5361c350620186a06117d6565b81565b610a5e611032565b6001600160a01b0390921660009081526005602090815260408083206001600160e01b0319909416835292905220805491151560ff19909216919091179055565b610aa7611032565b6001600160a01b038116610b0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021e565b610b158161108c565b50565b6001546001600160a01b031633146108225760405162461bcd60e51b815260206004820152601e60248201527f63616e206f6e6c792062652063616c6c65642062792052656c61794875620000604482015260640161021e565b610b7f60208201826117f7565b610b909060c081019060a001611701565b6001600160a01b0316610bab6002546001600160a01b031690565b6001600160a01b031614610c015760405162461bcd60e51b815260206004820152601860248201527f466f72776172646572206973206e6f7420747275737465640000000000000000604482015260640161021e565b610b15816110ff565b610c148180611817565b6040013515610b155760405162461bcd60e51b815260206004820152601c60248201527f76616c7565207472616e73666572206e6f7420737570706f7274656400000000604482015260640161021e565b610c7260208201826117f7565b610c809060c081019061182d565b159050610b155760405162461bcd60e51b815260206004820152601c60248201527f73686f756c642068617665206e6f207061796d61737465724461746100000000604482015260640161021e565b8015610d1d5760405162461bcd60e51b815260206004820152601b60248201527f73686f756c642068617665206e6f20617070726f76616c446174610000000000604482015260640161021e565b5050565b606060008315610d735760405162461bcd60e51b815260206004820152601c60248201527f617070726f76616c446174613a20696e76616c6964206c656e67746800000000604482015260640161021e565b610d8060208901896117f7565b610d8e9060c081019061182d565b159050610ddd5760405162461bcd60e51b815260206004820152601d60248201527f7061796d6173746572446174613a20696e76616c6964206c656e677468000000604482015260640161021e565b600254600160a01b900460ff1615610e6f576000610dfb8980611817565b610e09906020810190611701565b6001600160a01b03811660009081526003602052604090205490915060ff16610e6d5760405162461bcd60e51b81526020600482015260166024820152751cd95b99195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015260640161021e565b505b600254600160a81b900460ff1615610f04576000610e8d8980611817565b610e9e906040810190602001611701565b6001600160a01b03811660009081526004602052604090205490915060ff16610f025760405162461bcd60e51b81526020600482015260166024820152751d185c99d95d081b9bdd081dda1a5d195b1a5cdd195960521b604482015260640161021e565b505b600254600160b01b900460ff1615611008576000610f228980611817565b610f33906040810190602001611701565b90506000610f8c610f448b80611817565b610f529060a081019061182d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112e892505050565b6001600160a01b03831660009081526005602090815260408083206001600160e01b03198516845290915290205490915060ff166110055760405162461bcd60e51b81526020600482015260166024820152751b595d1a1bd9081b9bdd081dda1a5d195b1a5cdd195960521b604482015260640161021e565b50505b505060025460408051602081019091526000815297600160b81b90910460ff169650945050505050565b6000546001600160a01b031633146108225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161021e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006110e7836112f5565b80156110f857506110f88383611328565b9392505050565b60008061110c8380611817565b61111d906040810190602001611701565b6001600160a01b031663572b6c0560e01b61113b60208601866117f7565b61114c9060c081019060a001611701565b6040516001600160a01b03909116602482015260440160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516111a09190611874565b600060405180830381855afa9150503d80600081146111db576040519150601f19603f3d011682016040523d82523d6000602084013e6111e0565b606091505b5091509150816112325760405162461bcd60e51b815260206004820152601c60248201527f697354727573746564466f727761726465723a20726576657274656400000000604482015260640161021e565b80516020146112835760405162461bcd60e51b815260206004820181905260248201527f697354727573746564466f727761726465723a2062616420726573706f6e7365604482015260640161021e565b808060200190518101906112979190611886565b6112e35760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420666f7277617264657220666f7220726563697069656e7400604482015260640161021e565b505050565b60006107328260006113b1565b6000611308826301ffc9a760e01b611328565b80156107325750611321826001600160e01b0319611328565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801561139a575060208210155b80156113a65750600081115b979650505050505050565b60006113be8260046117d6565b8351101561140e5760405162461bcd60e51b815260206004820152601a60248201527f726561644279746573343a206461746120746f6f2073686f7274000000000000604482015260640161021e565b5001602001516001600160e01b03191690565b60008083601f84011261143357600080fd5b50813567ffffffffffffffff81111561144b57600080fd5b60208301915083602082850101111561146357600080fd5b9250929050565b6000806000806000806080878903121561148357600080fd5b863567ffffffffffffffff8082111561149b57600080fd5b908801906040828b0312156114af57600080fd5b909650602088013590808211156114c557600080fd5b6114d18a838b01611421565b909750955060408901359150808211156114ea57600080fd5b506114f789828a01611421565b979a9699509497949695606090950135949350505050565b60005b8381101561152a578181015183820152602001611512565b50506000910152565b6000815180845261154b81602086016020860161150f565b601f01601f19169290920160200192915050565b6040815260006115726040830185611533565b905082151560208301529392505050565b80356001600160e01b03198116811461159b57600080fd5b919050565b6000602082840312156115b257600080fd5b6110f882611583565b6001600160a01b0381168114610b1557600080fd5b8015158114610b1557600080fd5b600080604083850312156115f157600080fd5b82356115fc816115bb565b9150602083013561160c816115d0565b809150509250929050565b6000806040838503121561162a57600080fd5b82359150602083013561160c816115bb565b6000806040838503121561164f57600080fd5b823561165a816115bb565b915061166860208401611583565b90509250929050565b60008060008060006080868803121561168957600080fd5b853567ffffffffffffffff808211156116a157600080fd5b6116ad89838a01611421565b9097509550602088013591506116c2826115d0565b90935060408701359250606087013590808211156116df57600080fd5b50860161010081890312156116f357600080fd5b809150509295509295909350565b60006020828403121561171357600080fd5b81356110f8816115bb565b6000806000806080858703121561173457600080fd5b843561173f816115d0565b9350602085013561174f816115d0565b9250604085013561175f816115d0565b9150606085013561176f816115d0565b939692955090935050565b6020815260006110f86020830184611533565b6000806000606084860312156117a257600080fd5b83356117ad816115bb565b92506117bb60208501611583565b915060408401356117cb816115d0565b809150509250925092565b8082018082111561073257634e487b7160e01b600052601160045260246000fd5b6000823560fe1983360301811261180d57600080fd5b9190910192915050565b6000823560de1983360301811261180d57600080fd5b6000808335601e1984360301811261184457600080fd5b83018035915067ffffffffffffffff82111561185f57600080fd5b60200191503681900382131561146357600080fd5b6000825161180d81846020870161150f565b60006020828403121561189857600080fd5b81516110f8816115d056fe332e302e302d626574612e332b6f70656e67736e2e77686974656c6973742e697061796d6173746572a2646970667358221220f07006820cd83f973e946ca01bcbb62f54e0d09d3379634920a121bea72ed7f764736f6c63430008130033",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "CALLDATA_SIZE_LIMIT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "FORWARDER_HUB_OVERHEAD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PAYMASTER_ACCEPTANCE_BUDGET",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "POST_RELAYED_CALL_GAS_LIMIT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PRE_RELAYED_CALL_GAS_LIMIT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getGasAndDataLimits",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "acceptanceBudget",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "preRelayedCallGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "postRelayedCallGasLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "calldataSizeLimit",
"type": "uint256"
}
],
"internalType": "struct IPaymaster.GasAndDataLimits",
"name": "limits",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRelayHub",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTrustedForwarder",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"name": "methodWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "context",
"type": "bytes"
},
{
"internalType": "bool",
"name": "success",
"type": "bool"
},
{
"internalType": "uint256",
"name": "gasUseWithoutPost",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint256",
"name": "maxFeePerGas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxPriorityFeePerGas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "transactionCalldataGasUsed",
"type": "uint256"
},
{
"internalType": "address",
"name": "relayWorker",
"type": "address"
},
{
"internalType": "address",
"name": "paymaster",
"type": "address"
},
{
"internalType": "address",
"name": "forwarder",
"type": "address"
},
{
"internalType": "bytes",
"name": "paymasterData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "clientId",
"type": "uint256"
}
],
"internalType": "struct GsnTypes.RelayData",
"name": "relayData",
"type": "tuple"
}
],
"name": "postRelayedCall",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"components": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "gas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "validUntilTime",
"type": "uint256"
}
],
"internalType": "struct IForwarder.ForwardRequest",
"name": "request",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "maxFeePerGas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxPriorityFeePerGas",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "transactionCalldataGasUsed",
"type": "uint256"
},
{
"internalType": "address",
"name": "relayWorker",
"type": "address"
},
{
"internalType": "address",
"name": "paymaster",
"type": "address"
},
{
"internalType": "address",
"name": "forwarder",
"type": "address"
},
{
"internalType": "bytes",
"name": "paymasterData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "clientId",
"type": "uint256"
}
],
"internalType": "struct GsnTypes.RelayData",
"name": "relayData",
"type": "tuple"
}
],
"internalType": "struct GsnTypes.RelayRequest",
"name": "relayRequest",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "approvalData",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "maxPossibleGas",
"type": "uint256"
}
],
"name": "preRelayedCall",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
},
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "senderWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_useSenderWhitelist",
"type": "bool"
},
{
"internalType": "bool",
"name": "_useTargetWhitelist",
"type": "bool"
},
{
"internalType": "bool",
"name": "_useMethodWhitelist",
"type": "bool"
},
{
"internalType": "bool",
"name": "_useRejectOnRecipientRevert",
"type": "bool"
}
],
"name": "setConfiguration",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IRelayHub",
"name": "hub",
"type": "address"
}
],
"name": "setRelayHub",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "forwarder",
"type": "address"
}
],
"name": "setTrustedForwarder",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "targetWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "useMethodWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "useRejectOnRecipientRevert",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "useSenderWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "useTargetWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "versionPaymaster",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes4",
"name": "method",
"type": "bytes4"
},
{
"internalType": "bool",
"name": "isAllowed",
"type": "bool"
}
],
"name": "whitelistMethod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "bool",
"name": "isAllowed",
"type": "bool"
}
],
"name": "whitelistSender",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bool",
"name": "isAllowed",
"type": "bool"
}
],
"name": "whitelistTarget",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address payable",
"name": "target",
"type": "address"
}
],
"name": "withdrawRelayHubDepositTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}