Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
c32564c
bump contracts to head of draft-v31
zkzoomer Jan 21, 2026
e5bf092
try fixes
zkzoomer Jan 21, 2026
73e7c8a
try fix
zkzoomer Jan 22, 2026
014cde3
Revert "try fixes"
zkzoomer Jan 22, 2026
3713ae9
Merge remote-tracking branch 'origin/draft-v31' into sma/fix-migratio…
zkzoomer Jan 30, 2026
7de5bd7
temp migration fixes
zkzoomer Jan 30, 2026
65dd865
Merge remote-tracking branch 'origin/draft-v31' into sma/fix-migratio…
zkzoomer Feb 2, 2026
04f780f
rm foundry script need
zkzoomer Feb 2, 2026
f4fbc32
fix migrate issues
zkzoomer Feb 2, 2026
622379e
simplify
zkzoomer Feb 3, 2026
b7c0535
bump contracts
zkzoomer Feb 3, 2026
af3be83
split tbm script in two
zkzoomer Feb 3, 2026
7ea331f
adapt to tbm split
zkzoomer Feb 4, 2026
6a24788
greatly simplify tbm to tests
zkzoomer Feb 4, 2026
026eb75
temp delete for initial CI run
zkzoomer Feb 4, 2026
1e8969f
bump contracts to head of draft-v31
zkzoomer Feb 4, 2026
6c34e71
wait for all batches to be executed
zkzoomer Feb 4, 2026
9ce381c
try temp ci fix
zkzoomer Feb 4, 2026
737789b
bump contracts
zkzoomer Feb 5, 2026
b8b8df6
filter by chain id
zkzoomer Feb 5, 2026
80737d7
extend with FROM case
zkzoomer Feb 5, 2026
edb26c4
renaming
zkzoomer Feb 5, 2026
a0928f4
bump contracts
zkzoomer Feb 5, 2026
e4a2a5b
skip check for base token on L1AT_GW
zkzoomer Feb 5, 2026
370cf7d
fix gw migration tests
zkzoomer Feb 6, 2026
08bafa3
try bump timeout
zkzoomer Feb 6, 2026
ef3f65e
rm wait
zkzoomer Feb 6, 2026
fdf6ffd
Revert "try bump timeout"
zkzoomer Feb 6, 2026
bc5f183
split gw migration on CI
zkzoomer Feb 6, 2026
efa7f45
rm unused
zkzoomer Feb 6, 2026
b491fdd
wait until finalize gw migration ready without holding mutex
zkzoomer Feb 6, 2026
6cbec7a
less spam
zkzoomer Feb 6, 2026
d939728
bump contracts to head of draft-v31
zkzoomer Feb 6, 2026
d019d01
fix custom token case
zkzoomer Feb 6, 2026
b416553
partially restore en tests for realistic CI load
zkzoomer Feb 6, 2026
116710e
typo
zkzoomer Feb 6, 2026
b00fa56
skip tbm on interop tests
zkzoomer Feb 6, 2026
cebf7c7
reflect test change
zkzoomer Feb 6, 2026
0a2ba85
Revert "skip tbm on interop tests"
zkzoomer Feb 6, 2026
7a382c1
Revert "reflect test change"
zkzoomer Feb 6, 2026
17aba1a
try bump timeout
zkzoomer Feb 6, 2026
a9710b2
increase tries, await
zkzoomer Feb 6, 2026
1d2f199
try fix l2-erc20
zkzoomer Feb 6, 2026
acff727
fix migration tests
zkzoomer Feb 7, 2026
06afe54
try exec with mutex
zkzoomer Feb 7, 2026
ecd9a15
use mutex on tbm
zkzoomer Feb 7, 2026
58d290f
uncomment
zkzoomer Feb 7, 2026
a9c51d6
up tolerance
zkzoomer Feb 8, 2026
daf47d0
wait pq empty before migrate back test
zkzoomer Feb 8, 2026
8257798
make mutex global
zkzoomer Feb 8, 2026
d5d02c4
fixes
zkzoomer Feb 8, 2026
ab410f6
handle errors
zkzoomer Feb 8, 2026
9df3841
skip tbm on interop tests
zkzoomer Feb 6, 2026
e55d6b1
fund all interop test suites
zkzoomer Feb 8, 2026
83ffb37
bump mutex max retries to reflect increased load
zkzoomer Feb 8, 2026
bb9e37a
fix fund all interop test suites
zkzoomer Feb 9, 2026
b6d70d0
try resolve l1 test flakiness
zkzoomer Feb 9, 2026
aa813cb
wait for batches with prev sl to be committed
zkzoomer Feb 9, 2026
11fb3ce
feat: basic upgrade support changes (#4632)
kelemeno Feb 10, 2026
aba2860
chore(contracts): bump contracts for migration numbered events (#4645)
kelemeno Feb 12, 2026
c52a52a
test(ts-integration): fix balance-checker refund extraction (#4642)
kelemeno Feb 12, 2026
ea0f924
Use contracts from the "settlement layer trust assumptions" PR (#4655)
StanislavBreadless Feb 12, 2026
94f0e76
chore(contracts): easy vk upgrades (#4643)
kelemeno Feb 13, 2026
5a02ca3
non-interop audit fixes (#4658)
kelemeno Feb 17, 2026
b4893eb
Test mailbox deprecation PR (#4663)
StanislavBreadless Feb 17, 2026
b761875
move temp-sdk
zkzoomer Feb 20, 2026
f6987fa
move helpers
zkzoomer Feb 20, 2026
e093ffa
small changes for CI (#4670)
kelemeno Feb 20, 2026
7839dd1
feat: interop fees server and tests (#4612)
0xValera Feb 21, 2026
2caef10
fix: remove unneeded pausing logic (#4674)
zkzoomer Feb 21, 2026
2e1dfe8
bump contracts
zkzoomer Feb 22, 2026
4c617f7
lint
zkzoomer Feb 22, 2026
da46fed
extend tbm tests
zkzoomer Feb 22, 2026
e32c43a
Merge remote-tracking branch 'origin/sma/fix-migration-tests' into sm…
zkzoomer Feb 22, 2026
1b5e37e
bump contracts
zkzoomer Feb 22, 2026
7de45fb
register on finalize migration to gw
zkzoomer Feb 23, 2026
ec4386a
fixes
zkzoomer Feb 23, 2026
8a05290
Merge remote-tracking branch 'origin/draft-v31' into sma/extend-tbm-t…
zkzoomer Feb 23, 2026
e92cadb
bump contracts
zkzoomer Feb 23, 2026
cc98d39
fixes
zkzoomer Feb 23, 2026
21c3a7f
test fixes
zkzoomer Feb 23, 2026
6a9c353
bump zksync-ethers
zkzoomer Feb 23, 2026
0921d4c
fix l2 erc20 tests
zkzoomer Feb 23, 2026
52a5683
retry migration from
zkzoomer Feb 24, 2026
e3233e6
fix l2 erc20 tests II
zkzoomer Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion contracts
Submodule contracts updated 28 files
+266 −266 AllContractsHashes.json
+4 −4 configs/genesis/era/latest.json
+4 −4 configs/genesis/era/latest.toml
+2 −3 l1-contracts/contracts/bridge/asset-tracker/GWAssetTracker.sol
+2 −0 l1-contracts/contracts/common/Messaging.sol
+4 −0 l1-contracts/contracts/core/bridgehub/L1BridgehubErrors.sol
+21 −2 l1-contracts/contracts/core/chain-registration/ChainRegistrationSender.sol
+33 −18 l1-contracts/contracts/interop/InteropCenter.sol
+2 −2 l1-contracts/contracts/interop/InteropErrors.sol
+18 −2 l1-contracts/contracts/interop/InteropHandler.sol
+4 −0 l1-contracts/contracts/state-transition/ChainTypeManagerBase.sol
+5 −0 l1-contracts/contracts/state-transition/EraChainTypeManager.sol
+2 −0 l1-contracts/contracts/state-transition/IChainTypeManager.sol
+5 −0 l1-contracts/contracts/state-transition/ZKsyncOSChainTypeManager.sol
+16 −1 l1-contracts/deploy-scripts/ecosystem/RegisterOnAllChains.s.sol
+1 −1 l1-contracts/deploy-scripts/upgrade/default-upgrade/DefaultCTMUpgrade.s.sol
+1 −8 l1-contracts/deploy-scripts/utils/AddressIntrospector.sol
+196 −180 l1-contracts/selectors
+50 −0 l1-contracts/test/foundry/l1/integration/ChainRegistrationSender.t.sol
+10 −10 l1-contracts/test/foundry/l1/integration/l2-tests-abstract/L2AssetTrackerData.sol
+4 −0 ...tracts/test/foundry/l1/integration/l2-tests-abstract/L2InteropHandlerReentrancyRegressionTestAbstract.t.sol
+50 −1 l1-contracts/test/foundry/l1/integration/l2-tests-abstract/L2InteropHandlerTestAbstract.t.sol
+42 −1 l1-contracts/test/foundry/l1/integration/l2-tests-abstract/L2InteropLibraryBasicTestAbstract.t.sol
+2 −0 l1-contracts/test/foundry/l1/integration/l2-tests-abstract/L2InteropNativeTokenDifferentBaseTestAbstract.t.sol
+5 −2 l1-contracts/test/foundry/l1/integration/l2-tests-abstract/L2InteropTestUtils.sol
+3 −0 l1-contracts/test/foundry/l1/unit/concrete/Bridge/AssetTracker/GWAssetTrackerFees.t.sol
+3 −0 l1-contracts/test/foundry/l1/unit/concrete/Bridge/AssetTracker/ProcessLogsTestHelper.sol
+13 −0 l1-contracts/zkstack-out/IChainTypeManager.sol/IChainTypeManager.json
2 changes: 1 addition & 1 deletion core/tests/gateway-migration-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"node-fetch": "^2.6.1",
"ts-node": "^10.1.0",
"typescript": "^4.3.5",
"zksync-ethers": "https://github.com/zksync-sdk/zksync-ethers#di/avoid-zks-estimate-fee-build"
"zksync-ethers": "^6.21.1"
},
"dependencies": {
"prettier": "^2.3.2"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as zksync from 'zksync-ethers';
import * as ethers from 'ethers';
import { BytesLike } from 'ethers';
import { INTEROP_BUNDLE_ABI, MESSAGE_INCLUSION_PROOF_ABI, L2_INTEROP_CENTER_ADDRESS } from './constants';
import { INTEROP_BUNDLE_ABI, MESSAGE_INCLUSION_PROOF_ABI, L2_INTEROP_CENTER_ADDRESS } from 'utils/src/constants';

export interface Output {
output: any;
Expand All @@ -27,6 +27,53 @@ export enum BundleStatus {
Unbundled = 3
}

/**
* Formats an Ethereum address as ERC-7930 InteroperableAddress bytes
* Format: version (2 bytes) + chain type (2 bytes) + chain ref len (1 byte) + chain ref + addr len (1 byte) + address
*/
export function formatEvmV1Address(address: string, chainId?: bigint): string {
const version = '0001'; // ERC-7930 version
const chainType = '0000'; // EIP-155 chain type

let result = version + chainType;

if (chainId !== undefined) {
// Convert chainId to minimal bytes representation
const chainIdHex = chainId.toString(16);
const chainIdBytes = chainIdHex.length % 2 === 0 ? chainIdHex : '0' + chainIdHex;
const chainRefLen = (chainIdBytes.length / 2).toString(16).padStart(2, '0');
result += chainRefLen + chainIdBytes;
} else {
result += '00'; // Empty chain reference
}

result += '14'; // Address length (20 bytes)
result += address.slice(2); // Remove '0x' prefix

return '0x' + result;
}

/**
* Formats a chain ID as ERC-7930 InteroperableAddress bytes (without specific address)
* This is used for destination chain specification in sendBundle
*/
export function formatEvmV1Chain(chainId: bigint): string {
const version = '0001'; // ERC-7930 version
const chainType = '0000'; // EIP-155 chain type

let result = version + chainType;

// Convert chainId to minimal bytes representation
const chainIdHex = chainId.toString(16);
const chainIdBytes = chainIdHex.length % 2 === 0 ? chainIdHex : '0' + chainIdHex;
const chainRefLen = (chainIdBytes.length / 2).toString(16).padStart(2, '0');
result += chainRefLen + chainIdBytes;

result += '00'; // Empty address (0 length)

return '0x' + result;
}

export async function getInteropBundleData(
provider: zksync.Provider,
withdrawalHash: BytesLike,
Expand All @@ -51,14 +98,14 @@ export async function getInteropBundleData(
const decodedRequest = ethers.AbiCoder.defaultAbiCoder().decode([INTEROP_BUNDLE_ABI], '0x' + message.slice(4));

let calls = [];
for (let i = 0; i < decodedRequest[0][4].length; i++) {
for (let i = 0; i < decodedRequest[0][5].length; i++) {
calls.push({
version: decodedRequest[0][4][i][0],
shadowAccount: decodedRequest[0][4][i][1],
to: decodedRequest[0][4][i][2],
from: decodedRequest[0][4][i][3],
value: decodedRequest[0][4][i][4],
data: decodedRequest[0][4][i][5]
version: decodedRequest[0][5][i][0],
shadowAccount: decodedRequest[0][5][i][1],
to: decodedRequest[0][5][i][2],
from: decodedRequest[0][5][i][3],
value: decodedRequest[0][5][i][4],
data: decodedRequest[0][5][i][5]
});
}
// console.log(decodedRequest);
Expand All @@ -67,12 +114,13 @@ export async function getInteropBundleData(
version: decodedRequest[0][0],
sourceChainId: decodedRequest[0][1],
destinationChainId: decodedRequest[0][2],
interopBundleSalt: decodedRequest[0][3],
destinationBaseTokenAssetId: decodedRequest[0][3],
interopBundleSalt: decodedRequest[0][4],
calls: calls,
bundleAttributes: {
executionAddress: decodedRequest[0][5][0],
unbundlerAddress: decodedRequest[0][5][1],
useFixedFee: decodedRequest[0][5][2]
executionAddress: decodedRequest[0][6][0],
unbundlerAddress: decodedRequest[0][6][1],
useFixedFee: decodedRequest[0][6][2]
}
};
// console.log("response.proof", proof_fee)
Expand Down
Loading
Loading