Skip to content

Commit

Permalink
Merge pull request #53 from l2beat/main
Browse files Browse the repository at this point in the history
[pull] main from l2beat:main
  • Loading branch information
pull[bot] authored Dec 25, 2024
2 parents 0472635 + e29d131 commit b60ceff
Show file tree
Hide file tree
Showing 21 changed files with 1,104 additions and 455 deletions.
26 changes: 26 additions & 0 deletions packages/backend/discovery/everclear/ethereum/diffHistory.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
Generated with discovered.json: 0xaabce4f94461ae606fc51cfc9055ea64e36a36ca

# Diff at Tue, 24 Dec 2024 09:33:53 GMT:

- author: sekuba (<[email protected]>)
- comparing to: main@8f52aa11293aef791f10e1b8317bef0d461a04f9 block: 21365577
- current block number: 21471461

## Description

Config related: Add Celestia Nitro wmroot.

## Config/verification related changes

Following changes come from updates made to the config file,
or/and contracts becoming verified, not from differences found during
discovery. Values are for block 21365577 (main branch discovery), not current.

```diff
contract RollupProxy (0xc6CAd31D83E33Fc8fBc855f36ef9Cb2fCE070f5C) {
+++ description: Central contract for the project's configuration like its execution logic hash (`wasmModuleRoot`) and addresses of the other system contracts. Entry point for Proposers creating new Rollup Nodes (state commitments) and Challengers submitting fraud proofs (In the Orbit stack, these two roles are both held by the Validators).
usedTypes.0.arg.0xe81f986823a85105c5fd91bb53b4493d38c0c26652d23f76a7405ac889908287:
+ "Celestia Nitro 3.2.1 wasmModuleRoot"
}
```

Generated with discovered.json: 0x70577b3b7afc5e6c9421ace624a53a1285bbce62

