Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m3s
CI/CD Pipeline / Security Scanning (push) Successful in 2m18s
CI/CD Pipeline / Lint and Format (push) Failing after 34s
CI/CD Pipeline / Terraform Validation (push) Failing after 20s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 22s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 40s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 49s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 21s
Validation / validate-genesis (push) Successful in 25s
Validation / validate-terraform (push) Failing after 21s
Validation / validate-kubernetes (push) Failing after 8s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m11s
Validation / validate-documentation (push) Failing after 14s
Verify Deployment / Verify Deployment (push) Failing after 45s
Ship AddressActivityRegistry V1/V2, ISO20022IntakeGateway, Chain138ParticipantSurface, checkpoint hub contracts, checkpoint-core package, aggregator/indexer/sdk services, relay profile guards, M00 diamond bridge facet, and OMNL compliance contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
4.8 KiB
4.8 KiB
Chain 138 → Mainnet checkpoint (v2 maximum)
Upgradeable attestation hub replacing standalone MainnetTether + TransactionMirror.
Architecture: docs/07-ccip/MAINNET_CHECKPOINT_MAXIMUM_ARCHITECTURE.md
Roadmap: docs/07-ccip/MAINNET_CHECKPOINT_RECOMMENDATIONS_AND_ROADMAP.md
Contract map
| File | Role |
|---|---|
Chain138MainnetCheckpoint.sol |
UUPS hub: submit, CCIP, extensions, pause, relayer EIP-712 |
chain138/Chain138BatchEmitter.sol |
138 commit + CCIP to mainnet |
LegacyCheckpointAdapter.sol |
Read-only v1 mirror + tether + v2 unified views |
AddressActivityRegistry.sol |
Mainnet participant credit/debit events (ETH wei + USD e8) for Etherscan log indexing |
AddressActivityRegistryV2.sol |
ISO 20022 / MT-103+ attestation (PaymentAttested: instructionId, UETR, payloadHash) |
ISO20022IntakeGateway.sol |
Relayer submitInbound(CanonicalMessage) for institutional ISO intake |
libraries/ExtensionIds.sol |
Canonical registerExtension ids |
libraries/CheckpointEIP712.sol |
Typed data for relayer / validators |
libraries/CheckpointLeaf.sol |
V1/V2 leaves + Merkle build/verify |
extensions/* |
Optional pluggable modules (11 shipped) |
Extensions (all optional)
ID (ExtensionIds) |
Contract | Hooks |
|---|---|---|
MIRROR_DETAIL |
MirrorDetailExtension |
afterSubmit |
VALIDATOR_SIG |
ValidatorSigVerifierExtension |
beforeSubmit (ECDSA) |
CONTENT_URI |
AttestationURIExtension |
afterSubmit |
RATE_LIMIT |
SubmitRateLimitExtension |
before/after |
TOKEN_FILTER |
TokenTransferFilterExtension |
beforeSubmit (V2 ERC-20) |
CW_LINK |
CwTransportLinkExtension |
afterSubmit (hints only) |
GOV_TIMELOCK |
TimelockSubmitExtension |
beforeSubmit |
METRICS |
MetricsExtension |
afterSubmit |
ZK_STATE_ROOT |
ZkStateRootVerifierExtension |
beforeSubmit (stub) |
PAYMASTER_HINT |
PaymasterHintExtension |
afterSubmit |
L2_ORACLE |
L2OracleAdapterExtension |
afterSubmit |
Hub API (highlights)
submitCheckpoint/submitCheckpointCommitment/submitCheckpointWithLeavessubmitCheckpointByRelayer(header, …, submitterSignature)— EIP-712 attestationforceCheckpoint—EMERGENCY_ROLEgetConfig()/getFullConfig()/getExtensionList()(use per-batchgetCheckpointoff-chain for ranges)verifyPaymentInBatch— core Merkle + extensionverifyLeaf
Deploy
Use scoped forge (FORGE_SCOPE=mainnet-checkpoint, profile mainnet-checkpoint) via repo wrappers:
# From proxmox repo root (gate + env loaded automatically)
bash scripts/deployment/deploy-checkpoint-mainnet-hub.sh # fund deployer >= 0.003 ETH
bash scripts/deployment/configure-checkpoint-mainnet-hub.sh
bash scripts/deployment/deploy-checkpoint-extensions-mainnet.sh
bash scripts/deployment/register-checkpoint-extensions-mainnet.sh
bash scripts/deployment/deploy-checkpoint-batch-emitter-138.sh
bash scripts/deployment/deploy-address-activity-registry.sh # mainnet AddressActivityRegistry (Etherscan participant logs)
bash scripts/deployment/deploy-address-activity-registry-v2.sh # ISO MT-103 / pacs.008 attestation
bash scripts/deployment/deploy-iso20022-intake-gateway.sh # optional ISO intake gateway
pnpm etherscan-v2:sync-touchpoints # after registry env is set
Simulate without broadcast: CHECKPOINT_DRY_RUN=1 on any wrapper above.
AddressActivityRegistry is deployed separately (not via deploy-checkpoint-extensions-mainnet.sh) to avoid duplicate registry addresses. See docs/04-configuration/etherscan/CHAIN138_ETHERSCAN_V2_UNSUPPORTED_NETWORK_FRAMEWORK.md.
Services
| Service | Path |
|---|---|
| Aggregator (batch=10) | services/checkpoint-aggregator/ |
| Indexer REST | services/checkpoint-indexer/ (GET /v1/checkpoint/latest, /v2/api Etherscan shim) |
Tests & CI (run before every deploy)
# Full gate: compile + all tests + storage layout (+ optional env profile)
pnpm checkpoint:predeploy
pnpm checkpoint:predeploy:hub # includes mainnet-hub env validation
# Deploy wrappers (gate runs automatically)
bash ../scripts/deployment/deploy-checkpoint-mainnet-hub.sh
bash ../scripts/deployment/configure-checkpoint-mainnet-hub.sh
bash ../scripts/deployment/deploy-checkpoint-batch-emitter-138.sh
Granular env reference: config/checkpoint-hub.example.env
On-chain configuration
| API | Purpose |
|---|---|
applyConfig(HubConfig) |
Atomically set all hub tunables (preferred; per-field setters removed for bytecode size) |
getFullConfig() |
Read full HubConfig struct |
setConfig(...) |
Batch size / wait / flags only (subset) |
setExtensionActive / updateExtensionHooks |
Extension registry tuning |
applyEmitterConfig (138) |
Batch emitter CCIP destination |