From e574880f731791da95df013b7c1d5596b91fa3ad Mon Sep 17 00:00:00 2001 From: ollie <67156692+0xEillo@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:39:23 +0000 Subject: [PATCH] feat: As an Issuer, I want to issue Attestations on Arbitrum (#384) Co-authored-by: Alain Nicolas --- README.md | 51 +- contracts/.env.example | 22 +- contracts/.openzeppelin/arbitrum-goerli.json | 965 ++++++++++++++++++ contracts/.openzeppelin/arbitrum-one.json | 960 +++++++++++++++++ contracts/README.md | 55 +- .../arbitrum-goerli/AttestationReader.json | 215 ++++ .../arbitrum-goerli/AttestationRegistry.json | 658 ++++++++++++ .../arbitrum-goerli/ModuleRegistry.json | 395 +++++++ .../arbitrum-goerli/PortalRegistry.json | 377 +++++++ .../deployments/arbitrum-goerli/Router.json | 233 +++++ .../arbitrum-goerli/SchemaRegistry.json | 332 ++++++ .../arbitrum/AttestationReader.json | 215 ++++ .../arbitrum/AttestationRegistry.json | 658 ++++++++++++ .../deployments/arbitrum/ModuleRegistry.json | 395 +++++++ .../deployments/arbitrum/PortalRegistry.json | 377 +++++++ contracts/deployments/arbitrum/Router.json | 233 +++++ .../deployments/arbitrum/SchemaRegistry.json | 332 ++++++ .../linea-goerli/AttestationReader.json | 215 ++++ .../linea-goerli/AttestationRegistry.json | 658 ++++++++++++ .../linea-goerli/ModuleRegistry.json | 395 +++++++ .../linea-goerli/PortalRegistry.json | 377 +++++++ .../deployments/linea-goerli/Router.json | 233 +++++ .../linea-goerli/SchemaRegistry.json | 332 ++++++ .../deployments/linea/AttestationReader.json | 215 ++++ .../linea/AttestationRegistry copy.json | 658 ++++++++++++ .../linea/AttestationRegistry.json | 658 ++++++++++++ .../deployments/linea/ModuleRegistry.json | 395 +++++++ .../deployments/linea/PortalRegistry.json | 377 +++++++ contracts/deployments/linea/Router.json | 233 +++++ .../deployments/linea/SchemaRegistry.json | 332 ++++++ contracts/hardhat.config.ts | 26 + contracts/package.json | 33 +- 32 files changed, 11535 insertions(+), 75 deletions(-) create mode 100644 contracts/.openzeppelin/arbitrum-goerli.json create mode 100644 contracts/.openzeppelin/arbitrum-one.json create mode 100644 contracts/deployments/arbitrum-goerli/AttestationReader.json create mode 100644 contracts/deployments/arbitrum-goerli/AttestationRegistry.json create mode 100644 contracts/deployments/arbitrum-goerli/ModuleRegistry.json create mode 100644 contracts/deployments/arbitrum-goerli/PortalRegistry.json create mode 100644 contracts/deployments/arbitrum-goerli/Router.json create mode 100644 contracts/deployments/arbitrum-goerli/SchemaRegistry.json create mode 100644 contracts/deployments/arbitrum/AttestationReader.json create mode 100644 contracts/deployments/arbitrum/AttestationRegistry.json create mode 100644 contracts/deployments/arbitrum/ModuleRegistry.json create mode 100644 contracts/deployments/arbitrum/PortalRegistry.json create mode 100644 contracts/deployments/arbitrum/Router.json create mode 100644 contracts/deployments/arbitrum/SchemaRegistry.json create mode 100644 contracts/deployments/linea-goerli/AttestationReader.json create mode 100644 contracts/deployments/linea-goerli/AttestationRegistry.json create mode 100644 contracts/deployments/linea-goerli/ModuleRegistry.json create mode 100644 contracts/deployments/linea-goerli/PortalRegistry.json create mode 100644 contracts/deployments/linea-goerli/Router.json create mode 100644 contracts/deployments/linea-goerli/SchemaRegistry.json create mode 100644 contracts/deployments/linea/AttestationReader.json create mode 100644 contracts/deployments/linea/AttestationRegistry copy.json create mode 100644 contracts/deployments/linea/AttestationRegistry.json create mode 100644 contracts/deployments/linea/ModuleRegistry.json create mode 100644 contracts/deployments/linea/PortalRegistry.json create mode 100644 contracts/deployments/linea/Router.json create mode 100644 contracts/deployments/linea/SchemaRegistry.json diff --git a/README.md b/README.md index 299a71b0..a7c5291e 100644 --- a/README.md +++ b/README.md @@ -48,9 +48,14 @@ Don't hesitate to check our [Contribution Guide](./CONTRIBUTING.md) before pushi ## Contracts Addresses -The main contracts (i.e. the "registries") and the helpers contracts are deployed on Linea Goerli (Testnet) and Linea -Mainnet. -Here are the addresses on the 2 networks: +The main contracts (i.e. the "registries") and the helpers contracts are deployed on: + +- Linea Testnet +- Linea Mainnet +- Arbitrum Testnet +- Arbitrum Mainnet + +Here are the addresses on those networks:
Linea Testnet @@ -88,13 +93,49 @@ Here are the addresses on the 2 networks:
+
+ Arbitrum Testnet + +- Router = + [0x5f9df9EDC1F773e622cbD1F8C201c1560c1DF1a1](https://goerli.arbiscan.io/address/0x5f9df9EDC1F773e622cbD1F8C201c1560c1DF1a1) +- AttestationRegistry = + [0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3](https://goerli.arbiscan.io/address/0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3) +- ModuleRegistry = + [0x0D9212976f37c96b060f23f9Da5f389cB7A958B7](https://goerli.arbiscan.io/address/0x0D9212976f37c96b060f23f9Da5f389cB7A958B7) +- PortalRegistry = + [0xCF68336D3f34fb688C7708cb285B0F86DFC44dA8](https://goerli.arbiscan.io/address/0xCF68336D3f34fb688C7708cb285B0F86DFC44dA8) +- SchemaRegistry = + [0xAAce069f1026bAF1f86f05FC5e0934D2C3957528](https://goerli.arbiscan.io/address/0xAAce069f1026bAF1f86f05FC5e0934D2C3957528) +- AttestationReader = + [0x628D6C3C9067AedD33404d827c2e9a4A4368dff3](https://goerli.arbiscan.io/address/0x628D6C3C9067AedD33404d827c2e9a4A4368dff3) + +
+ +
+ Arbitrum Mainnet + +- Router = + [0xa77196867bB03D04786EF636cDdD82f37A1248a9](https://arbiscan.io/address/0xa77196867bB03D04786EF636cDdD82f37A1248a9) +- AttestationRegistry = + [0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C](https://arbiscan.io/address/0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C) +- ModuleRegistry = + [0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba](https://arbiscan.io/address/0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba) +- PortalRegistry = + [0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD](https://arbiscan.io/address/0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD) +- SchemaRegistry = + [0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27](https://arbiscan.io/address/0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27) +- AttestationReader = + [0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1](https://arbiscan.io/address/0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1) + +
+ ## Linking Attestations Verax Attestation Registry allows creating links ("relationships") between attestations. 🔗 Go to the [official documentation](https://docs.ver.ax/developer-guides/for-attestation-issuers/link-attestations) for more details -Verax offers 2 Schemas to cover most use cases, both on testnet and mainnet: +Verax offers 2 Schemas to cover most use cases: - The **Relationship** Schema, with ID `0x41b8c81288eebbf173b2f54b9fb2f1d37f2caca51ef39e8f99299b53c2599a3a` - The **Named Graph Relationship** Schema with ID `0x8f83a0ef7871f63455a506f6bca0db98a88721764ae6dbde2afddd8e12e442b8` @@ -103,7 +144,7 @@ Verax offers 2 Schemas to cover most use cases, both on testnet and mainnet: To handle large payloads to attest and avoid increasing the gas cost for the attestation process, it is possible to host the attested payload off-chain. In this case, the on-chain attestation will only contain a link to the attested payload, -based on a dedicated Schema called **Offchain**. It is available on both testnet and mainnet with ID +based on a dedicated Schema called **Offchain**. It is available with ID `0xa288e257097a4bed4166c002cb6911713edacc88e30b6cb2b0104df9c365327d`. To use it, simply pass a payload with the following content: diff --git a/contracts/.env.example b/contracts/.env.example index 73423189..fb799e97 100644 --- a/contracts/.env.example +++ b/contracts/.env.example @@ -4,7 +4,7 @@ PRIVATE_KEY=0000000000000000000000000000000000000000000000000000000000000001 ETHERSCAN_API_KEY= SCROLL_API_KEY= -# Verax Testnet Config +# LINEA TESTNET ROUTER_ADDRESS=0x736c78b2f2cBf4F921E8551b2acB6A5Edc9177D5 PORTAL_REGISTRY_ADDRESS=0x506f88a5Ca8D5F001f2909b029738A40042e42a6 SCHEMA_REGISTRY_ADDRESS=0xB2c4Da1f8F08A0CA25862509E5431289BE2b598B @@ -13,7 +13,7 @@ ATTESTATION_REGISTRY_ADDRESS=0xC765F28096F6121C2F2b82D35A4346280164428b ATTESTATION_READER_ADDRESS=0x65c8294C7aF0f0bDDe51eF92AF850613bb629fc6 EAS_REGISTRY_ADDRESS=0xaEF4103A04090071165F78D45D83A0C0782c2B2a -# Verax Mainnet Config +# LINEA MAINNET #ROUTER_ADDRESS=0x4d3a380A03f3a18A5dC44b01119839D8674a552E #PORTAL_REGISTRY_ADDRESS=0xd5d61e4ECDf6d46A63BfdC262af92544DFc19083 #SCHEMA_REGISTRY_ADDRESS=0x0f95dCec4c7a93F2637eb13b655F2223ea036B59 @@ -21,3 +21,21 @@ EAS_REGISTRY_ADDRESS=0xaEF4103A04090071165F78D45D83A0C0782c2B2a #ATTESTATION_REGISTRY_ADDRESS=0x3de3893aa4Cdea029e84e75223a152FD08315138 #ATTESTATION_READER_ADDRESS=0x40871e247CF6b8fd8794c9c56bB5c2b8a4FA3B6c #EAS_REGISTRY_ADDRESS=0xaEF4103A04090071165F78D45D83A0C0782c2B2a + +# ARBITRUM TESTNET + +#ROUTER_ADDRESS = 0x5f9df9EDC1F773e622cbD1F8C201c1560c1DF1a1 +#ATTESTATION_REGISTRY_ADDRESS = 0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3 +#MODULE_REGISTRY_ADDRESS = 0x0D9212976f37c96b060f23f9Da5f389cB7A958B7 +#PORTAL_REGISTRY_ADDRESS = 0xCF68336D3f34fb688C7708cb285B0F86DFC44dA8 +#SCHEMA_REGISTRY_ADDRESS = 0xAAce069f1026bAF1f86f05FC5e0934D2C3957528 +#ATTESTATION_READER_ADDRESS = 0x628D6C3C9067AedD33404d827c2e9a4A4368dff3 + +# ARBITRUM MAINNET + +#ROUTER_ADDRESS = 0xa77196867bB03D04786EF636cDdD82f37A1248a9 +#ATTESTATION_REGISTRY_ADDRESS = 0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C +#MODULE_REGISTRY_ADDRESS = 0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba +#PORTAL_REGISTRY_ADDRESS = 0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD +#SCHEMA_REGISTRY_ADDRESS = 0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27 +#ATTESTATION_READER_ADDRESS = 0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1 diff --git a/contracts/.openzeppelin/arbitrum-goerli.json b/contracts/.openzeppelin/arbitrum-goerli.json new file mode 100644 index 00000000..d2b492fc --- /dev/null +++ b/contracts/.openzeppelin/arbitrum-goerli.json @@ -0,0 +1,965 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0xC4b845dB02e9D62295D656a12925441cEC7169D5", + "txHash": "0xb0fa06765918a67b2cd2629e2dff09e1e84f9818a725bd979d81850220deb0cc" + }, + "proxies": [ + { + "address": "0x4BB8769e18f1518c35bE8405d43d7cc07eCf501C", + "txHash": "0xdf620821d88b6a83dcefda5cb9ee4298de51d0671bc9d3f3a0378257a8db37c4", + "kind": "transparent" + }, + { + "address": "0xB87e925a2a1d81E89Ef36940abeD75b24777C116", + "txHash": "0x997984446e20668ff13d215f906dfdfb82be60f599b9ed26a103bf7195768cbe", + "kind": "transparent" + }, + { + "address": "0x807e09241DB3E8D6E4bc8fB894B8085211EDDa89", + "txHash": "0xce15eb426c4f9ef55156ed8e028b515ef0fa13cddeae0c025279f98d43a1ce3b", + "kind": "transparent" + }, + { + "address": "0xdc47cb82E08E1C313937A50e894f523Ecc208Bc8", + "txHash": "0xd7ab14de11f90e01652dfa252f518312a09f9158de9ce04781c9fbd57e092127", + "kind": "transparent" + }, + { + "address": "0xEba1B7B3aFf3c427D3b3F9a70a972D1AC5712B76", + "txHash": "0x6a4182bc51968905c2aad57f280e57e07c442e1901434358b36a06baeead7518", + "kind": "transparent" + }, + { + "address": "0xE1f8a5eaf28794E69108cFd9Fdd05c9f12188ECF", + "txHash": "0xe42bca772d3aa808f432a6c2e57425372e2ebb8ac4e822fc933d540a4c58e5b9", + "kind": "transparent" + }, + { + "address": "0x5f9df9EDC1F773e622cbD1F8C201c1560c1DF1a1", + "txHash": "0x7afc3630018874c0463fb97aa09e65d5cf9340019b692a123d1ed5894abb4644", + "kind": "transparent" + }, + { + "address": "0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3", + "txHash": "0x838e8506aa7728012e4f3f0914fa1a34617f30d0519bec9d8a3cfdc665523a10", + "kind": "transparent" + }, + { + "address": "0x0D9212976f37c96b060f23f9Da5f389cB7A958B7", + "txHash": "0x7a9ea88878f6170901a3e05c119fa555c0bdbe15e392416aff0a93f8b58f3461", + "kind": "transparent" + }, + { + "address": "0xCF68336D3f34fb688C7708cb285B0F86DFC44dA8", + "txHash": "0x7151f3c3855f922a4b830f60b18895e5dff645ce5ca57b2440c6e6f6098898db", + "kind": "transparent" + }, + { + "address": "0xAAce069f1026bAF1f86f05FC5e0934D2C3957528", + "txHash": "0xfe2cdfb16df8ab25caa0cdbfa8077083145302a1c46d120a7a60058a65f27e62", + "kind": "transparent" + }, + { + "address": "0x628D6C3C9067AedD33404d827c2e9a4A4368dff3", + "txHash": "0x6084af690d92536931cd51872166eaa7777b378d6cf06751af3ab04c87f868ac", + "kind": "transparent" + } + ], + "impls": { + "4353fbe787c13443291bba3d18e906853909285ba948d10f4d95994940b68c97": { + "address": "0xa4f8088518061Fb7f650d0A921D7c0d3Dd180D7B", + "txHash": "0x0d7355d70558960992fa998375ff0db53e3e6b7f7698db6d87a50ccc0b0ba575", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "ATTESTATION_REGISTRY", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:13" + }, + { + "label": "MODULE_REGISTRY", + "offset": 0, + "slot": "102", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:14" + }, + { + "label": "PORTAL_REGISTRY", + "offset": 0, + "slot": "103", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:15" + }, + { + "label": "SCHEMA_REGISTRY", + "offset": 0, + "slot": "104", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:16" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "99e5c37885aa5ad80cbb068486aa970411fb36d14c1326df24fc2bb7585c0d3a": { + "address": "0x232572FeD3F00Aa9489824901d40f71d27C695FA", + "txHash": "0xf214707f4ae7281083c927ba57eedd5e7b5161d73ea5f45d62d53074ddd31541", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:16" + }, + { + "label": "version", + "offset": 20, + "slot": "101", + "type": "t_uint16", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:18" + }, + { + "label": "attestationIdCounter", + "offset": 22, + "slot": "101", + "type": "t_uint32", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:19" + }, + { + "label": "attestations", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Attestation)7030_storage)", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:21" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Attestation)7030_storage)": { + "label": "mapping(bytes32 => struct Attestation)", + "numberOfBytes": "32" + }, + "t_struct(Attestation)7030_storage": { + "label": "struct Attestation", + "members": [ + { + "label": "attestationId", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "replacedBy", + "type": "t_bytes32", + "offset": 0, + "slot": "2" + }, + { + "label": "attester", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "portal", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "attestedDate", + "type": "t_uint64", + "offset": 20, + "slot": "4" + }, + { + "label": "expirationDate", + "type": "t_uint64", + "offset": 0, + "slot": "5" + }, + { + "label": "revocationDate", + "type": "t_uint64", + "offset": 8, + "slot": "5" + }, + { + "label": "version", + "type": "t_uint16", + "offset": 16, + "slot": "5" + }, + { + "label": "revoked", + "type": "t_bool", + "offset": 18, + "slot": "5" + }, + { + "label": "subject", + "type": "t_bytes_storage", + "offset": 0, + "slot": "6" + }, + { + "label": "attestationData", + "type": "t_bytes_storage", + "offset": 0, + "slot": "7" + } + ], + "numberOfBytes": "256" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "84786e98eee515d63a28b28d3e67d5f91e07fe863a9045e2dbfec7f203693cad": { + "address": "0x33b34b2ebd98242eA6dB1F585Dde4318b282546f", + "txHash": "0x1df0483f7f8e67748793ccc2b8ba7457b31f27ed3adfa52915cee27d6856dff1", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:18" + }, + { + "label": "modules", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Module)7062_storage)", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:20" + }, + { + "label": "moduleAddresses", + "offset": 0, + "slot": "103", + "type": "t_array(t_address)dyn_storage", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:22" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_struct(Module)7062_storage)": { + "label": "mapping(address => struct Module)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Module)7062_storage": { + "label": "struct Module", + "members": [ + { + "label": "moduleAddress", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "a4b32b6d1096f304a0b4aadcaf44f2f265393360bb7bc22c4e0703b3803bb820": { + "address": "0x8F1B8e15659B21Db9e28cD74B6037cb8B4d784FC", + "txHash": "0xf88fded1758e56323f824ef34d94f03ccbb4c4327e0db8ebb6644b1662dbe1fb", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:19" + }, + { + "label": "portals", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Portal)7055_storage)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:21" + }, + { + "label": "issuers", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_address,t_bool)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:23" + }, + { + "label": "portalAddresses", + "offset": 0, + "slot": "104", + "type": "t_array(t_address)dyn_storage", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:25" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Portal)7055_storage)": { + "label": "mapping(address => struct Portal)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Portal)7055_storage": { + "label": "struct Portal", + "members": [ + { + "label": "id", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "ownerAddress", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "modules", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "isRevocable", + "type": "t_bool", + "offset": 0, + "slot": "3" + }, + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "4" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "5" + }, + { + "label": "ownerName", + "type": "t_string_storage", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "9b0b84cc1046d395294ecdfe067a693eda5c23f9473ae2d4f22f82674d2eb7d6": { + "address": "0x662b2e312dbcd8EDeAcdf8F4582e96a0Fe88D300", + "txHash": "0x4826eeea0da24623994cc9c127138d527c2f902a286de256d94988af981c28a5", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:15" + }, + { + "label": "schemas", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Schema)7039_storage)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:17" + }, + { + "label": "schemaIds", + "offset": 0, + "slot": "103", + "type": "t_array(t_bytes32)dyn_storage", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:19" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Schema)7039_storage)": { + "label": "mapping(bytes32 => struct Schema)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Schema)7039_storage": { + "label": "struct Schema", + "members": [ + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "context", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "schema", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "cc3bd5ce0f70ee7ad8fd47bda375d640dc7035da4746a94f0ccf30df96358f53": { + "address": "0xe4D36280D256f684Aa8054c9A4DbeBc47eD91047", + "txHash": "0xc3d8e9204810ef22bda7fcb617de8dbc8edde937ae6ec43be92b2bb8b58999fe", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "AttestationReader", + "src": "src/AttestationReader.sol:17" + }, + { + "label": "easRegistry", + "offset": 0, + "slot": "102", + "type": "t_contract(IEAS)6945", + "contract": "AttestationReader", + "src": "src/AttestationReader.sol:18" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IEAS)6945": { + "label": "contract IEAS", + "numberOfBytes": "20" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/contracts/.openzeppelin/arbitrum-one.json b/contracts/.openzeppelin/arbitrum-one.json new file mode 100644 index 00000000..0a16c3e4 --- /dev/null +++ b/contracts/.openzeppelin/arbitrum-one.json @@ -0,0 +1,960 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0xF6469c01Fa1Cd611a713a76446fa9bA06EC6523f", + "txHash": "0x0a08856e775cc8bba6f3f6dc39ea659b321849dfcdb601d1fc583e44f8c286ec" + }, + "proxies": [ + { + "address": "0x997f01136d2B07430Fb12d5Cd91F883dde6A7f51", + "txHash": "0xcd7c735b65ef3c8f1fccf352cf8697960eecf65282b3c2f10e882595579da5b8", + "kind": "transparent" + }, + { + "address": "0x76e7A2A0C80C92069e6D9626cBa84242a3403778", + "txHash": "0xd36549c0c6dc87293672e151be0cfc7f712c8cf49727ac57d98420ba6fb4f7ae", + "kind": "transparent" + }, + { + "address": "0x97784C5fc15990Ff85052D6E0dEf51Fe959A6b38", + "txHash": "0xe4f79d4f6ed02a437d57fa9f8d926df0d7a2fa54b9f3c5771d003c9ece7c7b01", + "kind": "transparent" + }, + { + "address": "0x99bf6e33D90Aa8acF19d56696f914970D4822686", + "txHash": "0xde42a5b80a63cd930d3955465869147b90e5022a4f61ed96b91018f8c119e151", + "kind": "transparent" + }, + { + "address": "0x70DEc7b4ac1F997465cFb02Ed1191E3C23108c94", + "txHash": "0x73dd571ce19e833167d0ec01b069d71d8eadc20d0404ac7e0120ee37e0f67b3b", + "kind": "transparent" + }, + { + "address": "0xa77196867bB03D04786EF636cDdD82f37A1248a9", + "txHash": "0x06604424bae664b427101b918922a1658bb27d00c68673e5d848298cb8d36f7f", + "kind": "transparent" + }, + { + "address": "0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C", + "txHash": "0xbbf3989dd45551db4f836421a178e2ca34c378b1160af5c55f99f4dfc140c423", + "kind": "transparent" + }, + { + "address": "0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba", + "txHash": "0x27705d848963e450a8f8b1c6f0183d0cbfb056b4510880ddd9c3922dc3a5ee0a", + "kind": "transparent" + }, + { + "address": "0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD", + "txHash": "0x74a1dafa3e4538b326355eae0efc3bd1a0238a38ba75c8ed9849d50a0d0c4e99", + "kind": "transparent" + }, + { + "address": "0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27", + "txHash": "0x33a1f8979094a2810894531939ddc4db118c2380b31a98c68531791fc5d54b5a", + "kind": "transparent" + }, + { + "address": "0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1", + "txHash": "0xb76d7517b7282fd543fecf26097299e9ee9ba5e7de362f50a52ffb41df8ce9d9", + "kind": "transparent" + } + ], + "impls": { + "4353fbe787c13443291bba3d18e906853909285ba948d10f4d95994940b68c97": { + "address": "0xb6ea09f92c996c9b57F4d87184Ecc9690d332CD5", + "txHash": "0x6debde49b04a74862a95c4e67bf27b82d1dab452cd67df0d300d1c1a3b82b45e", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "ATTESTATION_REGISTRY", + "offset": 0, + "slot": "101", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:13" + }, + { + "label": "MODULE_REGISTRY", + "offset": 0, + "slot": "102", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:14" + }, + { + "label": "PORTAL_REGISTRY", + "offset": 0, + "slot": "103", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:15" + }, + { + "label": "SCHEMA_REGISTRY", + "offset": 0, + "slot": "104", + "type": "t_address", + "contract": "Router", + "src": "src/Router.sol:16" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "99e5c37885aa5ad80cbb068486aa970411fb36d14c1326df24fc2bb7585c0d3a": { + "address": "0x9ff814a0988D2fC8CF8e9a508Eb77c30BF3C5106", + "txHash": "0x692880346b5aa7b38c8db2b45e868f4bacb5057bdca390fa5df9b5bc46d2c69a", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:16" + }, + { + "label": "version", + "offset": 20, + "slot": "101", + "type": "t_uint16", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:18" + }, + { + "label": "attestationIdCounter", + "offset": 22, + "slot": "101", + "type": "t_uint32", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:19" + }, + { + "label": "attestations", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Attestation)7030_storage)", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:21" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Attestation)7030_storage)": { + "label": "mapping(bytes32 => struct Attestation)", + "numberOfBytes": "32" + }, + "t_struct(Attestation)7030_storage": { + "label": "struct Attestation", + "members": [ + { + "label": "attestationId", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "replacedBy", + "type": "t_bytes32", + "offset": 0, + "slot": "2" + }, + { + "label": "attester", + "type": "t_address", + "offset": 0, + "slot": "3" + }, + { + "label": "portal", + "type": "t_address", + "offset": 0, + "slot": "4" + }, + { + "label": "attestedDate", + "type": "t_uint64", + "offset": 20, + "slot": "4" + }, + { + "label": "expirationDate", + "type": "t_uint64", + "offset": 0, + "slot": "5" + }, + { + "label": "revocationDate", + "type": "t_uint64", + "offset": 8, + "slot": "5" + }, + { + "label": "version", + "type": "t_uint16", + "offset": 16, + "slot": "5" + }, + { + "label": "revoked", + "type": "t_bool", + "offset": 18, + "slot": "5" + }, + { + "label": "subject", + "type": "t_bytes_storage", + "offset": 0, + "slot": "6" + }, + { + "label": "attestationData", + "type": "t_bytes_storage", + "offset": 0, + "slot": "7" + } + ], + "numberOfBytes": "256" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "84786e98eee515d63a28b28d3e67d5f91e07fe863a9045e2dbfec7f203693cad": { + "address": "0xB30ef07789D1823A7b0316576bC9030A43065164", + "txHash": "0xac12a9a22ef5bce4dae645de8d01607e746f7dd578a3c442f95b7a50f869df12", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:18" + }, + { + "label": "modules", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Module)7062_storage)", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:20" + }, + { + "label": "moduleAddresses", + "offset": 0, + "slot": "103", + "type": "t_array(t_address)dyn_storage", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:22" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_struct(Module)7062_storage)": { + "label": "mapping(address => struct Module)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Module)7062_storage": { + "label": "struct Module", + "members": [ + { + "label": "moduleAddress", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "a4b32b6d1096f304a0b4aadcaf44f2f265393360bb7bc22c4e0703b3803bb820": { + "address": "0xa30E972535e6b02d765712DC9E7B33abBE1D2b18", + "txHash": "0x0729a7b8505ebff731c4d4bff6663a3954ee76e82efb78a685e3c1ebd46c2161", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:19" + }, + { + "label": "portals", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Portal)7055_storage)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:21" + }, + { + "label": "issuers", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_address,t_bool)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:23" + }, + { + "label": "portalAddresses", + "offset": 0, + "slot": "104", + "type": "t_array(t_address)dyn_storage", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:25" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_address)dyn_storage": { + "label": "address[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Portal)7055_storage)": { + "label": "mapping(address => struct Portal)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Portal)7055_storage": { + "label": "struct Portal", + "members": [ + { + "label": "id", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "ownerAddress", + "type": "t_address", + "offset": 0, + "slot": "1" + }, + { + "label": "modules", + "type": "t_array(t_address)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "isRevocable", + "type": "t_bool", + "offset": 0, + "slot": "3" + }, + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "4" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "5" + }, + { + "label": "ownerName", + "type": "t_string_storage", + "offset": 0, + "slot": "6" + } + ], + "numberOfBytes": "224" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "9b0b84cc1046d395294ecdfe067a693eda5c23f9473ae2d4f22f82674d2eb7d6": { + "address": "0x57F722d96718360073Aa9B03c5237F84b0EE3C80", + "txHash": "0x676d178f009ad2343af8b026604e209f05f1efcd63eda430700eafbf92d25b14", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:15" + }, + { + "label": "schemas", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Schema)7039_storage)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:17" + }, + { + "label": "schemaIds", + "offset": 0, + "slot": "103", + "type": "t_array(t_bytes32)dyn_storage", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:19" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Schema)7039_storage)": { + "label": "mapping(bytes32 => struct Schema)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Schema)7039_storage": { + "label": "struct Schema", + "members": [ + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "description", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "context", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "schema", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + }, + "cc3bd5ce0f70ee7ad8fd47bda375d640dc7035da4746a94f0ccf30df96358f53": { + "address": "0x0408C21Aad23bC2B9d032e7Ef0adbe9855204f69", + "txHash": "0x3d6de7e7f124bc13f21807954cddcb25dae6e1f6b666b9c96f67bc8b93412d88", + "layout": { + "solcVersion": "0.8.21", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:68" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "router", + "offset": 0, + "slot": "101", + "type": "t_contract(IRouter)6994", + "contract": "AttestationReader", + "src": "src/AttestationReader.sol:17" + }, + { + "label": "easRegistry", + "offset": 0, + "slot": "102", + "type": "t_contract(IEAS)6945", + "contract": "AttestationReader", + "src": "src/AttestationReader.sol:18" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IEAS)6945": { + "label": "contract IEAS", + "numberOfBytes": "20" + }, + "t_contract(IRouter)6994": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/contracts/README.md b/contracts/README.md index 060c1a84..7affe825 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,4 +1,4 @@ -## Verax Attestation Registry - Contracts +# Verax Attestation Registry - Contracts Verax is mainly composed of a set of smart contracts that allows anyone to read and write attestations of any type and any subject. @@ -164,37 +164,17 @@ Transaction hash: 0x15b25752da1dfd458b92069248825ce959f5be104f974d62b4ae95050710 ## Verax contracts deployment -### On the Linea Goerli testnet: - 1. Copy the `.env.example` file to a `.env` file 2. Fill it with your Infura key 3. Add your private key -4. To verify the contracts on Etherscan, also add your Etherscan API key -5. Deploy every contract via the `pnpm run deploy:all:goerli` command +4. To verify the contracts on the dedicated explorer, also add your Etherscan/Lineascan/Arbiscan API key +5. Deploy all contracts via the `pnpm run deploy NETWORK_NAME` command (replacing `NETWORK_NAME` with the name of the + targeted network) 6. Note down the summarized addresses (proxies), and the total logs can be of interest too 7. Gather the first list of issuers addresses 8. Set the issuers via the PortalRegistry’s `setIssuers` method 9. Deploy an instance of DefaultPortal via the PortalRegistry’s `deployDefaultPortal` method and note down its address -10. Verify this contract via `npx hardhat verify --network linea-goerli ADDRESS` -11. _Optional_: Deploy some valid modules via the `pnpm run deploy:CorrectModule:goerli` command and note down their - addresses -12. _Optional_: Deploy an invalid module via the `pnpm run deploy:IncorrectModule:goerli` command and note down its - address - -### On the Linea mainnet: - -1. Copy the `.env.example` file to a `.env` file -2. Fill it with your Infura key -3. Add your private key -4. To verify the contracts on Etherscan, also add your Etherscan API key -5. Deploy every contract via the `pnpm run deploy:all` command -6. Note down the summarized addresses (proxies), and the total logs can be of interest too -7. Gather the first list of issuers addresses -8. Set the issuers via the PortalRegistry’s `setIssuers` method -9. Deploy an instance of DefaultPortal via the PortalRegistry’s `deployDefaultPortal` method and note down its address -10. Verify this contract via `npx hardhat verify --network linea ADDRESS` -11. _Optional_: Deploy some valid modules via the `pnpm run deploy:CorrectModule` command and note down their addresses -12. _Optional_: Deploy an invalid module via the `pnpm run deploy:IncorrectModule` command and note down its address +10. Verify this contract via `npx hardhat verify --network NETWORK_NAME ADDRESS` ## Verax contracts upgrade @@ -206,8 +186,8 @@ Run `pnpm run check:upgradeability` to check if the local versions of the regist ### Check all registries implementations are upgradeable -Run `pnpm run check:upgradeable:goerli` or `pnpm run check:upgradeable` to check if the already deployed registries are -upgradable to the new local versions. +Run `pnpm run check:upgradeable NETWORK_NAME` (replacing `NETWORK_NAME` with the name of the targeted network) to check +if the already deployed registries are upgradable to the new local versions. :warning: Note: this is a dynamic check, run against the already deployed contracts. @@ -216,26 +196,19 @@ upgradable to the new local versions. :warning: Note: this script must only be run on a branch/commit corresponding to the version of the contracts deployed on the targeted network!. -Run `pnpm run check:upgradeable:goerli` or `pnpm run check:upgradeable` to re-generate the network files describing the -deployed contracts. This can be useful if the file was lost/modified since the last upgrade or the first deployment. +Run `pnpm run check:upgradeable NETWORK_NAME` (replacing `NETWORK_NAME` with the name of the targeted network) to +re-generate the network files describing the deployed contracts. This can be useful if the file was lost/modified since +the last upgrade or the first deployment. :warning: Note: the script will fail if a network file already contains one of the targeted proxy addresses. -### On the Linea Goerli testnet: - -1. Check that your `.env` file contains the address of all the proxies -2. Upgrade only the implementations that changed since the last upgrade via the `pnpm run upgrade:all:goerli` command -3. _Optional_: Upgrade all the implementations by forcing their re-deployment via the - `pnpm run upgrade:all:goerli:force` command - -:warning: Note: Forcing the redeployment of all the implementations is more expensive! - -### On the Linea mainnet: +## Start upgrading 1. Check that your `.env` file contains the address of all the proxies -2. Upgrade only the implementations that changed since the last upgrade via the `pnpm run upgrade:all` command -3. _Optional_: Upgrade all the implementations by forcing their re-deployment via the `pnpm run upgrade:all:force` +2. Upgrade only the implementations that changed since the last upgrade via the `pnpm run upgrade:all NETWORK_NAME` command +3. _Optional_: Upgrade all the implementations by forcing their re-deployment via the + `pnpm run upgrade:all:force NETWORK_NAME` command :warning: Note: Forcing the redeployment of all the implementations is more expensive! diff --git a/contracts/deployments/arbitrum-goerli/AttestationReader.json b/contracts/deployments/arbitrum-goerli/AttestationReader.json new file mode 100644 index 00000000..e9051616 --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/AttestationReader.json @@ -0,0 +1,215 @@ +{ + "address": "0x628D6C3C9067AedD33404d827c2e9a4A4368dff3", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "EASAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "easRegistry", + "outputs": [ + { + "internalType": "contract IEAS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schema", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "time", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationTime", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationTime", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "refUID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "bool", + "name": "revocable", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "attestation", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_easRegistryAddress", + "type": "address" + } + ], + "name": "updateEASRegistryAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum-goerli/AttestationRegistry.json b/contracts/deployments/arbitrum-goerli/AttestationRegistry.json new file mode 100644 index 00000000..980c9aba --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/AttestationRegistry.json @@ -0,0 +1,658 @@ +{ + "address": "0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRevoked", + "type": "error" + }, + { + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationDataFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotAttested", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotRevocable", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationSubjectFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAttestingPortal", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPortal", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + } + ], + "name": "AttestationReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "version", + "type": "uint16" + } + ], + "name": "VersionUpdated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "attest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkAttest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkReplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + } + ], + "name": "bulkRevoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + }, + { + "internalType": "uint64", + "name": "attestedDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationDate", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAttestationIdCounter", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "portalId", + "type": "address" + } + ], + "name": "isRevocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + } + ], + "name": "massImport", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "replace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum-goerli/ModuleRegistry.json b/contracts/deployments/arbitrum-goerli/ModuleRegistry.json new file mode 100644 index 00000000..a6a9e151 --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/ModuleRegistry.json @@ -0,0 +1,395 @@ +{ + "address": "0x0D9212976f37c96b060f23f9Da5f389cB7A958B7", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AttestationPayloadMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleValidationPayloadMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "ModuleRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "bytes[][]", + "name": "validationPayloads", + "type": "bytes[][]" + } + ], + "name": "bulkRunModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getModulesNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "isContractAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "moduleAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "modules", + "outputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "validationPayloads", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "runModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum-goerli/PortalRegistry.json b/contracts/deployments/arbitrum-goerli/PortalRegistry.json new file mode 100644 index 00000000..cad9e371 --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/PortalRegistry.json @@ -0,0 +1,377 @@ +{ + "address": "0xCF68336D3f34fb688C7708cb285B0F86DFC44dA8", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "PortalDescriptionMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "PortalOwnerNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "portalAddress", + "type": "address" + } + ], + "name": "PortalRegistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "deployDefaultPortal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "getPortalByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "internalType": "struct Portal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "isIssuer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "removeIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "setIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum-goerli/Router.json b/contracts/deployments/arbitrum-goerli/Router.json new file mode 100644 index 00000000..f327defa --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/Router.json @@ -0,0 +1,233 @@ +{ + "address": "0x5f9df9EDC1F773e622cbD1F8C201c1560c1DF1a1", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "AttestationRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "ModuleRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "PortalRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "SchemaRegistryUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "getAttestationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getModuleRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemaRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationRegistry", + "type": "address" + } + ], + "name": "updateAttestationRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_moduleRegistry", + "type": "address" + } + ], + "name": "updateModuleRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_portalRegistry", + "type": "address" + } + ], + "name": "updatePortalRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_schemaRegistry", + "type": "address" + } + ], + "name": "updateSchemaRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum-goerli/SchemaRegistry.json b/contracts/deployments/arbitrum-goerli/SchemaRegistry.json new file mode 100644 index 00000000..487fb8ff --- /dev/null +++ b/contracts/deployments/arbitrum-goerli/SchemaRegistry.json @@ -0,0 +1,332 @@ +{ + "address": "0xAAce069f1026bAF1f86f05FC5e0934D2C3957528", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaStringMissing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "SchemaCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "createSchema", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "name": "getIdFromSchemaString", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "getSchema", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "internalType": "struct Schema", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemasNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "schemaIds", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + } + ], + "name": "updateContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/AttestationReader.json b/contracts/deployments/arbitrum/AttestationReader.json new file mode 100644 index 00000000..c4176620 --- /dev/null +++ b/contracts/deployments/arbitrum/AttestationReader.json @@ -0,0 +1,215 @@ +{ + "address": "0x324C060A26444c3fB9B93e03d31e8cfF4b1715C1", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "EASAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "easRegistry", + "outputs": [ + { + "internalType": "contract IEAS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schema", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "time", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationTime", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationTime", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "refUID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "bool", + "name": "revocable", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "attestation", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_easRegistryAddress", + "type": "address" + } + ], + "name": "updateEASRegistryAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/AttestationRegistry.json b/contracts/deployments/arbitrum/AttestationRegistry.json new file mode 100644 index 00000000..ecf7e101 --- /dev/null +++ b/contracts/deployments/arbitrum/AttestationRegistry.json @@ -0,0 +1,658 @@ +{ + "address": "0x335E9719e8eFE2a19A92E07BC4836160fC31cd7C", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRevoked", + "type": "error" + }, + { + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationDataFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotAttested", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotRevocable", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationSubjectFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAttestingPortal", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPortal", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + } + ], + "name": "AttestationReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "version", + "type": "uint16" + } + ], + "name": "VersionUpdated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "attest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkAttest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkReplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + } + ], + "name": "bulkRevoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + }, + { + "internalType": "uint64", + "name": "attestedDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationDate", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAttestationIdCounter", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "portalId", + "type": "address" + } + ], + "name": "isRevocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + } + ], + "name": "massImport", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "replace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/ModuleRegistry.json b/contracts/deployments/arbitrum/ModuleRegistry.json new file mode 100644 index 00000000..4cae26e9 --- /dev/null +++ b/contracts/deployments/arbitrum/ModuleRegistry.json @@ -0,0 +1,395 @@ +{ + "address": "0x3acF4daAB6cbc01546Dd4a96c9665B398d48A4ba", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AttestationPayloadMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleValidationPayloadMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "ModuleRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "bytes[][]", + "name": "validationPayloads", + "type": "bytes[][]" + } + ], + "name": "bulkRunModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getModulesNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "isContractAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "moduleAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "modules", + "outputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "validationPayloads", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "runModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/PortalRegistry.json b/contracts/deployments/arbitrum/PortalRegistry.json new file mode 100644 index 00000000..8f4fa205 --- /dev/null +++ b/contracts/deployments/arbitrum/PortalRegistry.json @@ -0,0 +1,377 @@ +{ + "address": "0x4042D0A54f997EE3a1b0F51e4813654199BFd8bD", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "PortalDescriptionMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "PortalOwnerNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "portalAddress", + "type": "address" + } + ], + "name": "PortalRegistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "deployDefaultPortal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "getPortalByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "internalType": "struct Portal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "isIssuer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "removeIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "setIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/Router.json b/contracts/deployments/arbitrum/Router.json new file mode 100644 index 00000000..7ebae8b1 --- /dev/null +++ b/contracts/deployments/arbitrum/Router.json @@ -0,0 +1,233 @@ +{ + "address": "0xa77196867bB03D04786EF636cDdD82f37A1248a9", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "AttestationRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "ModuleRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "PortalRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "SchemaRegistryUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "getAttestationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getModuleRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemaRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationRegistry", + "type": "address" + } + ], + "name": "updateAttestationRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_moduleRegistry", + "type": "address" + } + ], + "name": "updateModuleRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_portalRegistry", + "type": "address" + } + ], + "name": "updatePortalRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_schemaRegistry", + "type": "address" + } + ], + "name": "updateSchemaRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/arbitrum/SchemaRegistry.json b/contracts/deployments/arbitrum/SchemaRegistry.json new file mode 100644 index 00000000..f4f5db4f --- /dev/null +++ b/contracts/deployments/arbitrum/SchemaRegistry.json @@ -0,0 +1,332 @@ +{ + "address": "0xE96072F46EA0e42e538762dDc0aFa4ED8AE6Ec27", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaStringMissing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "SchemaCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "createSchema", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "name": "getIdFromSchemaString", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "getSchema", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "internalType": "struct Schema", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemasNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "schemaIds", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + } + ], + "name": "updateContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/AttestationReader.json b/contracts/deployments/linea-goerli/AttestationReader.json new file mode 100644 index 00000000..3bb6a1f9 --- /dev/null +++ b/contracts/deployments/linea-goerli/AttestationReader.json @@ -0,0 +1,215 @@ +{ + "address": "0x65c8294C7aF0f0bDDe51eF92AF850613bb629fc6", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "EASAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "easRegistry", + "outputs": [ + { + "internalType": "contract IEAS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schema", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "time", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationTime", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationTime", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "refUID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "bool", + "name": "revocable", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "attestation", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_easRegistryAddress", + "type": "address" + } + ], + "name": "updateEASRegistryAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/AttestationRegistry.json b/contracts/deployments/linea-goerli/AttestationRegistry.json new file mode 100644 index 00000000..8b1510f0 --- /dev/null +++ b/contracts/deployments/linea-goerli/AttestationRegistry.json @@ -0,0 +1,658 @@ +{ + "address": "0xC765F28096F6121C2F2b82D35A4346280164428b", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRevoked", + "type": "error" + }, + { + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationDataFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotAttested", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotRevocable", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationSubjectFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAttestingPortal", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPortal", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + } + ], + "name": "AttestationReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "version", + "type": "uint16" + } + ], + "name": "VersionUpdated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "attest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkAttest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkReplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + } + ], + "name": "bulkRevoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + }, + { + "internalType": "uint64", + "name": "attestedDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationDate", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAttestationIdCounter", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "portalId", + "type": "address" + } + ], + "name": "isRevocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + } + ], + "name": "massImport", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "replace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/ModuleRegistry.json b/contracts/deployments/linea-goerli/ModuleRegistry.json new file mode 100644 index 00000000..f23cd902 --- /dev/null +++ b/contracts/deployments/linea-goerli/ModuleRegistry.json @@ -0,0 +1,395 @@ +{ + "address": "0x1a20b2CFA134686306436D2c9f778D7eC6c43A43", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AttestationPayloadMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleValidationPayloadMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "ModuleRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "bytes[][]", + "name": "validationPayloads", + "type": "bytes[][]" + } + ], + "name": "bulkRunModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getModulesNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "isContractAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "moduleAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "modules", + "outputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "validationPayloads", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "runModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/PortalRegistry.json b/contracts/deployments/linea-goerli/PortalRegistry.json new file mode 100644 index 00000000..7a9e56da --- /dev/null +++ b/contracts/deployments/linea-goerli/PortalRegistry.json @@ -0,0 +1,377 @@ +{ + "address": "0x506f88a5Ca8D5F001f2909b029738A40042e42a6", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "PortalDescriptionMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "PortalOwnerNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "portalAddress", + "type": "address" + } + ], + "name": "PortalRegistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "deployDefaultPortal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "getPortalByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "internalType": "struct Portal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "isIssuer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "removeIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "setIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/Router.json b/contracts/deployments/linea-goerli/Router.json new file mode 100644 index 00000000..b82b3328 --- /dev/null +++ b/contracts/deployments/linea-goerli/Router.json @@ -0,0 +1,233 @@ +{ + "address": "0x736c78b2f2cBf4F921E8551b2acB6A5Edc9177D5", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "AttestationRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "ModuleRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "PortalRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "SchemaRegistryUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "getAttestationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getModuleRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemaRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationRegistry", + "type": "address" + } + ], + "name": "updateAttestationRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_moduleRegistry", + "type": "address" + } + ], + "name": "updateModuleRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_portalRegistry", + "type": "address" + } + ], + "name": "updatePortalRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_schemaRegistry", + "type": "address" + } + ], + "name": "updateSchemaRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea-goerli/SchemaRegistry.json b/contracts/deployments/linea-goerli/SchemaRegistry.json new file mode 100644 index 00000000..09982b34 --- /dev/null +++ b/contracts/deployments/linea-goerli/SchemaRegistry.json @@ -0,0 +1,332 @@ +{ + "address": "0xB2c4Da1f8F08A0CA25862509E5431289BE2b598B", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaStringMissing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "SchemaCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "createSchema", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "name": "getIdFromSchemaString", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "getSchema", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "internalType": "struct Schema", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemasNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "schemaIds", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + } + ], + "name": "updateContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/AttestationReader.json b/contracts/deployments/linea/AttestationReader.json new file mode 100644 index 00000000..cad502da --- /dev/null +++ b/contracts/deployments/linea/AttestationReader.json @@ -0,0 +1,215 @@ +{ + "address": "0x40871e247CF6b8fd8794c9c56bB5c2b8a4FA3B6c", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "EASAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "easRegistry", + "outputs": [ + { + "internalType": "contract IEAS", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "uid", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schema", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "time", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationTime", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationTime", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "refUID", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "bool", + "name": "revocable", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "attestation", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_easRegistryAddress", + "type": "address" + } + ], + "name": "updateEASRegistryAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/AttestationRegistry copy.json b/contracts/deployments/linea/AttestationRegistry copy.json new file mode 100644 index 00000000..980c9aba --- /dev/null +++ b/contracts/deployments/linea/AttestationRegistry copy.json @@ -0,0 +1,658 @@ +{ + "address": "0xFEeE5646a93E8fF8035AB12A375eeE4EE4E834b3", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRevoked", + "type": "error" + }, + { + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationDataFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotAttested", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotRevocable", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationSubjectFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAttestingPortal", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPortal", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + } + ], + "name": "AttestationReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "version", + "type": "uint16" + } + ], + "name": "VersionUpdated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "attest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkAttest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkReplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + } + ], + "name": "bulkRevoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + }, + { + "internalType": "uint64", + "name": "attestedDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationDate", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAttestationIdCounter", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "portalId", + "type": "address" + } + ], + "name": "isRevocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + } + ], + "name": "massImport", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "replace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/AttestationRegistry.json b/contracts/deployments/linea/AttestationRegistry.json new file mode 100644 index 00000000..b3b353d6 --- /dev/null +++ b/contracts/deployments/linea/AttestationRegistry.json @@ -0,0 +1,658 @@ +{ + "address": "0x3de3893aa4Cdea029e84e75223a152FD08315138", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AlreadyRevoked", + "type": "error" + }, + { + "inputs": [], + "name": "ArrayLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationDataFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotAttested", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationNotRevocable", + "type": "error" + }, + { + "inputs": [], + "name": "AttestationSubjectFieldEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAttestingPortal", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPortal", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + } + ], + "name": "AttestationReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "AttestationRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "version", + "type": "uint16" + } + ], + "name": "VersionUpdated", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "attest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkAttest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "bulkReplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32[]", + "name": "attestationIds", + "type": "bytes32[]" + } + ], + "name": "bulkRevoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "getAttestation", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "replacedBy", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + }, + { + "internalType": "uint64", + "name": "attestedDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "revocationDate", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct Attestation", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAttestationIdCounter", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incrementVersionNumber", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "portalId", + "type": "address" + } + ], + "name": "isRevocable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "portal", + "type": "address" + } + ], + "name": "massImport", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "address", + "name": "attester", + "type": "address" + } + ], + "name": "replace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "attestationId", + "type": "bytes32" + } + ], + "name": "revoke", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/ModuleRegistry.json b/contracts/deployments/linea/ModuleRegistry.json new file mode 100644 index 00000000..9f77d28f --- /dev/null +++ b/contracts/deployments/linea/ModuleRegistry.json @@ -0,0 +1,395 @@ +{ + "address": "0xf851513A732996F22542226341748f3C9978438f", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AttestationPayloadMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ModuleValidationPayloadMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "ModuleRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload[]", + "name": "attestationsPayloads", + "type": "tuple[]" + }, + { + "internalType": "bytes[][]", + "name": "validationPayloads", + "type": "bytes[][]" + } + ], + "name": "bulkRunModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getModulesNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "isContractAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "moduleAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "modules", + "outputs": [ + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "address", + "name": "moduleAddress", + "type": "address" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modulesAddresses", + "type": "address[]" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "expirationDate", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "subject", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "attestationData", + "type": "bytes" + } + ], + "internalType": "struct AttestationPayload", + "name": "attestationPayload", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "validationPayloads", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "runModules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/PortalRegistry.json b/contracts/deployments/linea/PortalRegistry.json new file mode 100644 index 00000000..cc8e12ce --- /dev/null +++ b/contracts/deployments/linea/PortalRegistry.json @@ -0,0 +1,377 @@ +{ + "address": "0xd5d61e4ECDf6d46A63BfdC262af92544DFc19083", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAddressInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "PortalDescriptionMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "PortalNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "PortalOwnerNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "portalAddress", + "type": "address" + } + ], + "name": "PortalRegistered", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "deployDefaultPortal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "getPortalByAddress", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "address[]", + "name": "modules", + "type": "address[]" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "internalType": "struct Portal", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "isIssuer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "id", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "bool", + "name": "isRevocable", + "type": "bool" + }, + { + "internalType": "string", + "name": "ownerName", + "type": "string" + } + ], + "name": "register", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "removeIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "issuer", + "type": "address" + } + ], + "name": "setIssuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/Router.json b/contracts/deployments/linea/Router.json new file mode 100644 index 00000000..e2f08f82 --- /dev/null +++ b/contracts/deployments/linea/Router.json @@ -0,0 +1,233 @@ +{ + "address": "0x4d3a380A03f3a18A5dC44b01119839D8674a552E", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "AttestationRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "ModuleRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "PortalRegistryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "registryAddress", + "type": "address" + } + ], + "name": "SchemaRegistryUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "getAttestationRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getModuleRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPortalRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemaRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_attestationRegistry", + "type": "address" + } + ], + "name": "updateAttestationRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_moduleRegistry", + "type": "address" + } + ], + "name": "updateModuleRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_portalRegistry", + "type": "address" + } + ], + "name": "updatePortalRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_schemaRegistry", + "type": "address" + } + ], + "name": "updateSchemaRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/deployments/linea/SchemaRegistry.json b/contracts/deployments/linea/SchemaRegistry.json new file mode 100644 index 00000000..93178615 --- /dev/null +++ b/contracts/deployments/linea/SchemaRegistry.json @@ -0,0 +1,332 @@ +{ + "address": "0x0f95dCec4c7a93F2637eb13b655F2223ea036B59", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "OnlyIssuer", + "type": "error" + }, + { + "inputs": [], + "name": "RouterInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaAlreadyExists", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNameMissing", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "SchemaStringMissing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "SchemaCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schemaString", + "type": "string" + } + ], + "name": "createSchema", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "name": "getIdFromSchemaString", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "getSchema", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "description", + "type": "string" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + }, + { + "internalType": "string", + "name": "schema", + "type": "string" + } + ], + "internalType": "struct Schema", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchemasNumber", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + } + ], + "name": "isRegistered", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "router", + "outputs": [ + { + "internalType": "contract IRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "schemaIds", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "schemaId", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "context", + "type": "string" + } + ], + "name": "updateContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_router", + "type": "address" + } + ], + "name": "updateRouter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 23c1bedf..8afb44c2 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -20,6 +20,14 @@ const config: HardhatUserConfig = { defaultNetwork: "linea-goerli", networks: { hardhat: {}, + "arbitrum-goerli": { + url: "https://goerli-rollup.arbitrum.io/rpc", + accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + }, + arbitrum: { + url: "https://arb1.arbitrum.io/rpc", + accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], + }, "linea-goerli": { url: `https://linea-goerli.infura.io/v3/${process.env.INFURA_KEY ?? ""}`, accounts: process.env.PRIVATE_KEY !== undefined ? [process.env.PRIVATE_KEY] : [], @@ -42,12 +50,30 @@ const config: HardhatUserConfig = { }, etherscan: { apiKey: { + "arbitrum-goerli": process.env.ETHERSCAN_API_KEY ?? "", + arbitrum: process.env.ETHERSCAN_API_KEY ?? "", "linea-goerli": process.env.ETHERSCAN_API_KEY ?? "", linea: process.env.ETHERSCAN_API_KEY ?? "", sepolia: process.env.ETHERSCAN_API_KEY ?? "", "scroll-sepolia": process.env.SCROLL_API_KEY ?? "", }, customChains: [ + { + network: "arbitrum-goerli", + chainId: 421613, + urls: { + apiURL: "https://api-goerli.arbiscan.io/api", + browserURL: "https://goerli.arbiscan.io", + }, + }, + { + network: "arbitrum", + chainId: 42161, + urls: { + apiURL: "https://api.arbiscan.io/api", + browserURL: "https://arbiscan.io", + }, + }, { network: "linea-goerli", chainId: 59140, diff --git a/contracts/package.json b/contracts/package.json index 89a2b76f..a42cd6c8 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -21,38 +21,17 @@ "build": "forge build", "check:upgradeability": "npx hardhat run script/upgrade/checkUpgradeability.ts", "check:upgradeability:ci": "cp .env.example .env && pnpm run check:upgradeability", - "check:upgradeable": "npx hardhat run --network linea script/upgrade/checkUpgradeable.ts", - "check:upgradeable:goerli": "npx hardhat run --network linea-goerli script/upgrade/checkUpgradeable.ts", - "check:upgradeable:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/upgrade/checkUpgradeable.ts", + "check:upgradeable": "npx hardhat run script/upgrade/checkUpgradeable.ts --network", "clean": "rm -rf lcov.info coverage artifacts cache_hardhat cache out typechain-types", "decode": "npx hardhat run script/decode.ts", - "deploy:CorrectModule": "npx hardhat run --network linea script/deploy/deployCorrectModule.ts", - "deploy:CorrectModule:goerli": "npx hardhat run --network linea-goerli script/deploy/deployCorrectModule.ts", - "deploy:CorrectModule:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/deploy/deployCorrectModule.ts", - "deploy:IncorrectModule": "npx hardhat run --network linea script/deploy/deployIncorrectModule.ts", - "deploy:IncorrectModule:goerli": "npx hardhat run --network linea-goerli script/deploy/deployIncorrectModule.ts", - "deploy:IncorrectModule:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/deploy/deployIncorrectModule.ts", - "deploy:MsgSenderModule": "npx hardhat run --network linea script/deploy/deployMsgSenderModule.ts", - "deploy:MsgSenderModule:goerli": "npx hardhat run --network linea-goerli script/deploy/deployMsgSenderModule.ts", - "deploy:MsgSenderModule:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/deploy/deployMsgSenderModule.ts", - "deploy:all": "npx hardhat run --network linea script/deploy/deployEverything.ts", - "deploy:all:goerli": "npx hardhat run --network linea-goerli script/deploy/deployEverything.ts", - "deploy:all:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/deploy/deployEverything.ts", - "deploy:post": "npx hardhat run --network linea script/deploy/postDeployment.ts", - "deploy:post:goerli": "npx hardhat run --network linea-goerli script/deploy/postDeployment.ts", - "deploy:post:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/deploy/postDeployment.ts", + "deploy:all": "npx hardhat run script/deploy/deployEverything.ts --network", + "deploy:post": "npx hardhat run script/deploy/postDeployment.ts --network", "encode": "npx hardhat run script/encode.ts", "lint": "pnpm solhint \"{script,src,test}/**/*.sol\"", - "reimport": "npx hardhat run --network linea script/recreateNetworkFile.ts", - "reimport:goerli": "npx hardhat run --network linea-goerli script/recreateNetworkFile.ts", - "reimport:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/recreateNetworkFile.ts", + "reimport": "npx hardhat run script/recreateNetworkFile.ts --network", "test": "forge test", - "upgrade:all": "npx hardhat run --network linea script/upgrade/upgradeEverything.ts", - "upgrade:all:force": "npx hardhat run --network linea script/upgrade/forceUpgradeEverything.ts", - "upgrade:all:goerli": "npx hardhat run --network linea-goerli script/upgrade/upgradeEverything.ts", - "upgrade:all:goerli:force": "npx hardhat run --network linea-goerli script/upgrade/forceUpgradeEverything.ts", - "upgrade:all:scroll-sepolia": "npx hardhat run --network scroll-sepolia script/upgrade/upgradeEverything.ts", - "upgrade:all:scroll-sepolia:force": "npx hardhat run --network scroll-sepolia script/upgrade/forceUpgradeEverything.ts" + "upgrade:all": "npx hardhat run script/upgrade/upgradeEverything.ts --network", + "upgrade:all:force": "npx hardhat run script/upgrade/forceUpgradeEverything.ts --network" }, "devDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.4",