Skip to content

Initial UCCB contracts - #3676

Open
shawn-zil wants to merge 60 commits into
mainfrom
shawn/3587/initial-uccb-contracts
Open

shawn-zil wants to merge 60 commits into
mainfrom
shawn/3587/initial-uccb-contracts

Conversation

@shawn-zil

@shawn-zil shawn-zil commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

This is a rather big PR - it is now at about 80% or an alpha-stage. It has been tested locally using a modified rundler binary that removes the BLS precompiles blacklist. So, for now, I've not included any built-in CI/CD tests because they will all fail until the fix is merged into their next release.

I intend to deploy and test this on testnet, after that.

As an example of it working:

cast send $GW_PROXY "sendMessage(bytes,bytes,bytes[])" 0001000002053914a46cc63eBF4Bd77888AA327837d20b23A63a56B5 0xb0d691fe "[]" --private-key $PRIVATE_KEY

ZQ2 node processing:

2026-07-14T02:08:43.693889Z  INFO zilliqa::uccb::signer: 441: Sender(Chain::Named(Dev)): routing send_id=0x8f4d5436b235dce9978468ba43f0ae8fe681f4fb72d25af4b642055cd2b0c3e5
2026-07-14T02:08:43.728785Z  INFO zilliqa::uccb::signer: 571: Signer(Chain::Named(Dev)): signed send_id=0x8f4d5436b235dce9978468ba43f0ae8fe681f4fb72d25af4b642055cd2b0c3e5
2026-07-14T02:08:43.778476Z  INFO zilliqa::uccb::relayer: 478: Relayer(Chain::Named(Dev) => Chain::Named(Dev)): promote send_id=0x8f4d5436b235dce9978468ba43f0ae8fe681f4fb72d25af4b642055cd2b0c3e5
2026-07-14T02:08:52.468426Z  INFO zilliqa::uccb::relayer: 345: Relayer(Chain::Named(Dev) => Chain::Named(Dev)): bundled send_id=0x8f4d5436b235dce9978468ba43f0ae8fe681f4fb72d25af4b642055cd2b0c3e5
2026-07-14T02:09:13.638930Z  INFO zilliqa::uccb::relayer: 198: Receiver(Chain::Named(Dev)): received send_id=0x8f4d5436b235dce9978468ba43f0ae8fe681f4fb72d25af4b642055cd2b0c3e5

Solidity call-graph (shortened for brevity):