# Diff at Mon, 09 Dec 2024 14:35:18 GMT:
Expand Down
21 changes: 11 additions & 10 deletions packages/backend/discovery/everclear/ethereum/discovered.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "everclear",
"chain": "ethereum",
"blockNumber": 21365577,
"blockNumber": 21471461,
"configHash": "0x776ba3b8fa5ed2574a454474695f88cce019d656fcc61727da02a0e1f8fc9b24",
"contracts": [
{
Expand Down Expand Up @@ -244,11 +244,11 @@
"0xdE3fdE71a026236b6b5C35505643FF4155EAb20D"
],
"allowedOutboxList": ["0x38fB6Ad5908f61dC0bCeffbeDf4Bf781CbeA22Aa"],
"delayedMessageCount": 205,
"delayedMessageCount": 236,
"rollup": "0xc6CAd31D83E33Fc8fBc855f36ef9Cb2fCE070f5C",
"sequencerInbox": "0x7B0517E0104dB60198f9d573C0aB8d480207827E",
"sequencerMessageCount": 180,
"sequencerReportedSubMessageCount": 369863
"sequencerMessageCount": 209,
"sequencerReportedSubMessageCount": 449548
}
},
{
Expand Down Expand Up @@ -295,7 +295,7 @@
]
],
"$upgradeCount": 1,
"batchCount": 180,
"batchCount": 209,
"batchPosterManager": "0x0000000000000000000000000000000000000000",
"batchPosters": ["0x54F9375F5a6CEA1eECc561FC7f309aD8Cb633Ef9"],
"bridge": "0x4eb4fB614e1aa3634513319F4Ec7334bC4321356",
Expand Down Expand Up @@ -326,7 +326,7 @@
"rollup": "0xc6CAd31D83E33Fc8fBc855f36ef9Cb2fCE070f5C",
"sequencerVersion": "0x88",
"setIsBatchPosterCount": 1,
"totalDelayedMessagesRead": 204,
"totalDelayedMessagesRead": 235,
"TREE_DAS_MESSAGE_HEADER_FLAG": "0x08",
"ZERO_HEAVY_MESSAGE_HEADER_FLAG": "0x20"
},
Expand Down Expand Up @@ -724,12 +724,12 @@
"confirmPeriodBlocks": 45818,
"currentRequiredStake": "100000000000000000",
"extraChallengeTimeBlocks": 0,
"firstUnresolvedNode": 165,
"firstUnresolvedNode": 194,
"inbox": "0x97FdC935c5E25613AA13a054C7Aa71cf751DB495",
"isERC20Enabled": false,
"lastStakeBlock": 20711424,
"latestConfirmed": 164,
"latestNodeCreated": 177,
"latestConfirmed": 193,
"latestNodeCreated": 206,
"loserStakeEscrow": "0x0000000000000000000000000000000000000000",
"minimumAssertionPeriod": 75,
"outbox": "0x38fB6Ad5908f61dC0bCeffbeDf4Bf781CbeA22Aa",
Expand Down Expand Up @@ -796,7 +796,8 @@
"0x8b104a2e80ac6165dc58b9048de12f301d70b02a0ab51396c22b4b4b802a16a4": "ArbOS v20 wasmModuleRoot",
"0xb0de9cb89e4d944ae6023a3b62276e54804c242fd8c4c2d8e6cc4450f5fa8b1b": "ArbOS v30 wasmModuleRoot",
"0x260f5fa5c3176a856893642e149cf128b5a8de9f828afec8d11184415dd8dc69": "ArbOS v31 wasmModuleRoot",
"0x184884e1eb9fefdc158f6c8ac912bb183bf3cf83f0090317e0bc4ac5860baa39": "ArbOS v32 wasmModuleRoot"
"0x184884e1eb9fefdc158f6c8ac912bb183bf3cf83f0090317e0bc4ac5860baa39": "ArbOS v32 wasmModuleRoot",
"0xe81f986823a85105c5fd91bb53b4493d38c0c26652d23f76a7405ac889908287": "Celestia Nitro 3.2.1 wasmModuleRoot"
}
}
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"ignoreDiscovery": true
},
"HyperliquidBridge": {
"description": "Single contract containing all the logic for the Hyperliquid bridge. It manages deposits, withdrawals, the hot and cold validator sets, as well as the lockers, finalizers, and all the permissioned functions.",
"fields": {
"constructorArgs": {
"handler": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Generated with discovered.json: 0x59a8e3ddff0ce9c09556c6f54d2412e085578c68
Generated with discovered.json: 0xe0c92272f11e7dc8e74ca022bdd3b022cf65fa67

# Diff at Mon, 23 Dec 2024 13:58:58 GMT:
# Diff at Tue, 24 Dec 2024 20:24:42 GMT:

- author: Luca Donno (<[email protected]>)
- current block number: 287788820
Expand All @@ -14,5 +14,5 @@ Initial discovery.
```diff
+ Status: CREATED
contract HyperliquidBridge (0x2Df1c51E09aECF9cacB7bc98cB1742757f163dF7)
+++ description: None
+++ description: Single contract containing all the logic for the Hyperliquid bridge. It manages deposits, withdrawals, the hot and cold validator sets, as well as the lockers, finalizers, and all the permissioned functions.
```
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
"name": "hyperliquid",
"chain": "arbitrum",
"blockNumber": 287788820,
"configHash": "0xc2ab629d49517eb4ae05a2794ec8be563f256e3d61f04a95ca0453c04b847e4a",
"configHash": "0x3f30830e73ba948da91f283af19b0dc038b29a354fd2a8ba3a07c606a2d374d3",
"contracts": [
{
"name": "HyperliquidBridge",
"address": "0x2Df1c51E09aECF9cacB7bc98cB1742757f163dF7",
"sourceHashes": [
"0x8c22d9d0e8dc4b87b77a97aca8a01a2050b5c416ff894e2b0c18daf22c76b122"
],
"description": "Single contract containing all the logic for the Hyperliquid bridge. It manages deposits, withdrawals, the hot and cold validator sets, as well as the lockers, finalizers, and all the permissioned functions.",
"sinceTimestamp": 1701389130,
"values": {
"$immutable": true,
Expand Down
145 changes: 139 additions & 6 deletions packages/backend/discovery/kinto/kinto/config.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"ignoreInWatchMode": ["getNonce"]
},
"NioGovernor": {
"description": "Governance contract allowing token- and NFT based voting.",
"ignoreMethods": [
"proposalDeadline",
"proposalEta",
Expand All @@ -57,12 +58,35 @@
"ignoreInWatchMode": ["clock"]
},
"NioGuardians": {
"description": "Contract using NFTs as voting tokens to be used by Nio Guardians in the NioGovernor.",
"ignoreMethods": ["exists", "getPastTotalSupply"],
"ignoreInWatchMode": ["clock"]
"ignoreInWatchMode": ["clock"],
"fields": {
"owner": {
"target": {
"permissions": [
{
"type": "configure",
"description": "mint Nio Guardian NFTs to any address, inheriting the permissions of the NFT."
}
]
}
}
}
},
"AccessManager": {
// highly custom/manual event-based discovery here, should be automated
"description": "Standard OpenZeppelin AccessManager: Serves as a proxy contract defining the roles, permissions and delays to call functions in target contracts.",
"fields": {
"initialAdminRole": {
"description": "From the constructor args. Has the ADMIN_ROLE (0).",
"handler": {
"type": "hardcoded", // constructorArgs handler fails here
"value": "0x2e2B1c42E38f5af81771e65D87729E57ABD1337a"
}
},
"RoleGuardianChanged": {
"description": "The guardian permission allows canceling operations that have been scheduled under the role.",
"handler": {
"type": "stateFromEvent",
"event": "RoleGuardianChanged",
Expand All @@ -71,6 +95,7 @@
}
},
"RoleAdminChanged": {
"description": "The RoleAdmin permission is required to grant the role, revoke the role and update the execution delay for the respective role.",
"handler": {
"type": "stateFromEvent",
"event": "RoleAdminChanged",
Expand All @@ -79,6 +104,7 @@
}
},
"RoleGrantDelayChanged": {
"description": "Grant delay for a given `roleId`.",
"handler": {
"type": "stateFromEvent",
"event": "RoleGrantDelayChanged",
Expand All @@ -87,6 +113,7 @@
}
},
"TargetAdminDelayUpdated": {
"description": "Delay for changing the AccessManager configuration of a given target contract.",
"handler": {
"type": "stateFromEvent",
"event": "TargetAdminDelayUpdated",
Expand All @@ -95,6 +122,7 @@
}
},
"TargetFunctionRoleUpdated": {
"description": "Target addresses and function selectors accessible from a given role id.",
"handler": {
"type": "stateFromEvent",
"event": "TargetFunctionRoleUpdated",
Expand All @@ -103,6 +131,7 @@
}
},
"OperationScheduled": {
"description": "List of scheduled operations.",
"severity": "HIGH",
"handler": {
"type": "stateFromEvent",
Expand All @@ -118,13 +147,15 @@
}
},
"AdditionalRoles": {
"description": "Roles (id : label) added apart from the standard roles PUBLIC_ROLE and ADMIN_ROLE.",
"handler": {
"type": "stateFromEvent",
"event": "RoleLabel",
"returnParams": ["roleId", "label"]
}
},
"RolesGranted": {
"description": "List of roles granted to accounts.",
"handler": {
"type": "stateFromEvent",
"event": "RoleGranted",
Expand All @@ -144,9 +175,23 @@
"ignoreInWatchMode": ["globalMessageCount"]
},
"Treasury": {
"ignoreMethods": ["proxiableUUID"]
"description": "Kinto Treasury.",
"ignoreMethods": ["proxiableUUID"],
"fields": {
"owner": {
"target": {
"permissions": [
{
"type": "configure",
"description": "send tokens and ETH from the Treasury to any address without delay."
}
]
}
}
}
},
"BridgedKinto": {
"description": "KINTO token contract.",
"ignoreMethods": ["proxiableUUID", "getPastTotalSupply"],
"ignoreInWatchMode": ["totalSupply", "clock"]
},
Expand All @@ -163,36 +208,124 @@
"ignoreMethods": ["proxiableUUID"]
},
"SponsorPaymaster": {
"description": "Paymaster used for user transactions eligible for sponsorship.",
"ignoreMethods": ["proxiableUUID"],
"ignoreInWatchMode": ["getDeposit"]
},
"KintoWalletFactory": {
"description": "Deploys new KintoWallet beacon proxies when users create a wallet. Also manages the beacon implementation for all KintoWallets and their recovery logic.",
"ignoreMethods": ["proxiableUUID"],
"ignoreInWatchMode": ["totalWallets"],
"ignoreRelatives": ["beacon"]
"ignoreRelatives": ["beacon"],
"fields": {
"owner": {
"severity": "HIGH",
"target": {
"permissions": [
{
"type": "configure",
"description": "update the central KintoWallet implementation of all users on Kinto L2 and approve specific wallets for recovery via the turnkey recoverer."
}
]
}
}
}
},
"KintoID": {
"description": "Manages Kinto's KYC system: KYC provider addresses and the KYC status of users.",
"description": "Manages Kinto's KYC system: The KYC_PROVIDER roles responsible for the KYC status and KYC metadata of user wallets.",
"ignoreMethods": ["proxiableUUID", "tokenByIndex"],
"ignoreInWatchMode": ["lastMonitoredAt", "totalSupply"],
"fields": {
"accessControl": {
"handler": {
"type": "accessControl"
}
},
// extracting single roles here for better descriptions
"UPGRADERs": {
"severity": "HIGH",
"handler": {
"type": "accessControl",
"pickRoleMembers": "UPGRADER_ROLE"
},
"target": {
"permissions": [{ "type": "upgrade" }]
}
},
"KYC_PROVIDERs": {
"severity": "MEDIUM",
"handler": {
"type": "accessControl",
"pickRoleMembers": "KYC_PROVIDER_ROLE"
},
"target": {
"permissions": [
{
"type": "configure",
"description": "manage the KYC status of any user (sanction status and KYC metadata) and mint/burn KintoID NFTs."
}
]
}
},
"GOVERNANCErs": {
"severity": "HIGH",
"handler": {
"type": "accessControl",
"pickRoleMembers": "GOVERNANCE_ROLE"
},
"target": {
"permissions": [
{
"type": "configure",
"description": "permissioned to call `confirmSanction()`, which makes a temporary sanction by a KYC_PROVIDER permanent and does not grant an exit window to the affected wallet."
}
]
}
},
"DEFAULT_ADMINs": {
"severity": "HIGH",
"handler": {
"type": "accessControl",
"pickRoleMembers": "DEFAULT_ADMIN_ROLE"
},
"target": {
"permissions": [
{
"type": "configure",
"description": "transfer KYC NFTs to a different address."
}
]
}
}
}
},
"KintoAppRegistry": {
"description": "Central system contract defining addresses that are allowed to be called by EOAs. The modified Kinto node reads this configuration and drops all other transactions from EOAs. Accordingly, users can only transact from their smart wallets.",
"description": "Central system contract defining addresses that are allowed to be called by EOAs. The modified Kinto node reads this configuration and drops all other transactions from EOAs (enforced by a modified state transition function). Accordingly, users can only transact from their smart wallets.",
"ignoreMethods": [
"proxiableUUID",
"reservedContracts",
"systemContracts",
"tokenByIndex",
"tokenIdToApp"
],
"ignoreRelatives": ["getReservedContracts", "getSystemContracts"]
"ignoreRelatives": ["getReservedContracts", "getSystemContracts"],
"fields": {
"owner": {
"severity": "HIGH",
"target": {
"permissions": [
{
"type": "configure",
"description": "manage addresses that are callable by EOAs and other white-/blacklists that are enforced globally on the Kinto L2."
}
]
}
},
"getSystemContracts": {
"description": "Contracts that are exempt from the STF-enforced rule that EOAs cannot call contracts.",
"severity": "HIGH"
}
}
}
}
}
Loading

0 comments on commit b60ceff

Please sign in to comment.