diff --git a/README.md b/README.md
index f2bb9b3e..6b490334 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,19 @@ MIT
## Addresses
+
+v TBD
+
+| Name | Address |
+| -------------------- | ------------------------------------------ |
+| Kernel | 0xd3082872F8B06073A021b4602e022d5A070d7cfC |
+| KernelFactory | 0x5de4839a76cf55d0c90e2061ef4386d962E15ae3 |
+| SessionKeyValidator | 0xB8E3c4bEaACAd06f6092793012DA4a8cB23D6123 |
+| ECDSA Validator | 0xd9AB5096a832b9ce79914329DAEE236f8Eea0390 |
+| FclWebAuthnValidator | 0x42085b533b27B9AfDAF3864a38c72eF853943DAB |
+| P256VerifierWrapper | 0x738e3257EE928637fE62c37F91D3e722C45Dcc7C |
+
+
v2.4
diff --git a/broadcast/DeployDeterministic.s.sol/137/run-1710798757.json b/broadcast/DeployDeterministic.s.sol/137/run-1710798757.json
new file mode 100644
index 00000000..14a3014a
--- /dev/null
+++ b/broadcast/DeployDeterministic.s.sol/137/run-1710798757.json
@@ -0,0 +1,120 @@
+{
+ "transactions": [
+ {
+ "hash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionType": "CREATE2",
+ "contractName": "P256VerifierWrapper",
+ "contractAddress": "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "type": "0x02",
+ "from": "0xae4e57b886541829ba70efc84340653c41e2908c",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0x129f19",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a608060405234801561001057600080fd5b50610efb806100206000396000f3fe608060405234801561001057600080fd5b50600036606060a08214610040576040805160006020820152016040516020818303038152906040529050610113565b600061004f6020828587610e71565b61005891610e9b565b9050600061006a604060208688610e71565b61007391610e9b565b90506000610085606060408789610e71565b61008e91610e9b565b905060006100a060806060888a610e71565b6100a991610e9b565b905060006100bb60a06080898b610e71565b6100c491610e9b565b905060006100d5868686868661011e565b6100e05760006100e3565b60015b60ff169050806040516020016100fb91815260200190565b60405160208183030381529060405296505050505050505b915050805190602001f35b600084158061013b5750600080516020610edb8339815191528510155b80610144575083155b8061015d5750600080516020610edb8339815191528410155b1561016a575060006101fa565b6101748383610203565b610180575060006101fa565b600061018b856102ff565b90506000600080516020610edb83398151915282890990506000600080516020610edb833981519152838909905060006101c787878585610371565b9050600080516020610edb8339815191526101f08a600080516020610edb833981519152610eb9565b8208159450505050505b95945050505050565b600082158015610211575081155b806102295750600160601b63ffffffff60c01b031983145b806102415750600160601b63ffffffff60c01b031982145b1561024e575060006102f9565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b8208919091149150505b92915050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020610edb83398151915260a082015260208160c0836005600019fa61036a57600080fd5b5192915050565b600080808060ff818088158015610386575087155b1561039a5760009650505050505050610a33565b6103e67f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d610a3b565b9092509050811580156103f7575080155b1561042557600080516020610edb83398151915288600080516020610edb833981519152038a089850600097505b600189841c16600189851c1660011b015b806104585760018403935060018a851c1660018a861c1660011b019050610436565b50600189841c16600189851c1660011b019550600186036104ba577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b600286036104c9578a96508993505b600386036104d8578196508093505b60018303925060019550600194505b8260001911156109bc57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b019050806106645787600160601b63ffffffff60c01b0319039750505050506109b1565b600181036106b3577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b600281036106c2578e93508d92505b600381036106d1578593508492505b896106ea57509198506001975087965094506109b19050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806108a357836108a357600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506109b1565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b6001830392506104e7565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610a1657600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b600080808086610a52578585935093505050610ac0565b84610a64578787935093505050610ac0565b8588148015610a7257508487145b15610a9357610a848888600180610ac9565b929a5090985092509050610aad565b610aa288886001808a8a610c24565b929a50909850925090505b610ab988888484610da8565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003610c4357508492508391506001905080610d9b565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000610db684610e15565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61036a57600080fd5b60008085851115610e8157600080fd5b83861115610e8e57600080fd5b5050820193919092039150565b803560208310156102f957600019602084900360031b1b1692915050565b818103818111156102f957634e487b7160e01b600052601160045260246000fdfeffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
+ "nonce": "0x14a",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionType": "CREATE2",
+ "contractName": "WebAuthnFclValidator",
+ "contractAddress": "0x42085b533b27B9AfDAF3864a38c72eF853943DAB",
+ "function": null,
+ "arguments": [
+ "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C"
+ ],
+ "transaction": {
+ "type": "0x02",
+ "from": "0xae4e57b886541829ba70efc84340653c41e2908c",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0xf83b2",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a60a060405234801561001057600080fd5b50604051610cd6380380610cd683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4b61008b60003960006103a80152610c4b6000f3fe6080604052600436106100705760003560e01c8063857cdbb81161004e578063857cdbb8146100d05780638fc925aa146101235780639112b1ad1461014b5780639ea9bd591461017057600080fd5b80630c95955614610075578063333daf921461008a5780633a871cdd146100bd575b600080fd5b610088610083366004610874565b610190565b005b34801561009657600080fd5b506100aa6100a53660046108b6565b61021b565b6040519081526020015b60405180910390f35b6100aa6100cb366004610902565b61026a565b3480156100dc57600080fd5b5061010e6100eb366004610972565b6001600160a01b0316600090815260208190526040902080546001909101549091565b604080519283526020830191909152016100b4565b610088610131366004610874565b505033600090815260208190526040812081815560010155565b34801561015757600080fd5b506101606102c9565b60405190151581526020016100b4565b34801561017c57600080fd5b5061016061018b36600461098d565b610386565b600080806101a0848601866109dd565b33600090815260208190526040908190208381556001810183905590519396509194509250906101d1908590610ac5565b60408051918290038220858352602083018590529133917ff35f455f13928c63f3f93ef6e5c32ab67d30d0d3961c9aa4b5436265999fd65b910160405180910390a3505050505050565b33600090815260208181526040808320815180830190925280548252600101549181019190915261024e818686866103a1565b1561025d576000915050610263565b60019150505b9392505050565b600080808061027c6020880188610972565b6001600160a01b0316815260208082019290925260409081016000208151808301909252805482526001015491810191909152905061024e81856102c4610140890189610ae1565b6103a1565b6000806040518060c0016040528060a08152602001610bab60a0913990506000806101006001600160a01b0316836040516103049190610ac5565b600060405180830381855afa9150503d806000811461033f576040519150601f19603f3d011682016040523d82523d6000602084013e610344565b606091505b509150915081158061035557508051155b15610364576000935050505090565b60008180602001905181019061037a9190610b28565b60011495945050505050565b600060405163d623472560e01b815260040160405180910390fd5b60006103d97f000000000000000000000000000000000000000000000000000000000000000085858589600001518a602001516103e2565b95945050505050565b6000846103f26020820182610b41565b6103fc5761010097505b600061040888836104f3565b60408051602081018390526080858101358284015260a08087013560608401529082018990528082018890528251808303909101815260c09091019182905291925060009081906001600160a01b038d1690610465908590610ac5565b600060405180830381855afa9150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5090925090508115806104b757508051155b156104ca576000955050505050506104e9565b808060200190518101906104de9190610b28565b600114955050505050505b9695505050505050565b600036816105046020850185610ae1565b90925090503660006105196040870187610ae1565b909250905060608601356001810161053857879550505050505061073d565b600160f81b808686602081811061055157610551610b63565b9050013560f81c60f81b166001600160f81b031916146105845760405163408bbba360e11b815260040160405180910390fd5b60006105b38960405160200161059c91815260200190565b604051602081830303815290604052600180610743565b90506000815167ffffffffffffffff8111156105d1576105d16109c7565b6040519080825280601f01601f1916602001820160405280156105fb576020820181803683370190505b509050805183860160208301378151602083012081516020830120146106295763811777466000526004601cfd5b5060009050610639856020610b79565b67ffffffffffffffff811115610651576106516109c7565b6040519080825280601f01601f19166020018201604052801561067b576020820181803683370190505b50905084866020830137600060028585604051610699929190610b9a565b602060405180830381855afa1580156106b6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906106d99190610b28565b905080602087018301526002826040516106f39190610ac5565b602060405180830381855afa158015610710573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107339190610b28565b9750505050505050505b92915050565b606083518015610823576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181015b6003880197508751603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f8116516003535060005182526004820191508082106107b357602001604052613d3d60f01b600384066002048083039190915260008615159091029182900352900382525b509392505050565b60008083601f84011261083d57600080fd5b50813567ffffffffffffffff81111561085557600080fd5b60208301915083602082850101111561086d57600080fd5b9250929050565b6000806020838503121561088757600080fd5b823567ffffffffffffffff81111561089e57600080fd5b6108aa8582860161082b565b90969095509350505050565b6000806000604084860312156108cb57600080fd5b83359250602084013567ffffffffffffffff8111156108e957600080fd5b6108f58682870161082b565b9497909650939450505050565b60008060006060848603121561091757600080fd5b833567ffffffffffffffff81111561092e57600080fd5b8401610160818703121561094157600080fd5b95602085013595506040909401359392505050565b80356001600160a01b038116811461096d57600080fd5b919050565b60006020828403121561098457600080fd5b61026382610956565b6000806000604084860312156109a257600080fd5b6109ab84610956565b9250602084013567ffffffffffffffff8111156108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156109f257600080fd5b833567ffffffffffffffff80821115610a0a57600080fd5b818601915086601f830112610a1e57600080fd5b813581811115610a3057610a306109c7565b604051601f8201601f19908116603f01168101908382118183101715610a5857610a586109c7565b81604052828152896020848701011115610a7157600080fd5b82602086016020830137600060208483010152809750505050505060208401359150604084013590509250925092565b60005b83811015610abc578181015183820152602001610aa4565b50506000910152565b60008251610ad7818460208701610aa1565b9190910192915050565b6000808335601e19843603018112610af857600080fd5b83018035915067ffffffffffffffff821115610b1357600080fd5b60200191503681900382131561086d57600080fd5b600060208284031215610b3a57600080fd5b5051919050565b600060208284031215610b5357600080fd5b8135801515811461026357600080fd5b634e487b7160e01b600052603260045260246000fd5b8082018082111561073d57634e487b7160e01b600052601160045260246000fd5b818382376000910190815291905056fe4cee90eb86eaa050036147a12d49004b6b9c72bd725d39d4785011fe190f0b4da73bd4903f0ce3b639bbbf6e8e80d16931ff4bcf5993d58468e8fb19086e8cac36dbcd03009df8c59286b162af3bd7fcc0450c9aa81be5d10d312af6c66b1d604aebd3099c618202fcfe16ae7770b0c49ab5eadf74b754204a3bb6060e44eff37618b065f9832de4ca6ca971a7a1adc826d0f7c00181a5fb2ddf79ae00b4e10e000000000000000000000000738e3257ee928637fe62c37f91d3e722c45dcc7c",
+ "nonce": "0x14b",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "transactionHash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionIndex": "0x3f",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "from": "0xaE4e57b886541829BA70eFC84340653c41e2908C",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xa179a6",
+ "gasUsed": "0xd7c3e",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x000000000000000000000000ae4e57b886541829ba70efc84340653c41e2908c",
+ "0x000000000000000000000000b95d435df3f8b2a8d8b9c2b7c8766c9ae6ed8cc9"
+ ],
+ "data": "0x000000000000000000000000000000000000000000000000005e31a213f3a8000000000000000000000000000000000000000000000000007bcc682e0d9d8c6e00000000000000000000000000000000000000000000000cc28260214b01815b0000000000000000000000000000000000000000000000007b6e368bf9a9e46e00000000000000000000000000000000000000000000000cc2e091c35ef5295b",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "transactionHash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionIndex": "0x3f",
+ "logIndex": "0x1c3",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000800000000000000000000000000000800000000000000000000100000000000100000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000020002000000000000000000000000000000000000000000000004000000000000000040001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0x6fd1bbec0"
+ },
+ {
+ "transactionHash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionIndex": "0x40",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "from": "0xaE4e57b886541829BA70eFC84340653c41e2908C",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xacb5e6",
+ "gasUsed": "0xb3c40",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x000000000000000000000000ae4e57b886541829ba70efc84340653c41e2908c",
+ "0x000000000000000000000000b95d435df3f8b2a8d8b9c2b7c8766c9ae6ed8cc9"
+ ],
+ "data": "0x000000000000000000000000000000000000000000000000004e7a5fc93b00000000000000000000000000000000000000000000000000007b6e297aa0c059ee00000000000000000000000000000000000000000000000cc2e091c35ef5295b0000000000000000000000000000000000000000000000007b1faf1ad78559ee00000000000000000000000000000000000000000000000cc32f0c232830295b",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "transactionHash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionIndex": "0x40",
+ "logIndex": "0x1c4",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000800000000000000000000000000000800000000000000000000100000000000100000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000020002000000000000000000000000000000000000000000000004000000000000000040001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0x6fd1bbec0"
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1710798757,
+ "chain": 137,
+ "commit": "7cf4583"
+}
\ No newline at end of file
diff --git a/broadcast/DeployDeterministic.s.sol/137/run-latest.json b/broadcast/DeployDeterministic.s.sol/137/run-latest.json
new file mode 100644
index 00000000..14a3014a
--- /dev/null
+++ b/broadcast/DeployDeterministic.s.sol/137/run-latest.json
@@ -0,0 +1,120 @@
+{
+ "transactions": [
+ {
+ "hash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionType": "CREATE2",
+ "contractName": "P256VerifierWrapper",
+ "contractAddress": "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "type": "0x02",
+ "from": "0xae4e57b886541829ba70efc84340653c41e2908c",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0x129f19",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a608060405234801561001057600080fd5b50610efb806100206000396000f3fe608060405234801561001057600080fd5b50600036606060a08214610040576040805160006020820152016040516020818303038152906040529050610113565b600061004f6020828587610e71565b61005891610e9b565b9050600061006a604060208688610e71565b61007391610e9b565b90506000610085606060408789610e71565b61008e91610e9b565b905060006100a060806060888a610e71565b6100a991610e9b565b905060006100bb60a06080898b610e71565b6100c491610e9b565b905060006100d5868686868661011e565b6100e05760006100e3565b60015b60ff169050806040516020016100fb91815260200190565b60405160208183030381529060405296505050505050505b915050805190602001f35b600084158061013b5750600080516020610edb8339815191528510155b80610144575083155b8061015d5750600080516020610edb8339815191528410155b1561016a575060006101fa565b6101748383610203565b610180575060006101fa565b600061018b856102ff565b90506000600080516020610edb83398151915282890990506000600080516020610edb833981519152838909905060006101c787878585610371565b9050600080516020610edb8339815191526101f08a600080516020610edb833981519152610eb9565b8208159450505050505b95945050505050565b600082158015610211575081155b806102295750600160601b63ffffffff60c01b031983145b806102415750600160601b63ffffffff60c01b031982145b1561024e575060006102f9565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b8208919091149150505b92915050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020610edb83398151915260a082015260208160c0836005600019fa61036a57600080fd5b5192915050565b600080808060ff818088158015610386575087155b1561039a5760009650505050505050610a33565b6103e67f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d610a3b565b9092509050811580156103f7575080155b1561042557600080516020610edb83398151915288600080516020610edb833981519152038a089850600097505b600189841c16600189851c1660011b015b806104585760018403935060018a851c1660018a861c1660011b019050610436565b50600189841c16600189851c1660011b019550600186036104ba577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b600286036104c9578a96508993505b600386036104d8578196508093505b60018303925060019550600194505b8260001911156109bc57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b019050806106645787600160601b63ffffffff60c01b0319039750505050506109b1565b600181036106b3577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b600281036106c2578e93508d92505b600381036106d1578593508492505b896106ea57509198506001975087965094506109b19050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806108a357836108a357600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506109b1565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b6001830392506104e7565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610a1657600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b600080808086610a52578585935093505050610ac0565b84610a64578787935093505050610ac0565b8588148015610a7257508487145b15610a9357610a848888600180610ac9565b929a5090985092509050610aad565b610aa288886001808a8a610c24565b929a50909850925090505b610ab988888484610da8565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003610c4357508492508391506001905080610d9b565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000610db684610e15565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61036a57600080fd5b60008085851115610e8157600080fd5b83861115610e8e57600080fd5b5050820193919092039150565b803560208310156102f957600019602084900360031b1b1692915050565b818103818111156102f957634e487b7160e01b600052601160045260246000fdfeffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
+ "nonce": "0x14a",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionType": "CREATE2",
+ "contractName": "WebAuthnFclValidator",
+ "contractAddress": "0x42085b533b27B9AfDAF3864a38c72eF853943DAB",
+ "function": null,
+ "arguments": [
+ "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C"
+ ],
+ "transaction": {
+ "type": "0x02",
+ "from": "0xae4e57b886541829ba70efc84340653c41e2908c",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0xf83b2",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a60a060405234801561001057600080fd5b50604051610cd6380380610cd683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4b61008b60003960006103a80152610c4b6000f3fe6080604052600436106100705760003560e01c8063857cdbb81161004e578063857cdbb8146100d05780638fc925aa146101235780639112b1ad1461014b5780639ea9bd591461017057600080fd5b80630c95955614610075578063333daf921461008a5780633a871cdd146100bd575b600080fd5b610088610083366004610874565b610190565b005b34801561009657600080fd5b506100aa6100a53660046108b6565b61021b565b6040519081526020015b60405180910390f35b6100aa6100cb366004610902565b61026a565b3480156100dc57600080fd5b5061010e6100eb366004610972565b6001600160a01b0316600090815260208190526040902080546001909101549091565b604080519283526020830191909152016100b4565b610088610131366004610874565b505033600090815260208190526040812081815560010155565b34801561015757600080fd5b506101606102c9565b60405190151581526020016100b4565b34801561017c57600080fd5b5061016061018b36600461098d565b610386565b600080806101a0848601866109dd565b33600090815260208190526040908190208381556001810183905590519396509194509250906101d1908590610ac5565b60408051918290038220858352602083018590529133917ff35f455f13928c63f3f93ef6e5c32ab67d30d0d3961c9aa4b5436265999fd65b910160405180910390a3505050505050565b33600090815260208181526040808320815180830190925280548252600101549181019190915261024e818686866103a1565b1561025d576000915050610263565b60019150505b9392505050565b600080808061027c6020880188610972565b6001600160a01b0316815260208082019290925260409081016000208151808301909252805482526001015491810191909152905061024e81856102c4610140890189610ae1565b6103a1565b6000806040518060c0016040528060a08152602001610bab60a0913990506000806101006001600160a01b0316836040516103049190610ac5565b600060405180830381855afa9150503d806000811461033f576040519150601f19603f3d011682016040523d82523d6000602084013e610344565b606091505b509150915081158061035557508051155b15610364576000935050505090565b60008180602001905181019061037a9190610b28565b60011495945050505050565b600060405163d623472560e01b815260040160405180910390fd5b60006103d97f000000000000000000000000000000000000000000000000000000000000000085858589600001518a602001516103e2565b95945050505050565b6000846103f26020820182610b41565b6103fc5761010097505b600061040888836104f3565b60408051602081018390526080858101358284015260a08087013560608401529082018990528082018890528251808303909101815260c09091019182905291925060009081906001600160a01b038d1690610465908590610ac5565b600060405180830381855afa9150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5090925090508115806104b757508051155b156104ca576000955050505050506104e9565b808060200190518101906104de9190610b28565b600114955050505050505b9695505050505050565b600036816105046020850185610ae1565b90925090503660006105196040870187610ae1565b909250905060608601356001810161053857879550505050505061073d565b600160f81b808686602081811061055157610551610b63565b9050013560f81c60f81b166001600160f81b031916146105845760405163408bbba360e11b815260040160405180910390fd5b60006105b38960405160200161059c91815260200190565b604051602081830303815290604052600180610743565b90506000815167ffffffffffffffff8111156105d1576105d16109c7565b6040519080825280601f01601f1916602001820160405280156105fb576020820181803683370190505b509050805183860160208301378151602083012081516020830120146106295763811777466000526004601cfd5b5060009050610639856020610b79565b67ffffffffffffffff811115610651576106516109c7565b6040519080825280601f01601f19166020018201604052801561067b576020820181803683370190505b50905084866020830137600060028585604051610699929190610b9a565b602060405180830381855afa1580156106b6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906106d99190610b28565b905080602087018301526002826040516106f39190610ac5565b602060405180830381855afa158015610710573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107339190610b28565b9750505050505050505b92915050565b606083518015610823576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181015b6003880197508751603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f8116516003535060005182526004820191508082106107b357602001604052613d3d60f01b600384066002048083039190915260008615159091029182900352900382525b509392505050565b60008083601f84011261083d57600080fd5b50813567ffffffffffffffff81111561085557600080fd5b60208301915083602082850101111561086d57600080fd5b9250929050565b6000806020838503121561088757600080fd5b823567ffffffffffffffff81111561089e57600080fd5b6108aa8582860161082b565b90969095509350505050565b6000806000604084860312156108cb57600080fd5b83359250602084013567ffffffffffffffff8111156108e957600080fd5b6108f58682870161082b565b9497909650939450505050565b60008060006060848603121561091757600080fd5b833567ffffffffffffffff81111561092e57600080fd5b8401610160818703121561094157600080fd5b95602085013595506040909401359392505050565b80356001600160a01b038116811461096d57600080fd5b919050565b60006020828403121561098457600080fd5b61026382610956565b6000806000604084860312156109a257600080fd5b6109ab84610956565b9250602084013567ffffffffffffffff8111156108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156109f257600080fd5b833567ffffffffffffffff80821115610a0a57600080fd5b818601915086601f830112610a1e57600080fd5b813581811115610a3057610a306109c7565b604051601f8201601f19908116603f01168101908382118183101715610a5857610a586109c7565b81604052828152896020848701011115610a7157600080fd5b82602086016020830137600060208483010152809750505050505060208401359150604084013590509250925092565b60005b83811015610abc578181015183820152602001610aa4565b50506000910152565b60008251610ad7818460208701610aa1565b9190910192915050565b6000808335601e19843603018112610af857600080fd5b83018035915067ffffffffffffffff821115610b1357600080fd5b60200191503681900382131561086d57600080fd5b600060208284031215610b3a57600080fd5b5051919050565b600060208284031215610b5357600080fd5b8135801515811461026357600080fd5b634e487b7160e01b600052603260045260246000fd5b8082018082111561073d57634e487b7160e01b600052601160045260246000fd5b818382376000910190815291905056fe4cee90eb86eaa050036147a12d49004b6b9c72bd725d39d4785011fe190f0b4da73bd4903f0ce3b639bbbf6e8e80d16931ff4bcf5993d58468e8fb19086e8cac36dbcd03009df8c59286b162af3bd7fcc0450c9aa81be5d10d312af6c66b1d604aebd3099c618202fcfe16ae7770b0c49ab5eadf74b754204a3bb6060e44eff37618b065f9832de4ca6ca971a7a1adc826d0f7c00181a5fb2ddf79ae00b4e10e000000000000000000000000738e3257ee928637fe62c37f91d3e722c45dcc7c",
+ "nonce": "0x14b",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "transactionHash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionIndex": "0x3f",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "from": "0xaE4e57b886541829BA70eFC84340653c41e2908C",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xa179a6",
+ "gasUsed": "0xd7c3e",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x000000000000000000000000ae4e57b886541829ba70efc84340653c41e2908c",
+ "0x000000000000000000000000b95d435df3f8b2a8d8b9c2b7c8766c9ae6ed8cc9"
+ ],
+ "data": "0x000000000000000000000000000000000000000000000000005e31a213f3a8000000000000000000000000000000000000000000000000007bcc682e0d9d8c6e00000000000000000000000000000000000000000000000cc28260214b01815b0000000000000000000000000000000000000000000000007b6e368bf9a9e46e00000000000000000000000000000000000000000000000cc2e091c35ef5295b",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "transactionHash": "0xfc0a1549dca8bc94f5255c6abd36ea6f0f6c3f6a66303cf2853fa70d8834e38e",
+ "transactionIndex": "0x3f",
+ "logIndex": "0x1c3",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000800000000000000000000000000000800000000000000000000100000000000100000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000020002000000000000000000000000000000000000000000000004000000000000000040001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0x6fd1bbec0"
+ },
+ {
+ "transactionHash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionIndex": "0x40",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "from": "0xaE4e57b886541829BA70eFC84340653c41e2908C",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xacb5e6",
+ "gasUsed": "0xb3c40",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x000000000000000000000000ae4e57b886541829ba70efc84340653c41e2908c",
+ "0x000000000000000000000000b95d435df3f8b2a8d8b9c2b7c8766c9ae6ed8cc9"
+ ],
+ "data": "0x000000000000000000000000000000000000000000000000004e7a5fc93b00000000000000000000000000000000000000000000000000007b6e297aa0c059ee00000000000000000000000000000000000000000000000cc2e091c35ef5295b0000000000000000000000000000000000000000000000007b1faf1ad78559ee00000000000000000000000000000000000000000000000cc32f0c232830295b",
+ "blockHash": "0x5a342525888114eafea4c634add577df951c46f17d734c166b2fa45c6b12956e",
+ "blockNumber": "0x34472d0",
+ "transactionHash": "0x468cac557ddd12af1b3a4248a8a9e3a6dd74ad895db8c087f3781a4bde24d887",
+ "transactionIndex": "0x40",
+ "logIndex": "0x1c4",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000800000000000000000000000000000800000000000000000000100000000000100000000000000000000000000000000200000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000020002000000000000000000000000000000000000000000000004000000000000000040001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0x6fd1bbec0"
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1710798757,
+ "chain": 137,
+ "commit": "7cf4583"
+}
\ No newline at end of file
diff --git a/broadcast/DeployDeterministic.s.sol/80002/run-1710798602.json b/broadcast/DeployDeterministic.s.sol/80002/run-1710798602.json
new file mode 100644
index 00000000..64dff567
--- /dev/null
+++ b/broadcast/DeployDeterministic.s.sol/80002/run-1710798602.json
@@ -0,0 +1,120 @@
+{
+ "transactions": [
+ {
+ "hash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionType": "CREATE2",
+ "contractName": "P256VerifierWrapper",
+ "contractAddress": "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "type": "0x02",
+ "from": "0x7caf754c934710d7c73bc453654552beca38223f",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0x129f19",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a608060405234801561001057600080fd5b50610efb806100206000396000f3fe608060405234801561001057600080fd5b50600036606060a08214610040576040805160006020820152016040516020818303038152906040529050610113565b600061004f6020828587610e71565b61005891610e9b565b9050600061006a604060208688610e71565b61007391610e9b565b90506000610085606060408789610e71565b61008e91610e9b565b905060006100a060806060888a610e71565b6100a991610e9b565b905060006100bb60a06080898b610e71565b6100c491610e9b565b905060006100d5868686868661011e565b6100e05760006100e3565b60015b60ff169050806040516020016100fb91815260200190565b60405160208183030381529060405296505050505050505b915050805190602001f35b600084158061013b5750600080516020610edb8339815191528510155b80610144575083155b8061015d5750600080516020610edb8339815191528410155b1561016a575060006101fa565b6101748383610203565b610180575060006101fa565b600061018b856102ff565b90506000600080516020610edb83398151915282890990506000600080516020610edb833981519152838909905060006101c787878585610371565b9050600080516020610edb8339815191526101f08a600080516020610edb833981519152610eb9565b8208159450505050505b95945050505050565b600082158015610211575081155b806102295750600160601b63ffffffff60c01b031983145b806102415750600160601b63ffffffff60c01b031982145b1561024e575060006102f9565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b8208919091149150505b92915050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020610edb83398151915260a082015260208160c0836005600019fa61036a57600080fd5b5192915050565b600080808060ff818088158015610386575087155b1561039a5760009650505050505050610a33565b6103e67f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d610a3b565b9092509050811580156103f7575080155b1561042557600080516020610edb83398151915288600080516020610edb833981519152038a089850600097505b600189841c16600189851c1660011b015b806104585760018403935060018a851c1660018a861c1660011b019050610436565b50600189841c16600189851c1660011b019550600186036104ba577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b600286036104c9578a96508993505b600386036104d8578196508093505b60018303925060019550600194505b8260001911156109bc57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b019050806106645787600160601b63ffffffff60c01b0319039750505050506109b1565b600181036106b3577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b600281036106c2578e93508d92505b600381036106d1578593508492505b896106ea57509198506001975087965094506109b19050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806108a357836108a357600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506109b1565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b6001830392506104e7565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610a1657600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b600080808086610a52578585935093505050610ac0565b84610a64578787935093505050610ac0565b8588148015610a7257508487145b15610a9357610a848888600180610ac9565b929a5090985092509050610aad565b610aa288886001808a8a610c24565b929a50909850925090505b610ab988888484610da8565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003610c4357508492508391506001905080610d9b565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000610db684610e15565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61036a57600080fd5b60008085851115610e8157600080fd5b83861115610e8e57600080fd5b5050820193919092039150565b803560208310156102f957600019602084900360031b1b1692915050565b818103818111156102f957634e487b7160e01b600052601160045260246000fdfeffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
+ "nonce": "0x21",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionType": "CREATE2",
+ "contractName": "WebAuthnFclValidator",
+ "contractAddress": "0x42085b533b27B9AfDAF3864a38c72eF853943DAB",
+ "function": null,
+ "arguments": [
+ "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C"
+ ],
+ "transaction": {
+ "type": "0x02",
+ "from": "0x7caf754c934710d7c73bc453654552beca38223f",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0xf83b2",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a60a060405234801561001057600080fd5b50604051610cd6380380610cd683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4b61008b60003960006103a80152610c4b6000f3fe6080604052600436106100705760003560e01c8063857cdbb81161004e578063857cdbb8146100d05780638fc925aa146101235780639112b1ad1461014b5780639ea9bd591461017057600080fd5b80630c95955614610075578063333daf921461008a5780633a871cdd146100bd575b600080fd5b610088610083366004610874565b610190565b005b34801561009657600080fd5b506100aa6100a53660046108b6565b61021b565b6040519081526020015b60405180910390f35b6100aa6100cb366004610902565b61026a565b3480156100dc57600080fd5b5061010e6100eb366004610972565b6001600160a01b0316600090815260208190526040902080546001909101549091565b604080519283526020830191909152016100b4565b610088610131366004610874565b505033600090815260208190526040812081815560010155565b34801561015757600080fd5b506101606102c9565b60405190151581526020016100b4565b34801561017c57600080fd5b5061016061018b36600461098d565b610386565b600080806101a0848601866109dd565b33600090815260208190526040908190208381556001810183905590519396509194509250906101d1908590610ac5565b60408051918290038220858352602083018590529133917ff35f455f13928c63f3f93ef6e5c32ab67d30d0d3961c9aa4b5436265999fd65b910160405180910390a3505050505050565b33600090815260208181526040808320815180830190925280548252600101549181019190915261024e818686866103a1565b1561025d576000915050610263565b60019150505b9392505050565b600080808061027c6020880188610972565b6001600160a01b0316815260208082019290925260409081016000208151808301909252805482526001015491810191909152905061024e81856102c4610140890189610ae1565b6103a1565b6000806040518060c0016040528060a08152602001610bab60a0913990506000806101006001600160a01b0316836040516103049190610ac5565b600060405180830381855afa9150503d806000811461033f576040519150601f19603f3d011682016040523d82523d6000602084013e610344565b606091505b509150915081158061035557508051155b15610364576000935050505090565b60008180602001905181019061037a9190610b28565b60011495945050505050565b600060405163d623472560e01b815260040160405180910390fd5b60006103d97f000000000000000000000000000000000000000000000000000000000000000085858589600001518a602001516103e2565b95945050505050565b6000846103f26020820182610b41565b6103fc5761010097505b600061040888836104f3565b60408051602081018390526080858101358284015260a08087013560608401529082018990528082018890528251808303909101815260c09091019182905291925060009081906001600160a01b038d1690610465908590610ac5565b600060405180830381855afa9150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5090925090508115806104b757508051155b156104ca576000955050505050506104e9565b808060200190518101906104de9190610b28565b600114955050505050505b9695505050505050565b600036816105046020850185610ae1565b90925090503660006105196040870187610ae1565b909250905060608601356001810161053857879550505050505061073d565b600160f81b808686602081811061055157610551610b63565b9050013560f81c60f81b166001600160f81b031916146105845760405163408bbba360e11b815260040160405180910390fd5b60006105b38960405160200161059c91815260200190565b604051602081830303815290604052600180610743565b90506000815167ffffffffffffffff8111156105d1576105d16109c7565b6040519080825280601f01601f1916602001820160405280156105fb576020820181803683370190505b509050805183860160208301378151602083012081516020830120146106295763811777466000526004601cfd5b5060009050610639856020610b79565b67ffffffffffffffff811115610651576106516109c7565b6040519080825280601f01601f19166020018201604052801561067b576020820181803683370190505b50905084866020830137600060028585604051610699929190610b9a565b602060405180830381855afa1580156106b6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906106d99190610b28565b905080602087018301526002826040516106f39190610ac5565b602060405180830381855afa158015610710573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107339190610b28565b9750505050505050505b92915050565b606083518015610823576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181015b6003880197508751603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f8116516003535060005182526004820191508082106107b357602001604052613d3d60f01b600384066002048083039190915260008615159091029182900352900382525b509392505050565b60008083601f84011261083d57600080fd5b50813567ffffffffffffffff81111561085557600080fd5b60208301915083602082850101111561086d57600080fd5b9250929050565b6000806020838503121561088757600080fd5b823567ffffffffffffffff81111561089e57600080fd5b6108aa8582860161082b565b90969095509350505050565b6000806000604084860312156108cb57600080fd5b83359250602084013567ffffffffffffffff8111156108e957600080fd5b6108f58682870161082b565b9497909650939450505050565b60008060006060848603121561091757600080fd5b833567ffffffffffffffff81111561092e57600080fd5b8401610160818703121561094157600080fd5b95602085013595506040909401359392505050565b80356001600160a01b038116811461096d57600080fd5b919050565b60006020828403121561098457600080fd5b61026382610956565b6000806000604084860312156109a257600080fd5b6109ab84610956565b9250602084013567ffffffffffffffff8111156108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156109f257600080fd5b833567ffffffffffffffff80821115610a0a57600080fd5b818601915086601f830112610a1e57600080fd5b813581811115610a3057610a306109c7565b604051601f8201601f19908116603f01168101908382118183101715610a5857610a586109c7565b81604052828152896020848701011115610a7157600080fd5b82602086016020830137600060208483010152809750505050505060208401359150604084013590509250925092565b60005b83811015610abc578181015183820152602001610aa4565b50506000910152565b60008251610ad7818460208701610aa1565b9190910192915050565b6000808335601e19843603018112610af857600080fd5b83018035915067ffffffffffffffff821115610b1357600080fd5b60200191503681900382131561086d57600080fd5b600060208284031215610b3a57600080fd5b5051919050565b600060208284031215610b5357600080fd5b8135801515811461026357600080fd5b634e487b7160e01b600052603260045260246000fd5b8082018082111561073d57634e487b7160e01b600052601160045260246000fd5b818382376000910190815291905056fe4cee90eb86eaa050036147a12d49004b6b9c72bd725d39d4785011fe190f0b4da73bd4903f0ce3b639bbbf6e8e80d16931ff4bcf5993d58468e8fb19086e8cac36dbcd03009df8c59286b162af3bd7fcc0450c9aa81be5d10d312af6c66b1d604aebd3099c618202fcfe16ae7770b0c49ab5eadf74b754204a3bb6060e44eff37618b065f9832de4ca6ca971a7a1adc826d0f7c00181a5fb2ddf79ae00b4e10e000000000000000000000000738e3257ee928637fe62c37f91d3e722c45dcc7c",
+ "nonce": "0x22",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "transactionHash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionIndex": "0x0",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "from": "0x7caF754C934710D7C73bc453654552BEcA38223F",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xd7c3e",
+ "gasUsed": "0xd7c3e",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x0000000000000000000000007caf754c934710d7c73bc453654552beca38223f",
+ "0x000000000000000000000000915a2284d28bd93de7d6f31173b981204bb666e6"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000000000096b5d01fec400000000000000000000000000000000000000000000000000122c037a518e05280000000000000000000000000000000000000000000000095644a6b4d2d2b4a50000000000000000000000000000000000000000000000001222981d4f8f4128000000000000000000000000000000000000000000000009564e1211d4d178a5",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "transactionHash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionIndex": "0x0",
+ "logIndex": "0x0",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000010000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000002000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000008000000000000000004000000000000000000001000000000000000002000000000000100000000000000000000000000000000000000000000000000000400000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0xb2d05e0f"
+ },
+ {
+ "transactionHash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionIndex": "0x1",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "from": "0x7caF754C934710D7C73bc453654552BEcA38223F",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0x18b87e",
+ "gasUsed": "0xb3c40",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x0000000000000000000000007caf754c934710d7c73bc453654552beca38223f",
+ "0x000000000000000000000000915a2284d28bd93de7d6f31173b981204bb666e6"
+ ],
+ "data": "0x0000000000000000000000000000000000000000000000000007d909941f80000000000000000000000000000000000000000000000000001222981d4ec4f986000000000000000000000000000000000000000000000009564e1211d4d178a5000000000000000000000000000000000000000000000000121abf13baa579860000000000000000000000000000000000000000000000095655eb1b68f0f8a5",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "transactionHash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionIndex": "0x1",
+ "logIndex": "0x1",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000010000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000002000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000008000000000000000004000000000000000000001000000000000000002000000000000100000000000000000000000000000000000000000000000000000400000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0xb2d05e0f"
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1710798602,
+ "chain": 80002,
+ "commit": "7cf4583"
+}
\ No newline at end of file
diff --git a/broadcast/DeployDeterministic.s.sol/80002/run-latest.json b/broadcast/DeployDeterministic.s.sol/80002/run-latest.json
new file mode 100644
index 00000000..64dff567
--- /dev/null
+++ b/broadcast/DeployDeterministic.s.sol/80002/run-latest.json
@@ -0,0 +1,120 @@
+{
+ "transactions": [
+ {
+ "hash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionType": "CREATE2",
+ "contractName": "P256VerifierWrapper",
+ "contractAddress": "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C",
+ "function": null,
+ "arguments": null,
+ "transaction": {
+ "type": "0x02",
+ "from": "0x7caf754c934710d7c73bc453654552beca38223f",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0x129f19",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a608060405234801561001057600080fd5b50610efb806100206000396000f3fe608060405234801561001057600080fd5b50600036606060a08214610040576040805160006020820152016040516020818303038152906040529050610113565b600061004f6020828587610e71565b61005891610e9b565b9050600061006a604060208688610e71565b61007391610e9b565b90506000610085606060408789610e71565b61008e91610e9b565b905060006100a060806060888a610e71565b6100a991610e9b565b905060006100bb60a06080898b610e71565b6100c491610e9b565b905060006100d5868686868661011e565b6100e05760006100e3565b60015b60ff169050806040516020016100fb91815260200190565b60405160208183030381529060405296505050505050505b915050805190602001f35b600084158061013b5750600080516020610edb8339815191528510155b80610144575083155b8061015d5750600080516020610edb8339815191528410155b1561016a575060006101fa565b6101748383610203565b610180575060006101fa565b600061018b856102ff565b90506000600080516020610edb83398151915282890990506000600080516020610edb833981519152838909905060006101c787878585610371565b9050600080516020610edb8339815191526101f08a600080516020610edb833981519152610eb9565b8208159450505050505b95945050505050565b600082158015610211575081155b806102295750600160601b63ffffffff60c01b031983145b806102415750600160601b63ffffffff60c01b031982145b1561024e575060006102f9565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b8208919091149150505b92915050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f6080820152600080516020610edb83398151915260a082015260208160c0836005600019fa61036a57600080fd5b5192915050565b600080808060ff818088158015610386575087155b1561039a5760009650505050505050610a33565b6103e67f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d610a3b565b9092509050811580156103f7575080155b1561042557600080516020610edb83398151915288600080516020610edb833981519152038a089850600097505b600189841c16600189851c1660011b015b806104585760018403935060018a851c1660018a861c1660011b019050610436565b50600189841c16600189851c1660011b019550600186036104ba577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b600286036104c9578a96508993505b600386036104d8578196508093505b60018303925060019550600194505b8260001911156109bc57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b019050806106645787600160601b63ffffffff60c01b0319039750505050506109b1565b600181036106b3577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b600281036106c2578e93508d92505b600381036106d1578593508492505b896106ea57509198506001975087965094506109b19050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d8809089350806108a357836108a357600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a87098508985050505050506109b1565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b6001830392506104e7565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa610a1657600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b600080808086610a52578585935093505050610ac0565b84610a64578787935093505050610ac0565b8588148015610a7257508487145b15610a9357610a848888600180610ac9565b929a5090985092509050610aad565b610aa288886001808a8a610c24565b929a50909850925090505b610ab988888484610da8565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b60008060008088600003610c4357508492508391506001905080610d9b565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000610db684610e15565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa61036a57600080fd5b60008085851115610e8157600080fd5b83861115610e8e57600080fd5b5050820193919092039150565b803560208310156102f957600019602084900360031b1b1692915050565b818103818111156102f957634e487b7160e01b600052601160045260246000fdfeffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
+ "nonce": "0x21",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ },
+ {
+ "hash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionType": "CREATE2",
+ "contractName": "WebAuthnFclValidator",
+ "contractAddress": "0x42085b533b27B9AfDAF3864a38c72eF853943DAB",
+ "function": null,
+ "arguments": [
+ "0x738e3257EE928637fE62c37F91D3e722C45Dcc7C"
+ ],
+ "transaction": {
+ "type": "0x02",
+ "from": "0x7caf754c934710d7c73bc453654552beca38223f",
+ "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
+ "gas": "0xf83b2",
+ "value": "0x0",
+ "data": "0x7a7683d175e8b5fc215ff42554ad65cdcf0caead93621fad19a86b9f78416d2a60a060405234801561001057600080fd5b50604051610cd6380380610cd683398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4b61008b60003960006103a80152610c4b6000f3fe6080604052600436106100705760003560e01c8063857cdbb81161004e578063857cdbb8146100d05780638fc925aa146101235780639112b1ad1461014b5780639ea9bd591461017057600080fd5b80630c95955614610075578063333daf921461008a5780633a871cdd146100bd575b600080fd5b610088610083366004610874565b610190565b005b34801561009657600080fd5b506100aa6100a53660046108b6565b61021b565b6040519081526020015b60405180910390f35b6100aa6100cb366004610902565b61026a565b3480156100dc57600080fd5b5061010e6100eb366004610972565b6001600160a01b0316600090815260208190526040902080546001909101549091565b604080519283526020830191909152016100b4565b610088610131366004610874565b505033600090815260208190526040812081815560010155565b34801561015757600080fd5b506101606102c9565b60405190151581526020016100b4565b34801561017c57600080fd5b5061016061018b36600461098d565b610386565b600080806101a0848601866109dd565b33600090815260208190526040908190208381556001810183905590519396509194509250906101d1908590610ac5565b60408051918290038220858352602083018590529133917ff35f455f13928c63f3f93ef6e5c32ab67d30d0d3961c9aa4b5436265999fd65b910160405180910390a3505050505050565b33600090815260208181526040808320815180830190925280548252600101549181019190915261024e818686866103a1565b1561025d576000915050610263565b60019150505b9392505050565b600080808061027c6020880188610972565b6001600160a01b0316815260208082019290925260409081016000208151808301909252805482526001015491810191909152905061024e81856102c4610140890189610ae1565b6103a1565b6000806040518060c0016040528060a08152602001610bab60a0913990506000806101006001600160a01b0316836040516103049190610ac5565b600060405180830381855afa9150503d806000811461033f576040519150601f19603f3d011682016040523d82523d6000602084013e610344565b606091505b509150915081158061035557508051155b15610364576000935050505090565b60008180602001905181019061037a9190610b28565b60011495945050505050565b600060405163d623472560e01b815260040160405180910390fd5b60006103d97f000000000000000000000000000000000000000000000000000000000000000085858589600001518a602001516103e2565b95945050505050565b6000846103f26020820182610b41565b6103fc5761010097505b600061040888836104f3565b60408051602081018390526080858101358284015260a08087013560608401529082018990528082018890528251808303909101815260c09091019182905291925060009081906001600160a01b038d1690610465908590610ac5565b600060405180830381855afa9150503d80600081146104a0576040519150601f19603f3d011682016040523d82523d6000602084013e6104a5565b606091505b5090925090508115806104b757508051155b156104ca576000955050505050506104e9565b808060200190518101906104de9190610b28565b600114955050505050505b9695505050505050565b600036816105046020850185610ae1565b90925090503660006105196040870187610ae1565b909250905060608601356001810161053857879550505050505061073d565b600160f81b808686602081811061055157610551610b63565b9050013560f81c60f81b166001600160f81b031916146105845760405163408bbba360e11b815260040160405180910390fd5b60006105b38960405160200161059c91815260200190565b604051602081830303815290604052600180610743565b90506000815167ffffffffffffffff8111156105d1576105d16109c7565b6040519080825280601f01601f1916602001820160405280156105fb576020820181803683370190505b509050805183860160208301378151602083012081516020830120146106295763811777466000526004601cfd5b5060009050610639856020610b79565b67ffffffffffffffff811115610651576106516109c7565b6040519080825280601f01601f19166020018201604052801561067b576020820181803683370190505b50905084866020830137600060028585604051610699929190610b9a565b602060405180830381855afa1580156106b6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906106d99190610b28565b905080602087018301526002826040516106f39190610ac5565b602060405180830381855afa158015610710573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906107339190610b28565b9750505050505050505b92915050565b606083518015610823576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181015b6003880197508751603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f8116516003535060005182526004820191508082106107b357602001604052613d3d60f01b600384066002048083039190915260008615159091029182900352900382525b509392505050565b60008083601f84011261083d57600080fd5b50813567ffffffffffffffff81111561085557600080fd5b60208301915083602082850101111561086d57600080fd5b9250929050565b6000806020838503121561088757600080fd5b823567ffffffffffffffff81111561089e57600080fd5b6108aa8582860161082b565b90969095509350505050565b6000806000604084860312156108cb57600080fd5b83359250602084013567ffffffffffffffff8111156108e957600080fd5b6108f58682870161082b565b9497909650939450505050565b60008060006060848603121561091757600080fd5b833567ffffffffffffffff81111561092e57600080fd5b8401610160818703121561094157600080fd5b95602085013595506040909401359392505050565b80356001600160a01b038116811461096d57600080fd5b919050565b60006020828403121561098457600080fd5b61026382610956565b6000806000604084860312156109a257600080fd5b6109ab84610956565b9250602084013567ffffffffffffffff8111156108e957600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156109f257600080fd5b833567ffffffffffffffff80821115610a0a57600080fd5b818601915086601f830112610a1e57600080fd5b813581811115610a3057610a306109c7565b604051601f8201601f19908116603f01168101908382118183101715610a5857610a586109c7565b81604052828152896020848701011115610a7157600080fd5b82602086016020830137600060208483010152809750505050505060208401359150604084013590509250925092565b60005b83811015610abc578181015183820152602001610aa4565b50506000910152565b60008251610ad7818460208701610aa1565b9190910192915050565b6000808335601e19843603018112610af857600080fd5b83018035915067ffffffffffffffff821115610b1357600080fd5b60200191503681900382131561086d57600080fd5b600060208284031215610b3a57600080fd5b5051919050565b600060208284031215610b5357600080fd5b8135801515811461026357600080fd5b634e487b7160e01b600052603260045260246000fd5b8082018082111561073d57634e487b7160e01b600052601160045260246000fd5b818382376000910190815291905056fe4cee90eb86eaa050036147a12d49004b6b9c72bd725d39d4785011fe190f0b4da73bd4903f0ce3b639bbbf6e8e80d16931ff4bcf5993d58468e8fb19086e8cac36dbcd03009df8c59286b162af3bd7fcc0450c9aa81be5d10d312af6c66b1d604aebd3099c618202fcfe16ae7770b0c49ab5eadf74b754204a3bb6060e44eff37618b065f9832de4ca6ca971a7a1adc826d0f7c00181a5fb2ddf79ae00b4e10e000000000000000000000000738e3257ee928637fe62c37f91d3e722c45dcc7c",
+ "nonce": "0x22",
+ "accessList": []
+ },
+ "additionalContracts": [],
+ "isFixedGasLimit": false
+ }
+ ],
+ "receipts": [
+ {
+ "transactionHash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionIndex": "0x0",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "from": "0x7caF754C934710D7C73bc453654552BEcA38223F",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0xd7c3e",
+ "gasUsed": "0xd7c3e",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x0000000000000000000000007caf754c934710d7c73bc453654552beca38223f",
+ "0x000000000000000000000000915a2284d28bd93de7d6f31173b981204bb666e6"
+ ],
+ "data": "0x00000000000000000000000000000000000000000000000000096b5d01fec400000000000000000000000000000000000000000000000000122c037a518e05280000000000000000000000000000000000000000000000095644a6b4d2d2b4a50000000000000000000000000000000000000000000000001222981d4f8f4128000000000000000000000000000000000000000000000009564e1211d4d178a5",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "transactionHash": "0xb01505a4fb9ae3db32b20cacfd6fb045c229299fb78ea0516da1026fe175cee3",
+ "transactionIndex": "0x0",
+ "logIndex": "0x0",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000010000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000002000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000008000000000000000004000000000000000000001000000000000000002000000000000100000000000000000000000000000000000000000000000000000400000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0xb2d05e0f"
+ },
+ {
+ "transactionHash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionIndex": "0x1",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "from": "0x7caF754C934710D7C73bc453654552BEcA38223F",
+ "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
+ "cumulativeGasUsed": "0x18b87e",
+ "gasUsed": "0xb3c40",
+ "contractAddress": null,
+ "logs": [
+ {
+ "address": "0x0000000000000000000000000000000000001010",
+ "topics": [
+ "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",
+ "0x0000000000000000000000000000000000000000000000000000000000001010",
+ "0x0000000000000000000000007caf754c934710d7c73bc453654552beca38223f",
+ "0x000000000000000000000000915a2284d28bd93de7d6f31173b981204bb666e6"
+ ],
+ "data": "0x0000000000000000000000000000000000000000000000000007d909941f80000000000000000000000000000000000000000000000000001222981d4ec4f986000000000000000000000000000000000000000000000009564e1211d4d178a5000000000000000000000000000000000000000000000000121abf13baa579860000000000000000000000000000000000000000000000095655eb1b68f0f8a5",
+ "blockHash": "0x1810259d916370362970fd8cfee7ec8f35ade7ae35a3427cdbc9fa242a4c5d5c",
+ "blockNumber": "0x49641f",
+ "transactionHash": "0x3f20c892b7e2c3b56f10b9131d7aa933374c50281e3f565d9727d8a5f248cd98",
+ "transactionIndex": "0x1",
+ "logIndex": "0x1",
+ "removed": false
+ }
+ ],
+ "status": "0x1",
+ "logsBloom": "0x00000000000000000010000000000000000200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000002000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000008000000000000000004000000000000000000001000000000000000002000000000000100000000000000000000000000000000000000000000000000000400000000000000000100000",
+ "type": "0x2",
+ "effectiveGasPrice": "0xb2d05e0f"
+ }
+ ],
+ "libraries": [],
+ "pending": [],
+ "returns": {},
+ "timestamp": 1710798602,
+ "chain": 80002,
+ "commit": "7cf4583"
+}
\ No newline at end of file
diff --git a/script/DeployDeterministic.s.sol b/script/DeployDeterministic.s.sol
index caae47ac..5674e023 100644
--- a/script/DeployDeterministic.s.sol
+++ b/script/DeployDeterministic.s.sol
@@ -8,6 +8,7 @@ import "./deterministic/Factory.s.sol";
import "./deterministic/SessionKey.s.sol";
import "./deterministic/Kernel2_2.s.sol";
import "./deterministic/Kernel2_3.s.sol";
+import "./deterministic/FclWebAuthNValidator.s.sol";
contract DeployDeterministic is Script {
address constant DEPLOYER = 0x9775137314fE595c943712B0b336327dfa80aE8A;
@@ -35,6 +36,10 @@ contract DeployDeterministic is Script {
if (!factory.isAllowedImplementation(k23lite)) {
factory.setImplementation(k23lite, true);
}
+
+ // Deploy the webauthn fcl validators
+ FclWebAuthnValidatorDeploy.deployWebAuthnFclVerifier();
+
vm.stopBroadcast();
}
}
diff --git a/script/DeployWebAuthnFclValidator.sol b/script/DeployWebAuthnFclValidator.sol
deleted file mode 100644
index 94437add..00000000
--- a/script/DeployWebAuthnFclValidator.sol
+++ /dev/null
@@ -1,22 +0,0 @@
-pragma solidity ^0.8.0;
-
-import "src/factory/KernelFactory.sol";
-import "src/utils/P256VerifierWrapper.sol";
-import "src/validator/webauthn//WebAuthnFclValidator.sol";
-import "forge-std/Script.sol";
-import "forge-std/console.sol";
-
-contract DeployWebAuthnFclValidator is Script {
- function run() public {
- uint256 key = vm.envUint("DEPLOYER_PRIVATE_KEY");
- vm.startBroadcast(key);
-
- P256VerifierWrapper p256VerifierWrapper = new P256VerifierWrapper{salt: 0}();
- console.log("p256 wrapper address: %s", address(p256VerifierWrapper));
-
- WebAuthnFclValidator validator = new WebAuthnFclValidator{salt: 0}(address(p256VerifierWrapper));
- console.log("validator address: %s", address(validator));
-
- vm.stopBroadcast();
- }
-}
diff --git a/script/deterministic/FclWebAuthNValidator.s.sol b/script/deterministic/FclWebAuthNValidator.s.sol
new file mode 100644
index 00000000..31f9ad37
--- /dev/null
+++ b/script/deterministic/FclWebAuthNValidator.s.sol
@@ -0,0 +1,51 @@
+pragma solidity ^0.8.0;
+
+import "src/utils/P256VerifierWrapper.sol";
+import "src/validator/webauthn//WebAuthnFclValidator.sol";
+import "./DeterministicDeploy.s.sol";
+import "forge-std/console.sol";
+
+/// @dev Deterministic deployment of FclWebAuthNValidator
+library FclWebAuthnValidatorDeploy {
+ address constant EXPECTED_P256_VERIFIER_VALIDATOR_ADDRESS = 0x738e3257EE928637fE62c37F91D3e722C45Dcc7C;
+
+ address constant EXPECTED_WEBAUTHN_VALIDATOR_ADDRESS = 0x42085b533b27B9AfDAF3864a38c72eF853943DAB;
+
+ bytes32 constant DEPLOYMENT_SALT = keccak256("WebAuthNValidator by Frak");
+
+ /// @dev Deploy the P256VerifierWrapper and WebAuthnFclValidator
+ function deployWebAuthnFclVerifier() internal {
+ // Check if the contract of the p256 verifier is already deployed
+ if (EXPECTED_P256_VERIFIER_VALIDATOR_ADDRESS.code.length == 0) {
+ _deployOnChainP256();
+ } else {
+ console.log("P256VerifierWrapper: already deployed");
+ }
+
+ // Deploy the WebAuthnFclValidator
+ if (EXPECTED_WEBAUTHN_VALIDATOR_ADDRESS.code.length == 0) {
+ _deployValidator();
+ } else {
+ console.log("WebAuthnFclValidator: already deployed");
+ }
+ }
+
+ /// @dev Deploy the P256VerifierWrapper contract
+ function _deployOnChainP256() private {
+ P256VerifierWrapper p256Wrapper = new P256VerifierWrapper{salt: DEPLOYMENT_SALT}();
+ require(
+ address(p256Wrapper) == EXPECTED_P256_VERIFIER_VALIDATOR_ADDRESS,
+ "FclWebAuthnValidatorDeploy: p256 wrapper address mismatch"
+ );
+ }
+
+ /// @dev Deploy the P256VerifierWrapper contract
+ function _deployValidator() private {
+ WebAuthnFclValidator validator =
+ new WebAuthnFclValidator{salt: DEPLOYMENT_SALT}(EXPECTED_P256_VERIFIER_VALIDATOR_ADDRESS);
+ require(
+ address(validator) == EXPECTED_WEBAUTHN_VALIDATOR_ADDRESS,
+ "FclWebAuthnValidatorDeploy: validator address mismatch"
+ );
+ }
+}
diff --git a/src/validator/webauthn/WebAuthnFclValidator.sol b/src/validator/webauthn/WebAuthnFclValidator.sol
index fbbc41ed..5ad4cf64 100644
--- a/src/validator/webauthn/WebAuthnFclValidator.sol
+++ b/src/validator/webauthn/WebAuthnFclValidator.sol
@@ -23,7 +23,8 @@ struct WebAuthnFclValidatorStorage {
/// @notice Inspired by the cometh Gnosis Safe signer: https://github.com/cometh-game/p256-signer
contract WebAuthnFclValidator is IKernelValidator {
/// @dev Event emitted when the public key signing the WebAuthN user operation is changed for a given `kernel`.
- event WebAuthnPublicKeyChanged(address indexed kernel, uint256 x, uint256 y);
+ /// @dev The `b64AuthenticatorId` param represent the webauthn authenticator id used to create this public key
+ event WebAuthnPublicKeyChanged(address indexed kernel, string indexed b64AuthenticatorId, uint256 x, uint256 y);
/// @dev Mapping of kernel address to each webAuthn specific storage
mapping(address kernel => WebAuthnFclValidatorStorage webAuthnStorage) private webAuthnValidatorStorage;
@@ -44,13 +45,13 @@ contract WebAuthnFclValidator is IKernelValidator {
/// @dev Enable this validator for a given `kernel` (msg.sender)
function enable(bytes calldata _data) external payable override {
// Extract the x & y coordinates of the public key from the `_data` bytes
- (uint256 x, uint256 y) = abi.decode(_data, (uint256, uint256));
+ (string memory authenticatorId, uint256 x, uint256 y) = abi.decode(_data, (string, uint256, uint256));
// Update the pub key data
WebAuthnFclValidatorStorage storage kernelValidatorStorage = webAuthnValidatorStorage[msg.sender];
kernelValidatorStorage.x = x;
kernelValidatorStorage.y = y;
// Emit the update event
- emit WebAuthnPublicKeyChanged(msg.sender, x, y);
+ emit WebAuthnPublicKeyChanged(msg.sender, authenticatorId, x, y);
}
/// @dev Validate a `_userOp` using a WebAuthn Signature for the kernel account who is the `_userOp` sender
diff --git a/test/foundry/validator/WebAuthnFclValidator.t.sol b/test/foundry/validator/WebAuthnFclValidator.t.sol
index ec2134d2..e548eaba 100644
--- a/test/foundry/validator/WebAuthnFclValidator.t.sol
+++ b/test/foundry/validator/WebAuthnFclValidator.t.sol
@@ -67,7 +67,9 @@ contract WebAuthnFclValidatorTest is KernelTestBase {
}
function getInitializeData() internal view override returns (bytes memory) {
- return abi.encodeWithSelector(KernelStorage.initialize.selector, webAuthNValidator, abi.encode(x, y));
+ return abi.encodeWithSelector(
+ KernelStorage.initialize.selector, webAuthNValidator, abi.encode("authenticator-id", x, y)
+ );
}
function test_default_validator_enable() external override {
@@ -76,7 +78,7 @@ contract WebAuthnFclValidatorTest is KernelTestBase {
IKernel.execute.selector,
address(webAuthNValidator),
0,
- abi.encodeWithSelector(webAuthNValidator.enable.selector, abi.encode(x, y)),
+ abi.encodeWithSelector(webAuthNValidator.enable.selector, abi.encode("authenticator-id", x, y)),
Operation.Call
)
);