diff --git a/frontend/.env.example b/frontend/.env.example index 8001a9f..475d5b4 100644 --- a/frontend/.env.example +++ b/frontend/.env.example @@ -2,4 +2,4 @@ PUBLIC_WALLET_CONNECT_PROJECT_ID=your_project_id_here # Backend API URL -PUBLIC_API_URL=http://localhost:3001 +PUBLIC_API_URL=http://localhost:3001 \ No newline at end of file diff --git a/the-guild-smart-contracts/.env.example b/the-guild-smart-contracts/.env.example index 09c5f0d..f68a013 100644 --- a/the-guild-smart-contracts/.env.example +++ b/the-guild-smart-contracts/.env.example @@ -10,4 +10,10 @@ CREATE2_SALT=1 # EAS addresses for networks not hardcoded in the deploy script. # Generic fallback for any other network (used if chain isn't matched) -EAS_ADDRESS= \ No newline at end of file +EAS_ADDRESS= + +# AMOY URL +AMOY_RPC_URL=https://polygon-amoy.drpc.org + +# ETHERSCAN KEY +ETHERSCAN_API_KEY= diff --git a/the-guild-smart-contracts/.gitignore b/the-guild-smart-contracts/.gitignore index 85198aa..64f579d 100644 --- a/the-guild-smart-contracts/.gitignore +++ b/the-guild-smart-contracts/.gitignore @@ -5,6 +5,7 @@ out/ # Ignores development broadcast logs !/broadcast /broadcast/*/31337/ +/broadcast/*/80002/ /broadcast/**/dry-run/ # Docs diff --git a/the-guild-smart-contracts/INTEGRATION.md b/the-guild-smart-contracts/INTEGRATION.md index 1207b25..dcf10f4 100644 --- a/the-guild-smart-contracts/INTEGRATION.md +++ b/the-guild-smart-contracts/INTEGRATION.md @@ -38,12 +38,12 @@ export const schemaEncoder = new SchemaEncoder( ); export function encodeBadgeData( - badgeNameBytes32: `0x${string}`, - justificationBytes32: `0x${string}` + badgeName: `0x${string}`, + justification: `0x${string}` ) { return schemaEncoder.encodeData([ - { name: 'badgeName', value: badgeNameBytes32, type: 'bytes32' }, - { name: 'justification', value: justificationBytes32, type: 'bytes32' }, + { name: 'badgeName', value: badgeName, type: 'bytes32' }, + { name: 'justification', value: justification, type: 'bytes32' }, ]); } ``` diff --git a/the-guild-smart-contracts/README.md b/the-guild-smart-contracts/README.md index 6283590..057803d 100644 --- a/the-guild-smart-contracts/README.md +++ b/the-guild-smart-contracts/README.md @@ -15,6 +15,21 @@ To do this, we can just use EAS' already deployed contracts. First we will regis ### Integration For detailed frontend integration instructions, see [INTEGRATION.md](./INTEGRATION.md). +## Deployments + +### Amoy + +Salt: "theguild2" + +TheGuildActivityToken +https://amoy.polygonscan.com/address/0x5a79Dd0F66E2C1203948dD49634E506b3D8723A0 + +TheGuildBadgeRegistry +https://amoy.polygonscan.com/address/0x8baA0d5135D241bd22a9eB35915300aCfB286307 + +EAS Schema ID: +0x6228d4b9508624b41476a77a09b7582ddc056b92a725f645df6e337be113c9b1 + ## Foundry Usage https://book.getfoundry.sh/ diff --git a/the-guild-smart-contracts/broadcast/FullDeploymentScript.s.sol/80002/run-latest.json b/the-guild-smart-contracts/broadcast/FullDeploymentScript.s.sol/80002/run-latest.json new file mode 100644 index 0000000..35a2580 --- /dev/null +++ b/the-guild-smart-contracts/broadcast/FullDeploymentScript.s.sol/80002/run-latest.json @@ -0,0 +1,499 @@ +{ + "transactions": [ + { + "hash": "0x8a5c54d5296dcaa6a0b8964549e0a0b43e1e26d00882c41ac07133921c2cd9ec", + "transactionType": "CREATE2", + "contractName": "TheGuildActivityToken", + "contractAddress": "0x5a79dd0f66e2c1203948dd49634e506b3d8723a0", + "function": null, + "arguments": [ + "0xb101275a60d8bfb14529C421899aD7CA1Ae5B5Fc" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x25fdda", + "value": "0x0", + "input": "0x7468656775696c64320000000000000000000000000000000000000000000000610100604052348015610010575f5ffd5b506040516124bb3803806124bb83398181016040528101906100329190610334565b80600160045f336040518060400160405280601581526020017f5468654775696c644163746976697479546f6b656e00000000000000000000008152506040518060400160405280600381526020017f544741000000000000000000000000000000000000000000000000000000000081525081600390816100b4919061059c565b5080600490816100c4919061059c565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610137575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161012e919061067a565b60405180910390fd5b6101468161020260201b60201c565b5082608081815250508160a081815250508060c081815250505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101c7576040517f83780ffe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250505050610693565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102f2826102c9565b9050919050565b5f610303826102e8565b9050919050565b610313816102f9565b811461031d575f5ffd5b50565b5f8151905061032e8161030a565b92915050565b5f60208284031215610349576103486102c5565b5b5f61035684828501610320565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103da57607f821691505b6020821081036103ed576103ec610396565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261044f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610414565b6104598683610414565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61049d61049861049384610471565b61047a565b610471565b9050919050565b5f819050919050565b6104b683610483565b6104ca6104c2826104a4565b848454610420565b825550505050565b5f5f905090565b6104e16104d2565b6104ec8184846104ad565b505050565b5b8181101561050f576105045f826104d9565b6001810190506104f2565b5050565b601f82111561055457610525816103f3565b61052e84610405565b8101602085101561053d578190505b61055161054985610405565b8301826104f1565b50505b505050565b5f82821c905092915050565b5f6105745f1984600802610559565b1980831691505092915050565b5f61058c8383610565565b9150826002028217905092915050565b6105a58261035f565b67ffffffffffffffff8111156105be576105bd610369565b5b6105c882546103c3565b6105d3828285610513565b5f60209050601f831160018114610604575f84156105f2578287015190505b6105fc8582610581565b865550610663565b601f198416610612866103f3565b5f5b8281101561063957848901518255600182019150602085019450602081019050610614565b868310156106565784890151610652601f891682610565565b8355505b6001600288020188555050505b505050505050565b610674816102e8565b82525050565b5f60208201905061068d5f83018461066b565b92915050565b60805160a05160c05160e051611df56106c65f395f610f4c01525f61063f01525f61061601525f6105ed0152611df55ff3fe608060405260043610610117575f3560e01c806388e5b2d91161009f578063ce46e04611610063578063ce46e046146103ea578063dd62ed3e14610414578063e49617e114610450578063e60c350514610480578063f2fde38b146104b05761015c565b806388e5b2d9146102fa5780638da5cb5b1461032a57806391db0b7e1461035457806395d89b4114610384578063a9059cbb146103ae5761015c565b8063313ce567116100e6578063313ce5671461022c57806340c10f191461025657806354fd4d501461027e57806370a08231146102a8578063715018a6146102e45761015c565b806306fdde0314610160578063095ea7b31461018a57806318160ddd146101c657806323b872dd146101f05761015c565b3661015c576101246104d8565b61015a576040517f1574f9f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f5ffd5b34801561016b575f5ffd5b506101746104df565b60405161018191906115cb565b60405180910390f35b348015610195575f5ffd5b506101b060048036038101906101ab9190611680565b61056f565b6040516101bd91906116d8565b60405180910390f35b3480156101d1575f5ffd5b506101da610591565b6040516101e79190611700565b60405180910390f35b3480156101fb575f5ffd5b5061021660048036038101906102119190611719565b61059a565b60405161022391906116d8565b60405180910390f35b348015610237575f5ffd5b506102406105c8565b60405161024d9190611784565b60405180910390f35b348015610261575f5ffd5b5061027c60048036038101906102779190611680565b6105d0565b005b348015610289575f5ffd5b506102926105e6565b60405161029f91906115cb565b60405180910390f35b3480156102b3575f5ffd5b506102ce60048036038101906102c9919061179d565b610689565b6040516102db9190611700565b60405180910390f35b3480156102ef575f5ffd5b506102f86106ce565b005b610314600480360381019061030f919061187e565b6106e1565b60405161032191906116d8565b60405180910390f35b348015610335575f5ffd5b5061033e6107f4565b60405161034b919061190b565b60405180910390f35b61036e6004803603810190610369919061187e565b61081c565b60405161037b91906116d8565b60405180910390f35b34801561038f575f5ffd5b5061039861092f565b6040516103a591906115cb565b60405180910390f35b3480156103b9575f5ffd5b506103d460048036038101906103cf9190611680565b6109bf565b6040516103e191906116d8565b60405180910390f35b3480156103f5575f5ffd5b506103fe6104d8565b60405161040b91906116d8565b60405180910390f35b34801561041f575f5ffd5b5061043a60048036038101906104359190611924565b6109e1565b6040516104479190611700565b60405180910390f35b61046a60048036038101906104659190611985565b610a63565b60405161047791906116d8565b60405180910390f35b61049a60048036038101906104959190611985565b610a7d565b6040516104a791906116d8565b60405180910390f35b3480156104bb575f5ffd5b506104d660048036038101906104d1919061179d565b610a97565b005b5f5f905090565b6060600380546104ee906119f9565b80601f016020809104026020016040519081016040528092919081815260200182805461051a906119f9565b80156105655780601f1061053c57610100808354040283529160200191610565565b820191905f5260205f20905b81548152906001019060200180831161054857829003601f168201915b5050505050905090565b5f5f610579610b1b565b9050610586818585610b22565b600191505092915050565b5f600254905090565b5f5f6105a4610b1b565b90506105b1858285610b34565b6105bc858585610bc7565b60019150509392505050565b5f6012905090565b6105d8610cb7565b6105e28282610d3e565b5050565b60606106117f0000000000000000000000000000000000000000000000000000000000000000610dbd565b61063a7f0000000000000000000000000000000000000000000000000000000000000000610dbd565b6106637f0000000000000000000000000000000000000000000000000000000000000000610dbd565b60405160200161067593929190611aad565b604051602081830303815290604052905090565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106d6610cb7565b6106df5f610e87565b565b5f6106ea610f4a565b5f85859050905083839050811461072d576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3490505f5f90505b828110156107e4575f86868381811061075257610751611af3565b5b90506020020135905082811115610795576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107c38989848181106107ab576107aa611af3565b5b90506020028101906107bd9190611b24565b82610fd1565b6107d3575f9450505050506107ec565b808303925050806001019050610736565b506001925050505b949350505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610825610f4a565b5f858590509050838390508114610868576040517f947d5a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3490505f5f90505b8281101561091f575f86868381811061088d5761088c611af3565b5b905060200201359050828111156108d0576040517f1101129400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fe8989848181106108e6576108e5611af3565b5b90506020028101906108f89190611b24565b82610fdc565b61090e575f945050505050610927565b808303925050806001019050610871565b506001925050505b949350505050565b60606004805461093e906119f9565b80601f016020809104026020016040519081016040528092919081815260200182805461096a906119f9565b80156109b55780601f1061098c576101008083540402835291602001916109b5565b820191905f5260205f20905b81548152906001019060200180831161099857829003601f168201915b5050505050905090565b5f5f6109c9610b1b565b90506109d6818585610bc7565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f610a6c610f4a565b610a768234610fd1565b9050919050565b5f610a86610f4a565b610a908234610fdc565b9050919050565b610a9f610cb7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b0f575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610b06919061190b565b60405180910390fd5b610b1881610e87565b50565b5f33905090565b610b2f8383836001611022565b505050565b5f610b3f84846109e1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015610bc15781811015610bb2578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610ba993929190611b4c565b60405180910390fd5b610bc084848484035f611022565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c37575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c2e919061190b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ca7575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610c9e919061190b565b60405180910390fd5b610cb28383836111f1565b505050565b610cbf610b1b565b73ffffffffffffffffffffffffffffffffffffffff16610cdd6107f4565b73ffffffffffffffffffffffffffffffffffffffff1614610d3c57610d00610b1b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d33919061190b565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dae575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610da5919061190b565b60405180910390fd5b610db95f83836111f1565b5050565b60605f6001610dcb8461140a565b0190505f8167ffffffffffffffff811115610de957610de8611b81565b5b6040519080825280601f01601f191660200182016040528015610e1b5781602001600182028036833780820191505090505b5090505f82602083010190505b600115610e7c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581610e7157610e70611bae565b5b0494505f8503610e28575b819350505050919050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f6001905092915050565b5f6110188360e0016020810190610ff3919061179d565b610ffb6105c8565b600a6110079190611d37565b600a6110139190611d81565b610d3e565b6001905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611092575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611089919061190b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611102575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110f9919061190b565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156111eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111e29190611700565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611241578060025f8282546112359190611dc2565b9250508190555061130f565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112ca578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112c193929190611b4c565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611356578060025f82825403925050819055506113a0565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113fd9190611700565b60405180910390a3505050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611466577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161145c5761145b611bae565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106114a3576d04ee2d6d415b85acef8100000000838161149957611498611bae565b5b0492506020810190505b662386f26fc1000083106114d257662386f26fc1000083816114c8576114c7611bae565b5b0492506010810190505b6305f5e10083106114fb576305f5e10083816114f1576114f0611bae565b5b0492506008810190505b612710831061152057612710838161151657611515611bae565b5b0492506004810190505b60648310611543576064838161153957611538611bae565b5b0492506002810190505b600a8310611552576001810190505b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61159d8261155b565b6115a78185611565565b93506115b7818560208601611575565b6115c081611583565b840191505092915050565b5f6020820190508181035f8301526115e38184611593565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61161c826115f3565b9050919050565b61162c81611612565b8114611636575f5ffd5b50565b5f8135905061164781611623565b92915050565b5f819050919050565b61165f8161164d565b8114611669575f5ffd5b50565b5f8135905061167a81611656565b92915050565b5f5f60408385031215611696576116956115eb565b5b5f6116a385828601611639565b92505060206116b48582860161166c565b9150509250929050565b5f8115159050919050565b6116d2816116be565b82525050565b5f6020820190506116eb5f8301846116c9565b92915050565b6116fa8161164d565b82525050565b5f6020820190506117135f8301846116f1565b92915050565b5f5f5f606084860312156117305761172f6115eb565b5b5f61173d86828701611639565b935050602061174e86828701611639565b925050604061175f8682870161166c565b9150509250925092565b5f60ff82169050919050565b61177e81611769565b82525050565b5f6020820190506117975f830184611775565b92915050565b5f602082840312156117b2576117b16115eb565b5b5f6117bf84828501611639565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126117e9576117e86117c8565b5b8235905067ffffffffffffffff811115611806576118056117cc565b5b602083019150836020820283011115611822576118216117d0565b5b9250929050565b5f5f83601f84011261183e5761183d6117c8565b5b8235905067ffffffffffffffff81111561185b5761185a6117cc565b5b602083019150836020820283011115611877576118766117d0565b5b9250929050565b5f5f5f5f60408587031215611896576118956115eb565b5b5f85013567ffffffffffffffff8111156118b3576118b26115ef565b5b6118bf878288016117d4565b9450945050602085013567ffffffffffffffff8111156118e2576118e16115ef565b5b6118ee87828801611829565b925092505092959194509250565b61190581611612565b82525050565b5f60208201905061191e5f8301846118fc565b92915050565b5f5f6040838503121561193a576119396115eb565b5b5f61194785828601611639565b925050602061195885828601611639565b9150509250929050565b5f5ffd5b5f610140828403121561197c5761197b611962565b5b81905092915050565b5f6020828403121561199a576119996115eb565b5b5f82013567ffffffffffffffff8111156119b7576119b66115ef565b5b6119c384828501611966565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611a1057607f821691505b602082108103611a2357611a226119cc565b5b50919050565b5f81905092915050565b5f611a3d8261155b565b611a478185611a29565b9350611a57818560208601611575565b80840191505092915050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f611a97600183611a29565b9150611aa282611a63565b600182019050919050565b5f611ab88286611a33565b9150611ac382611a8b565b9150611acf8285611a33565b9150611ada82611a8b565b9150611ae68284611a33565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5ffd5b5f8235600161014003833603038112611b4057611b3f611b20565b5b80830191505092915050565b5f606082019050611b5f5f8301866118fc565b611b6c60208301856116f1565b611b7960408301846116f1565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115611c5d57808604811115611c3957611c38611bdb565b5b6001851615611c485780820291505b8081029050611c5685611c08565b9450611c1d565b94509492505050565b5f82611c755760019050611d30565b81611c82575f9050611d30565b8160018114611c985760028114611ca257611cd1565b6001915050611d30565b60ff841115611cb457611cb3611bdb565b5b8360020a915084821115611ccb57611cca611bdb565b5b50611d30565b5060208310610133831016604e8410600b8410161715611d065782820a905083811115611d0157611d00611bdb565b5b611d30565b611d138484846001611c14565b92509050818404811115611d2a57611d29611bdb565b5b81810290505b9392505050565b5f611d418261164d565b9150611d4c83611769565b9250611d797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611c66565b905092915050565b5f611d8b8261164d565b9150611d968361164d565b9250828202611da48161164d565b91508282048414831517611dbb57611dba611bdb565b5b5092915050565b5f611dcc8261164d565b9150611dd78361164d565b9250828201905080821115611def57611dee611bdb565b5b9291505056000000000000000000000000b101275a60d8bfb14529c421899ad7ca1ae5b5fc", + "nonce": "0x11", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x4a64d8c7e5b419a340eaee5bb14056c53d224cffa8f2ff1e5b297edba99ee82c", + "transactionType": "CALL", + "contractName": "SchemaRegistry", + "contractAddress": "0x23c5701a1bda89c61d181bd79e5203c730708ae7", + "function": "register(string,address,bool)", + "arguments": [ + "bytes32 badgeName, bytes32 justification", + "0x5a79Dd0F66E2C1203948dD49634E506b3D8723A0", + "true" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x23c5701a1bda89c61d181bd79e5203c730708ae7", + "gas": "0x31cee", + "value": "0x0", + "input": "0x60d7a27800000000000000000000000000000000000000000000000000000000000000600000000000000000000000005a79dd0f66e2c1203948dd49634e506b3d8723a000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000028627974657333322062616467654e616d652c2062797465733332206a757374696669636174696f6e000000000000000000000000000000000000000000000000", + "nonce": "0x12", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6dc1e766b179ba881ddeda4d2bb1347e4495b57fe3fac8195a2476a356221d3a", + "transactionType": "CREATE2", + "contractName": "TheGuildBadgeRegistry", + "contractAddress": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "function": null, + "arguments": null, + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xa326c", + "value": "0x0", + "input": "0x7468656775696c643200000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506107cc8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633580dbc71461005957806338a699a41461007557806377002fcf146100a557806381407b1b146100d7578063a490a69714610107575b5f5ffd5b610073600480360381019061006e9190610499565b610125565b005b61008f600480360381019061008a91906104d7565b610309565b60405161009c919061051c565b60405180910390f35b6100bf60048036038101906100ba91906104d7565b61032f565b6040516100ce93929190610583565b60405180910390f35b6100f160048036038101906100ec91906105eb565b610431565b6040516100fe9190610616565b60405180910390f35b61010f610456565b60405161011c919061063e565b60405180910390f35b5f5f1b8203610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610160906106b1565b60405180910390fd5b60015f8381526020019081526020015f205f9054906101000a900460ff16156101c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101be90610719565b60405180910390fd5b5f60405180606001604052808481526020018381526020013373ffffffffffffffffffffffffffffffffffffffff168152509050805f5f8581526020019081526020015f205f820151815f0155602082015181600101556040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050506001805f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550600283908060018154018082558091505060019003905f5260205f20015f90919091909150553373ffffffffffffffffffffffffffffffffffffffff16837f7d648d3c718d609c93c086fd770653e10a64c5afe41e0b1b0b4bb76bba24c479846040516102fc9190610616565b60405180910390a3505050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f5f60015f8581526020019081526020015f205f9054906101000a900460ff1661038f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038690610781565b60405180910390fd5b5f5f5f8681526020019081526020015f206040518060600160405290815f820154815260200160018201548152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050805f015181602001518260400151935093509350509193909250565b5f600282815481106104465761044561079f565b5b905f5260205f2001549050919050565b5f600280549050905090565b5f5ffd5b5f819050919050565b61047881610466565b8114610482575f5ffd5b50565b5f813590506104938161046f565b92915050565b5f5f604083850312156104af576104ae610462565b5b5f6104bc85828601610485565b92505060206104cd85828601610485565b9150509250929050565b5f602082840312156104ec576104eb610462565b5b5f6104f984828501610485565b91505092915050565b5f8115159050919050565b61051681610502565b82525050565b5f60208201905061052f5f83018461050d565b92915050565b61053e81610466565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61056d82610544565b9050919050565b61057d81610563565b82525050565b5f6060820190506105965f830186610535565b6105a36020830185610535565b6105b06040830184610574565b949350505050565b5f819050919050565b6105ca816105b8565b81146105d4575f5ffd5b50565b5f813590506105e5816105c1565b92915050565b5f60208284031215610600576105ff610462565b5b5f61060d848285016105d7565b91505092915050565b5f6020820190506106295f830184610535565b92915050565b610638816105b8565b82525050565b5f6020820190506106515f83018461062f565b92915050565b5f82825260208201905092915050565b7f454d5054595f4e414d45000000000000000000000000000000000000000000005f82015250565b5f61069b600a83610657565b91506106a682610667565b602082019050919050565b5f6020820190508181035f8301526106c88161068f565b9050919050565b7f4455504c49434154455f4e414d450000000000000000000000000000000000005f82015250565b5f610703600e83610657565b915061070e826106cf565b602082019050919050565b5f6020820190508181035f830152610730816106f7565b9050919050565b7f4e4f545f464f554e4400000000000000000000000000000000000000000000005f82015250565b5f61076b600983610657565b915061077682610737565b602082019050919050565b5f6020820190508181035f8301526107988161075f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd", + "nonce": "0x13", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeba257e3d5ed67d09c1209043bf0010ada86061d63a33986f17ef8fafa0df8a0", + "transactionType": "CALL", + "contractName": "TheGuildBadgeRegistry", + "contractAddress": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "function": "createBadge(bytes32,bytes32)", + "arguments": [ + "0x5275737400000000000000000000000000000000000000000000000000000000", + "0x4b6e6f7720686f7720746f20636f646520696e20527573740000000000000000" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "gas": "0x3842f", + "value": "0x0", + "input": "0x3580dbc752757374000000000000000000000000000000000000000000000000000000004b6e6f7720686f7720746f20636f646520696e20527573740000000000000000", + "nonce": "0x14", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8dc93a2f50dfa31b95892d6f595d250b9acd3c746dfff6618bf152386ab08fd7", + "transactionType": "CALL", + "contractName": "TheGuildBadgeRegistry", + "contractAddress": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "function": "createBadge(bytes32,bytes32)", + "arguments": [ + "0x536f6c6964697479000000000000000000000000000000000000000000000000", + "0x4b6e6f7720686f7720746f20636f646520696e20536f6c696469747900000000" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "gas": "0x2f66d", + "value": "0x0", + "input": "0x3580dbc7536f6c69646974790000000000000000000000000000000000000000000000004b6e6f7720686f7720746f20636f646520696e20536f6c696469747900000000", + "nonce": "0x15", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xda89c7964ed4380d61507db18f476b797d8db6ef1ed299fefda188848e9bf9df", + "transactionType": "CALL", + "contractName": "TheGuildBadgeRegistry", + "contractAddress": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "function": "createBadge(bytes32,bytes32)", + "arguments": [ + "0x5479706553637269707400000000000000000000000000000000000000000000", + "0x4b6e6f7720686f7720746f20636f646520696e20547970655363726970740000" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "gas": "0x2f6af", + "value": "0x0", + "input": "0x3580dbc754797065536372697074000000000000000000000000000000000000000000004b6e6f7720686f7720746f20636f646520696e20547970655363726970740000", + "nonce": "0x16", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x914c22bc3d75a60a2088d5672f6c04a76da28af0bdd832f6d05907697fdf9c05", + "transactionType": "CALL", + "contractName": "EAS", + "contractAddress": "0xb101275a60d8bfb14529c421899ad7ca1ae5b5fc", + "function": "attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))", + "arguments": [ + "(0x466295ad970fa5fc0742a99115a9002bdd1c3921574039fec2c24f8863c74470, (0x0000000000000000000000000000000000001234, 0, true, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x5275737400000000000000000000000000000000000000000000000000000000536177207468656d20636f64696e6720696e2052757374000000000000000000, 0))" + ], + "transaction": { + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0xb101275a60d8bfb14529c421899ad7ca1ae5b5fc", + "gas": "0x5e152", + "value": "0x0", + "input": "0xf17325e70000000000000000000000000000000000000000000000000000000000000020466295ad970fa5fc0742a99115a9002bdd1c3921574039fec2c24f8863c744700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000405275737400000000000000000000000000000000000000000000000000000000536177207468656d20636f64696e6720696e2052757374000000000000000000", + "nonce": "0x17", + "chainId": "0x13882" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1b8158", + "logs": [ + { + "address": "0x5a79dd0f66e2c1203948dd49634e506b3d8723a0", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c" + ], + "data": "0x", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x8a5c54d5296dcaa6a0b8964549e0a0b43e1e26d00882c41ac07133921c2cd9ec", + "transactionIndex": "0x0", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x000000000000000000000000000000000000000000000000017bcd12e9768bc80000000000000000000000000000000000000000000000055c301826555993bd00000000000000000000000000000000000000000000001d05d6748ff3c43aaf0000000000000000000000000000000000000000000000055ab44b136be307f500000000000000000000000000000000000000000000001d075241a2dd3ac677", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x8a5c54d5296dcaa6a0b8964549e0a0b43e1e26d00882c41ac07133921c2cd9ec", + "transactionIndex": "0x0", + "logIndex": "0x1", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002000000000000000000000000000000800000000000000000000000000000000000010000000000008000000000000000000000000000000080000000000000000000000000840001000000000000000100000000000000000000020000000000000000000800000000000000000080000000000000400000000000000000020000000400000000000000001100000000000000000000200000000001000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000400000000000300000000020000000000000000000000000000000000080000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x8a5c54d5296dcaa6a0b8964549e0a0b43e1e26d00882c41ac07133921c2cd9ec", + "transactionIndex": "0x0", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x1b8158", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x5a79dd0f66e2c1203948dd49634e506b3d8723a0" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1da241", + "logs": [ + { + "address": "0x23c5701a1bda89c61d181bd79e5203c730708ae7", + "topics": [ + "0xd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e", + "0x466295ad970fa5fc0742a99115a9002bdd1c3921574039fec2c24f8863c74470", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000020466295ad970fa5fc0742a99115a9002bdd1c3921574039fec2c24f8863c744700000000000000000000000005a79dd0f66e2c1203948dd49634e506b3d8723a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000028627974657333322062616467654e616d652c2062797465733332206a757374696669636174696f6e000000000000000000000000000000000000000000000000", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x4a64d8c7e5b419a340eaee5bb14056c53d224cffa8f2ff1e5b297edba99ee82c", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x000000000000000000000000000000000000000000000000001d644a25ea73e30000000000000000000000000000000000000000000000055ab44b13651e334d00000000000000000000000000000000000000000000001d075241a2dd3ac6770000000000000000000000000000000000000000000000055a96e6c93f33bf6a00000000000000000000000000000000000000000000001d076fa5ed03253a5a", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x4a64d8c7e5b419a340eaee5bb14056c53d224cffa8f2ff1e5b297edba99ee82c", + "transactionIndex": "0x1", + "logIndex": "0x3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000800000000000000000000000000010000000000008000000000000020000000000000000004000040000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000020002000400000000000000000100800000000000000000200000000000000010000000000000000000000000000000000400000000004000000000000000000001000000000000000000400000000000300000000000000000000000000000000000000000000000000000000000000000000010100000", + "type": "0x2", + "transactionHash": "0x4a64d8c7e5b419a340eaee5bb14056c53d224cffa8f2ff1e5b297edba99ee82c", + "transactionIndex": "0x1", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x220e9", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x23c5701a1bda89c61d181bd79e5203c730708ae7", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x250428", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x0000000000000000000000000000000000000000000000000065f05ca3f0010d0000000000000000000000000000000000000000000000055a96e6c93eada61300000000000000000000000000000000000000000000001d076fa5ed03253a5a0000000000000000000000000000000000000000000000055a30f66c9abda50600000000000000000000000000000000000000000000001d07d59649a7153b67", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x6dc1e766b179ba881ddeda4d2bb1347e4495b57fe3fac8195a2476a356221d3a", + "transactionIndex": "0x2", + "logIndex": "0x4", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000020000000400000000000000000100000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000400000000000300000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x6dc1e766b179ba881ddeda4d2bb1347e4495b57fe3fac8195a2476a356221d3a", + "transactionIndex": "0x2", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x761e7", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x8baa0d5135d241bd22a9eb35915300acfb286307" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x276bab", + "logs": [ + { + "address": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "topics": [ + "0x7d648d3c718d609c93c086fd770653e10a64c5afe41e0b1b0b4bb76bba24c479", + "0x5275737400000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf" + ], + "data": "0x4b6e6f7720686f7720746f20636f646520696e20527573740000000000000000", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0xeba257e3d5ed67d09c1209043bf0010ada86061d63a33986f17ef8fafa0df8a0", + "transactionIndex": "0x3", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x0000000000000000000000000000000000000000000000000021332d95e6af410000000000000000000000000000000000000000000000055a30f66c98ec8d2d00000000000000000000000000000000000000000000001d07d59649a7153b670000000000000000000000000000000000000000000000055a0fc33f0305ddec00000000000000000000000000000000000000000000001d07f6c9773cfbeaa8", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0xeba257e3d5ed67d09c1209043bf0010ada86061d63a33986f17ef8fafa0df8a0", + "transactionIndex": "0x3", + "logIndex": "0x6", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000200000000000000000000000000000000000000000000002000000000010000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000001000000000000000000000000000020000000000000000000000080000000000000000001000000000000020000000400000000000000000100000000000000000000200000000000000000000000000000000000000040000000000000000001004000000000000000000001000000000000000008400000000000300000000000400000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xeba257e3d5ed67d09c1209043bf0010ada86061d63a33986f17ef8fafa0df8a0", + "transactionIndex": "0x3", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x26783", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2990c2", + "logs": [ + { + "address": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "topics": [ + "0x7d648d3c718d609c93c086fd770653e10a64c5afe41e0b1b0b4bb76bba24c479", + "0x536f6c6964697479000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf" + ], + "data": "0x4b6e6f7720686f7720746f20636f646520696e20536f6c696469747900000000", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x8dc93a2f50dfa31b95892d6f595d250b9acd3c746dfff6618bf152386ab08fd7", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x000000000000000000000000000000000000000000000000001d9e010ad5ce1d0000000000000000000000000000000000000000000000055a0fc33f026e64af00000000000000000000000000000000000000000000001d07f6c9773cfbeaa800000000000000000000000000000000000000000000000559f2253df798969200000000000000000000000000000000000000000000001d0814677847d1b8c5", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x8dc93a2f50dfa31b95892d6f595d250b9acd3c746dfff6618bf152386ab08fd7", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + } + ], + "logsBloom": "0x00000000008000000000000000000200000000000000000000000000000000000000000000002000000000010000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000001000000000000020000000400000000000000000100000000000000000000200000000000000000000000000000000000000040000000000040000001004000000000000000000001000000000000000000400000000000300000000000400000040000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x8dc93a2f50dfa31b95892d6f595d250b9acd3c746dfff6618bf152386ab08fd7", + "transactionIndex": "0x4", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x22517", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2bb609", + "logs": [ + { + "address": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "topics": [ + "0x7d648d3c718d609c93c086fd770653e10a64c5afe41e0b1b0b4bb76bba24c479", + "0x5479706553637269707400000000000000000000000000000000000000000000", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf" + ], + "data": "0x4b6e6f7720686f7720746f20636f646520696e20547970655363726970740000", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0xda89c7964ed4380d61507db18f476b797d8db6ef1ed299fefda188848e9bf9df", + "transactionIndex": "0x5", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x000000000000000000000000000000000000000000000000001da097d7609a2d00000000000000000000000000000000000000000000000559f2253df71175e900000000000000000000000000000000000000000000001d0814677847d1b8c500000000000000000000000000000000000000000000000559d484a61fb0dbbc00000000000000000000000000000000000000000000001d083208101f3252f2", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0xda89c7964ed4380d61507db18f476b797d8db6ef1ed299fefda188848e9bf9df", + "transactionIndex": "0x5", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000200000000000000000000000000000000000000000000002000000000010000000000008000000000000000000000000000000000000000000000000000000001800000000000000000000100000000000000000000000000000000000000000000002000000000000080000000000000000001000000000000020000000400000000000000000100000000000000000000200000000000000000000000000000000000000040000000000000000001004000000000000000000001000000000000000000400000004000300000000000400000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xda89c7964ed4380d61507db18f476b797d8db6ef1ed299fefda188848e9bf9df", + "transactionIndex": "0x5", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x22547", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0x8baa0d5135d241bd22a9eb35915300acfb286307", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2ff7dd", + "logs": [ + { + "address": "0xb101275a60d8bfb14529c421899ad7ca1ae5b5fc", + "topics": [ + "0x8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b35", + "0x0000000000000000000000000000000000000000000000000000000000001234", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x466295ad970fa5fc0742a99115a9002bdd1c3921574039fec2c24f8863c74470" + ], + "data": "0xcbb30ddddfefb9857dd186877a6b9c942db9178d057e4f830aae9d23f18046b1", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x914c22bc3d75a60a2088d5672f6c04a76da28af0bdd832f6d05907697fdf9c05", + "transactionIndex": "0x6", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0x5a79dd0f66e2c1203948dd49634e506b3d8723a0", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf" + ], + "data": "0x0000000000000000000000000000000000000000000000008ac7230489e80000", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x914c22bc3d75a60a2088d5672f6c04a76da28af0bdd832f6d05907697fdf9c05", + "transactionIndex": "0x6", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x0000000000000000000000006cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "0x0000000000000000000000007ee41d8a25641000661b1ef5e6ae8a00400466b0" + ], + "data": "0x000000000000000000000000000000000000000000000000003ac8afe9b0059c00000000000000000000000000000000000000000000000559d484a61f29af4300000000000000000000000000000000000000000000001d083208101f3252f20000000000000000000000000000000000000000000000055999bbf63579a9a700000000000000000000000000000000000000000000001d086cd0c008e2588e", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "transactionHash": "0x914c22bc3d75a60a2088d5672f6c04a76da28af0bdd832f6d05907697fdf9c05", + "transactionIndex": "0x6", + "logIndex": "0xd", + "removed": false + } + ], + "logsBloom": "0x00000000000000000002000040000000000000000000000000000000000008000000000000000000000000010000000000008000000000000000000000000000000084000000000000000009000000840000000000000000000100000000000000000000020000000000000000000800000000000000000080000010000000002000000000000000020000000400000000000000000100000000000200000000200000000000000000000000000000000000000010000000000400000000004000000002000000000001000000000000000000400004000000300000000020010000000000000000000000000000000000000000000000000000000010100004", + "type": "0x2", + "transactionHash": "0x914c22bc3d75a60a2088d5672f6c04a76da28af0bdd832f6d05907697fdf9c05", + "transactionIndex": "0x6", + "blockHash": "0x63ca3700d3e0a8e33bd6fefd8f8470e1b437ca4ead38fb90f9ed1ab008bf09b1", + "blockNumber": "0x19166c2", + "gasUsed": "0x441d4", + "effectiveGasPrice": "0xdceed8f2a", + "from": "0x6cfd0753ec4da15dcb418e11e921c0665c1d1cbf", + "to": "0xb101275a60d8bfb14529c421899ad7ca1ae5b5fc", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1757670047685, + "chain": 80002, + "commit": "e036e5a" +} \ No newline at end of file diff --git a/the-guild-smart-contracts/deployAmoy.sh b/the-guild-smart-contracts/deployAmoy.sh new file mode 100755 index 0000000..4889d61 --- /dev/null +++ b/the-guild-smart-contracts/deployAmoy.sh @@ -0,0 +1,2 @@ +source .env +forge script --chain amoy script/FullDeploymentScript.s.sol:FullDeploymentScript --rpc-url $AMOY_RPC_URL --broadcast --verify -vvvv --interactives 1 diff --git a/the-guild-smart-contracts/foundry.toml b/the-guild-smart-contracts/foundry.toml index 0103a75..4eec111 100644 --- a/the-guild-smart-contracts/foundry.toml +++ b/the-guild-smart-contracts/foundry.toml @@ -4,7 +4,7 @@ out = "out" libs = ["lib"] # Deterministic deployments settings (see: https://getfoundry.sh/guides/deterministic-deployments-using-create2) -solc = "0.8.23" +solc = "0.8.28" evm_version = "cancun" bytecode_hash = "none" cbor_metadata = false @@ -16,3 +16,9 @@ remappings = [ ] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + +[rpc_endpoints] +amoy = "${AMOY_RPC_URL}" + +[etherscan] +amoy = { key = "${ETHERSCAN_API_KEY}" } \ No newline at end of file diff --git a/the-guild-smart-contracts/script/FullDeploymentScript.s.sol b/the-guild-smart-contracts/script/FullDeploymentScript.s.sol new file mode 100644 index 0000000..9236646 --- /dev/null +++ b/the-guild-smart-contracts/script/FullDeploymentScript.s.sol @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {Script} from "forge-std/Script.sol"; +import {EAS} from "eas-contracts/EAS.sol"; +import {AttestationRequestData, AttestationRequest} from "eas-contracts/IEAS.sol"; +import {SchemaRegistry} from "eas-contracts/SchemaRegistry.sol"; +import {TheGuildActivityToken} from "../src/TheGuildActivityToken.sol"; +import {TheGuildBadgeRegistry} from "../src/TheGuildBadgeRegistry.sol"; +import {EASUtils} from "./utils/EASUtils.s.sol"; +import {console} from "forge-std/console.sol"; + +contract FullDeploymentScript is Script { + function run() public { + EAS eas; + bytes32 salt = bytes32("theguild2"); + // EAS addresses per https://github.com/ethereum-attestation-service/eas-contracts deployments + // Base mainnet (8453) and Base Goerli/Sepolia (84531/84532) use the canonical predeploy 0x...21 + // Optimism mainnet (10) and OP Sepolia (11155420) also use canonical 0x...21 + + eas = EAS(EASUtils.getEASAddress(vm)); + + vm.startBroadcast(); + + // Deploy or attach to existing activity token via CREATE2 + TheGuildActivityToken activityToken; + try new TheGuildActivityToken{salt: salt}(eas) returns ( + TheGuildActivityToken deployed + ) { + activityToken = deployed; + } catch { + // If already deployed with same salt + initCode, attach to the predicted address + activityToken = TheGuildActivityToken( + payable(0x5a79Dd0F66E2C1203948dD49634E506b3D8723A0) + ); + } + + // Register TheGuild Schema + string memory schema = "bytes32 badgeName, bytes32 justification"; + SchemaRegistry schemaRegistry = SchemaRegistry( + EASUtils.getSchemaRegistryAddress(vm) + ); + bytes32 schemaId = schemaRegistry.register(schema, activityToken, true); + console.logString("Schema ID:"); + console.logBytes32(schemaId); + + // Deploy or attach to existing badge registry via CREATE2 + TheGuildBadgeRegistry badgeRegistry; + try new TheGuildBadgeRegistry{salt: salt}() returns ( + TheGuildBadgeRegistry deployed + ) { + badgeRegistry = deployed; + + // Create some badges + badgeRegistry.createBadge( + bytes32("Rust"), + bytes32("Know how to code in Rust") + ); + badgeRegistry.createBadge( + bytes32("Solidity"), + bytes32("Know how to code in Solidity") + ); + badgeRegistry.createBadge( + bytes32("TypeScript"), + bytes32("Know how to code in TypeScript") + ); + } catch { + // If already deployed with same salt + initCode, attach to the predicted address + badgeRegistry = TheGuildBadgeRegistry( + 0x8baA0d5135D241bd22a9eB35915300aCfB286307 + ); + } + + // Create some attestations + AttestationRequestData memory data = AttestationRequestData({ + recipient: address(0x1234), + expirationTime: 0, + revocable: true, + refUID: bytes32(0), + data: abi.encode( + bytes32("Rust"), + bytes32("Saw them coding in Rust") + ), + value: 0 + }); + + AttestationRequest memory request = AttestationRequest({ + schema: schemaId, + data: data + }); + eas.attest(request); + vm.stopBroadcast(); + } +} diff --git a/the-guild-smart-contracts/script/TheGuildActivityToken.s.sol b/the-guild-smart-contracts/script/TheGuildActivityToken.s.sol index 3560dcf..2e0a836 100644 --- a/the-guild-smart-contracts/script/TheGuildActivityToken.s.sol +++ b/the-guild-smart-contracts/script/TheGuildActivityToken.s.sol @@ -4,63 +4,16 @@ pragma solidity ^0.8.13; import {Script} from "forge-std/Script.sol"; import {IEAS} from "eas-contracts/IEAS.sol"; import {TheGuildActivityToken} from "../src/TheGuildActivityToken.sol"; +import {EASUtils} from "./utils/EASUtils.s.sol"; contract TheGuildActivityTokenScript is Script { - function getEASAddress() internal view returns (address) { - // Base and Optimism chains use canonical predeploy - if ( - block.chainid == 8453 || - block.chainid == 84531 || - block.chainid == 84532 || - block.chainid == 10 || - block.chainid == 11155420 - ) { - return 0x4200000000000000000000000000000000000021; - } - // Arbitrum Sepolia - if (block.chainid == 421614) { - return 0x2521021fc8BF070473E1e1801D3c7B4aB701E1dE; - } - // Polygon Amoy - if (block.chainid == 80002) { - return 0xb101275a60d8bfb14529C421899aD7CA1Ae5B5Fc; - } - // Linea Goerli - if (block.chainid == 59140) { - return 0xaEF4103A04090071165F78D45D83A0C0782c2B2a; - } - //Mainnet - if (block.chainid == 1) { - return 0xA1207F3BBa224E2c9c3c6D5aF63D0eb1582Ce587; - } - //Sepolia - if (block.chainid == 11155111) { - return 0xC2679fBD37d54388Ce493F1DB75320D236e1815e; - } - //Arbitrum One - if (block.chainid == 42161) { - return 0xbD75f629A22Dc1ceD33dDA0b68c546A1c035c458; - } - //Polygon - if (block.chainid == 137) { - return 0x5E634ef5355f45A855d02D66eCD687b1502AF790; - } - // Fallback to env var for other networks - address fallbackAddr = vm.envOr("EAS_ADDRESS", address(0)); - require( - fallbackAddr != address(0), - "EAS_ADDRESS not set for this network" - ); - return fallbackAddr; - } - function run() public { address eas; // EAS addresses per https://github.com/ethereum-attestation-service/eas-contracts deployments // Base mainnet (8453) and Base Goerli/Sepolia (84531/84532) use the canonical predeploy 0x...21 // Optimism mainnet (10) and OP Sepolia (11155420) also use canonical 0x...21 - eas = getEASAddress(); + eas = EASUtils.getEASAddress(vm); vm.startBroadcast(); new TheGuildActivityToken(IEAS(eas)); diff --git a/the-guild-smart-contracts/script/TheGuildBadgeRegistry.s.sol b/the-guild-smart-contracts/script/TheGuildBadgeRegistry.s.sol index abe6a44..52e5da9 100644 --- a/the-guild-smart-contracts/script/TheGuildBadgeRegistry.s.sol +++ b/the-guild-smart-contracts/script/TheGuildBadgeRegistry.s.sol @@ -10,7 +10,37 @@ contract TheGuildBadgeRegistryScript is Script { bytes32 salt = bytes32(vm.envOr("CREATE2_SALT", uint256(0))); vm.startBroadcast(); - new TheGuildBadgeRegistry{salt: salt}(); + TheGuildBadgeRegistry registry = new TheGuildBadgeRegistry{ + salt: salt + }(); + registry.createBadge( + bytes32("Rust"), + bytes32("Know how to code in Rust") + ); + registry.createBadge( + bytes32("Solidity"), + bytes32("Know how to code in Solidity") + ); + registry.createBadge( + bytes32("Python"), + bytes32("Know how to code in Python") + ); + registry.createBadge( + bytes32("JavaScript"), + bytes32("Know how to code in JavaScript") + ); + registry.createBadge( + bytes32("TypeScript"), + bytes32("Know how to code in TypeScript") + ); + registry.createBadge( + bytes32("React"), + bytes32("Know how to code in React") + ); + registry.createBadge( + bytes32("Next.js"), + bytes32("Know how to code in Next.js") + ); vm.stopBroadcast(); } } diff --git a/the-guild-smart-contracts/script/utils/EASUtils.s.sol b/the-guild-smart-contracts/script/utils/EASUtils.s.sol new file mode 100644 index 0000000..7efc5a0 --- /dev/null +++ b/the-guild-smart-contracts/script/utils/EASUtils.s.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import "forge-std/Vm.sol"; + +library EASUtils { + function getEASAddress(Vm vm) internal view returns (address) { + // Base and Optimism chains use canonical predeploy + if ( + block.chainid == 8453 || + block.chainid == 84531 || + block.chainid == 84532 || + block.chainid == 10 || + block.chainid == 11155420 + ) { + return 0x4200000000000000000000000000000000000021; + } + // Arbitrum Sepolia + if (block.chainid == 421614) { + return 0x2521021fc8BF070473E1e1801D3c7B4aB701E1dE; + } + // Polygon Amoy + if (block.chainid == 80002) { + return 0xb101275a60d8bfb14529C421899aD7CA1Ae5B5Fc; + } + // Linea Goerli + if (block.chainid == 59140) { + return 0xaEF4103A04090071165F78D45D83A0C0782c2B2a; + } + //Mainnet + if (block.chainid == 1) { + return 0xA1207F3BBa224E2c9c3c6D5aF63D0eb1582Ce587; + } + //Sepolia + if (block.chainid == 11155111) { + return 0xC2679fBD37d54388Ce493F1DB75320D236e1815e; + } + //Arbitrum One + if (block.chainid == 42161) { + return 0xbD75f629A22Dc1ceD33dDA0b68c546A1c035c458; + } + //Polygon + if (block.chainid == 137) { + return 0x5E634ef5355f45A855d02D66eCD687b1502AF790; + } + // Fallback to env var for other networks + address fallbackAddr = vm.envOr("EAS_ADDRESS", address(0)); + require( + fallbackAddr != address(0), + "EAS_ADDRESS not set for this network" + ); + return fallbackAddr; + } + + function getSchemaRegistryAddress(Vm vm) internal view returns (address) { + // Base and Optimism chains use canonical predeploy for SchemaRegistry + if ( + block.chainid == 8453 || + block.chainid == 84531 || + block.chainid == 84532 || + block.chainid == 10 || + block.chainid == 11155420 + ) { + return 0x4200000000000000000000000000000000000020; + } + // Arbitrum Sepolia + if (block.chainid == 421614) { + return 0x45CB6Fa0870a8Af06796Ac15915619a0f22cd475; + } + // Polygon Amoy + if (block.chainid == 80002) { + return 0x23c5701A1BDa89C61d181BD79E5203c730708AE7; + } + // Linea Goerli + if (block.chainid == 59140) { + return 0x55D26f9ae0203EF95494AE4C170eD35f4Cf77797; + } + // Fallback to env var for other networks + address fallbackAddr = vm.envOr("SCHEMA_REGISTRY_ADDRESS", address(0)); + require( + fallbackAddr != address(0), + "SCHEMA_REGISTRY_ADDRESS not set for this network" + ); + return fallbackAddr; + } +}