diff --git a/README.md b/README.md index 55455068..e1593c0d 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,8 @@ The main contracts (i.e. the "registries") and the helpers contracts are deploye - Arbitrum Nova - Base Sepolia - Base Mainnet +- BSC Testnet +- BSC Mainnet Here are the addresses on those networks: @@ -214,6 +216,36 @@ Here are the addresses on those networks: - SchemaRegistry = [0x8081dCd745f160c148Eb5be510F78628A0951c31](https://basescan.org/address/0x8081dCd745f160c148Eb5be510F78628A0951c31) +
+ BSC Testnet + +- Router = + [0x90b8542d7288a83EC887229A7C727989C3b56209](https://testnet.bscscan.com/address/0x90b8542d7288a83EC887229A7C727989C3b56209) +- AttestationRegistry = + [0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe](https://testnet.bscscan.com/address/0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe) +- ModuleRegistry = + [0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a](https://testnet.bscscan.com/address/0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a) +- PortalRegistry = + [0xA4a7517F62216BD42e42a67dF09C25adc72A5897](https://testnet.bscscan.com/address/0xA4a7517F62216BD42e42a67dF09C25adc72A5897) +- SchemaRegistry = + [0x51929da151eC2C5a5881C750E5b9941eACC46c1d](https://testnet.bscscan.com/address/0x51929da151eC2C5a5881C750E5b9941eACC46c1d) + +
+ +
+ BSC + +- Router = + [0x7a5C1fAC7fF9908a8b2ED479e060619213116A47](https://bscscan.com/address/0x7a5C1fAC7fF9908a8b2ED479e060619213116A47) +- AttestationRegistry = + [0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261](https://bscscan.com/address/0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261) +- ModuleRegistry = + [0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB](https://bscscan.com/address/0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB) +- PortalRegistry = + [0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0](https://bscscan.com/address/0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0) +- SchemaRegistry = + [0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd](https://bscscan.com/address/0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd) +
## Subgraphs URLs @@ -227,6 +259,8 @@ Here are the addresses on those networks: - [Arbitrum Nova](https://api.goldsky.com/api/public/project_clwsa54350ydv01wjbq5r17v1/subgraphs/verax-v1-arbitrum-nova/0.0.4/gn) - [Base Sepolia](https://api.studio.thegraph.com/query/67521/verax-v1-base-sepolia/v0.0.2) - [Base Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-base/v0.0.2) +- [BSC Testnet](https://api.studio.thegraph.com/query/67521/verax-v1-bsc-testnet/v0.0.1) +- [BSC Mainnet](https://api.studio.thegraph.com/query/67521/verax-v1-bsc/v0.0.1) ## Network Prefixes @@ -241,6 +275,8 @@ ID. This prefix is defined in the `contracts/script/utils.ts` file. - Arbitrum Nova - `0x0002` - Base Sepolia - `0x0005` - Base Mainnet - `0x0005` +- BSC Testnet - `0x0006` +- BSC Mainnet - `0x0006` ## License diff --git a/contracts/.openzeppelin/bsc-testnet.json b/contracts/.openzeppelin/bsc-testnet.json new file mode 100644 index 00000000..fbd5f2dc --- /dev/null +++ b/contracts/.openzeppelin/bsc-testnet.json @@ -0,0 +1,995 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x582Ca0f4482166A01b19FE1D0abeF0b9b236228f", + "txHash": "0xf68ec843ab2e4d66829d472ffb8a528d82019ea16767126eb842444ee6b668fc" + }, + "proxies": [ + { + "address": "0xB3311B3CfF2752cd26B9964D3d7CB0FeB0b0d215", + "txHash": "0x9bd8a157b93520cdf47d802c6450c409a43339526958abd8d9584bb1f490ad0b", + "kind": "transparent" + }, + { + "address": "0xFd3b9e9C60e9E7694751CfA8B10dE5850bC78C2F", + "txHash": "0x666c2a3c7cab139579fa4a74ef22673eeec98341eac75a9842800ac56af8bc6a", + "kind": "transparent" + }, + { + "address": "0xAfA952790492DDeB474012cEA12ba34B788ab39F", + "txHash": "0x04d166d850dcb874852f23e633109ae52276bbc7092449ccef15996a99c6cbd6", + "kind": "transparent" + }, + { + "address": "0xDaf3C3632327343f7df0Baad2dc9144fa4e1001F", + "txHash": "0x9483b71fbd9ad4c875d1a7fce45537c2e7272251d46303513bea80f43db39a26", + "kind": "transparent" + }, + { + "address": "0x3C443B9f0c8ed3A3270De7A4815487BA3223C2Fa", + "txHash": "0xa61610ef300dba8074ba84ecaeb13f82bc3c53a649d4a8a26e7cd0f623f37e1f", + "kind": "transparent" + }, + { + "address": "0x4594A8DA79F6bb2C75E548F185B5BDbE5fEdb759", + "txHash": "0x1879c3ecc9ba05525db00b0ee4e0719efb5273bba4f1f9720b65e354f1d65df2", + "kind": "transparent" + }, + { + "address": "0xF35fe79104e157703dbCC3Baa72a81A99591744D", + "txHash": "0xa1a897f79c822f53c8cb349430639484c886419fe085ba704651572257c4d750", + "kind": "transparent" + }, + { + "address": "0x4371Cc5C503e1285875016C9B65c7278f1EDFc56", + "txHash": "0xee61fba5e88c7ac420f068561cb0466023c6a4f6be9a900f6a10ef303f44a490", + "kind": "transparent" + }, + { + "address": "0x90b8542d7288a83EC887229A7C727989C3b56209", + "txHash": "0x3a4db96c2e991f9c8d00404238f93147492c7f5ac91f007ed01c53c93492e7ff", + "kind": "transparent" + }, + { + "address": "0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe", + "txHash": "0x087165f7d7774ff691163cef0564abc2026c5eeb7685fae2cca519414e5155f7", + "kind": "transparent" + }, + { + "address": "0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a", + "txHash": "0xc37a33589c23c5d1838c0955188efbb65be668190013b72cbfb63c4dd1c3e30c", + "kind": "transparent" + }, + { + "address": "0xA4a7517F62216BD42e42a67dF09C25adc72A5897", + "txHash": "0x63cd5af366a6fbd61564b0b408ec51b76ef02896ddb8b265ebe1158c14a2d323", + "kind": "transparent" + }, + { + "address": "0x51929da151eC2C5a5881C750E5b9941eACC46c1d", + "txHash": "0x8dfbd565c5a25391ce1708e84caec4cd17ef1961d43860e14914c8b662eabd80", + "kind": "transparent" + }, + { + "address": "0xee5e23492bf49C1F4CF0676b3bF49d78A6dD61c5", + "txHash": "0xff272155a5350b9d76aca9e72b020bead769115a2cd4cc7ed03f80b2278ae3b6", + "kind": "transparent" + } + ], + "impls": { + "4353fbe787c13443291bba3d18e906853909285ba948d10f4d95994940b68c97": { + "address": "0x79E25CD672032F3a7A315312d54F28ce3aBE3847", + "txHash": "0x5d6de329f55dd3ea66e79bd3b38eb66a953f691c3eb2773bb9b2ec6fe542362f", + "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": {} + } + }, + "afc9287c19cb1b830999d2016348e104b2143101ed97ea26cf1c1b48849ca551": { + "address": "0xe3c36DEB0Ce1444fc8c847d6865217A6B2133765", + "txHash": "0xa77409f906309a0e127e2a0bdbbfd3bca44ab21f7254ab98da37f287f8ac7c71", + "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)7813", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:17" + }, + { + "label": "version", + "offset": 20, + "slot": "101", + "type": "t_uint16", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:19" + }, + { + "label": "attestationIdCounter", + "offset": 22, + "slot": "101", + "type": "t_uint32", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:20" + }, + { + "label": "attestations", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Attestation)9314_storage)", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:22" + }, + { + "label": "chainPrefix", + "offset": 0, + "slot": "103", + "type": "t_uint256", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:24" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Attestation)9314_storage)": { + "label": "mapping(bytes32 => struct Attestation)", + "numberOfBytes": "32" + }, + "t_struct(Attestation)9314_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": {} + } + }, + "855a9f1d8e96c2bd24b6a929c90e3681a27dfdf6e80bf08bdaf0de5f33e7accf": { + "address": "0x73B98ad14694f879D89e8D73D90583AB0D0f804d", + "txHash": "0x93c7c09f23e15f6cd5d93dba7a28a1bdfee463a7dec36b63660844412841ad9b", + "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)7813", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:19" + }, + { + "label": "modules", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Module)9346_storage)", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:21" + }, + { + "label": "moduleAddresses", + "offset": 0, + "slot": "103", + "type": "t_array(t_address)dyn_storage", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:23" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_struct(Module)9346_storage)": { + "label": "mapping(address => struct Module)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Module)9346_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": {} + } + }, + "4354fba979d8af67ae201159e1b7f7c6048ac523a759db0e2d448b58a54cde2a": { + "address": "0x6BEb40d8fF2D9c9F4c434825F2c84B40Cbc4a6A4", + "txHash": "0xd32e09820015f246c77b6350b87418bdec811bacdfc04c3873d4218c03e5222d", + "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)7813", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:21" + }, + { + "label": "portals", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Portal)9339_storage)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:23" + }, + { + "label": "issuers", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_address,t_bool)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:25" + }, + { + "label": "portalAddresses", + "offset": 0, + "slot": "104", + "type": "t_array(t_address)dyn_storage", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:27" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Portal)9339_storage)": { + "label": "mapping(address => struct Portal)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Portal)9339_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": {} + } + }, + "68d0630cb0ae02e0e7d37f7e07193d62999ecb9070d3ca38b245f3954a34b089": { + "address": "0xE235826514945186227918325D3E5b5f873861A6", + "txHash": "0xdedf80e9bba16c34fea212c2ac682d27a6b7ff43381166bc7abd5f689c0c52b7", + "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)7813", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:16" + }, + { + "label": "schemas", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Schema)9323_storage)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:18" + }, + { + "label": "schemaIds", + "offset": 0, + "slot": "103", + "type": "t_array(t_bytes32)dyn_storage", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:20" + }, + { + "label": "schemasIssuers", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_bytes32,t_address)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:22" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_address)": { + "label": "mapping(bytes32 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(Schema)9323_storage)": { + "label": "mapping(bytes32 => struct Schema)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Schema)9323_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": "0x374B686137eC0DB442a8d833451f8C12cD4B5De4", + "txHash": "0xb481336a8453b60a636385c103781e4c453b17f45dba1183a32e77af2ea7a2a3", + "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)7813", + "contract": "AttestationReader", + "src": "src/AttestationReader.sol:17" + }, + { + "label": "easRegistry", + "offset": 0, + "slot": "102", + "type": "t_contract(IEAS)7764", + "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)7764": { + "label": "contract IEAS", + "numberOfBytes": "20" + }, + "t_contract(IRouter)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/contracts/.openzeppelin/bsc.json b/contracts/.openzeppelin/bsc.json new file mode 100644 index 00000000..9ec3a297 --- /dev/null +++ b/contracts/.openzeppelin/bsc.json @@ -0,0 +1,849 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x38Cb61dF213DA0Cf4C77c165De198b24Aa57da74", + "txHash": "0x7ab8f9b066de144d529249bd30d29c3ee724c190db32d0a2c7d5d92a54b804b4" + }, + "proxies": [ + { + "address": "0x7a5C1fAC7fF9908a8b2ED479e060619213116A47", + "txHash": "0x360087a37fa84d4eabe54a93766881789bed4536d7a44e2d05fc032e51b3d503", + "kind": "transparent" + }, + { + "address": "0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261", + "txHash": "0x289e0b206fe780331e16052fa2be0e048cf0880e0846895f378ff31f27d0ef06", + "kind": "transparent" + }, + { + "address": "0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB", + "txHash": "0xc8c30f1b5cd691434ce60bff426dbc1870c36f7d73cf2a7fd892a062e60e44f0", + "kind": "transparent" + }, + { + "address": "0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0", + "txHash": "0x444e6e717789f8d32737f030eaf216ff65c7ea24531e211745996d5400d6517d", + "kind": "transparent" + }, + { + "address": "0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd", + "txHash": "0x7058bc1ed379face51393533e68f846c960a1f967cee2fa13497c87f575c4db0", + "kind": "transparent" + } + ], + "impls": { + "4353fbe787c13443291bba3d18e906853909285ba948d10f4d95994940b68c97": { + "address": "0xF4C9BDF63e79fc5415226F9652853c7a9A336e2d", + "txHash": "0x48e48005e22a3e32afe2f65648e913455e28885e12ef70c950cf76025fba97bd", + "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": {} + } + }, + "afc9287c19cb1b830999d2016348e104b2143101ed97ea26cf1c1b48849ca551": { + "address": "0x93A7103314cf4fB0A7B05c4cF176E7C5d3Bdf562", + "txHash": "0x4747b74a7265a57fdb63654c8927a09f65365407e68668c69ac44975c4dd76b0", + "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)7813", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:17" + }, + { + "label": "version", + "offset": 20, + "slot": "101", + "type": "t_uint16", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:19" + }, + { + "label": "attestationIdCounter", + "offset": 22, + "slot": "101", + "type": "t_uint32", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:20" + }, + { + "label": "attestations", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Attestation)9314_storage)", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:22" + }, + { + "label": "chainPrefix", + "offset": 0, + "slot": "103", + "type": "t_uint256", + "contract": "AttestationRegistry", + "src": "src/AttestationRegistry.sol:24" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_struct(Attestation)9314_storage)": { + "label": "mapping(bytes32 => struct Attestation)", + "numberOfBytes": "32" + }, + "t_struct(Attestation)9314_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": {} + } + }, + "855a9f1d8e96c2bd24b6a929c90e3681a27dfdf6e80bf08bdaf0de5f33e7accf": { + "address": "0x8d7faF0337770fa30bEaE83D5b7ed3D081963987", + "txHash": "0x347dd36f073585d76e896980be5871f4f4e830b2a6eb8d5b20de1ddcb0773fb1", + "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)7813", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:19" + }, + { + "label": "modules", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Module)9346_storage)", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:21" + }, + { + "label": "moduleAddresses", + "offset": 0, + "slot": "103", + "type": "t_array(t_address)dyn_storage", + "contract": "ModuleRegistry", + "src": "src/ModuleRegistry.sol:23" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_struct(Module)9346_storage)": { + "label": "mapping(address => struct Module)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Module)9346_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": {} + } + }, + "4354fba979d8af67ae201159e1b7f7c6048ac523a759db0e2d448b58a54cde2a": { + "address": "0x2878bdc6A7615600e9b6Aa04f7802267891FFAE5", + "txHash": "0xa80b88cb8c843f23d1a55952fcac789d9626af0fa100d59906b2a498a7da0054", + "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)7813", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:21" + }, + { + "label": "portals", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_struct(Portal)9339_storage)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:23" + }, + { + "label": "issuers", + "offset": 0, + "slot": "103", + "type": "t_mapping(t_address,t_bool)", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:25" + }, + { + "label": "portalAddresses", + "offset": 0, + "slot": "104", + "type": "t_array(t_address)dyn_storage", + "contract": "PortalRegistry", + "src": "src/PortalRegistry.sol:27" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_struct(Portal)9339_storage)": { + "label": "mapping(address => struct Portal)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Portal)9339_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": {} + } + }, + "68d0630cb0ae02e0e7d37f7e07193d62999ecb9070d3ca38b245f3954a34b089": { + "address": "0xD2B60076a83C6f6fad2506aF51b297a8725e8E0b", + "txHash": "0xdf50fee2c52b4f714aeca415fdaa64a458b595171ec8bda993b1de765f145884", + "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)7813", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:16" + }, + { + "label": "schemas", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_bytes32,t_struct(Schema)9323_storage)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:18" + }, + { + "label": "schemaIds", + "offset": 0, + "slot": "103", + "type": "t_array(t_bytes32)dyn_storage", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:20" + }, + { + "label": "schemasIssuers", + "offset": 0, + "slot": "104", + "type": "t_mapping(t_bytes32,t_address)", + "contract": "SchemaRegistry", + "src": "src/SchemaRegistry.sol:22" + } + ], + "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)7813": { + "label": "contract IRouter", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_address)": { + "label": "mapping(bytes32 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(Schema)9323_storage)": { + "label": "mapping(bytes32 => struct Schema)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Schema)9323_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": {} + } + } + } +} diff --git a/contracts/env/.env.bsc b/contracts/env/.env.bsc new file mode 100644 index 00000000..dcb61b6d --- /dev/null +++ b/contracts/env/.env.bsc @@ -0,0 +1,16 @@ +# Config +INFURA_KEY= + +PRIVATE_KEY_LINEA_MAINNET=0000000000000000000000000000000000000000000000000000000000000001 + +LINEASCAN_API_KEY= + +# Contracts +ROUTER_ADDRESS=0x7a5C1fAC7fF9908a8b2ED479e060619213116A47 +PORTAL_REGISTRY_ADDRESS=0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0 +SCHEMA_REGISTRY_ADDRESS=0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd +MODULE_REGISTRY_ADDRESS=0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB +ATTESTATION_REGISTRY_ADDRESS=0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261 +ATTESTATION_READER_ADDRESS= +EAS_REGISTRY_ADDRESS= + diff --git a/contracts/env/.env.bsc-testnet b/contracts/env/.env.bsc-testnet new file mode 100644 index 00000000..48d40e1e --- /dev/null +++ b/contracts/env/.env.bsc-testnet @@ -0,0 +1,16 @@ +# Config +INFURA_KEY= + +PRIVATE_KEY_LINEA_TESTNET=0000000000000000000000000000000000000000000000000000000000000001 + +LINEASCAN_API_KEY= + +# Contracts +ROUTER_ADDRESS=0x90b8542d7288a83EC887229A7C727989C3b56209 +PORTAL_REGISTRY_ADDRESS=0xA4a7517F62216BD42e42a67dF09C25adc72A5897 +SCHEMA_REGISTRY_ADDRESS=0x51929da151eC2C5a5881C750E5b9941eACC46c1d +MODULE_REGISTRY_ADDRESS=0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a +ATTESTATION_REGISTRY_ADDRESS=0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe +ATTESTATION_READER_ADDRESS= +EAS_REGISTRY_ADDRESS= + diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index eb751d49..40b4dc18 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -42,6 +42,14 @@ const config: HardhatUserConfig = { url: `https://mainnet.base.org`, accounts: process.env.PRIVATE_KEY_LINEA_MAINNET !== undefined ? [process.env.PRIVATE_KEY_LINEA_MAINNET] : [], }, + "bsc-testnet": { + url: `https://data-seed-prebsc-1-s1.binance.org:8545`, + accounts: process.env.PRIVATE_KEY_LINEA_TESTNET !== undefined ? [process.env.PRIVATE_KEY_LINEA_TESTNET] : [], + }, + bsc: { + url: `https://rpc.ankr.com/bsc`, + accounts: process.env.PRIVATE_KEY_LINEA_MAINNET !== undefined ? [process.env.PRIVATE_KEY_LINEA_MAINNET] : [], + }, "linea-goerli": { url: `https://linea-goerli.infura.io/v3/${process.env.INFURA_KEY ?? ""}`, accounts: process.env.PRIVATE_KEY_LINEA_TESTNET !== undefined ? [process.env.PRIVATE_KEY_LINEA_TESTNET] : [], @@ -70,6 +78,8 @@ const config: HardhatUserConfig = { "arbitrum-nova": process.env.ARBISCAN_NOVA_API_KEY ?? "", "base-sepolia": process.env.BASESCAN_API_KEY ?? "", base: process.env.BASESCAN_API_KEY ?? "", + "bsc-testnet": process.env.BSCSCAN_API_KEY ?? "", + bsc: process.env.BSCSCAN_API_KEY ?? "", "linea-goerli": process.env.LINEASCAN_API_KEY ?? "", "linea-sepolia": process.env.LINEASCAN_API_KEY ?? "", linea: process.env.LINEASCAN_API_KEY ?? "", @@ -124,6 +134,22 @@ const config: HardhatUserConfig = { browserURL: "https://basescan.org", }, }, + { + network: "bsc-testnet", + chainId: 97, + urls: { + apiURL: "https://api-testnet.bscscan.com/api", + browserURL: "https://testnet.bscscan.com", + }, + }, + { + network: "bsc", + chainId: 56, + urls: { + apiURL: "https://api.bscscan.com/api", + browserURL: "https://bscscan.com", + }, + }, { network: "linea-goerli", chainId: 59140, diff --git a/contracts/script/utils.ts b/contracts/script/utils.ts index fb7180f4..b2669bf6 100644 --- a/contracts/script/utils.ts +++ b/contracts/script/utils.ts @@ -18,6 +18,10 @@ export const getChainPrefix = (chainId: bigint): `0x${string}` => { return "0x0005000000000000000000000000000000000000000000000000000000000000"; case 8453n: // Base mainnet return "0x0005000000000000000000000000000000000000000000000000000000000000"; + case 97n: // BSC testnet + return "0x0006000000000000000000000000000000000000000000000000000000000000"; + case 56n: // BSC mainnet + return "0x0006000000000000000000000000000000000000000000000000000000000000"; default: throw new Error("Unknown network"); } diff --git a/explorer/package.json b/explorer/package.json index 23fa4ad8..749965cb 100644 --- a/explorer/package.json +++ b/explorer/package.json @@ -26,7 +26,7 @@ "dependencies": { "@radix-ui/react-dropdown-menu": "^2.0.6", "@tanstack/react-table": "^8.10.7", - "@verax-attestation-registry/verax-sdk": "1.8.0", + "@verax-attestation-registry/verax-sdk": "1.9.0", "@wagmi/core": "^1.4.7", "abitype": "^0.10.3", "class-variance-authority": "^0.7.0", diff --git a/explorer/src/assets/issuers/Hapi_logo_square.svg b/explorer/src/assets/issuers/Hapi_logo_square.svg new file mode 100644 index 00000000..18576cb3 --- /dev/null +++ b/explorer/src/assets/issuers/Hapi_logo_square.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/explorer/src/assets/networks/arbitrum-goerli.svg b/explorer/src/assets/networks/arbitrum-goerli.svg deleted file mode 100644 index ea09a8cc..00000000 --- a/explorer/src/assets/networks/arbitrum-goerli.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - diff --git a/explorer/src/assets/networks/base-mainnet.svg b/explorer/src/assets/networks/base-mainnet.svg new file mode 100644 index 00000000..c0733b2b --- /dev/null +++ b/explorer/src/assets/networks/base-mainnet.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/explorer/src/assets/networks/base.svg b/explorer/src/assets/networks/base.svg deleted file mode 100644 index b12932f8..00000000 --- a/explorer/src/assets/networks/base.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/explorer/src/assets/networks/bsc-dark.svg b/explorer/src/assets/networks/bsc-dark.svg new file mode 100644 index 00000000..d9e85347 --- /dev/null +++ b/explorer/src/assets/networks/bsc-dark.svg @@ -0,0 +1,6 @@ + + + diff --git a/explorer/src/assets/networks/bsc-mainnet.svg b/explorer/src/assets/networks/bsc-mainnet.svg new file mode 100644 index 00000000..7726719a --- /dev/null +++ b/explorer/src/assets/networks/bsc-mainnet.svg @@ -0,0 +1,6 @@ + + + diff --git a/explorer/src/assets/networks/bsc-testnet.svg b/explorer/src/assets/networks/bsc-testnet.svg new file mode 100644 index 00000000..ba7b2d88 --- /dev/null +++ b/explorer/src/assets/networks/bsc-testnet.svg @@ -0,0 +1,6 @@ + + + diff --git a/explorer/src/config/index.tsx b/explorer/src/config/index.tsx index 27d51e3c..79a2a453 100644 --- a/explorer/src/config/index.tsx +++ b/explorer/src/config/index.tsx @@ -1,7 +1,17 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; import { getDefaultConfig } from "connectkit"; import { Chain, createConfig } from "wagmi"; -import { arbitrum, arbitrumNova, arbitrumSepolia, base, baseSepolia, linea, lineaTestnet } from "wagmi/chains"; +import { + arbitrum, + arbitrumNova, + arbitrumSepolia, + base, + baseSepolia, + bsc, + bscTestnet, + linea, + lineaTestnet, +} from "wagmi/chains"; import veraxColoredIcon from "@/assets/logo/verax-colored-icon.svg"; import ArbitrumIconDark from "@/assets/networks/arbitrum-dark.svg?react"; @@ -10,8 +20,11 @@ import ArbitrumNovaIcon from "@/assets/networks/arbitrum-nova.svg?react"; import ArbitrumSepoliaIcon from "@/assets/networks/arbitrum-sepolia.svg?react"; import ArbitrumIcon from "@/assets/networks/arbitrum.svg?react"; import BaseIconDark from "@/assets/networks/base-dark.svg?react"; +import BaseMainnetIcon from "@/assets/networks/base-mainnet.svg?react"; import BaseSepoliaIcon from "@/assets/networks/base-sepolia.svg?react"; -import BaseIcon from "@/assets/networks/base.svg?react"; +import BscMainnetIconDark from "@/assets/networks/bsc-dark.svg?react"; +import BscMainnetIcon from "@/assets/networks/bsc-mainnet.svg?react"; +import BscTestnetIcon from "@/assets/networks/bsc-testnet.svg?react"; import LineaMainnetIconDark from "@/assets/networks/linea-mainnet-dark.svg?react"; import LineaMainnetIcon from "@/assets/networks/linea-mainnet.svg?react"; import LineaSepoliaIcon from "@/assets/networks/linea-sepolia.svg?react"; @@ -98,7 +111,7 @@ const chains: INetwork[] = [ name: "Base Mainnet", chain: base, veraxEnv: VeraxSdk.DEFAULT_BASE_FRONTEND, - img: , + img: , imgDark: , network: "base-mainnet", }, @@ -109,6 +122,21 @@ const chains: INetwork[] = [ img: , network: "base-sepolia", }, + { + name: "BSC Mainnet", + chain: bsc, + veraxEnv: VeraxSdk.DEFAULT_BSC_FRONTEND, + img: , + imgDark: , + network: "bsc-mainnet", + }, + { + name: "BSC Testnet", + chain: bscTestnet, + veraxEnv: VeraxSdk.DEFAULT_BSC_TESTNET_FRONTEND, + img: , + network: "bsc-testnet", + }, ]; const config = createConfig( diff --git a/explorer/src/pages/Home/data.tsx b/explorer/src/pages/Home/data.tsx index 51e3df90..c84a1997 100644 --- a/explorer/src/pages/Home/data.tsx +++ b/explorer/src/pages/Home/data.tsx @@ -3,6 +3,7 @@ import Aspecta from "@/assets/issuers/aspecta.svg?react"; import Automata from "@/assets/issuers/automata.svg?react"; import Clique from "@/assets/issuers/clique.svg?react"; import Gitcoin from "@/assets/issuers/gitcoin.svg?react"; +import Hapi from "@/assets/issuers/Hapi_logo_square.svg?react"; import Nomis from "@/assets/issuers/nomis.svg?react"; import OpenId3 from "@/assets/issuers/openid3.svg?react"; import Orange from "@/assets/issuers/orange.svg?react"; @@ -161,4 +162,14 @@ export const issuersData: IIssuer[] = [ CTATitle: "Go To Holonym", address: "0xdca2e9ae8423d7b0f94d7f9fc09e698a45f3c851", }, + { + name: "Hapi", + logo: Hapi, + keywords: ["Proof of Personhood", "Trust Score", "Security"], + description: + "HAPI ID is a digital identification of a user’s on-chain activity, created to simplify the interpretation of user’s action on the blockchain. Created for users, protocols, DApps, and businesses, HAPI ID serves as a one-stop unique solution against Sybils and for Users!", + CTALink: "https://hapi.one", + CTATitle: "Go To Hapi", + address: "0x0000000000000000000000000000000000000000", + }, ]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 834b66f1..026828c2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,8 +90,8 @@ importers: specifier: ^8.10.7 version: 8.17.3(react-dom@18.3.1)(react@18.3.1) '@verax-attestation-registry/verax-sdk': - specifier: 1.8.0 - version: 1.8.0(@envelop/core@5.0.1)(@graphql-mesh/types@0.95.8)(@graphql-tools/delegate@10.0.10)(@graphql-tools/merge@9.0.4)(@graphql-tools/utils@10.2.0)(@graphql-tools/wrap@10.0.5)(@types/node@20.12.12)(@types/react@18.3.2)(graphql-tag@2.12.6)(graphql-yoga@5.3.1)(react-dom@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.2.2) + specifier: 1.9.0 + version: 1.9.0(@envelop/core@5.0.1)(@graphql-mesh/types@0.95.8)(@graphql-tools/delegate@10.0.10)(@graphql-tools/merge@9.0.4)(@graphql-tools/utils@10.2.0)(@graphql-tools/wrap@10.0.5)(@types/node@20.12.12)(@types/react@18.3.2)(graphql-tag@2.12.6)(graphql-yoga@5.3.1)(react-dom@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.2.2) '@wagmi/core': specifier: ^1.4.7 version: 1.4.13(@types/react@18.3.2)(react@18.3.1)(typescript@5.2.2)(viem@1.18.9) @@ -3559,7 +3559,7 @@ packages: tsconfig-paths: 4.2.0 tslib: 2.6.2 typescript: 5.4.5 - uWebSockets.js: github.com/uNetworking/uWebSockets.js/1977b5039938ad863d42fc4958d48c17e5a1fa06 + uWebSockets.js: github.com/uNetworking/uWebSockets.js/8fa05571bf6ea95be8966ad313d9d39453e381ae yargs: 17.7.2 optionalDependencies: node-libcurl: 4.0.0 @@ -9879,8 +9879,8 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@verax-attestation-registry/verax-sdk@1.8.0(@envelop/core@5.0.1)(@graphql-mesh/types@0.95.8)(@graphql-tools/delegate@10.0.10)(@graphql-tools/merge@9.0.4)(@graphql-tools/utils@10.2.0)(@graphql-tools/wrap@10.0.5)(@types/node@20.12.12)(@types/react@18.3.2)(graphql-tag@2.12.6)(graphql-yoga@5.3.1)(react-dom@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.2.2): - resolution: {integrity: sha512-VGDnpGTNIt9IXBjmPjltegITXXTG72FWASA9Thebyk3SYHpm3rYuBCID7yd3QKv3pKXq+0nBRYcquFyyU1QSwA==} + /@verax-attestation-registry/verax-sdk@1.9.0(@envelop/core@5.0.1)(@graphql-mesh/types@0.95.8)(@graphql-tools/delegate@10.0.10)(@graphql-tools/merge@9.0.4)(@graphql-tools/utils@10.2.0)(@graphql-tools/wrap@10.0.5)(@types/node@20.12.12)(@types/react@18.3.2)(graphql-tag@2.12.6)(graphql-yoga@5.3.1)(react-dom@18.3.1)(react@18.3.1)(tslib@2.6.2)(typescript@5.2.2): + resolution: {integrity: sha512-w1vIY2PlnNNZwFul0Feyk/EENEkp4vHGnf9G9Zhdi1PHUSSTgoTubmi5nKSys9t88nKUqSsBUCqMErPewfwpzw==} dependencies: '@graphprotocol/client-cli': 3.0.3(@envelop/core@5.0.1)(@graphql-mesh/cross-helpers@0.4.2)(@graphql-mesh/store@0.95.8)(@graphql-mesh/types@0.95.8)(@graphql-mesh/utils@0.95.8)(@graphql-tools/delegate@10.0.10)(@graphql-tools/merge@9.0.4)(@graphql-tools/utils@10.2.0)(@graphql-tools/wrap@10.0.5)(@types/node@20.12.12)(@types/react@18.3.2)(graphql-tag@2.12.6)(graphql-yoga@5.3.1)(graphql@16.8.1)(react-dom@18.3.1)(react@18.3.1) '@graphql-mesh/cache-localforage': 0.95.8(@graphql-mesh/types@0.95.8)(@graphql-mesh/utils@0.95.8)(graphql@16.8.1)(tslib@2.6.2) @@ -26461,8 +26461,8 @@ packages: use-sync-external-store: 1.2.0(react@18.3.1) dev: false - github.com/uNetworking/uWebSockets.js/1977b5039938ad863d42fc4958d48c17e5a1fa06: - resolution: {tarball: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/1977b5039938ad863d42fc4958d48c17e5a1fa06} + github.com/uNetworking/uWebSockets.js/8fa05571bf6ea95be8966ad313d9d39453e381ae: + resolution: {tarball: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/8fa05571bf6ea95be8966ad313d9d39453e381ae} name: uWebSockets.js - version: 20.43.0 + version: 20.44.0 dev: false diff --git a/sdk/package.json b/sdk/package.json index 9c038787..bdea5e05 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@verax-attestation-registry/verax-sdk", - "version": "1.8.2", + "version": "1.9.1", "description": "Verax Attestation Registry SDK to interact with the subgraph and the contracts", "keywords": [ "linea-attestation-registry", diff --git a/sdk/src/VeraxSdk.ts b/sdk/src/VeraxSdk.ts index 4e36a2eb..7b7b96e2 100644 --- a/sdk/src/VeraxSdk.ts +++ b/sdk/src/VeraxSdk.ts @@ -4,6 +4,8 @@ import { arbitrumSepolia, base, baseSepolia, + bsc, + bscTestnet, linea, lineaSepolia, lineaTestnet, @@ -145,6 +147,36 @@ export class VeraxSdk { mode: SDKMode.FRONTEND, }; + static DEFAULT_BSC_TESTNET: Conf = { + chain: bscTestnet, + mode: SDKMode.BACKEND, + subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-bsc-testnet/v0.0.1", + portalRegistryAddress: "0xA4a7517F62216BD42e42a67dF09C25adc72A5897", + moduleRegistryAddress: "0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a", + schemaRegistryAddress: "0x51929da151eC2C5a5881C750E5b9941eACC46c1d", + attestationRegistryAddress: "0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe", + }; + + static DEFAULT_BSC_TESTNET_FRONTEND: Conf = { + ...VeraxSdk.DEFAULT_BSC_TESTNET, + mode: SDKMode.FRONTEND, + }; + + static DEFAULT_BSC: Conf = { + chain: bsc, + mode: SDKMode.BACKEND, + subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-bsc/v0.0.1", + portalRegistryAddress: "0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0", + moduleRegistryAddress: "0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB", + schemaRegistryAddress: "0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd", + attestationRegistryAddress: "0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261", + }; + + static DEFAULT_BSC_FRONTEND: Conf = { + ...VeraxSdk.DEFAULT_BSC, + mode: SDKMode.FRONTEND, + }; + private readonly web3Client: PublicClient; private readonly walletClient: WalletClient | undefined; diff --git a/subgraph/networks.json b/subgraph/networks.json index 1a53db93..6b7101e1 100644 --- a/subgraph/networks.json +++ b/subgraph/networks.json @@ -160,5 +160,41 @@ "address": "0x8081dCd745f160c148Eb5be510F78628A0951c31", "startBlock": 13666866 } + }, + "bsc-testnet": { + "AttestationRegistry": { + "address": "0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe", + "startBlock": 41312659 + }, + "ModuleRegistry": { + "address": "0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a", + "startBlock": 41312659 + }, + "PortalRegistry": { + "address": "0xA4a7517F62216BD42e42a67dF09C25adc72A5897", + "startBlock": 41312659 + }, + "SchemaRegistry": { + "address": "0x51929da151eC2C5a5881C750E5b9941eACC46c1d", + "startBlock": 41312659 + } + }, + "bsc": { + "AttestationRegistry": { + "address": "0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261", + "startBlock": 39759713 + }, + "ModuleRegistry": { + "address": "0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB", + "startBlock": 39759713 + }, + "PortalRegistry": { + "address": "0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0", + "startBlock": 39759713 + }, + "SchemaRegistry": { + "address": "0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd", + "startBlock": 39759713 + } } } diff --git a/subgraph/package.json b/subgraph/package.json index 69747e01..fa17b9d0 100644 --- a/subgraph/package.json +++ b/subgraph/package.json @@ -25,6 +25,10 @@ "build:base-mainnet:v2": "pnpm run codegen:v2 && graph build subgraph.base-mainnet.yaml", "build:base-sepolia:v1": "pnpm run codegen:v1 && graph build subgraph-v1.base-sepolia.yaml", "build:base-sepolia:v2": "pnpm run codegen:v2 && graph build subgraph.base-sepolia.yaml", + "build:bsc-testnet:v1": "pnpm run codegen:v1 && graph build subgraph-v1.bsc-testnet.yaml", + "build:bsc-testnet:v2": "pnpm run codegen:v2 && graph build subgraph.bsc-testnet.yaml", + "build:bsc-mainnet:v1": "pnpm run codegen:v1 && graph build subgraph-v1.bsc-mainnet.yaml", + "build:bsc-mainnet:v2": "pnpm run codegen:v2 && graph build subgraph.bsc-mainnet.yaml", "build:linea-mainnet:v1": "pnpm run codegen:v1 && graph build subgraph-v1.linea-mainnet.yaml", "build:linea-mainnet:v2": "pnpm run codegen:v2 && graph build subgraph.linea-mainnet.yaml", "build:linea-sepolia:v1": "pnpm run codegen:v1 && graph build subgraph-v1.linea-sepolia.yaml", @@ -45,6 +49,10 @@ "deploy:linea-mainnet:v2": "graph deploy --version-label v0.0.1 --studio verax-v2-linea subgraph.linea-mainnet.yaml", "deploy:linea-sepolia:v1": "graph deploy --version-label v0.0.1 --studio verax-v1-linea-sepolia subgraph-v1.linea-sepolia.yaml", "deploy:linea-sepolia:v2": "graph deploy --version-label v0.0.1 --studio verax-v2-linea-sepolia subgraph.linea-sepolia.yaml", + "deploy:bsc-mainnet:v1": "graph deploy --version-label v0.0.1 --studio verax-v1-bsc subgraph-v1.bsc-mainnet.yaml", + "deploy:bsc-mainnet:v2": "graph deploy --version-label v0.0.1 --studio verax-v2-bsc subgraph.bsc-mainnet.yaml", + "deploy:bsc-testnet:v1": "graph deploy --version-label v0.0.1 --studio verax-v1-bsc-testnet subgraph-v1.bsc-testnet.yaml", + "deploy:bsc-testnet:v2": "graph deploy --version-label v0.0.1 --studio verax-v2-bsc-testnet subgraph.bsc-testnet.yaml", "test": "cp schema-v2.graphql schema.graphql && cp subgraph.linea-sepolia.yaml subgraph.yaml && pnpm run codegen:v2 && graph test && rm -Rf schema.graphql", "test:coverage": "graph test -c", "test:docker": "graph test -d" diff --git a/subgraph/subgraph-v1.bsc-mainnet.yaml b/subgraph/subgraph-v1.bsc-mainnet.yaml new file mode 100644 index 00000000..b6939524 --- /dev/null +++ b/subgraph/subgraph-v1.bsc-mainnet.yaml @@ -0,0 +1,96 @@ +specVersion: 0.0.5 +schema: + file: ./schema-v1.graphql +dataSources: + - kind: ethereum + name: AttestationRegistry + network: bsc + source: + abi: AttestationRegistry + address: "0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Attestation + abis: + - name: AttestationRegistry + file: ./abis/AttestationRegistry.json + eventHandlers: + - event: AttestationRegistered(indexed bytes32) + handler: handleAttestationRegistered + - event: AttestationRevoked(bytes32) + handler: handleAttestationRevoked + - event: AttestationReplaced(bytes32,bytes32) + handler: handleAttestationReplaced + - event: VersionUpdated(uint16) + handler: handleVersionUpdated + file: ./src/attestation-registry-v1.ts + - kind: ethereum + name: ModuleRegistry + network: bsc + source: + abi: ModuleRegistry + address: "0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Module + abis: + - name: ModuleRegistry + file: ./abis/ModuleRegistry.json + eventHandlers: + - event: ModuleRegistered(string,string,address) + handler: handleModuleRegistered + file: ./src/module-registry-v1.ts + - kind: ethereum + name: PortalRegistry + network: bsc + source: + abi: PortalRegistry + address: "0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Portal + abis: + - name: PortalRegistry + file: ./abis/PortalRegistry.json + eventHandlers: + - event: PortalRegistered(string,string,address) + handler: handlePortalRegistered + - event: IssuerAdded(address) + handler: handleIssuerAdded + - event: IssuerRemoved(address) + handler: handleIssuerRemoved + file: ./src/portal-registry-v1.ts + - kind: ethereum + name: SchemaRegistry + network: bsc + source: + abi: SchemaRegistry + address: "0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Schema + abis: + - name: SchemaRegistry + file: ./abis/SchemaRegistry.json + eventHandlers: + - event: SchemaCreated(indexed bytes32,string,string,string,string) + handler: handleSchemaCreated + - event: SchemaContextUpdated(indexed bytes32) + handler: handleSchemaContextUpdated + file: ./src/schema-registry-v1.ts diff --git a/subgraph/subgraph-v1.bsc-testnet.yaml b/subgraph/subgraph-v1.bsc-testnet.yaml new file mode 100644 index 00000000..0ed32e65 --- /dev/null +++ b/subgraph/subgraph-v1.bsc-testnet.yaml @@ -0,0 +1,96 @@ +specVersion: 0.0.5 +schema: + file: ./schema-v1.graphql +dataSources: + - kind: ethereum + name: AttestationRegistry + network: chapel + source: + abi: AttestationRegistry + address: "0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Attestation + abis: + - name: AttestationRegistry + file: ./abis/AttestationRegistry.json + eventHandlers: + - event: AttestationRegistered(indexed bytes32) + handler: handleAttestationRegistered + - event: AttestationRevoked(bytes32) + handler: handleAttestationRevoked + - event: AttestationReplaced(bytes32,bytes32) + handler: handleAttestationReplaced + - event: VersionUpdated(uint16) + handler: handleVersionUpdated + file: ./src/attestation-registry-v1.ts + - kind: ethereum + name: ModuleRegistry + network: chapel + source: + abi: ModuleRegistry + address: "0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Module + abis: + - name: ModuleRegistry + file: ./abis/ModuleRegistry.json + eventHandlers: + - event: ModuleRegistered(string,string,address) + handler: handleModuleRegistered + file: ./src/module-registry-v1.ts + - kind: ethereum + name: PortalRegistry + network: chapel + source: + abi: PortalRegistry + address: "0xA4a7517F62216BD42e42a67dF09C25adc72A5897" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Portal + abis: + - name: PortalRegistry + file: ./abis/PortalRegistry.json + eventHandlers: + - event: PortalRegistered(string,string,address) + handler: handlePortalRegistered + - event: IssuerAdded(address) + handler: handleIssuerAdded + - event: IssuerRemoved(address) + handler: handleIssuerRemoved + file: ./src/portal-registry-v1.ts + - kind: ethereum + name: SchemaRegistry + network: chapel + source: + abi: SchemaRegistry + address: "0x51929da151eC2C5a5881C750E5b9941eACC46c1d" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Schema + abis: + - name: SchemaRegistry + file: ./abis/SchemaRegistry.json + eventHandlers: + - event: SchemaCreated(indexed bytes32,string,string,string,string) + handler: handleSchemaCreated + - event: SchemaContextUpdated(indexed bytes32) + handler: handleSchemaContextUpdated + file: ./src/schema-registry-v1.ts diff --git a/subgraph/subgraph.bsc-mainnet.yaml b/subgraph/subgraph.bsc-mainnet.yaml new file mode 100644 index 00000000..4f1b16ab --- /dev/null +++ b/subgraph/subgraph.bsc-mainnet.yaml @@ -0,0 +1,96 @@ +specVersion: 0.0.5 +schema: + file: ./schema-v2.graphql +dataSources: + - kind: ethereum + name: AttestationRegistry + network: bsc + source: + abi: AttestationRegistry + address: "0x3D8A3a8FF21bD295dbBD5319C399e2C4FD27F261" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Attestation + abis: + - name: AttestationRegistry + file: ./abis/AttestationRegistry.json + eventHandlers: + - event: AttestationRegistered(indexed bytes32) + handler: handleAttestationRegistered + - event: AttestationRevoked(bytes32) + handler: handleAttestationRevoked + - event: AttestationReplaced(bytes32,bytes32) + handler: handleAttestationReplaced + - event: VersionUpdated(uint16) + handler: handleVersionUpdated + file: ./src/attestation-registry.ts + - kind: ethereum + name: ModuleRegistry + network: bsc + source: + abi: ModuleRegistry + address: "0xD70a06f7A0f197D55Fa841fcF668782b2B8266eB" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Module + abis: + - name: ModuleRegistry + file: ./abis/ModuleRegistry.json + eventHandlers: + - event: ModuleRegistered(string,string,address) + handler: handleModuleRegistered + file: ./src/module-registry.ts + - kind: ethereum + name: PortalRegistry + network: bsc + source: + abi: PortalRegistry + address: "0xb2553A7E443DFA7C9dEc01D327FdDff1A5eF59b0" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Portal + abis: + - name: PortalRegistry + file: ./abis/PortalRegistry.json + eventHandlers: + - event: PortalRegistered(string,string,address) + handler: handlePortalRegistered + - event: IssuerAdded(address) + handler: handleIssuerAdded + - event: IssuerRemoved(address) + handler: handleIssuerRemoved + file: ./src/portal-registry.ts + - kind: ethereum + name: SchemaRegistry + network: bsc + source: + abi: SchemaRegistry + address: "0x29205492435E1b06B20CeAeEC4AC41bcF595DFFd" + startBlock: 39759713 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Schema + abis: + - name: SchemaRegistry + file: ./abis/SchemaRegistry.json + eventHandlers: + - event: SchemaCreated(indexed bytes32,string,string,string,string) + handler: handleSchemaCreated + - event: SchemaContextUpdated(indexed bytes32) + handler: handleSchemaContextUpdated + file: ./src/schema-registry.ts diff --git a/subgraph/subgraph.bsc-testnet.yaml b/subgraph/subgraph.bsc-testnet.yaml new file mode 100644 index 00000000..6879317a --- /dev/null +++ b/subgraph/subgraph.bsc-testnet.yaml @@ -0,0 +1,96 @@ +specVersion: 0.0.5 +schema: + file: ./schema-v2.graphql +dataSources: + - kind: ethereum + name: AttestationRegistry + network: chapel + source: + abi: AttestationRegistry + address: "0x5Cc4029f0dDae1FFE527385459D06d81DFD50EEe" + startBlock: 41312659 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Attestation + abis: + - name: AttestationRegistry + file: ./abis/AttestationRegistry.json + eventHandlers: + - event: AttestationRegistered(indexed bytes32) + handler: handleAttestationRegistered + - event: AttestationRevoked(bytes32) + handler: handleAttestationRevoked + - event: AttestationReplaced(bytes32,bytes32) + handler: handleAttestationReplaced + - event: VersionUpdated(uint16) + handler: handleVersionUpdated + file: ./src/attestation-registry.ts + - kind: ethereum + name: ModuleRegistry + network: chapel + source: + abi: ModuleRegistry + address: "0x6c46c245918d4fcfC13F0a9e2e49d4E2739A353a" + startBlock: 41312659 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Module + abis: + - name: ModuleRegistry + file: ./abis/ModuleRegistry.json + eventHandlers: + - event: ModuleRegistered(string,string,address) + handler: handleModuleRegistered + file: ./src/module-registry.ts + - kind: ethereum + name: PortalRegistry + network: chapel + source: + abi: PortalRegistry + address: "0xA4a7517F62216BD42e42a67dF09C25adc72A5897" + startBlock: 41312659 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Portal + abis: + - name: PortalRegistry + file: ./abis/PortalRegistry.json + eventHandlers: + - event: PortalRegistered(string,string,address) + handler: handlePortalRegistered + - event: IssuerAdded(address) + handler: handleIssuerAdded + - event: IssuerRemoved(address) + handler: handleIssuerRemoved + file: ./src/portal-registry.ts + - kind: ethereum + name: SchemaRegistry + network: chapel + source: + abi: SchemaRegistry + address: "0x51929da151eC2C5a5881C750E5b9941eACC46c1d" + startBlock: 41312659 + mapping: + kind: ethereum/events + apiVersion: 0.0.7 + language: wasm/assemblyscript + entities: + - Schema + abis: + - name: SchemaRegistry + file: ./abis/SchemaRegistry.json + eventHandlers: + - event: SchemaCreated(indexed bytes32,string,string,string,string) + handler: handleSchemaCreated + - event: SchemaContextUpdated(indexed bytes32) + handler: handleSchemaContextUpdated + file: ./src/schema-registry.ts