Executing previous transactions from the block.
Traces:
  [484874] ::handleOps([(0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    ├─ [356203] ::validateUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   ├─ [351005] ::validateUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   │   ├─ [228] 
    │   │   │   └─ ← [Return] 0xf3374abc590f840d44eae8293a959c8689c3b910f2d50bb8c9e6e9ae91853319
    │   │   ├─ [96] PRECOMPILES::sha256(0xf3374abc590f840d44eae8293a959c8689c3b910f2d50bb8c9e6e9ae9185331901424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f2b) [staticcall]
    │   │   │   └─ ← [Return] 0x50588955021a1f9d92f5bb042206ecab7fbae967120b961f3f48f3b17fd05965
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xd16ddfa5056a44fe10d1378b0c17fb577db1f73dd90a9ccc84975ae46c968ce9
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x31f99cc2593c0821ab7f90bdb0b72aae3a7eac69f3fbaab5dd060e63be7c2ef7
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xc0159eab614230c79dd0dbf5e7c39549bd464cb33a642d6388a7836a97950dcd
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xd209449e4e036677e394fc39b0e8ee34499f008226b5eaff57855242fc59b88d
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x24e87b0a72458a3898b4211375c205f718cb85220323033e4a00adf52e79ec83
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xf8230336ccb3921c4e16f3a54976032fd3149878a150f5fe65d34a58b5594a37
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xb0233d370c4bf1f57d9a38e4cd66dd73547570b676667862efac695310e90ddc
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [23800] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [23800] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [600] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [102900] 
    │   │   │   └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [120] 
    │   │   │   └─ ← [Return] 0xeff6346b154736ebad710c3515083437734755a5f50de49f5ec46faa68c5bd56
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x901cddd1a438346f9653a9a1250746bad4204f0e192945dd5ee1832422ec93b2
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x5a9e9c76c575d3275b90b48d2a70251f352c8a73f265552ce92e1a81a453e200
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xa8143b66b5f12270c39aad021a3bf8decec03de0b731e51066d8a23bc87e856a
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xd5ff069f2571dc6b583b749061ca3f92333208914172fcc4884873b7141d904a
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xc6c0257cd390036ebf1c4b306e501677e369e752187657fea8bfa05c8a926dfc
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x750e2d76af219a9b6e01ceda1acc96b7309f93df6e27e8d7b40ffc8318e6e031
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0xc119d9fe9c008f66eed8fd9a8b51bb8bc7bd37e8f3b028d4ea7ed27756e6baa5
    │   │   ├─ [96] 
    │   │   │   └─ ← [Return] 0x92257e39369745aac76cf53fbfc519c93da907c5572e76d1d6cc855e779d7001
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [200] PRECOMPILES::modexp(64, 32, 64, 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [23800] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [23800] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [600] 
    │   │   │   └─ ← [Return] 
    │   │   ├─ [102900] 
    │   │   │   └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000000
    │   └─ ← [Return] 0x0000000000000000000000000000000000000000000000000000000000000000
    ├─ [11151] ::validatePaymasterUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   ├─ [5947] ::validatePaymasterUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   │   └─ ← [Return] 
    │   └─ ← [Return] 
    ├─ emit BeforeExecution()
    ├─ [63804] 
    │   ├─ [57734] ::executeUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   │   ├─ [57045] ::executeUserOp((0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3, 
    │   │   │   ├─ [54215] ::_callExternal(: [0xf7c337A02CCf847356783Ab47cAF431D3a1E4e44], 
    │   │   │   │   ├─ [53723] ::_callExternal(: [0xf7c337A02CCf847356783Ab47cAF431D3a1E4e44], 
    │   │   │   │   │   ├─ [49803] 
    │   │   │   │   │   │   ├─ [44832] 
    │   │   │   │   │   │   │   ├─ emit MessageReceived(param0: 
    │   │   │   │   │   │   │   ├─ [266] ::entryPoint()
    │   │   │   │   │   │   │   │   └─ ← [Return] 
    │   │   │   │   │   │   │   └─ ← [Return] 
    │   │   │   │   │   │   └─ ← [Return] 
    │   │   │   │   │   └─ ← [Stop]
    │   │   │   │   └─ ← [Return]
    │   │   │   └─ ← [Stop]
    │   │   └─ ← [Return]
    │   ├─ emit UserOperationEvent(userOpHash: 0x955e3ac9b50f3750deba82e523af9f7b82a66b7e249db5737eea1c94778ad4e7, sender: : [0xB666B280Ac8a440E0293728FD4Ffb98c89d9C0c3], paymaster: : [0x493a586f64e411561c107CB91777e03bD7e28fDc], nonce: 89707874916343070776778637272465627849150541147419253011348842070030940110848 [8.97e76], success: true, actualGasCost: 2000996532224 [2e12], actualGasUsed: 1908299 [1.908e6])
    │   └─ ← [Return] 0x000000000000000000000000000000000000000000000000000001d1e4b00000
    ├─ [0] ::fallback{value: 2000996532224}()
    │   └─ ← [Stop]
    └─ ← [Return]

Transaction successfully executed.
Gas used: 522090

@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch 2 times, most recently from 51402ac to 580aa04 Compare June 19, 2026 08:56
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

ProjectZilliqa 2
Branchshawn/3587/initial-uccb-contracts
Testbedself-hosted
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
full-blocks-erc20-transfers/full-blocks-erc20-transfers📈 view plot
🚷 view threshold
597.35 ms
(-1.84%)Baseline: 608.56 ms
715.16 ms
(83.53%)
full-blocks-evm-transfers/full-blocks-evm-transfers📈 view plot
🚷 view threshold
805.88 ms
(-6.21%)Baseline: 859.20 ms
1,016.07 ms
(79.31%)
full-blocks-giant-deploy/full-blocks-giant-deploy📈 view plot
🚷 view threshold
5,508.00 ms
(+5.69%)Baseline: 5,211.64 ms
5,897.34 ms
(93.40%)
full-blocks-scilla-add/full-blocks-scilla-add📈 view plot
🚷 view threshold
1,066.50 ms
(+3.90%)Baseline: 1,026.43 ms
1,134.78 ms
(93.98%)
full-blocks-scilla-load/full-blocks-scilla-load📈 view plot
🚷 view threshold
4,210.30 ms
(-22.90%)Baseline: 5,461.06 ms
7,477.21 ms
(56.31%)
full-blocks-scilla-store/full-blocks-scilla-store📈 view plot
🚷 view threshold
3,532.50 ms
(-15.87%)Baseline: 4,198.70 ms
5,420.79 ms
(65.17%)
full-blocks-zil-transfers/full-blocks-zil-transfers📈 view plot
🚷 view threshold
1,087.20 ms
(+1.21%)Baseline: 1,074.25 ms
1,186.76 ms
(91.61%)
process-empty/process-empty📈 view plot
🚷 view threshold
15.25 ms
(+8.91%)Baseline: 14.00 ms
15.98 ms
(95.41%)
🐰 View full continuous benchmarking report in Bencher

@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch from 580aa04 to 4173924 Compare June 26, 2026 00:48
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch 5 times, most recently from 45b201c to 2d216aa Compare July 13, 2026 04:56
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch 3 times, most recently from 03c3c39 to b86c522 Compare July 14, 2026 04:14
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch 2 times, most recently from d0c125a to f8579f1 Compare July 15, 2026 02:41
This was linked to issues Jul 16, 2026
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch 3 times, most recently from a8e75c4 to 32f4859 Compare July 17, 2026 07:55
shawn-zil added 27 commits July 24, 2026 13:52
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch from 32f4859 to d1ba39b Compare July 24, 2026 06:18
@shawn-zil
shawn-zil force-pushed the shawn/3587/initial-uccb-contracts branch from d1ba39b to dce95c7 Compare July 24, 2026 06:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Paymaster Implement Sender Implement Gateway

1 participant