From e66a1b4a6e65e56abcb486c8e04cd13480892a07 Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 10:07:47 -0700 Subject: [PATCH 1/9] chore: remove botanix network from mesh Signed-off-by: shankar --- devtools/config/networks.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/devtools/config/networks.ts b/devtools/config/networks.ts index e679d00..b5041aa 100644 --- a/devtools/config/networks.ts +++ b/devtools/config/networks.ts @@ -43,7 +43,6 @@ export const ExpansionNetworks = { EndpointId.BASE_V2_MAINNET, EndpointId.BERA_V2_MAINNET, EndpointId.BSC_V2_MAINNET, - EndpointId.BOTANIX_V2_MAINNET, EndpointId.ETHEREUM_V2_MAINNET, ] as EndpointId[], } From fb3aca9a95176ca89d14b0d74ee17a94b0539a53 Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:20:14 -0700 Subject: [PATCH 2/9] chore: script to check inflights Signed-off-by: shankar --- scripts/check-inflight-messages.ts | 166 +++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 scripts/check-inflight-messages.ts diff --git a/scripts/check-inflight-messages.ts b/scripts/check-inflight-messages.ts new file mode 100644 index 0000000..c4bcf5f --- /dev/null +++ b/scripts/check-inflight-messages.ts @@ -0,0 +1,166 @@ +#!/usr/bin/env node + +import fs from 'fs' +import path from 'path' + +import { EndpointId } from '@layerzerolabs/lz-definitions' + +// Standalone, no Hardhat context / RPC / private keys required — safe for anyone to run. +// Keep in sync with hardhat.config.ts's network -> eid map. +const NETWORK_TO_EID: Record = { + 'arbitrum-mainnet': EndpointId.ARBITRUM_V2_MAINNET, + 'base-mainnet': EndpointId.BASE_V2_MAINNET, + 'bera-mainnet': EndpointId.BERA_V2_MAINNET, + 'botanix-mainnet': EndpointId.BOTANIX_V2_MAINNET, + 'bsc-mainnet': EndpointId.BSC_V2_MAINNET, + 'ethereum-mainnet': EndpointId.ETHEREUM_V2_MAINNET, +} + +const SCAN_API_BASE = process.env.LZ_SCAN_API_URL || 'https://scan.layerzero-api.com/v1' +const PAGE_LIMIT = 100 + +// A message is "pending" if it hasn't reached a state where it's either been delivered or +// will never be delivered. PAYLOAD_STORED (DVN already committed, awaiting execution) and +// FAILED (execution attempted and reverted, may still be retryable) both count as pending: +// unpeering while a message sits in either of these states can strand it permanently, since +// delivery never re-checks the receive library or peer once a payload is stored. Everything +// else (DELIVERED, BLOCKED, APPLICATION_BURNED, APPLICATION_SKIPPED) is a terminal state. +const PENDING_STATUSES = new Set([ + 'INFLIGHT', + 'CONFIRMING', + 'PAYLOAD_STORED', + 'FAILED', + 'UNRESOLVABLE_COMMAND', + 'MALFORMED_COMMAND', +]) + +interface ScanMessage { + guid?: string + status: { name: string; message?: string } + created?: string + pathway?: { srcEid?: number; dstEid?: number } + source?: { tx?: { txHash?: string } } +} + +interface ScanResponse { + data?: ScanMessage[] + nextToken?: string +} + +function readDeployedContracts(network: string): { file: string; address: string }[] { + const dir = path.join(process.cwd(), 'deployments', network) + if (!fs.existsSync(dir)) { + throw new Error(`No deployments directory found for network '${network}' at ${dir}`) + } + return fs + .readdirSync(dir) + .filter((f) => /^(GlvToken|MarketToken)_(Adapter|OFT)_.+\.json$/.test(f)) + .map((file) => ({ + file, + address: JSON.parse(fs.readFileSync(path.join(dir, file), 'utf8')).address, + })) +} + +// Returns `complete: false` if the scan API's pagination broke before exhausting all pages. +// The messages collected up to that point are still returned, but the caller must not treat +// an incomplete fetch as grounds for declaring a pathway safe. +async function fetchAllMessagesForOApp( + eid: EndpointId, + address: string +): Promise<{ messages: ScanMessage[]; complete: boolean }> { + const results: ScanMessage[] = [] + let nextToken: string | undefined + let page = 0 + + do { + const url = new URL(`${SCAN_API_BASE}/messages/oapp/${eid}/${address}`) + url.searchParams.set('limit', String(PAGE_LIMIT)) + if (nextToken) url.searchParams.set('nextToken', nextToken) + + const res = await fetch(url.toString()) + if (!res.ok) { + // The scan API 404s (rather than returning an empty 200) when an OApp has no + // message history at all — a legitimate, common case for a quiet pathway. + if (page === 0) { + return { messages: [], complete: true } + } + console.warn( + `WARNING: pagination for ${address} stopped early (page ${page + 1}: ${res.status} ${res.statusText}) — ` + + `results for this contract may be incomplete` + ) + return { messages: results, complete: false } + } + + const body = (await res.json()) as ScanResponse + const data = body.data ?? [] + results.push(...data) + page++ + + // The scan API has been observed to return a non-null nextToken even on the last page + // (when `data.length < limit`); following that cursor 404s. A short page reliably means + // there's nothing more to fetch, so stop here rather than trusting the cursor's presence. + nextToken = data.length < PAGE_LIMIT ? undefined : body.nextToken + } while (nextToken) + + return { messages: results, complete: true } +} + +function parseArgs(argv: string[]): { targetNetwork: string } { + const idx = argv.indexOf('--target-network') + const targetNetwork = idx >= 0 ? argv[idx + 1] : undefined + if (!targetNetwork || !NETWORK_TO_EID[targetNetwork]) { + throw new Error(`--target-network is required and must be one of: ${Object.keys(NETWORK_TO_EID).join(', ')}`) + } + return { targetNetwork } +} + +async function main() { + const { targetNetwork } = parseArgs(process.argv.slice(2)) + const targetEid = NETWORK_TO_EID[targetNetwork] + + console.log(`Checking for pending messages on ${targetNetwork} (eid ${targetEid})...\n`) + + let anyPending = false + let anyIncomplete = false + + for (const { file, address } of readDeployedContracts(targetNetwork)) { + const { messages, complete } = await fetchAllMessagesForOApp(targetEid, address) + if (!complete) anyIncomplete = true + + const pending = messages.filter((m) => PENDING_STATUSES.has(m.status?.name)) + + if (pending.length === 0) { + console.log(`${file} | no pending messages`) + continue + } + + anyPending = true + for (const m of pending) { + const counterpartEid = m.pathway?.srcEid === targetEid ? m.pathway?.dstEid : m.pathway?.srcEid + console.log( + `${file} | eid ${targetEid} <-> eid ${counterpartEid ?? 'unknown'} | PENDING (${m.status?.name}) | ` + + `guid=${m.guid ?? 'unknown'} tx=${m.source?.tx?.txHash ?? 'unknown'} created=${m.created ?? 'unknown'}` + ) + } + } + + console.log() + if (anyPending) { + console.log('NOT SAFE to proceed — pending messages found on at least one pathway.') + process.exitCode = 1 + } else if (anyIncomplete) { + console.log( + 'INCONCLUSIVE — could not fully verify all pathways (see warnings above). Treat as NOT SAFE until re-checked.' + ) + process.exitCode = 1 + } else { + console.log('SAFE to proceed — no pending messages found on any pathway.') + } +} + +if (require.main === module) { + main().catch((error) => { + console.error(error) + process.exit(1) + }) +} From ade7d34f34b66866fb9dd18c010b9d05d1b11576 Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:20:38 -0700 Subject: [PATCH 3/9] feat: scripts to unwire Signed-off-by: shankar --- devtools/index.ts | 4 +- devtools/payloads/index.ts | 1 + devtools/payloads/to-safe-batch.ts | 133 +++++++++++++++++++++++++++++ devtools/wire/blocked-library.ts | 58 +++++++++++++ devtools/wire/index.ts | 2 + devtools/wire/unwire-generator.ts | 126 +++++++++++++++++++++++++++ devtools/wire/wire-generator.ts | 10 +-- 7 files changed, 327 insertions(+), 7 deletions(-) create mode 100644 devtools/payloads/index.ts create mode 100644 devtools/payloads/to-safe-batch.ts create mode 100644 devtools/wire/blocked-library.ts create mode 100644 devtools/wire/unwire-generator.ts diff --git a/devtools/index.ts b/devtools/index.ts index bf3d24f..c96850d 100644 --- a/devtools/index.ts +++ b/devtools/index.ts @@ -1,4 +1,6 @@ export * from './config' export * from './types' export * from './deploy' -export { generateWireConfig } from './wire' +export { generateWireConfig, generateUnwireConfig } from './wire' +export type { UnwirePhase } from './wire' +export * from './payloads' diff --git a/devtools/payloads/index.ts b/devtools/payloads/index.ts new file mode 100644 index 0000000..187b7f4 --- /dev/null +++ b/devtools/payloads/index.ts @@ -0,0 +1 @@ +export * from './to-safe-batch' diff --git a/devtools/payloads/to-safe-batch.ts b/devtools/payloads/to-safe-batch.ts new file mode 100644 index 0000000..dff5997 --- /dev/null +++ b/devtools/payloads/to-safe-batch.ts @@ -0,0 +1,133 @@ +import fs from 'fs' +import path from 'path' + +import { getNetworkNameForEid } from '@layerzerolabs/devtools-evm-hardhat' + +import { OwnershipTransfer } from '../config' + +import type { EndpointId } from '@layerzerolabs/lz-definitions' +import type { HardhatRuntimeEnvironment } from 'hardhat/types' + +// Matches the shape LayerZero's `lz:oapp:wire` task writes via `--output-filename` / +// `--generate-payloads` (a raw dump of `OmniTransaction[]`), which is not directly importable +// into Safe's Transaction Builder. +interface RawOmniTransaction { + point: { eid: EndpointId; address: string } + data: string + description?: string + value?: string | number +} + +interface SafeBatchTransaction { + to: string + value: string + data: string + contractMethod: null + contractInputsValues: null +} + +interface SafeBatchFile { + version: string + chainId: string + createdAt: number + meta: { + name: string + description: string + txBuilderVersion: string + createdFromSafeAddress?: string + } + transactions: SafeBatchTransaction[] +} + +function getNativeChainId(networkName: string): string { + const chainIdPath = path.join(process.cwd(), 'deployments', networkName, '.chainId') + if (!fs.existsSync(chainIdPath)) { + throw new Error(`No .chainId file found for network '${networkName}' at ${chainIdPath}`) + } + return fs.readFileSync(chainIdPath, 'utf8').trim() +} + +/** + * Groups raw OmniTransactions (as written by `lz:oapp:wire --generate-payloads`) by native + * chain id, producing one Gnosis Safe Transaction Builder batch per chain. Multiple input + * files' transactions can be concatenated by the caller before calling this (e.g. to combine + * a receive-block phase and an unpeer phase into a single atomic Safe batch). + */ +export function groupTransactionsByChain( + transactions: RawOmniTransaction[], + hre: HardhatRuntimeEnvironment, + meta: { name: string; description: string } +): Map { + const batches = new Map() + // Guards against duplicate input files (e.g. an --input glob matching more than one + // timestamped run of the same market pair/phase left over in payloads/) silently doubling + // up a call in the Safe batch. Two transactions with the same target contract and calldata + // are always the same intended change, so it's safe to keep only one. + const seenPerChain = new Map>() + let duplicatesDropped = 0 + + for (const tx of transactions) { + const networkName = getNetworkNameForEid(tx.point.eid, hre) + const chainId = getNativeChainId(networkName) + + const seen = seenPerChain.get(chainId) ?? new Set() + seenPerChain.set(chainId, seen) + const dedupeKey = `${tx.point.address.toLowerCase()}:${tx.data.toLowerCase()}` + if (seen.has(dedupeKey)) { + duplicatesDropped++ + continue + } + seen.add(dedupeKey) + + let batch = batches.get(chainId) + if (!batch) { + batch = { + version: '1.0', + chainId, + createdAt: Date.now(), + meta: { + name: meta.name, + description: meta.description, + txBuilderVersion: '1.16.5', + createdFromSafeAddress: OwnershipTransfer[tx.point.eid], + }, + transactions: [], + } + batches.set(chainId, batch) + } + + batch.transactions.push({ + to: tx.point.address, + value: String(tx.value ?? '0'), + data: tx.data, + contractMethod: null, + contractInputsValues: null, + }) + } + + if (duplicatesDropped > 0) { + console.warn( + `WARNING: dropped ${duplicatesDropped} duplicate transaction(s) (identical target + calldata) — ` + + `check your --input glob isn't matching multiple stale runs of the same market pair/phase in payloads/` + ) + } + + return batches +} + +export function writeSafeBatchFiles( + batches: Map, + outputDir: string, + filePrefix: string +): string[] { + fs.mkdirSync(outputDir, { recursive: true }) + const written: string[] = [] + + for (const [chainId, batch] of batches) { + const filePath = path.join(outputDir, `${filePrefix}-chain-${chainId}.json`) + fs.writeFileSync(filePath, JSON.stringify(batch, null, 2)) + written.push(filePath) + } + + return written +} diff --git a/devtools/wire/blocked-library.ts b/devtools/wire/blocked-library.ts new file mode 100644 index 0000000..db3edd4 --- /dev/null +++ b/devtools/wire/blocked-library.ts @@ -0,0 +1,58 @@ +import { METADATA_URL } from '@layerzerolabs/metadata-tools' + +import type { EndpointId } from '@layerzerolabs/lz-definitions' + +interface RawMetadataDeployment { + eid: string + chainKey: string + version: number + blockedMessageLib?: { address: string } +} + +interface RawMetadata { + [chainKey: string]: { deployments?: RawMetadataDeployment[] } +} + +let cachedMetadata: Promise | undefined + +async function fetchRawMetadata(): Promise { + if (!cachedMetadata) { + cachedMetadata = fetch(METADATA_URL).then((res) => { + if (!res.ok) { + throw new Error( + `Failed to fetch LayerZero metadata from ${METADATA_URL}: ${res.status} ${res.statusText}` + ) + } + return res.json() as Promise + }) + } + return cachedMetadata +} + +function findV2Deployment(eid: EndpointId, metadata: RawMetadata): RawMetadataDeployment { + const eidStr = eid.toString() + for (const chainKey in metadata) { + for (const deployment of metadata[chainKey].deployments ?? []) { + if (deployment.eid === eidStr && deployment.version === 2) { + return deployment + } + } + } + throw new Error(`Could not find a v2 LayerZero deployment for eid ${eid} in metadata from ${METADATA_URL}`) +} + +/** + * Every LayerZero V2 endpoint self-deploys and registers an immutable BlockedMessageLib + * (a SendAndReceive library whose fallback always reverts). Pointing an OApp's send or + * receive library at this address permanently blocks that direction of a pathway. + */ +export async function getBlockedLibraryAddress(eid: EndpointId): Promise { + const deployment = findV2Deployment(eid, await fetchRawMetadata()) + const address = deployment.blockedMessageLib?.address + if (!address) { + throw new Error( + `No blockedMessageLib found in LayerZero metadata for eid ${eid} (chainKey: ${deployment.chainKey})` + ) + } + return address +} diff --git a/devtools/wire/index.ts b/devtools/wire/index.ts index 8d4a9b9..a847753 100644 --- a/devtools/wire/index.ts +++ b/devtools/wire/index.ts @@ -1,2 +1,4 @@ export * from './wire-generator' export * from './config' +export * from './unwire-generator' +export * from './blocked-library' diff --git a/devtools/wire/unwire-generator.ts b/devtools/wire/unwire-generator.ts new file mode 100644 index 0000000..b556574 --- /dev/null +++ b/devtools/wire/unwire-generator.ts @@ -0,0 +1,126 @@ +import fs from 'fs' +import path from 'path' + +import { constants } from 'ethers' + +import { getNetworkNameForEid } from '@layerzerolabs/devtools-evm-hardhat' + +import { getDeployConfig, validateHubNetworksNotInExpansion } from '../deploy' +import { MarketPairConfig } from '../types' + +import { getBlockedLibraryAddress } from './blocked-library' +import { createContracts } from './wire-generator' + +import type { EndpointId } from '@layerzerolabs/lz-definitions' +import type { OAppOmniGraphHardhat, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat' + +/** + * The three stages used to remove a chain from the mesh, in order: + * 1. send-block: point sendLibrary at the BlockedMessageLib on both directions. + * Stops new messages without endangering anything already in flight. + * 2. (not a config phase) drain: wait until scan API shows no pending messages. + * 3. receive-block: point receiveLibraryConfig.receiveLibrary at the BlockedMessageLib. + * 4. unpeer: setPeer(eid, bytes32(0)) on both directions. + */ +export type UnwirePhase = 'send-block' | 'receive-block' | 'unpeer' + +export function hasDeploymentArtifact(networkName: string, contractName: string): boolean { + const artifactPath = path.join(process.cwd(), 'deployments', networkName, `${contractName}.json`) + return fs.existsSync(artifactPath) +} + +/** + * Generates a config graph that only touches the pathways between `targetEid` and every + * other network in the given market pair's mesh, setting only the config field(s) relevant + * to `phase`. Every other config axis (DVN/ULN config, enforced options) is left `undefined`, + * so the existing per-field configurators skip them, exactly as they do for any connection + * with an omitted field. + * + * Deliberately does not validate `targetEid` via `expansionNetworks` membership: this is + * meant to be used after the target has already been removed from `ExpansionNetworks` (to + * stop routine `lz:sdk:wire` runs from reverting the teardown mid-flight), so membership in + * that array can no longer be relied on. Deployment-artifact existence is the ground truth. + */ +export async function generateUnwireConfig( + contractType: 'GlvToken' | 'MarketToken', + targetEid: EndpointId, + phase: UnwirePhase, + marketPairKey?: string, + marketPairConfig?: MarketPairConfig +): Promise { + const config = marketPairConfig || (await getDeployConfig()).marketPairConfig + const key = marketPairKey || (await getDeployConfig()).marketPairKey + + validateHubNetworksNotInExpansion(config) + + const tokenConfig = contractType === 'GlvToken' ? config.GLV : config.GM + if (!tokenConfig) { + throw new Error(`${contractType === 'GlvToken' ? 'GLV' : 'GM'} token is not configured for market pair ${key}`) + } + + if (targetEid === tokenConfig.hubNetwork.eid) { + throw new Error(`Target EID ${targetEid} is the hub network for ${key}; hub removal is not supported`) + } + + const adapterContractName = `${contractType}_Adapter_${key}` + const oftContractName = `${contractType}_OFT_${key}` + const toPoint = (eid: EndpointId): OmniPointHardhat => ({ + eid, + contractName: tokenConfig.hubNetwork.eid === eid ? adapterContractName : oftContractName, + }) + + const targetNetworkName = getNetworkNameForEid(targetEid) + const targetContractName = tokenConfig.hubNetwork.eid === targetEid ? adapterContractName : oftContractName + if (!hasDeploymentArtifact(targetNetworkName, targetContractName)) { + throw new Error( + `No deployment artifact found for ${targetContractName} on ${targetNetworkName} (deployments/${targetNetworkName}/${targetContractName}.json); ` + + `this market pair/token type was never deployed to the target network` + ) + } + + const counterpartEids = [tokenConfig.hubNetwork.eid, ...tokenConfig.expansionNetworks].filter( + (eid) => eid !== targetEid + ) + + const targetPoint = toPoint(targetEid) + const counterpartPoints = counterpartEids.map(toPoint) + + const contracts = createContracts([targetPoint, ...counterpartPoints]) + + const blockedLibByEid = new Map() + if (phase !== 'unpeer') { + for (const eid of [targetEid, ...counterpartEids]) { + blockedLibByEid.set(eid, await getBlockedLibraryAddress(eid)) + } + } + + const getBlockedLib = (eid: EndpointId): string => { + const address = blockedLibByEid.get(eid) + if (!address) throw new Error(`No blocked library address resolved for eid ${eid}`) + return address + } + + const buildEdge = (from: OmniPointHardhat, to: OmniPointHardhat): OAppOmniGraphHardhat['connections'][number] => { + if (phase === 'unpeer') { + return { from, to: { eid: to.eid, address: constants.AddressZero }, config: {} } + } + if (phase === 'send-block') { + return { from, to, config: { sendLibrary: getBlockedLib(from.eid) } } + } + return { + from, + to, + config: { + receiveLibraryConfig: { receiveLibrary: getBlockedLib(from.eid), gracePeriod: BigInt(0) }, + }, + } + } + + const connections: OAppOmniGraphHardhat['connections'] = [] + for (const counterpart of counterpartPoints) { + connections.push(buildEdge(targetPoint, counterpart)) + connections.push(buildEdge(counterpart, targetPoint)) + } + + return { contracts, connections } +} diff --git a/devtools/wire/wire-generator.ts b/devtools/wire/wire-generator.ts index dcdec70..202f6a3 100644 --- a/devtools/wire/wire-generator.ts +++ b/devtools/wire/wire-generator.ts @@ -15,7 +15,7 @@ import type { OAppOmniGraphHardhat, OmniPointHardhat } from '@layerzerolabs/tool /** * Creates contract configurations for deployment */ -function createContracts(contractsToWire: OmniPointHardhat[]): OAppOmniGraphHardhat['contracts'] { +export function createContracts(contractsToWire: OmniPointHardhat[]): OAppOmniGraphHardhat['contracts'] { const skipDelegate = process.env.SKIP_DELEGATE === '1' return contractsToWire.map((contract) => ({ @@ -98,13 +98,11 @@ export async function generateWireConfig( // Determine token type and contract names const tokenConfig = contractType === 'GlvToken' ? config.GLV : config.GM - + if (!tokenConfig) { - throw new Error( - `${contractType === 'GlvToken' ? 'GLV' : 'GM'} token is not configured for this market pair` - ) + throw new Error(`${contractType === 'GlvToken' ? 'GLV' : 'GM'} token is not configured for this market pair`) } - + const adapterContractName = `${contractType}_Adapter_${key}` const oftContractName = `${contractType}_OFT_${key}` From 868a1cce550f3ca57d01561c336b634b2547fa89 Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:20:59 -0700 Subject: [PATCH 4/9] feat: tasks to unwire Signed-off-by: shankar --- tasks/index.ts | 2 + tasks/payloads-to-safe-wrapper.ts | 56 ++++++++ tasks/unwire-wrapper.ts | 225 ++++++++++++++++++++++++++++++ 3 files changed, 283 insertions(+) create mode 100644 tasks/payloads-to-safe-wrapper.ts create mode 100644 tasks/unwire-wrapper.ts diff --git a/tasks/index.ts b/tasks/index.ts index 0f0c0b2..7cb05da 100644 --- a/tasks/index.ts +++ b/tasks/index.ts @@ -2,6 +2,8 @@ export * from './validate-config' export * from './display-deployments' export * from './validate-deployments' export * from './wire-wrapper' +export * from './unwire-wrapper' +export * from './payloads-to-safe-wrapper' export * from './deploy-wrapper' export * from './ownership-wrapper' export * from './vape-send-tokens' diff --git a/tasks/payloads-to-safe-wrapper.ts b/tasks/payloads-to-safe-wrapper.ts new file mode 100644 index 0000000..5faeefd --- /dev/null +++ b/tasks/payloads-to-safe-wrapper.ts @@ -0,0 +1,56 @@ +import fs from 'fs' + +import { task } from 'hardhat/config' +import { HardhatRuntimeEnvironment } from 'hardhat/types' + +import { groupTransactionsByChain, writeSafeBatchFiles } from '../devtools/payloads' + +const glob = require('glob') + +interface PayloadsToSafeArgs { + input: string + name?: string + description?: string + outputDir?: string + prefix?: string +} + +const payloadsToSafe = task( + 'lz:sdk:payloads-to-safe', + 'Convert raw wire/unwire payload JSON files into per-chain Gnosis Safe Transaction Builder JSON' +) + .addParam( + 'input', + 'Glob or comma-separated list of raw payload JSON files (e.g. "payloads/unwire-payloads-send-block-*.json")' + ) + .addOptionalParam('name', 'Safe batch meta.name', 'LayerZero OApp configuration') + .addOptionalParam('description', 'Safe batch meta.description', '') + .addOptionalParam('outputDir', 'Directory to write -chain-*.json files into', 'payloads') + .addOptionalParam( + 'prefix', + "Filename prefix for the written batches, so multiple stages/runs don't overwrite each other (files are written as -chain-.json)", + 'safe-batch' + ) + .setAction(async (args: PayloadsToSafeArgs, hre: HardhatRuntimeEnvironment) => { + const patterns = args.input.split(',').map((p) => p.trim()) + const files = patterns.flatMap((pattern) => (glob.hasMagic(pattern) ? glob.sync(pattern) : [pattern])) + + if (files.length === 0) { + throw new Error(`No payload files matched input: ${args.input}`) + } + + console.log(`Reading ${files.length} payload file(s):`) + files.forEach((f: string) => console.log(` ${f}`)) + + const transactions = files.flatMap((f: string) => JSON.parse(fs.readFileSync(f, 'utf8'))) + + const batches = groupTransactionsByChain(transactions, hre, { + name: args.name || 'LayerZero OApp configuration', + description: args.description || '', + }) + + const written = writeSafeBatchFiles(batches, args.outputDir || 'payloads', args.prefix || 'safe-batch') + written.forEach((f) => console.log(`Wrote ${f}`)) + }) + +export { payloadsToSafe } diff --git a/tasks/unwire-wrapper.ts b/tasks/unwire-wrapper.ts new file mode 100644 index 0000000..4a98885 --- /dev/null +++ b/tasks/unwire-wrapper.ts @@ -0,0 +1,225 @@ +import fs from 'fs' +import path from 'path' + +import { task } from 'hardhat/config' +import { HardhatRuntimeEnvironment } from 'hardhat/types' + +import { getEidForNetworkName } from '@layerzerolabs/devtools-evm-hardhat' +import { createModuleLogger, setDefaultLogLevel } from '@layerzerolabs/io-devtools' + +import { hasDeploymentArtifact } from '../devtools/wire/unwire-generator' + +import type { UnwirePhase } from '../devtools/wire/unwire-generator' +import type { EndpointId } from '@layerzerolabs/lz-definitions' + +const PHASES: UnwirePhase[] = ['send-block', 'receive-block', 'unpeer'] + +interface UnwireArgs { + targetNetwork: string + phase: string + marketPair?: string + tokenType?: 'GM' | 'GLV' + signer?: string + generatePayloads?: boolean + dryRun?: boolean + assert?: boolean + ci?: boolean + logLevel?: string +} + +function contractNameFor(tokenType: 'GM' | 'GLV', marketPair: string): string { + const contractType = tokenType === 'GM' ? 'MarketToken' : 'GlvToken' + return `${contractType}_OFT_${marketPair}` +} + +// Determine which (marketPair, tokenType) combos are actually deployed on the target network. +// Deliberately checks deployment artifacts on disk rather than `ExpansionNetworks` membership, +// since the target network is expected to already have been removed from that config (see +// devtools/config/networks.ts) by the time this task is used for real. +async function resolveCombos( + targetNetwork: string, + marketPair: string | undefined, + tokenType: 'GM' | 'GLV' | undefined, + logger: ReturnType +): Promise<{ marketPair: string; tokenType: 'GM' | 'GLV' }[]> { + const { Tokens } = await import('../devtools/config/tokens') + const { getAvailableTokenTypes } = await import('../devtools/deploy/utils') + + const marketPairs = marketPair ? [marketPair] : Object.keys(Tokens) + const combos: { marketPair: string; tokenType: 'GM' | 'GLV' }[] = [] + + for (const pair of marketPairs) { + const availableTypes = tokenType ? [tokenType] : await getAvailableTokenTypes(pair) + for (const type of availableTypes) { + if (!Tokens[pair][type]) continue + if (hasDeploymentArtifact(targetNetwork, contractNameFor(type, pair))) { + combos.push({ marketPair: pair, tokenType: type }) + } else { + logger.verbose(`Skipping ${pair} (${type}) — no deployment on ${targetNetwork}`) + } + } + } + + return combos +} + +async function unwireTokenType( + hre: HardhatRuntimeEnvironment, + targetNetwork: string, + targetEid: EndpointId, + phase: UnwirePhase, + marketPair: string, + tokenType: 'GM' | 'GLV', + signer: string | undefined, + generatePayloads: boolean, + dryRun: boolean, + assert: boolean, + ci: boolean, + logLevel: string, + logger: ReturnType +): Promise { + let signerAddress: string + if (signer) { + signerAddress = signer + } else { + const { deployerGM, deployerGLV } = await hre.getNamedAccounts() + const autoSigner = tokenType === 'GM' ? deployerGM : deployerGLV + if (!autoSigner) { + throw new Error( + `No ${tokenType === 'GM' ? 'deployerGM' : 'deployerGLV'} account found in named accounts. Provide --signer flag or configure named accounts in hardhat.config.ts.` + ) + } + signerAddress = autoSigner + } + + logger.info(`Unwiring ${tokenType} contracts for ${marketPair} against ${targetNetwork} (phase: ${phase})`) + logger.info(`Signer: ${signerAddress}`) + + let outputFilename: string | undefined + if (generatePayloads) { + const payloadsDir = path.join(process.cwd(), 'payloads') + if (!fs.existsSync(payloadsDir)) { + fs.mkdirSync(payloadsDir, { recursive: true }) + logger.info(`Created payloads directory: ${payloadsDir}`) + } + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19) + outputFilename = path.join( + payloadsDir, + `unwire-payloads-${phase}-${targetNetwork}-${marketPair}-${tokenType}-${timestamp}.json` + ) + logger.info(`Payloads will be saved to: ${outputFilename}`) + } + + const oldEnvVars: Record = {} + + try { + oldEnvVars.MARKET_PAIR = process.env.MARKET_PAIR + oldEnvVars.TOKEN_TYPE = process.env.TOKEN_TYPE + oldEnvVars.CONTRACT_TYPE = process.env.CONTRACT_TYPE + oldEnvVars.TARGET_EID = process.env.TARGET_EID + oldEnvVars.PHASE = process.env.PHASE + oldEnvVars.SET_DELEGATE = process.env.SET_DELEGATE + + process.env.MARKET_PAIR = marketPair + process.env.TOKEN_TYPE = tokenType + process.env.CONTRACT_TYPE = tokenType === 'GM' ? 'MarketToken' : 'GlvToken' + process.env.TARGET_EID = String(targetEid) + process.env.PHASE = phase + // Ownership/delegate config must resolve the same way it does for normal wiring so the + // no-op ownership configurator sees a match — always delegate for the unwire flow. + process.env.SET_DELEGATE = '1' + + const wireArgs: Record = { + oappConfig: 'layerzero.unwire.config.ts', + signer: signer + ? { type: 'address', address: signerAddress } + : { type: 'name', name: tokenType === 'GM' ? 'deployerGM' : 'deployerGLV' }, + } + + if (outputFilename) wireArgs.outputFilename = outputFilename + if (dryRun) wireArgs.dryRun = true + if (assert) wireArgs.assert = true + if (ci) wireArgs.ci = true + + await hre.run('lz:oapp:wire', wireArgs) + + logger.info('✅ Unwire command completed successfully!') + } catch (error) { + logger.error('❌ Unwire command failed:', error) + throw error + } finally { + for (const [key, value] of Object.entries(oldEnvVars)) { + if (value === undefined) { + delete process.env[key] + } else { + process.env[key] = value + } + } + } +} + +const unwire = task('lz:sdk:unwire', 'Generate LayerZero unwire (chain-removal) transactions for a target network') + .addParam('targetNetwork', 'Hardhat network name of the chain being removed (e.g., botanix-mainnet)') + .addParam('phase', `Unwire phase: ${PHASES.join(' | ')}`) + .addOptionalParam( + 'marketPair', + 'Market pair to unwire (e.g., WETH_USDC). If not specified, all deployed pairs are processed.' + ) + .addOptionalParam('tokenType', 'Token type to unwire (GM or GLV). If not specified, wires both.') + .addOptionalParam('signer', 'Public key/address of signer (overrides automatic selection)') + .addOptionalParam('logLevel', 'Logging level (error, warn, info, verbose, debug, silly)', 'info') + .addFlag('generatePayloads', 'Generate transaction payloads and save to JSON file') + .addFlag('dryRun', 'Perform dry run without executing transactions') + .addFlag('assert', 'Assert mode - fail if transactions are required') + .addFlag('ci', 'Continuous integration mode (non-interactive)') + .setAction(async (taskArgs: UnwireArgs, hre: HardhatRuntimeEnvironment) => { + const { targetNetwork, phase, marketPair, tokenType, signer, generatePayloads, dryRun, assert, ci, logLevel } = + taskArgs + + setDefaultLogLevel(logLevel || 'info') + const logger = createModuleLogger('unwire', logLevel || 'info') + + if (!PHASES.includes(phase as UnwirePhase)) { + throw new Error(`Invalid phase: ${phase}. Must be one of: ${PHASES.join(', ')}`) + } + if (tokenType && !['GM', 'GLV'].includes(tokenType)) { + throw new Error(`Invalid token type: ${tokenType}. Must be GM or GLV`) + } + + const targetEid = getEidForNetworkName(targetNetwork, hre) + const combos = await resolveCombos(targetNetwork, marketPair, tokenType, logger) + + if (combos.length === 0) { + throw new Error(`No deployed market pairs found for ${targetNetwork} matching the given filters`) + } + + logger.info(`Unwiring ${combos.length} contract(s) for ${targetNetwork} (eid ${targetEid}), phase: ${phase}`) + + try { + for (const combo of combos) { + await unwireTokenType( + hre, + targetNetwork, + targetEid, + phase as UnwirePhase, + combo.marketPair, + combo.tokenType, + signer, + generatePayloads || false, + dryRun || false, + assert || false, + ci || false, + logLevel || 'info', + logger + ) + } + + logger.info('✅ All unwiring completed successfully!') + } catch (error) { + logger.error('❌ Unwiring failed:', error) + throw error + } + }) + +export { unwire } From e55a6bb2f2e765e68881636fd77226b25fbad54e Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:37:06 -0700 Subject: [PATCH 5/9] calldata to safe batch + docs Signed-off-by: shankar --- README.md | 158 +++++++++++++++++++++++++++++- layerzero.unwire.config.ts | 23 +++++ tasks/payloads-to-safe-wrapper.ts | 21 +++- 3 files changed, 197 insertions(+), 5 deletions(-) create mode 100644 layerzero.unwire.config.ts diff --git a/README.md b/README.md index 479e93d..1586928 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ This project provides a comprehensive deployment and configuration system for GM - [Configuration](#configuration) - [Deployment](#deployment) - [LayerZero Wiring](#layerzero-wiring) +- [Removing a Network from the Mesh](#removing-a-network-from-the-mesh) - [Enhanced Task Commands](#enhanced-task-commands) - [Validation](#validation) - [Project Structure](#project-structure) @@ -184,6 +185,110 @@ npx hardhat lz:sdk:wire \ - **Signer Detection**: Automatically uses the correct deployer (`deployerGM` or `deployerGLV`) from your Hardhat configuration - **Config Selection**: Automatically selects the correct LayerZero config file based on token type and stage +## Removing a Network from the Mesh + +**Important**: `lz:sdk:wire` only reconciles pathways that are explicitly present in the config file it's given — it never scans on-chain state for pathways that used to exist and resets them. Deleting a network from `ExpansionNetworks` stops *future* wire runs from touching it, but does **nothing on-chain** by itself. Actually disconnecting a network requires generating transactions that explicitly unset its send/receive libraries and peer, which is what the tooling below does. + +### Unwire Phases + +Removal is done in three phases, run in this order, with a drain check in between: + +1. **`send-block`**: points the send library at LayerZero's `BlockedMessageLib` (a library whose fallback always reverts) on both directions of every pathway between the target network and every other network in the mesh. Stops new messages from being created without affecting anything already in flight, since the receive path is left untouched. +2. **drain** (not a config phase — see [Checking for In-Flight Messages](#checking-for-in-flight-messages)): wait until there are no pending messages left on any pathway involving the target network. +3. **`receive-block`**: points the receive library at `BlockedMessageLib` on both directions. Safe to do only once the drain check confirms nothing is left in flight. +4. **`unpeer`**: calls `setPeer(eid, bytes32(0))` on both directions — the final, cleanest disconnection. + +`receive-block` and `unpeer` can be combined into a single Safe batch once the drain check passes (see below) — there's no reason to make them separate multisig executions, since nothing in a healthy mesh depends on receive-blocking landing before unpeering. + +### Unwire Command + +```bash +npx hardhat lz:sdk:unwire \ + --target-network \ + --phase \ + [--market-pair ] \ # omit to process every market pair deployed to the target network + [--token-type ] \ # omit to process both + [--signer
] \ + [--generate-payloads] \ + [--dry-run] \ + [--assert] \ + [--ci] + +# Examples +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --dry-run +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --generate-payloads --ci --signer 0x0000000000000000000000000000000000000001 +``` + +### Converting Payloads to a Gnosis Safe Batch + +`--generate-payloads` writes a raw dump of the transactions to `payloads/unwire-payloads-----.json`, which isn't directly importable into Safe's UI. Convert one or more of these files into a Gnosis Safe Transaction Builder batch (one JSON file per native chain ID) with: + +```bash +npx hardhat lz:sdk:payloads-to-safe \ + --input \ + [--name ] \ + [--description ] \ + [--output-dir payloads] \ + [--prefix safe-batch] # output files are written as -chain-.json + +# Example — combine every send-block payload for a network into per-chain Safe batches +npx hardhat lz:sdk:payloads-to-safe \ + --input "payloads/unwire-payloads-send-block-botanix-mainnet-*.json" \ + --name "Botanix removal - Stage 1: block send" \ + --prefix stage1-send-block + +# Example — combine receive-block and unpeer into one atomic batch per chain +npx hardhat lz:sdk:payloads-to-safe \ + --input "payloads/unwire-payloads-receive-block-botanix-mainnet-*.json,payloads/unwire-payloads-unpeer-botanix-mainnet-*.json" \ + --name "Botanix removal - Stage 3+4: block receive + unpeer" \ + --prefix stage3-4-receive-unpeer +``` + +Give each stage a distinct `--prefix` (default `safe-batch`) — otherwise running the command again for a later stage overwrites the earlier stage's `-chain-.json` files, since both would write to the same filenames. Transactions with an identical target contract and calldata are also automatically deduplicated (with a warning), so an `--input` glob accidentally matching more than one stale run of the same market pair/phase can't result in a duplicated call in the batch. Even so, run `rm -rf payloads/` before generating a fresh set to keep the directory (and your glob matches) predictable. + +### Checking for In-Flight Messages + +Standalone, read-only script — no Hardhat context, RPC URL, or private key required, safe for anyone (including the team executing the Safe transactions) to run at any time: + +```bash +pnpm ts-node scripts/check-inflight-messages.ts --target-network +``` + +It checks every deployed OApp contract on the target network's full message history against [LayerZero's scan API](https://scan.layerzero-api.com) for any message that isn't yet in a terminal state (`DELIVERED`, `BLOCKED`, `APPLICATION_BURNED`, `APPLICATION_SKIPPED`), and prints a final `SAFE to proceed` / `NOT SAFE to proceed` / `INCONCLUSIVE` verdict. Only proceed to `receive-block` once it reports `SAFE`. + +### Full Removal Runbook + +```bash +# Step 0 — remove the network from devtools/config/networks.ts's ExpansionNetworks +# immediately (not as final cleanup) so a routine lz:sdk:wire run for an unrelated +# market pair can't silently re-wire the network being removed while this is in progress. + +# Stage 1 — block send +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --generate-payloads --ci --signer 0x0000000000000000000000000000000000000001 +npx hardhat lz:sdk:payloads-to-safe --input "payloads/unwire-payloads-send-block-botanix-mainnet-*.json" --name "Botanix removal - Stage 1: block send" --prefix stage1-send-block +# -> hand payloads/stage1-send-block-chain-.json to the team for Safe execution, one per chain + +# GATE: wait until Stage 1 has executed on every chain. + +# Stage 2 — drain check (repeat until it reports SAFE) +pnpm ts-node scripts/check-inflight-messages.ts --target-network botanix-mainnet + +# Stage 3+4 — block receive + unpeer, combined into one Safe batch per chain +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase receive-block --generate-payloads --ci --signer 0x0000000000000000000000000000000000000001 +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase unpeer --generate-payloads --ci --signer 0x0000000000000000000000000000000000000001 +npx hardhat lz:sdk:payloads-to-safe \ + --input "payloads/unwire-payloads-receive-block-botanix-mainnet-*.json,payloads/unwire-payloads-unpeer-botanix-mainnet-*.json" \ + --name "Botanix removal - Stage 3+4: block receive + unpeer" \ + --prefix stage3-4-receive-unpeer +# -> hand the combined per-chain payloads/stage3-4-receive-unpeer-chain-.json batches to the team for Safe execution + +# Final cleanup — only after all of the above has executed on-chain: +# remove the network's remaining entries from BlockConfirmations/OwnershipTransfer in +# devtools/config/networks.ts, and its network block from hardhat.config.ts. +``` + +**To reverse or pause**: any stage is safe to leave in place indefinitely (nothing time-sensitive breaks by stopping after Stage 1, in particular). To fully restore a pathway, don't hand-craft a "set back to the real library" transaction — re-add the network to `ExpansionNetworks`/`OwnershipTransfer`/`BlockConfirmations` and re-run the normal `lz:sdk:wire` flow, which resolves the correct current ULN302 and DVN addresses dynamically rather than relying on a hardcoded value that could go stale. + ## Enhanced Task Commands The project includes enhanced Hardhat tasks that simplify deployment and wiring operations with better logging and streamlined workflows. @@ -235,6 +340,17 @@ npx hardhat lz:sdk:wire --market-pair WETH_USDC --generate-payloads npx hardhat lz:sdk:wire --market-pair WETH_USDC --dryRun ``` +### Unwiring Tasks + +See [Removing a Network from the Mesh](#removing-a-network-from-the-mesh) for the full staged process. + +```bash +# Examples +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --dry-run +npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --generate-payloads --ci +npx hardhat lz:sdk:payloads-to-safe --input "payloads/unwire-payloads-send-block-botanix-mainnet-*.json" --name "Stage 1: block send" --prefix stage1-send-block +``` + ### Ownership Transfer Tasks #### Transfer Ownership (Unified Command) @@ -386,9 +502,14 @@ npx hardhat lz:sdk:display-deployments │ │ ├── utils.ts # Deploy helper functions │ │ └── index.ts │ ├── wire/ # LayerZero wire generation -│ │ ├── wire-generator.ts # Wire configuration generator +│ │ ├── wire-generator.ts # Wire configuration generator (full mesh) +│ │ ├── unwire-generator.ts # Unwire configuration generator (send-block/receive-block/unpeer) +│ │ ├── blocked-library.ts # Resolves each chain's BlockedMessageLib address │ │ ├── config.ts # Wire-specific configs │ │ └── index.ts +│ ├── payloads/ # Raw payload -> Gnosis Safe batch conversion +│ │ ├── to-safe-batch.ts +│ │ └── index.ts │ ├── types.ts # TypeScript interfaces │ └── index.ts # Main devtools export ├── deploy/ # Hardhat deployment scripts @@ -397,14 +518,22 @@ npx hardhat lz:sdk:display-deployments ├── tasks/ # Enhanced Hardhat tasks (lz:sdk:* commands) │ ├── deploy-wrapper.ts # Enhanced deploy command │ ├── wire-wrapper.ts # Enhanced wire command +│ ├── unwire-wrapper.ts # Chain-removal wire command (send-block/receive-block/unpeer) +│ ├── payloads-to-safe-wrapper.ts # Converts raw payloads into Gnosis Safe Transaction Builder JSON │ ├── ownership-wrapper.ts # Enhanced ownership transfer command │ ├── validate-deployments.ts # Deployment validation with quoteSend testing │ ├── validate-config.ts # Configuration validation │ ├── display-deployments.ts # Deployment display utilities │ ├── vape-send-tokens.ts # Token sending utilities │ └── index.ts # Task exports +├── scripts/ +│ ├── check-inflight-messages.ts # Read-only scan-API check before unpeering a network +│ ├── standard-json-generator.ts +│ └── verify-contracts.ts ├── payloads/ # Generated transaction payloads (created automatically) -│ └── wire-payloads-*.json # Multisig transaction payloads +│ ├── wire-payloads-*.json # Raw multisig transaction payloads (wire/unwire) +│ ├── unwire-payloads-*.json +│ └── safe-batch-chain-*.json # Gnosis Safe Transaction Builder batches, one per chain ├── deployments/ # Hardhat deployment artifacts │ ├── arbitrum-mainnet/ # Network-specific deployments │ ├── base-mainnet/ @@ -413,6 +542,7 @@ npx hardhat lz:sdk:display-deployments ├── layerzero.gm.testnet.config.ts # GM testnet LayerZero configuration ├── layerzero.glv.mainnet.config.ts # GLV mainnet LayerZero configuration ├── layerzero.glv.testnet.config.ts # GLV testnet LayerZero configuration +├── layerzero.unwire.config.ts # Chain-removal LayerZero configuration └── hardhat.config.ts # Hardhat configuration with named accounts ``` @@ -578,6 +708,29 @@ npx hardhat lz:sdk:deploy --stage mainnet --market-pair WETH_USDC npx hardhat lz:sdk:wire --market-pair WETH_USDC ``` +### Remove Network + +See [Removing a Network from the Mesh](#removing-a-network-from-the-mesh) for the full staged runbook — summarized: + +```bash +# 1. Remove the network from ExpansionNetworks in devtools/config/networks.ts + +# 2. Stage 1: block send, then hand the Safe batch to the team for execution +npx hardhat lz:sdk:unwire --target-network --phase send-block --generate-payloads --ci +npx hardhat lz:sdk:payloads-to-safe --input "payloads/unwire-payloads-send-block--*.json" --name "Stage 1" --prefix stage1-send-block + +# 3. Confirm nothing is left in flight (repeat until it reports SAFE) +pnpm ts-node scripts/check-inflight-messages.ts --target-network + +# 4. Stage 3+4: block receive + unpeer, combined into one Safe batch, then execute +npx hardhat lz:sdk:unwire --target-network --phase receive-block --generate-payloads --ci +npx hardhat lz:sdk:unwire --target-network --phase unpeer --generate-payloads --ci +npx hardhat lz:sdk:payloads-to-safe --input "payloads/unwire-payloads-receive-block--*.json,payloads/unwire-payloads-unpeer--*.json" --name "Stage 3+4" --prefix stage3-4-receive-unpeer + +# 5. Once everything above has executed on-chain, remove the network's remaining +# entries from devtools/config/networks.ts and hardhat.config.ts +``` + ### Verify Contracts Two methods to verify contracts are available. @@ -614,6 +767,7 @@ pnpm ts-node scripts/verify-contracts.ts botanix-mainnet --force 4. **Hub in Expansion Networks**: Hub network EID found in expansion networks (validation error) 5. **Wire Conflicts**: Ensure hub networks aren't in expansion network lists 6. **Signer Not Found**: Ensure `deployerGM` and `deployerGLV` are configured in your Hardhat named accounts +7. **Unexpected transaction count in a Safe batch**: `lz:sdk:unwire --generate-payloads` writes a new timestamped file every run and never deletes old ones. If `lz:sdk:payloads-to-safe --input`'s glob matches more than one run of the same market pair/phase, duplicate transactions are automatically dropped (with a warning), but it's still worth running `rm -rf payloads/` before generating a fresh set so your glob only ever matches what you intend ### Validation Error Example diff --git a/layerzero.unwire.config.ts b/layerzero.unwire.config.ts new file mode 100644 index 0000000..f92f0f7 --- /dev/null +++ b/layerzero.unwire.config.ts @@ -0,0 +1,23 @@ +import { EndpointId } from '@layerzerolabs/lz-definitions' + +import { UnwirePhase, generateUnwireConfig } from './devtools' + +export default async function () { + const contractType = process.env.CONTRACT_TYPE as 'MarketToken' | 'GlvToken' | undefined + const targetEid = process.env.TARGET_EID ? (Number(process.env.TARGET_EID) as EndpointId) : undefined + const phase = process.env.PHASE as UnwirePhase | undefined + + if (!contractType || !targetEid || !phase) { + throw new Error( + 'layerzero.unwire.config.ts requires CONTRACT_TYPE, TARGET_EID and PHASE environment variables ' + + '(set automatically by `npx hardhat lz:sdk:unwire`)' + ) + } + + const unwireConfig = await generateUnwireConfig(contractType, targetEid, phase) + + return { + contracts: unwireConfig.contracts, + connections: unwireConfig.connections, + } +} diff --git a/tasks/payloads-to-safe-wrapper.ts b/tasks/payloads-to-safe-wrapper.ts index 5faeefd..04d70d6 100644 --- a/tasks/payloads-to-safe-wrapper.ts +++ b/tasks/payloads-to-safe-wrapper.ts @@ -33,12 +33,27 @@ const payloadsToSafe = task( ) .setAction(async (args: PayloadsToSafeArgs, hre: HardhatRuntimeEnvironment) => { const patterns = args.input.split(',').map((p) => p.trim()) - const files = patterns.flatMap((pattern) => (glob.hasMagic(pattern) ? glob.sync(pattern) : [pattern])) - if (files.length === 0) { - throw new Error(`No payload files matched input: ${args.input}`) + // Validated per-pattern, not just on the combined total: a `--input` with multiple + // comma-separated globs (e.g. combining receive-block + unpeer into one batch) must + // not silently drop one phase's transactions just because that glob happened to match + // nothing (e.g. because that phase's payloads were never generated). + const filesByPattern = patterns.map((pattern) => ({ + pattern, + files: glob.hasMagic(pattern) ? (glob.sync(pattern) as string[]) : [pattern], + })) + + const emptyPatterns = filesByPattern.filter(({ files }) => files.length === 0) + if (emptyPatterns.length > 0) { + throw new Error( + `The following --input pattern(s) matched no files:\n` + + emptyPatterns.map(({ pattern }) => ` ${pattern}`).join('\n') + + `\nGenerate the missing payloads first (or fix the glob) — refusing to write a Safe batch that's silently missing part of what you asked for.` + ) } + const files = filesByPattern.flatMap(({ files }) => files) + console.log(`Reading ${files.length} payload file(s):`) files.forEach((f: string) => console.log(` ${f}`)) From 2de8e97066afffe4c3da599218b94eefde552e6b Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:37:21 -0700 Subject: [PATCH 6/9] chore: raw payloads (generated) Signed-off-by: shankar --- ...ainnet-BTC_BTC-GM-2026-07-03T18-30-48.json | 82 +++++++++++++++++++ ...net-WBTC_USDC-GLV-2026-07-03T18-30-44.json | 82 +++++++++++++++++++ ...nnet-WBTC_USDC-GM-2026-07-03T18-30-42.json | 82 +++++++++++++++++++ ...net-WETH_USDC-GLV-2026-07-03T18-30-39.json | 82 +++++++++++++++++++ ...nnet-WETH_USDC-GM-2026-07-03T18-30-37.json | 82 +++++++++++++++++++ ...nnet-WETH_WETH-GM-2026-07-03T18-30-46.json | 82 +++++++++++++++++++ ...ainnet-BTC_BTC-GM-2026-07-03T18-30-24.json | 82 +++++++++++++++++++ ...net-WBTC_USDC-GLV-2026-07-03T18-30-18.json | 82 +++++++++++++++++++ ...nnet-WBTC_USDC-GM-2026-07-03T18-30-16.json | 82 +++++++++++++++++++ ...net-WETH_USDC-GLV-2026-07-03T18-30-13.json | 82 +++++++++++++++++++ ...nnet-WETH_USDC-GM-2026-07-03T18-30-08.json | 82 +++++++++++++++++++ ...nnet-WETH_WETH-GM-2026-07-03T18-30-21.json | 82 +++++++++++++++++++ ...ainnet-BTC_BTC-GM-2026-07-03T18-31-01.json | 82 +++++++++++++++++++ ...net-WBTC_USDC-GLV-2026-07-03T18-30-57.json | 82 +++++++++++++++++++ ...nnet-WBTC_USDC-GM-2026-07-03T18-30-56.json | 82 +++++++++++++++++++ ...net-WETH_USDC-GLV-2026-07-03T18-30-54.json | 82 +++++++++++++++++++ ...nnet-WETH_USDC-GM-2026-07-03T18-30-52.json | 82 +++++++++++++++++++ ...nnet-WETH_WETH-GM-2026-07-03T18-30-59.json | 82 +++++++++++++++++++ 18 files changed, 1476 insertions(+) create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-48.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-44.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-42.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-39.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-37.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-46.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-24.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-18.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-16.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-13.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-08.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-21.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-31-01.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-57.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-56.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-54.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-52.json create mode 100644 payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-59.json diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-48.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-48.json new file mode 100644 index 0000000..00e8ee5 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-48.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000661e1fad17124471a59c37e9c4590ba809599f3000000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad5764900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000005e922d32c7278f6c5621a016c03055c54c97d27b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000a2d2e356c64de9b0a5b4cfdff2b4c82c0ec3d7a200000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-44.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-44.json new file mode 100644 index 0000000..c502174 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-44.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000027ef981e6fcb274a6c5c75983725d265fd3dcdac00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-42.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-42.json new file mode 100644 index 0000000..175ed8c --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-42.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-39.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-39.json new file mode 100644 index 0000000..0acb8fd --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-39.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-37.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-37.json new file mode 100644 index 0000000..20ffcf6 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-37.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-46.json b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-46.json new file mode 100644 index 0000000..3d8030c --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-receive-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-46.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000000110424a21d5df818f4a789e5d9d9141a4e29a3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b51361815900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d71500000000000000000000000047dff0cbe239c02479c5944b9f4f3ade8a21245700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a with grace period 0" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x6a14d7150000000000000000000000000b335e18ab68ccd2e8946a6e785d8be65f41310300000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting receive library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862 with grace period 0" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-24.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-24.json new file mode 100644 index 0000000..7d416b4 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-30-24.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000661e1fad17124471a59c37e9c4590ba809599f3000000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad5764900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000005e922d32c7278f6c5621a016c03055c54c97d27b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000a2d2e356c64de9b0a5b4cfdff2b4c82c0ec3d7a200000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-18.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-18.json new file mode 100644 index 0000000..d2d5ecf --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-18.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000027ef981e6fcb274a6c5c75983725d265fd3dcdac00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-16.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-16.json new file mode 100644 index 0000000..ba794c3 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-16.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-13.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-13.json new file mode 100644 index 0000000..dac9621 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-13.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-08.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-08.json new file mode 100644 index 0000000..b9fcf5d --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-08.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-21.json b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-21.json new file mode 100644 index 0000000..67541ef --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-send-block-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-21.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ARBITRUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30110, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000000110424a21d5df818f4a789e5d9d9141a4e29a3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b51361815900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BASE_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30184, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff3000000000000000000000000047dff0cbe239c02479c5944b9f4f3ade8a21245700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BERA_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30362, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for BSC_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30102, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + }, + { + "point": { + "eid": 30376, + "address": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B" + }, + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "description": "Setting send library for ETHEREUM_V2_MAINNET to 0xc1ce56b2099ca68720592583c7984cab4b6d7e7a" + }, + { + "point": { + "eid": 30101, + "address": "0x1a44076050125825900e736c501f859c50fE728c" + }, + "data": "0x9535ff300000000000000000000000000b335e18ab68ccd2e8946a6e785d8be65f41310300000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "description": "Setting send library for BOTANIX_V2_MAINNET to 0x1ccbf0db9c192d969de57e25b3ff09a25bb1d862" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-31-01.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-31-01.json new file mode 100644 index 0000000..f95edee --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-BTC_BTC-GM-2026-07-03T18-31-01.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x9717D91D6943546A990Ae509a46655BA4Ad57649" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0x661E1faD17124471a59c37E9c4590BA809599f30" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9717D91D6943546A990Ae509a46655BA4Ad57649" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0x5E922D32c7278f6c5621a016c03055c54C97D27b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9717D91D6943546A990Ae509a46655BA4Ad57649" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0xa2d2e356c64dE9b0a5b4CFDfF2B4c82C0eC3D7A2" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9717D91D6943546A990Ae509a46655BA4Ad57649" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0x2e6Bf9Bdd2A7872bDae170C13F34d64692f842C1" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9717D91D6943546A990Ae509a46655BA4Ad57649" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0x5Ece4d3F43D3BD8cBffc1d2CE851E7605D403D3C" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-57.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-57.json new file mode 100644 index 0000000..491966f --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GLV-2026-07-03T18-30-57.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0x27Ef981E6fcB274a6C5C75983725d265Fd3dCdac" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0x3c21894169D669C5f0767c1289E71Ec8d6132C0F" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0x3c21894169D669C5f0767c1289E71Ec8d6132C0F" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-56.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-56.json new file mode 100644 index 0000000..f1e797e --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WBTC_USDC-GM-2026-07-03T18-30-56.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-54.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-54.json new file mode 100644 index 0000000..37846e3 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GLV-2026-07-03T18-30-54.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0x0BC5aB50Fd581b34681A9be180179b1Ef0b238c7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0x0BC5aB50Fd581b34681A9be180179b1Ef0b238c7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-52.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-52.json new file mode 100644 index 0000000..c0f4a6e --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_USDC-GM-2026-07-03T18-30-52.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file diff --git a/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-59.json b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-59.json new file mode 100644 index 0000000..469e9f4 --- /dev/null +++ b/payloads/unwire-botanix/raw/unwire-payloads-unpeer-botanix-mainnet-WETH_WETH-GM-2026-07-03T18-30-59.json @@ -0,0 +1,82 @@ +[ + { + "point": { + "eid": 30376, + "address": "0x9f260cf66B3240e75C1bEe51a65936b513618159" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30110 (ARBITRUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30110, + "address": "0x0110424A21D5DF818f4a789E5d9d9141a4E29A3C" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9f260cf66B3240e75C1bEe51a65936b513618159" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30184 (BASE_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30184, + "address": "0x47dFf0cbE239c02479C5944b9F4F3Ade8a212457" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9f260cf66B3240e75C1bEe51a65936b513618159" + }, + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30362 (BERA_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30362, + "address": "0x2e6Bf9Bdd2A7872bDae170C13F34d64692f842C1" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9f260cf66B3240e75C1bEe51a65936b513618159" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30102 (BSC_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30102, + "address": "0x5Ece4d3F43D3BD8cBffc1d2CE851E7605D403D3C" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30376, + "address": "0x9f260cf66B3240e75C1bEe51a65936b513618159" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30101 (ETHEREUM_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "point": { + "eid": 30101, + "address": "0x0B335e18Ab68Ccd2E8946A6E785D8bE65F413103" + }, + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "description": "Setting peer for eid 30376 (BOTANIX_V2_MAINNET) to address 0x0000000000000000000000000000000000000000000000000000000000000000" + } +] \ No newline at end of file From 142eba6ca7436d5c5b2aab916f7e9bfe62091992 Mon Sep 17 00:00:00 2001 From: shankar Date: Fri, 3 Jul 2026 11:37:35 -0700 Subject: [PATCH 7/9] chore: safe batch payloads (generated) Signed-off-by: shankar --- .../multisig/stage1-send-block-chain-1.json | 55 +++ .../stage1-send-block-chain-3637.json | 223 +++++++++ .../stage1-send-block-chain-42161.json | 55 +++ .../multisig/stage1-send-block-chain-56.json | 55 +++ .../stage1-send-block-chain-80094.json | 55 +++ .../stage1-send-block-chain-8453.json | 55 +++ .../stage3-4-receive-unpeer-chain-1.json | 97 ++++ .../stage3-4-receive-unpeer-chain-3637.json | 433 ++++++++++++++++++ .../stage3-4-receive-unpeer-chain-42161.json | 97 ++++ .../stage3-4-receive-unpeer-chain-56.json | 97 ++++ .../stage3-4-receive-unpeer-chain-80094.json | 97 ++++ .../stage3-4-receive-unpeer-chain-8453.json | 97 ++++ 12 files changed, 1416 insertions(+) create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-1.json create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-3637.json create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-42161.json create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-56.json create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-80094.json create mode 100644 payloads/unwire-botanix/multisig/stage1-send-block-chain-8453.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-1.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-3637.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-42161.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-56.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-80094.json create mode 100644 payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-8453.json diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-1.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-1.json new file mode 100644 index 0000000..cae7fb6 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-1.json @@ -0,0 +1,55 @@ +{ + "version": "1.0", + "chainId": "1", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000000b335e18ab68ccd2e8946a6e785d8be65f41310300000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-3637.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-3637.json new file mode 100644 index 0000000..0f39b71 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-3637.json @@ -0,0 +1,223 @@ +{ + "version": "1.0", + "chainId": "3637", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x656fa39BdB5984b477FA6aB443195D72D1Accc1c" + }, + "transactions": [ + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b51361815900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad5764900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-42161.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-42161.json new file mode 100644 index 0000000..882442d --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-42161.json @@ -0,0 +1,55 @@ +{ + "version": "1.0", + "chainId": "42161", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000000110424a21d5df818f4a789e5d9d9141a4e29a3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000027ef981e6fcb274a6c5c75983725d265fd3dcdac00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000661e1fad17124471a59c37e9c4590ba809599f3000000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-56.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-56.json new file mode 100644 index 0000000..874c316 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-56.json @@ -0,0 +1,55 @@ +{ + "version": "1.0", + "chainId": "56", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-80094.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-80094.json new file mode 100644 index 0000000..89255dd --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-80094.json @@ -0,0 +1,55 @@ +{ + "version": "1.0", + "chainId": "80094", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x9535ff30000000000000000000000000a2d2e356c64de9b0a5b4cfdff2b4c82c0ec3d7a200000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage1-send-block-chain-8453.json b/payloads/unwire-botanix/multisig/stage1-send-block-chain-8453.json new file mode 100644 index 0000000..b386060 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage1-send-block-chain-8453.json @@ -0,0 +1,55 @@ +{ + "version": "1.0", + "chainId": "8453", + "createdAt": 1783103429167, + "meta": { + "name": "Botanix removal - Stage 1: block send", + "description": "Points sendLibrary at BlockedMessageLib on all Botanix<->X pathways, both directions. Stops new messages; safe with anything already in flight.", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000047dff0cbe239c02479c5944b9f4f3ade8a21245700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff3000000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff30000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x9535ff300000000000000000000000005e922d32c7278f6c5621a016c03055c54c97d27b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d862", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-1.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-1.json new file mode 100644 index 0000000..8034c57 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-1.json @@ -0,0 +1,97 @@ +{ + "version": "1.0", + "chainId": "1", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000000b335e18ab68ccd2e8946a6e785d8be65f41310300000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x0B335e18Ab68Ccd2E8946A6E785D8bE65F413103", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x0BC5aB50Fd581b34681A9be180179b1Ef0b238c7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x3c21894169D669C5f0767c1289E71Ec8d6132C0F", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x5Ece4d3F43D3BD8cBffc1d2CE851E7605D403D3C", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-3637.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-3637.json new file mode 100644 index 0000000..5ef5f0c --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-3637.json @@ -0,0 +1,433 @@ +{ + "version": "1.0", + "chainId": "3637", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x656fa39BdB5984b477FA6aB443195D72D1Accc1c" + }, + "transactions": [ + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b51361815900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b513618159000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009f260cf66b3240e75c1bee51a65936b5136181590000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a7000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a70000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb6000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb60000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e21000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e210000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b0000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000759e000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad5764900000000000000000000000000000000000000000000000000000000000075e8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad57649000000000000000000000000000000000000000000000000000000000000769a000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007596000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000009717d91d6943546a990ae509a46655ba4ad576490000000000000000000000000000000000000000000000000000000000007595000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9f260cf66B3240e75C1bEe51a65936b513618159", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9f260cf66B3240e75C1bEe51a65936b513618159", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9f260cf66B3240e75C1bEe51a65936b513618159", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9f260cf66B3240e75C1bEe51a65936b513618159", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9f260cf66B3240e75C1bEe51a65936b513618159", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9717D91D6943546A990Ae509a46655BA4Ad57649", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000759e0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9717D91D6943546A990Ae509a46655BA4Ad57649", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075e80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9717D91D6943546A990Ae509a46655BA4Ad57649", + "value": "0", + "data": "0x3400288b000000000000000000000000000000000000000000000000000000000000769a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9717D91D6943546A990Ae509a46655BA4Ad57649", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075960000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x9717D91D6943546A990Ae509a46655BA4Ad57649", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000075950000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-42161.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-42161.json new file mode 100644 index 0000000..9483737 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-42161.json @@ -0,0 +1,97 @@ +{ + "version": "1.0", + "chainId": "42161", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000000110424a21d5df818f4a789e5d9d9141a4e29a3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000027ef981e6fcb274a6c5c75983725d265fd3dcdac00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000661e1fad17124471a59c37e9c4590ba809599f3000000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x0110424A21D5DF818f4a789E5d9d9141a4E29A3C", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x27Ef981E6fcB274a6C5C75983725d265Fd3dCdac", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x661E1faD17124471a59c37E9c4590BA809599f30", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-56.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-56.json new file mode 100644 index 0000000..987048a --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-56.json @@ -0,0 +1,97 @@ +{ + "version": "1.0", + "chainId": "56", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000005ece4d3f43d3bd8cbffc1d2ce851e7605d403d3c00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000000bc5ab50fd581b34681a9be180179b1ef0b238c700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000003c21894169d669c5f0767c1289e71ec8d6132c0f00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x5Ece4d3F43D3BD8cBffc1d2CE851E7605D403D3C", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x0BC5aB50Fd581b34681A9be180179b1Ef0b238c7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x3c21894169D669C5f0767c1289E71Ec8d6132C0F", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x2e6Bf9Bdd2A7872bDae170C13F34d64692f842C1", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-80094.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-80094.json new file mode 100644 index 0000000..4d4b08b --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-80094.json @@ -0,0 +1,97 @@ +{ + "version": "1.0", + "chainId": "80094", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000002e6bf9bdd2a7872bdae170c13f34d64692f842c100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B", + "value": "0", + "data": "0x6a14d715000000000000000000000000a2d2e356c64de9b0a5b4cfdff2b4c82c0ec3d7a200000000000000000000000000000000000000000000000000000000000076a8000000000000000000000000c1ce56b2099ca68720592583c7984cab4b6d7e7a0000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x2e6Bf9Bdd2A7872bDae170C13F34d64692f842C1", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xa2d2e356c64dE9b0a5b4CFDfF2B4c82C0eC3D7A2", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file diff --git a/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-8453.json b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-8453.json new file mode 100644 index 0000000..88866c1 --- /dev/null +++ b/payloads/unwire-botanix/multisig/stage3-4-receive-unpeer-chain-8453.json @@ -0,0 +1,97 @@ +{ + "version": "1.0", + "chainId": "8453", + "createdAt": 1783103464674, + "meta": { + "name": "Botanix removal - Stage 3+4: block receive + unpeer", + "description": "", + "txBuilderVersion": "1.16.5", + "createdFromSafeAddress": "0x8D1d2e24eC641eDC6a1ebe0F3aE7af0EBC573e0D" + }, + "transactions": [ + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000047dff0cbe239c02479c5944b9f4f3ade8a21245700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000fcff5015627b8ce9ceaa7f5b38a6679f65fe39a700000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000008c92eae643040ff0fb65b423433001c176cb0bb600000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d71500000000000000000000000091dd54aa8ba9dfde8b956cfb709a7c418f870e2100000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d715000000000000000000000000bcb170fedda90cd7593f016dfdaba032ca1f222b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x1a44076050125825900e736c501f859c50fE728c", + "value": "0", + "data": "0x6a14d7150000000000000000000000005e922d32c7278f6c5621a016c03055c54c97d27b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000001ccbf0db9c192d969de57e25b3ff09a25bb1d8620000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x47dFf0cbE239c02479C5944b9F4F3Ade8a212457", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xfcff5015627B8ce9CeAA7F5b38a6679F65fE39a7", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x8c92eaE643040fF0Fb65B423433001c176cB0bb6", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x91dd54AA8BA9Dfde8b956Cfb709a7c418f870e21", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0xbCB170fEDDa90cd7593f016DFdabA032Ca1F222b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + }, + { + "to": "0x5E922D32c7278f6c5621a016c03055c54C97D27b", + "value": "0", + "data": "0x3400288b00000000000000000000000000000000000000000000000000000000000076a80000000000000000000000000000000000000000000000000000000000000000", + "contractMethod": null, + "contractInputsValues": null + } + ] +} \ No newline at end of file From 5efcb426acc8b2ffed8cff182ddaee7ca42b8ca6 Mon Sep 17 00:00:00 2001 From: shankar Date: Mon, 6 Jul 2026 10:20:37 -0700 Subject: [PATCH 8/9] chore: add wired networks back to wire generator and keep unwire as a script Signed-off-by: shankar --- devtools/config/networks.ts | 24 ++++++++++++++++++++++++ devtools/wire/unwire-generator.ts | 17 +++++++++++++---- devtools/wire/wire-generator.ts | 9 ++++++++- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/devtools/config/networks.ts b/devtools/config/networks.ts index b5041aa..c6a458c 100644 --- a/devtools/config/networks.ts +++ b/devtools/config/networks.ts @@ -36,6 +36,13 @@ export const OwnershipTransfer: Partial> = { /** * Expansion network configurations + * + * This list is kept as the historical record of every network that has ever been part of the + * mesh, including ones currently being (or already) decommissioned — see `UnwiredNetworks` + * below. Do not remove a network from here to take it out of the mesh; add its eid to + * `UnwiredNetworks` instead, which `generateWireConfig` excludes when building pathways. This + * keeps re-wiring a decommissioned network later a one-line change (removing it from + * `UnwiredNetworks`) rather than having to reconstruct what was deleted. */ export const ExpansionNetworks = { testnet: [EndpointId.SEPOLIA_V2_TESTNET] as EndpointId[], @@ -43,6 +50,23 @@ export const ExpansionNetworks = { EndpointId.BASE_V2_MAINNET, EndpointId.BERA_V2_MAINNET, EndpointId.BSC_V2_MAINNET, + EndpointId.BOTANIX_V2_MAINNET, // unwired EndpointId.ETHEREUM_V2_MAINNET, ] as EndpointId[], } + +/** + * Networks that are in the process of being (or have been) removed from the mesh via + * `lz:sdk:unwire` (see devtools/wire/unwire-generator.ts). Listed here, `generateWireConfig` + * excludes them from the pathways it builds, so a routine `lz:sdk:wire` run for an unrelated + * market pair can't silently re-wire a network mid-teardown — without needing to actually + * remove it from `ExpansionNetworks`/`hardhat.config.ts`/etc. `lz:sdk:unwire` itself requires + * its target to be listed here, so an active network can't be accidentally unwired. + * + * To reverse a removal, delete the eid from this list and re-run the normal `lz:sdk:wire` + * flow — no other config changes are needed. + */ +export const UnwiredNetworks = { + testnet: [] as EndpointId[], + mainnet: [EndpointId.BOTANIX_V2_MAINNET] as EndpointId[], +} diff --git a/devtools/wire/unwire-generator.ts b/devtools/wire/unwire-generator.ts index b556574..722fd5b 100644 --- a/devtools/wire/unwire-generator.ts +++ b/devtools/wire/unwire-generator.ts @@ -5,6 +5,7 @@ import { constants } from 'ethers' import { getNetworkNameForEid } from '@layerzerolabs/devtools-evm-hardhat' +import { UnwiredNetworks } from '../config' import { getDeployConfig, validateHubNetworksNotInExpansion } from '../deploy' import { MarketPairConfig } from '../types' @@ -36,10 +37,10 @@ export function hasDeploymentArtifact(networkName: string, contractName: string) * so the existing per-field configurators skip them, exactly as they do for any connection * with an omitted field. * - * Deliberately does not validate `targetEid` via `expansionNetworks` membership: this is - * meant to be used after the target has already been removed from `ExpansionNetworks` (to - * stop routine `lz:sdk:wire` runs from reverting the teardown mid-flight), so membership in - * that array can no longer be relied on. Deployment-artifact existence is the ground truth. + * `targetEid` must be listed in `UnwiredNetworks` (see devtools/config/networks.ts) — this is + * a deliberate guard rail so an active, still-wired network can't be accidentally targeted. + * Marking a network there is also what stops routine `lz:sdk:wire` runs from reverting this + * teardown mid-flight, without needing to remove it from `ExpansionNetworks`/`hardhat.config.ts`. */ export async function generateUnwireConfig( contractType: 'GlvToken' | 'MarketToken', @@ -48,6 +49,14 @@ export async function generateUnwireConfig( marketPairKey?: string, marketPairConfig?: MarketPairConfig ): Promise { + const isMarkedUnwired = [...UnwiredNetworks.mainnet, ...UnwiredNetworks.testnet].includes(targetEid) + if (!isMarkedUnwired) { + throw new Error( + `EID ${targetEid} is not listed in UnwiredNetworks (devtools/config/networks.ts). ` + + `Add it there first — this is a safety check to prevent unwiring an active network by mistake.` + ) + } + const config = marketPairConfig || (await getDeployConfig()).marketPairConfig const key = marketPairKey || (await getDeployConfig()).marketPairKey diff --git a/devtools/wire/wire-generator.ts b/devtools/wire/wire-generator.ts index 202f6a3..cf14a53 100644 --- a/devtools/wire/wire-generator.ts +++ b/devtools/wire/wire-generator.ts @@ -6,6 +6,7 @@ import { EVM_ENFORCED_OPTIONS_TO_HUB, EVM_ENFORCED_OPTIONS_TO_SPOKE, OwnershipTransfer, + UnwiredNetworks, } from '../config' import { getDeployConfig, validateHubNetworksNotInExpansion } from '../deploy' import { MarketPairConfig } from '../types' @@ -106,8 +107,14 @@ export async function generateWireConfig( const adapterContractName = `${contractType}_Adapter_${key}` const oftContractName = `${contractType}_OFT_${key}` + // Exclude any network currently being (or already) decommissioned via lz:sdk:unwire, even + // though it stays listed in `expansionNetworks` as historical record — see UnwiredNetworks' + // doc comment in devtools/config/networks.ts. + const unwiredEids = new Set([...UnwiredNetworks.mainnet, ...UnwiredNetworks.testnet]) + const activeExpansionNetworks = tokenConfig.expansionNetworks.filter((eid) => !unwiredEids.has(eid)) + // Include both hub network and expansion networks - const allNetworkEids = [tokenConfig.hubNetwork.eid, ...tokenConfig.expansionNetworks] + const allNetworkEids = [tokenConfig.hubNetwork.eid, ...activeExpansionNetworks] const contractsToWire = allNetworkEids.map( (eid): OmniPointHardhat => ({ eid, From 472f200cae50b5a447d47cc959464034593ebf1c Mon Sep 17 00:00:00 2001 From: shankar Date: Mon, 6 Jul 2026 10:20:51 -0700 Subject: [PATCH 9/9] docs: readme and lint Signed-off-by: shankar --- README.md | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1586928..f377b71 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,25 @@ npx hardhat lz:sdk:wire \ ## Removing a Network from the Mesh -**Important**: `lz:sdk:wire` only reconciles pathways that are explicitly present in the config file it's given — it never scans on-chain state for pathways that used to exist and resets them. Deleting a network from `ExpansionNetworks` stops *future* wire runs from touching it, but does **nothing on-chain** by itself. Actually disconnecting a network requires generating transactions that explicitly unset its send/receive libraries and peer, which is what the tooling below does. +**Important**: `lz:sdk:wire` only reconciles pathways that are explicitly present in the config file it's given — it never scans on-chain state for pathways that used to exist and resets them. Removing a network from `ExpansionNetworks` would stop _future_ wire runs from touching it, but does **nothing on-chain** by itself, and permanently loses the historical record of what the mesh used to look like. Actually disconnecting a network requires generating transactions that explicitly unset its send/receive libraries and peer, which is what the tooling below does — and it's driven by config rather than deletion, so nothing needs to be removed from `ExpansionNetworks`/`hardhat.config.ts` at all. + +### Marking a Network as Unwired + +Add the network's eid to `UnwiredNetworks` in `devtools/config/networks.ts` (it stays listed in `ExpansionNetworks` — that array is kept as a permanent historical record of every network that's ever been part of the mesh): + +```typescript +export const UnwiredNetworks = { + testnet: [] as EndpointId[], + mainnet: [EndpointId.BOTANIX_V2_MAINNET] as EndpointId[], +}; +``` + +This one addition does two things simultaneously, and should be the very first step, before generating any payloads: + +1. `generateWireConfig` (the normal `lz:sdk:wire` path) excludes any network listed here when building pathways — so a routine wire run for an unrelated market pair can't silently re-wire the network being removed while the staged teardown below is in progress, without deleting anything. +2. `generateUnwireConfig` (the `lz:sdk:unwire` path) _requires_ its target to be listed here — this is a guard rail against accidentally unwiring a network that's still supposed to be active. + +**To reverse a removal at any point**: delete the eid from `UnwiredNetworks` and re-run the normal `lz:sdk:wire` flow — it resolves the correct current ULN302 and DVN addresses dynamically, so there's nothing else to restore. No other file needs to change, since nothing else was ever removed. ### Unwire Phases @@ -259,9 +277,8 @@ It checks every deployed OApp contract on the target network's full message hist ### Full Removal Runbook ```bash -# Step 0 — remove the network from devtools/config/networks.ts's ExpansionNetworks -# immediately (not as final cleanup) so a routine lz:sdk:wire run for an unrelated -# market pair can't silently re-wire the network being removed while this is in progress. +# Step 0 — add the network's eid to UnwiredNetworks in devtools/config/networks.ts +# (see "Marking a Network as Unwired" above), immediately, before generating any payloads. # Stage 1 — block send npx hardhat lz:sdk:unwire --target-network botanix-mainnet --phase send-block --generate-payloads --ci --signer 0x0000000000000000000000000000000000000001 @@ -280,14 +297,14 @@ npx hardhat lz:sdk:payloads-to-safe \ --input "payloads/unwire-payloads-receive-block-botanix-mainnet-*.json,payloads/unwire-payloads-unpeer-botanix-mainnet-*.json" \ --name "Botanix removal - Stage 3+4: block receive + unpeer" \ --prefix stage3-4-receive-unpeer -# -> hand the combined per-chain payloads/stage3-4-receive-unpeer-chain-.json batches to the team for Safe execution -# Final cleanup — only after all of the above has executed on-chain: -# remove the network's remaining entries from BlockConfirmations/OwnershipTransfer in -# devtools/config/networks.ts, and its network block from hardhat.config.ts. +# No cleanup step needed — the network was never removed from ExpansionNetworks or +# hardhat.config.ts, so there's nothing left to undo once Stage 3+4 executes on-chain. ``` -**To reverse or pause**: any stage is safe to leave in place indefinitely (nothing time-sensitive breaks by stopping after Stage 1, in particular). To fully restore a pathway, don't hand-craft a "set back to the real library" transaction — re-add the network to `ExpansionNetworks`/`OwnershipTransfer`/`BlockConfirmations` and re-run the normal `lz:sdk:wire` flow, which resolves the correct current ULN302 and DVN addresses dynamically rather than relying on a hardcoded value that could go stale. +**To reverse or pause**: any stage is safe to leave in place indefinitely (nothing time-sensitive breaks by stopping after Stage 1, in particular). To fully restore a pathway, delete the network's eid from `UnwiredNetworks` and re-run the normal `lz:sdk:wire` flow — it resolves the correct current ULN302 and DVN addresses dynamically rather than relying on a hardcoded value that could go stale. + +Every phase is idempotent in exactly the same way normal wiring is: `lz:sdk:unwire` runs through the identical on-chain diff engine as `lz:sdk:wire` (the same `configureSendLibraries`/`configureReceiveLibraries`/`configureOAppPeers` configurators), so re-running a phase that's already fully applied on-chain reports "no action necessary" and generates zero transactions, rather than re-proposing something already done. Use `--dry-run` (preview, no files written) or `--assert` (fails if any transaction is still required) to check a phase's status before generating payloads for it. ## Enhanced Task Commands @@ -491,7 +508,7 @@ npx hardhat lz:sdk:display-deployments ## Project Structure -``` +```text ├── devtools/ # Development utilities │ ├── config/ # Configuration data │ │ ├── networks.ts # Network settings (confirmations, ownership) @@ -580,7 +597,7 @@ export const Tokens: Config = { }; ``` -2. Deploy with new market pair: +1. Deploy with new market pair: ```bash npx hardhat lz:sdk:deploy --market-pair WETH_USDC @@ -609,7 +626,7 @@ export const ExpansionNetworks = { }; ``` -2. Update `hardhat.config.ts`: +1. Update `hardhat.config.ts`: ```typescript networks: { @@ -713,7 +730,8 @@ npx hardhat lz:sdk:wire --market-pair WETH_USDC See [Removing a Network from the Mesh](#removing-a-network-from-the-mesh) for the full staged runbook — summarized: ```bash -# 1. Remove the network from ExpansionNetworks in devtools/config/networks.ts +# 1. Add the network's eid to UnwiredNetworks in devtools/config/networks.ts +# (it stays in ExpansionNetworks and hardhat.config.ts — nothing is deleted) # 2. Stage 1: block send, then hand the Safe batch to the team for execution npx hardhat lz:sdk:unwire --target-network --phase send-block --generate-payloads --ci @@ -727,8 +745,7 @@ npx hardhat lz:sdk:unwire --target-network --phase receive-block --gen npx hardhat lz:sdk:unwire --target-network --phase unpeer --generate-payloads --ci npx hardhat lz:sdk:payloads-to-safe --input "payloads/unwire-payloads-receive-block--*.json,payloads/unwire-payloads-unpeer--*.json" --name "Stage 3+4" --prefix stage3-4-receive-unpeer -# 5. Once everything above has executed on-chain, remove the network's remaining -# entries from devtools/config/networks.ts and hardhat.config.ts +# No cleanup step — nothing was removed, so there's nothing to undo. ``` ### Verify Contracts @@ -737,7 +754,7 @@ Two methods to verify contracts are available. #### Standard JSON Files -Manually verify contract in block explorers by generating standard JSON files (https://docs.soliditylang.org/en/latest/using-the-compiler.html#compiler-api). +Manually verify contract in block explorers by generating standard JSON files (). ```bash pnpm ts-node scripts/standard-json-generator.ts