mirror of
https://github.com/luxfi/migration.git
synced 2026-10-30 15:25:07 +00:00
SWEEP-RUNBOOK previously recorded ownership as BLOCKED: the 0xce15 key was
unlocated, so the step emitted calldata and was a no-op. That is no longer the
state, and the runbook said otherwise.
Adds OWNERSHIP-RUNBOOK.md with two paths that together move the ENTIRE mainnet
(96369) DEX to the DAO Safe:
Path A — a StateUpgrade re-owns the 23 contracts whose keys are lost or
unknown (0xce15, 0xbe7A89, 0x086F4aA1), fork-proven 109/109
Path B — direct transfer of the 74 LP NFTs + 7 ERC-20 balances from 0x9011
Ships the artifacts that back the claim rather than the claim alone:
manifests/96369-ownership.stateupgrade.json (the storage writes),
proof/ownership-fork-e2e-PASS.log (the fork run), and the program/ scripts for
both paths.
The manifest holds contract STORAGE SLOT writes — 64-hex slot ids mapping to
owner addresses, with blockTimestamp left as __OWNERSHIP_MIGRATION_TS__.
Checked explicitly, because slot ids and private keys are indistinguishable to
a naive scan: there are no keys here. The runbook references k8s secret names
and KMS paths only.
146 lines
13 KiB
Plaintext
146 lines
13 KiB
Plaintext
0. select caught-up mainnet node
|
|
fork base head=1082842 http://129.212.164.46:9630/ext/bc/C/rpc
|
|
manifest: /Users/z/work/lux/migration/manifests/96369-ownership.stateupgrade.json
|
|
1. start anvil fork at head
|
|
PASS: fork chainId
|
|
parsed 23 storage edits across 23 contracts
|
|
2. PRE snapshot — every manifest contract owned by a NON-Safe key; token metadata
|
|
PASS: PRE 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961 owner != Safe (now 0x086F4aA1a49B193D49e5bBb462E1554Cfb419040)
|
|
PASS: PRE 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x3141b94b89691009b950c96e97Bff48e0C543E3C owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x3569c06a80c148d7b4b67f8a06125f6d59774243 owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x60E0a8167FC13dE89348978860466C9ceC24B9ba owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x724f4ef0400386fc8c1011788af733bd367ac00f owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0x79608e442d046ea6d3125931a33ce971ad99c6f9 owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0x80bBc7C4C7a59C899D1B37BC14539A22D5830a84 owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0x8B982132d639527E8a0eAAD385f97719af8f5e04 owner != Safe (now 0xbe7A89F41fA7371b856b9685Dd025d0BCC6C7a25)
|
|
PASS: PRE 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4 owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0xaa6a41cacb18bed5b98059a5fa30f9dbabe0cc64 feeToSetter != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0xD173926A10A0C4eCd3A51B1422270b65Df0551c1 feeToSetter != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0xdf1de693c31e2a5eb869c329529623556b20abf3 owner != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0xeac0a50112b5ee20cc18e42ba4d37777012afd0d feeToSetter != Safe (now 0xce15D0AC1dd7f0Da84d65AAA40717E0c60d9fE36)
|
|
PASS: PRE 0xf5a313885832d4fc71d1ef80115197c4479b58c8 owner != Safe (now 0x086F4aA1a49B193D49e5bBb462E1554Cfb419040)
|
|
3. APPLY manifest words via anvil_setStorageAt (simulates the fork-block StateUpgrade)
|
|
set 0x80bBc7C4C7a59C899D1B37BC14539A22D5830a84[0x0000000000000000000000000000000000000000000000000000000000000003]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0xD173926A10A0C4eCd3A51B1422270b65Df0551c1[0x0000000000000000000000000000000000000000000000000000000000000001]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0xeac0a50112b5ee20cc18e42ba4d37777012afd0d[0x0000000000000000000000000000000000000000000000000000000000000001]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0xaa6a41cacb18bed5b98059a5fa30f9dbabe0cc64[0x0000000000000000000000000000000000000000000000000000000000000001]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0xdf1de693c31e2a5eb869c329529623556b20abf3[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0x79608e442d046ea6d3125931a33ce971ad99c6f9[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0x724f4ef0400386fc8c1011788af733bd367ac00f[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0x3569c06a80c148d7b4b67f8a06125f6d59774243[0x0000000000000000000000000000000000000000000000000000000000000005]=0x000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce212
|
|
set 0x60E0a8167FC13dE89348978860466C9ceC24B9ba[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x8B982132d639527E8a0eAAD385f97719af8f5e04[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x3141b94b89691009b950c96e97Bff48e0C543E3C[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0xf5a313885832d4fc71d1ef80115197c4479b58c8[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
set 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961[0x0000000000000000000000000000000000000000000000000000000000000005]=0x00000000000000000000000051284dc2133e8d3a8e213dca6a6fa768cfdfcce2
|
|
4. POST — ownership rewritten to the DAO Safe (all 23 contracts)
|
|
PASS: 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D owner == Safe
|
|
PASS: 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961 owner == Safe
|
|
PASS: 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e owner == Safe
|
|
PASS: 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7 owner == Safe
|
|
PASS: 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9 owner == Safe
|
|
PASS: 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5 owner == Safe
|
|
PASS: 0x3141b94b89691009b950c96e97Bff48e0C543E3C owner == Safe
|
|
PASS: 0x3569c06a80c148d7b4b67f8a06125f6d59774243 owner == Safe
|
|
PASS: 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88 owner == Safe
|
|
PASS: 0x60E0a8167FC13dE89348978860466C9ceC24B9ba owner == Safe
|
|
PASS: 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf owner == Safe
|
|
PASS: 0x724f4ef0400386fc8c1011788af733bd367ac00f owner == Safe
|
|
PASS: 0x79608e442d046ea6d3125931a33ce971ad99c6f9 owner == Safe
|
|
PASS: 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f owner == Safe
|
|
PASS: 0x80bBc7C4C7a59C899D1B37BC14539A22D5830a84 owner == Safe
|
|
PASS: 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2 owner == Safe
|
|
PASS: 0x8B982132d639527E8a0eAAD385f97719af8f5e04 owner == Safe
|
|
PASS: 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4 owner == Safe
|
|
PASS: 0xaa6a41cacb18bed5b98059a5fa30f9dbabe0cc64 feeToSetter == Safe
|
|
PASS: 0xD173926A10A0C4eCd3A51B1422270b65Df0551c1 feeToSetter == Safe
|
|
PASS: 0xdf1de693c31e2a5eb869c329529623556b20abf3 owner == Safe
|
|
PASS: 0xeac0a50112b5ee20cc18e42ba4d37777012afd0d feeToSetter == Safe
|
|
PASS: 0xf5a313885832d4fc71d1ef80115197c4479b58c8 owner == Safe
|
|
5. POST — token decimals/supply/symbol preserved (bricking check)
|
|
PASS: 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D decimals preserved
|
|
PASS: 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D totalSupply preserved
|
|
PASS: 0x0e4bd0dd67c15DECFbBBDBbE07Fc9d51D737693D symbol preserved
|
|
PASS: 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961 decimals preserved
|
|
PASS: 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961 totalSupply preserved
|
|
PASS: 0x1af00a2590a834d14f4a8a26d1b03ebba8cf7961 symbol preserved
|
|
PASS: 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e decimals preserved
|
|
PASS: 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e totalSupply preserved
|
|
PASS: 0x1E48D32a4F5e9f08DB9aE4959163300FaF8A6C8e symbol preserved
|
|
PASS: 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7 decimals preserved
|
|
PASS: 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7 totalSupply preserved
|
|
PASS: 0x26B40f650156C7EbF9e087Dd0dca181Fe87625B7 symbol preserved
|
|
PASS: 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9 decimals preserved
|
|
PASS: 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9 totalSupply preserved
|
|
PASS: 0x28BfC5DD4B7E15659e41190983e5fE3df1132bB9 symbol preserved
|
|
PASS: 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5 decimals preserved
|
|
PASS: 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5 totalSupply preserved
|
|
PASS: 0x3078847F879A33994cDa2Ec1540ca52b5E0eE2e5 symbol preserved
|
|
PASS: 0x3141b94b89691009b950c96e97Bff48e0C543E3C decimals preserved
|
|
PASS: 0x3141b94b89691009b950c96e97Bff48e0C543E3C totalSupply preserved
|
|
PASS: 0x3141b94b89691009b950c96e97Bff48e0C543E3C symbol preserved
|
|
PASS: 0x3569c06a80c148d7b4b67f8a06125f6d59774243 decimals preserved
|
|
PASS: 0x3569c06a80c148d7b4b67f8a06125f6d59774243 totalSupply preserved
|
|
PASS: 0x3569c06a80c148d7b4b67f8a06125f6d59774243 symbol preserved
|
|
PASS: 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88 decimals preserved
|
|
PASS: 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88 totalSupply preserved
|
|
PASS: 0x5E5290f350352768bD2bfC59c2DA15DD04A7cB88 symbol preserved
|
|
PASS: 0x60E0a8167FC13dE89348978860466C9ceC24B9ba decimals preserved
|
|
PASS: 0x60E0a8167FC13dE89348978860466C9ceC24B9ba totalSupply preserved
|
|
PASS: 0x60E0a8167FC13dE89348978860466C9ceC24B9ba symbol preserved
|
|
PASS: 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf decimals preserved
|
|
PASS: 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf totalSupply preserved
|
|
PASS: 0x6EdcF3645DeF09DB45050638c41157D8B9FEa1cf symbol preserved
|
|
PASS: 0x724f4ef0400386fc8c1011788af733bd367ac00f decimals preserved
|
|
PASS: 0x724f4ef0400386fc8c1011788af733bd367ac00f totalSupply preserved
|
|
PASS: 0x724f4ef0400386fc8c1011788af733bd367ac00f symbol preserved
|
|
PASS: 0x79608e442d046ea6d3125931a33ce971ad99c6f9 decimals preserved
|
|
PASS: 0x79608e442d046ea6d3125931a33ce971ad99c6f9 totalSupply preserved
|
|
PASS: 0x79608e442d046ea6d3125931a33ce971ad99c6f9 symbol preserved
|
|
PASS: 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f decimals preserved
|
|
PASS: 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f totalSupply preserved
|
|
PASS: 0x8031e9b0d02a792cfefaa2bdca6e1289d385426f symbol preserved
|
|
PASS: 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2 decimals preserved
|
|
PASS: 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2 totalSupply preserved
|
|
PASS: 0x848Cff46eb323f323b6Bbe1Df274E40793d7f2c2 symbol preserved
|
|
PASS: 0x8B982132d639527E8a0eAAD385f97719af8f5e04 decimals preserved
|
|
PASS: 0x8B982132d639527E8a0eAAD385f97719af8f5e04 totalSupply preserved
|
|
PASS: 0x8B982132d639527E8a0eAAD385f97719af8f5e04 symbol preserved
|
|
PASS: 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4 decimals preserved
|
|
PASS: 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4 totalSupply preserved
|
|
PASS: 0xa85eb8e163f4d70bfc43a4f3fcc9a8dfc42b1ae4 symbol preserved
|
|
PASS: 0xdf1de693c31e2a5eb869c329529623556b20abf3 decimals preserved
|
|
PASS: 0xdf1de693c31e2a5eb869c329529623556b20abf3 totalSupply preserved
|
|
PASS: 0xdf1de693c31e2a5eb869c329529623556b20abf3 symbol preserved
|
|
PASS: 0xf5a313885832d4fc71d1ef80115197c4479b58c8 decimals preserved
|
|
PASS: 0xf5a313885832d4fc71d1ef80115197c4479b58c8 totalSupply preserved
|
|
PASS: 0xf5a313885832d4fc71d1ef80115197c4479b58c8 symbol preserved
|
|
6. POST — contracts STILL FUNCTION (control transferred to Safe)
|
|
PASS: LUSD.mint by new owner Safe — control transferred + code intact
|
|
PASS: V2.setFeeTo by Safe -> feeTo==Safe
|
|
7. POST — non-manifest contracts UNTOUCHED + treasury balance preserved
|
|
PASS: WLUX/WETH9 (non-manifest) code unchanged
|
|
PASS: V2Router (non-manifest) code unchanged
|
|
PASS: treasury 0x9011 balance unchanged
|
|
|
|
================ PASS=109 FAIL=0 ================
|