From df56e3d58810afb470dae78a62b039f0665170cb Mon Sep 17 00:00:00 2001 From: 0xSamWitch Date: Wed, 3 Jul 2024 18:55:04 +0100 Subject: [PATCH] Upgrade beta contracts for clan MMR --- .openzeppelin/unknown-250-beta.json | 2283 ++++++++++++++++++++++++++- README.md | 4 +- scripts/contractAddresses.ts | 4 +- scripts/deployBankBeaconUpgrade.ts | 2 +- scripts/deployUpgrade.ts | 30 +- scripts/verifyContracts.ts | 2 + 6 files changed, 2307 insertions(+), 18 deletions(-) diff --git a/.openzeppelin/unknown-250-beta.json b/.openzeppelin/unknown-250-beta.json index 443f2985..db448668 100644 --- a/.openzeppelin/unknown-250-beta.json +++ b/.openzeppelin/unknown-250-beta.json @@ -263701,7 +263701,7 @@ "label": "bankRegistry", "offset": 6, "slot": "0", - "type": "t_contract(BankRegistry)14064", + "type": "t_contract(BankRegistry)9162", "contract": "Bank", "src": "contracts\\Clans\\Bank.sol:45" }, @@ -263735,7 +263735,7 @@ "label": "bool", "numberOfBytes": "1" }, - "t_contract(BankRegistry)14064": { + "t_contract(BankRegistry)9162": { "label": "contract BankRegistry", "numberOfBytes": "20" }, @@ -271940,6 +271940,2285 @@ } } } + }, + "cdbdd2262282d6bc89ff61c51e501c5bc751ffa6879171e473dacef526583461": { + "address": "0x4D13709128F50B168F3EAA84C27F162807eeaAcB", + "txHash": "0x5fc02a7c33d8839ce94e5d14082db7fc87f6872c853cb046b81f059013b480f3", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:66", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:71" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\ERC1967\\ERC1967UpgradeUpgradeable.sol:215" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\UUPSUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "contracts\\ozUpgradeable\\utils\\ContextUpgradeable.sol:35" + }, + { + "label": "_owner", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:101" + }, + { + "label": "brush", + "offset": 0, + "slot": "201", + "type": "t_contract(IBrushToken)36898", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:140" + }, + { + "label": "players", + "offset": 0, + "slot": "202", + "type": "t_contract(IPlayers)37213", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:141" + }, + { + "label": "bankFactory", + "offset": 0, + "slot": "203", + "type": "t_contract(IBankFactory)36886", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:142" + }, + { + "label": "playerNFT", + "offset": 0, + "slot": "204", + "type": "t_contract(IERC1155)4869", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:143" + }, + { + "label": "nextClanId", + "offset": 20, + "slot": "204", + "type": "t_uint80", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:144" + }, + { + "label": "initialMMR", + "offset": 30, + "slot": "204", + "type": "t_uint16", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:145" + }, + { + "label": "pool", + "offset": 0, + "slot": "205", + "type": "t_address", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:146" + }, + { + "label": "editNameCost", + "offset": 20, + "slot": "205", + "type": "t_uint80", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:147" + }, + { + "label": "dev", + "offset": 0, + "slot": "206", + "type": "t_address", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:148" + }, + { + "label": "clans", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_struct(Clan)6937_storage)", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:149" + }, + { + "label": "playerInfo", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_uint256,t_struct(PlayerInfo)6945_storage)", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:150" + }, + { + "label": "tiers", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_struct(Tier)6958_storage)", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:151" + }, + { + "label": "lowercaseNames", + "offset": 0, + "slot": "210", + "type": "t_mapping(t_string_memory_ptr,t_bool)", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:152" + }, + { + "label": "ownerlessClanTimestamps", + "offset": 0, + "slot": "211", + "type": "t_mapping(t_uint256,t_uint40)", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:153" + }, + { + "label": "paintswapMarketplaceWhitelist", + "offset": 0, + "slot": "212", + "type": "t_address", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:154" + }, + { + "label": "territories", + "offset": 0, + "slot": "213", + "type": "t_contract(IClanMemberLeftCB)36908", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:155" + }, + { + "label": "lockedBankVaults", + "offset": 0, + "slot": "214", + "type": "t_contract(IClanMemberLeftCB)36908", + "contract": "Clans", + "src": "contracts\\Clans\\Clans.sol:156" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_struct(NFTInfo)6963_storage)dyn_storage": { + "label": "struct Clans.NFTInfo[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IBankFactory)36886": { + "label": "contract IBankFactory", + "numberOfBytes": "20" + }, + "t_contract(IBrushToken)36898": { + "label": "contract IBrushToken", + "numberOfBytes": "20" + }, + "t_contract(IClanMemberLeftCB)36908": { + "label": "contract IClanMemberLeftCB", + "numberOfBytes": "20" + }, + "t_contract(IERC1155)4869": { + "label": "contract IERC1155", + "numberOfBytes": "20" + }, + "t_contract(IPlayers)37213": { + "label": "contract IPlayers", + "numberOfBytes": "20" + }, + "t_enum(ClanRank)35242": { + "label": "enum ClanRank", + "members": ["NONE", "COMMONER", "SCOUT", "TREASURER", "LEADER", "OWNER"], + "numberOfBytes": "1" + }, + "t_mapping(t_string_memory_ptr,t_bool)": { + "label": "mapping(string => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Clan)6937_storage)": { + "label": "mapping(uint256 => struct Clans.Clan)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(PlayerInfo)6945_storage)": { + "label": "mapping(uint256 => struct Clans.PlayerInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Tier)6958_storage)": { + "label": "mapping(uint256 => struct Clans.Tier)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint40)": { + "label": "mapping(uint256 => uint40)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Clan)6937_storage": { + "label": "struct Clans.Clan", + "members": [ + { + "label": "owner", + "type": "t_uint80", + "offset": 0, + "slot": "0" + }, + { + "label": "imageId", + "type": "t_uint16", + "offset": 10, + "slot": "0" + }, + { + "label": "memberCount", + "type": "t_uint16", + "offset": 12, + "slot": "0" + }, + { + "label": "createdTimestamp", + "type": "t_uint40", + "offset": 14, + "slot": "0" + }, + { + "label": "tierId", + "type": "t_uint8", + "offset": 19, + "slot": "0" + }, + { + "label": "disableJoinRequests", + "type": "t_bool", + "offset": 20, + "slot": "0" + }, + { + "label": "mmr", + "type": "t_uint16", + "offset": 21, + "slot": "0" + }, + { + "label": "name", + "type": "t_string_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "inviteRequests", + "type": "t_mapping(t_uint256,t_bool)", + "offset": 0, + "slot": "2" + }, + { + "label": "gateKeptNFTs", + "type": "t_array(t_struct(NFTInfo)6963_storage)dyn_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(NFTInfo)6963_storage": { + "label": "struct Clans.NFTInfo", + "members": [ + { + "label": "nft", + "type": "t_address", + "offset": 0, + "slot": "0" + }, + { + "label": "nftType", + "type": "t_uint80", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PlayerInfo)6945_storage": { + "label": "struct Clans.PlayerInfo", + "members": [ + { + "label": "clanId", + "type": "t_uint32", + "offset": 0, + "slot": "0" + }, + { + "label": "rank", + "type": "t_enum(ClanRank)35242", + "offset": 4, + "slot": "0" + }, + { + "label": "requestedClanId", + "type": "t_uint32", + "offset": 5, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Tier)6958_storage": { + "label": "struct Clans.Tier", + "members": [ + { + "label": "id", + "type": "t_uint8", + "offset": 0, + "slot": "0" + }, + { + "label": "maxMemberCapacity", + "type": "t_uint16", + "offset": 1, + "slot": "0" + }, + { + "label": "maxBankCapacity", + "type": "t_uint16", + "offset": 3, + "slot": "0" + }, + { + "label": "maxImageId", + "type": "t_uint24", + "offset": 5, + "slot": "0" + }, + { + "label": "minimumAge", + "type": "t_uint40", + "offset": 8, + "slot": "0" + }, + { + "label": "price", + "type": "t_uint80", + "offset": 13, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint24": { + "label": "uint24", + "numberOfBytes": "3" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint40": { + "label": "uint40", + "numberOfBytes": "5" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + }, + "t_uint80": { + "label": "uint80", + "numberOfBytes": "10" + } + } + } + }, + "01fd80184fea69404bd3deb7473c15628a9df2ba21ae893db548b50ff0e17b55": { + "address": "0x6AF29249901B964DdC409c6F21b5B7AF2f55542F", + "txHash": "0xf32860e3d66d7b45335aced02946a1f5769b6d73a7264da2e4a62bfffc433cd6", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:66", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:71" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\ERC1967\\ERC1967UpgradeUpgradeable.sol:215" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\UUPSUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "contracts\\ozUpgradeable\\utils\\ContextUpgradeable.sol:35" + }, + { + "label": "_owner", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:101" + }, + { + "label": "users", + "offset": 0, + "slot": "201", + "type": "t_mapping(t_address,t_uint256)", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:84" + }, + { + "label": "adminAccess", + "offset": 0, + "slot": "202", + "type": "t_contract(AdminAccess)5361", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:85" + }, + { + "label": "itemNFT", + "offset": 0, + "slot": "203", + "type": "t_contract(ItemNFT)8699", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:86" + }, + { + "label": "playerNFT", + "offset": 0, + "slot": "204", + "type": "t_contract(PlayerNFT)10418", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:87" + }, + { + "label": "isBeta", + "offset": 20, + "slot": "204", + "type": "t_bool", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:88" + }, + { + "label": "singlePlayerPromotionsCompleted", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_uint256,t_struct(BitMap)4967_storage)", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:89" + }, + { + "label": "activePromotions", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_enum(Promotion)18491,t_struct(PromotionInfo)18635_storage)", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:90" + }, + { + "label": "multidayPlayerPromotionsCompleted", + "offset": 0, + "slot": "207", + "type": "t_mapping(t_uint256,t_mapping(t_enum(Promotion)18491,t_array(t_uint8)32_storage))", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:91" + }, + { + "label": "userPromotionsClaimed", + "offset": 0, + "slot": "208", + "type": "t_mapping(t_address,t_struct(BitMap)4967_storage)", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:95" + }, + { + "label": "playerPromotionsClaimed", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_struct(BitMap)4967_storage)", + "contract": "Promotions", + "src": "contracts\\Promotions.sol:96" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint16)dyn_storage": { + "label": "uint16[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint32)dyn_storage": { + "label": "uint32[]", + "numberOfBytes": "32" + }, + "t_array(t_uint8)32_storage": { + "label": "uint8[32]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(AdminAccess)5361": { + "label": "contract AdminAccess", + "numberOfBytes": "20" + }, + "t_contract(ItemNFT)8699": { + "label": "contract ItemNFT", + "numberOfBytes": "20" + }, + "t_contract(PlayerNFT)10418": { + "label": "contract PlayerNFT", + "numberOfBytes": "20" + }, + "t_enum(Promotion)18491": { + "label": "enum Promotion", + "members": [ + "NONE", + "STARTER", + "HALLOWEEN_2023", + "XMAS_2023", + "HOLIDAY3", + "HOLIDAY4", + "HOLIDAY5", + "HOLIDAY6", + "HOLIDAY7", + "HOLIDAY8", + "HOLIDAY9", + "HOLIDAY10" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_struct(BitMap)4967_storage)": { + "label": "mapping(address => struct BitMaps.BitMap)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_enum(Promotion)18491,t_array(t_uint8)32_storage)": { + "label": "mapping(enum Promotion => uint8[32])", + "numberOfBytes": "32" + }, + "t_mapping(t_enum(Promotion)18491,t_struct(PromotionInfo)18635_storage)": { + "label": "mapping(enum Promotion => struct PromotionInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_enum(Promotion)18491,t_array(t_uint8)32_storage))": { + "label": "mapping(uint256 => mapping(enum Promotion => uint8[32]))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(BitMap)4967_storage)": { + "label": "mapping(uint256 => struct BitMaps.BitMap)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_struct(BitMap)4967_storage": { + "label": "struct BitMaps.BitMap", + "members": [ + { + "label": "_data", + "type": "t_mapping(t_uint256,t_uint256)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PromotionInfo)18635_storage": { + "label": "struct PromotionInfo", + "members": [ + { + "label": "promotion", + "type": "t_enum(Promotion)18491", + "offset": 0, + "slot": "0" + }, + { + "label": "startTime", + "type": "t_uint40", + "offset": 1, + "slot": "0" + }, + { + "label": "numDays", + "type": "t_uint8", + "offset": 6, + "slot": "0" + }, + { + "label": "numDailyRandomItemsToPick", + "type": "t_uint8", + "offset": 7, + "slot": "0" + }, + { + "label": "minTotalXP", + "type": "t_uint40", + "offset": 8, + "slot": "0" + }, + { + "label": "brushCost", + "type": "t_uint24", + "offset": 13, + "slot": "0" + }, + { + "label": "redeemCodeLength", + "type": "t_uint8", + "offset": 16, + "slot": "0" + }, + { + "label": "adminOnly", + "type": "t_bool", + "offset": 17, + "slot": "0" + }, + { + "label": "promotionTiedToUser", + "type": "t_bool", + "offset": 18, + "slot": "0" + }, + { + "label": "promotionTiedToPlayer", + "type": "t_bool", + "offset": 19, + "slot": "0" + }, + { + "label": "promotionMustOwnPlayer", + "type": "t_bool", + "offset": 20, + "slot": "0" + }, + { + "label": "evolvedHeroOnly", + "type": "t_bool", + "offset": 21, + "slot": "0" + }, + { + "label": "isMultiday", + "type": "t_bool", + "offset": 22, + "slot": "0" + }, + { + "label": "brushCostMissedDay", + "type": "t_uint8", + "offset": 23, + "slot": "0" + }, + { + "label": "numDaysHitNeededForStreakBonus", + "type": "t_uint8", + "offset": 24, + "slot": "0" + }, + { + "label": "numDaysClaimablePeriodStreakBonus", + "type": "t_uint8", + "offset": 25, + "slot": "0" + }, + { + "label": "numRandomStreakBonusItemsToPick1", + "type": "t_uint8", + "offset": 26, + "slot": "0" + }, + { + "label": "numRandomStreakBonusItemsToPick2", + "type": "t_uint8", + "offset": 27, + "slot": "0" + }, + { + "label": "randomStreakBonusItemTokenIds1", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "randomStreakBonusAmounts1", + "type": "t_array(t_uint32)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "randomStreakBonusItemTokenIds2", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "3" + }, + { + "label": "randomStreakBonusAmounts2", + "type": "t_array(t_uint32)dyn_storage", + "offset": 0, + "slot": "4" + }, + { + "label": "guaranteedStreakBonusItemTokenIds", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "5" + }, + { + "label": "guaranteedStreakBonusAmounts", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "6" + }, + { + "label": "guaranteedItemTokenIds", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "7" + }, + { + "label": "guaranteedAmounts", + "type": "t_array(t_uint32)dyn_storage", + "offset": 0, + "slot": "8" + }, + { + "label": "randomItemTokenIds", + "type": "t_array(t_uint16)dyn_storage", + "offset": 0, + "slot": "9" + }, + { + "label": "randomAmounts", + "type": "t_array(t_uint32)dyn_storage", + "offset": 0, + "slot": "10" + } + ], + "numberOfBytes": "352" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint24": { + "label": "uint24", + "numberOfBytes": "3" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint40": { + "label": "uint40", + "numberOfBytes": "5" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + }, + "5bcea3f206b031774050cd28644fa64ddd36e641a287a59ecb039e2b5a8b2343": { + "address": "0xE5cc37238f96107198d4f3c5E8ced2f53bc00483", + "txHash": "0x9db8008bfc6cb41af7d1b8d6815be380f7f3113ebf72dafd19d90fa467fcb27e", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "dummy", + "offset": 0, + "slot": "0", + "type": "t_address", + "contract": "RrpRequesterV0Upgradeable", + "src": "contracts\\RrpRequesterV0Upgradeable.sol:6" + }, + { + "label": "_initialized", + "offset": 20, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:66", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 21, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:71" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\ERC1967\\ERC1967UpgradeUpgradeable.sol:215" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\UUPSUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "contracts\\ozUpgradeable\\utils\\ContextUpgradeable.sol:35" + }, + { + "label": "_owner", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:101" + }, + { + "label": "comparableSkills", + "offset": 0, + "slot": "201", + "type": "t_array(t_enum(Skill)23533)dyn_storage", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:116" + }, + { + "label": "nextPendingAttackId", + "offset": 0, + "slot": "202", + "type": "t_uint64", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:117" + }, + { + "label": "preventAttacks", + "offset": 8, + "slot": "202", + "type": "t_bool", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:118" + }, + { + "label": "clanInfos", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_uint256,t_struct(ClanInfo)23263_storage)", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:119" + }, + { + "label": "pendingAttacks", + "offset": 0, + "slot": "204", + "type": "t_mapping(t_uint256,t_struct(PendingAttack)6916_storage)", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:120" + }, + { + "label": "requestToPendingAttackIds", + "offset": 0, + "slot": "205", + "type": "t_mapping(t_bytes32,t_uint256)", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:121" + }, + { + "label": "lastClanBattles", + "offset": 0, + "slot": "206", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_struct(ClanBattleInfo)23221_storage))", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:122" + }, + { + "label": "clans", + "offset": 0, + "slot": "207", + "type": "t_contract(IClans)24935", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:123" + }, + { + "label": "players", + "offset": 0, + "slot": "208", + "type": "t_contract(IPlayers)25200", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:124" + }, + { + "label": "brush", + "offset": 0, + "slot": "209", + "type": "t_contract(IBrushToken)24864", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:125" + }, + { + "label": "territories", + "offset": 0, + "slot": "210", + "type": "t_contract(ITerritories)25224", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:126" + }, + { + "label": "itemNFT", + "offset": 0, + "slot": "211", + "type": "t_contract(ItemNFT)15022", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:127" + }, + { + "label": "adminAccess", + "offset": 0, + "slot": "212", + "type": "t_contract(AdminAccess)5966", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:128" + }, + { + "label": "isBeta", + "offset": 20, + "slot": "212", + "type": "t_bool", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:129" + }, + { + "label": "bankFactory", + "offset": 0, + "slot": "213", + "type": "t_contract(IBankFactory)24852", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:130" + }, + { + "label": "combatantsHelper", + "offset": 0, + "slot": "214", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:131" + }, + { + "label": "pool", + "offset": 0, + "slot": "215", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:132" + }, + { + "label": "dev", + "offset": 0, + "slot": "216", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:133" + }, + { + "label": "airnode", + "offset": 0, + "slot": "217", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:136" + }, + { + "label": "sponsorWallet", + "offset": 0, + "slot": "218", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:137" + }, + { + "label": "endpointIdUint256", + "offset": 0, + "slot": "219", + "type": "t_bytes32", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:138" + }, + { + "label": "endpointIdUint256Array", + "offset": 0, + "slot": "220", + "type": "t_bytes32", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:139" + }, + { + "label": "indexGasPrice", + "offset": 0, + "slot": "221", + "type": "t_uint8", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:141" + }, + { + "label": "movingAverageGasPrice", + "offset": 1, + "slot": "221", + "type": "t_uint64", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:142" + }, + { + "label": "baseAttackCost", + "offset": 9, + "slot": "221", + "type": "t_uint88", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:143" + }, + { + "label": "expectedGasLimitFulfill", + "offset": 20, + "slot": "221", + "type": "t_uint24", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:144" + }, + { + "label": "prices", + "offset": 0, + "slot": "222", + "type": "t_array(t_uint64)4_storage", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:145" + }, + { + "label": "oracle", + "offset": 0, + "slot": "223", + "type": "t_address", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:147" + }, + { + "label": "mmrAttackDistance", + "offset": 20, + "slot": "223", + "type": "t_uint16", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:148" + }, + { + "label": "Ka", + "offset": 22, + "slot": "223", + "type": "t_uint8", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:149" + }, + { + "label": "Kd", + "offset": 23, + "slot": "223", + "type": "t_uint8", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:150" + }, + { + "label": "samWitchVRF", + "offset": 0, + "slot": "224", + "type": "t_contract(ISamWitchVRF)25212", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:152" + }, + { + "label": "lockFundsPeriod", + "offset": 20, + "slot": "224", + "type": "t_uint24", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:153" + }, + { + "label": "sortedClansByMMR", + "offset": 0, + "slot": "225", + "type": "t_array(t_uint48)dyn_storage", + "contract": "LockedBankVaults", + "src": "contracts\\Clans\\LockedBankVaults.sol:159" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_enum(Skill)23533)dyn_storage": { + "label": "enum Skill[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(Vault)23232_storage)dyn_storage": { + "label": "struct Vault[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint48)dyn_storage": { + "label": "uint48[]", + "numberOfBytes": "32" + }, + "t_array(t_uint64)4_storage": { + "label": "uint64[4]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(AdminAccess)5966": { + "label": "contract AdminAccess", + "numberOfBytes": "20" + }, + "t_contract(IBank)24826": { + "label": "contract IBank", + "numberOfBytes": "20" + }, + "t_contract(IBankFactory)24852": { + "label": "contract IBankFactory", + "numberOfBytes": "20" + }, + "t_contract(IBrushToken)24864": { + "label": "contract IBrushToken", + "numberOfBytes": "20" + }, + "t_contract(IClans)24935": { + "label": "contract IClans", + "numberOfBytes": "20" + }, + "t_contract(IPlayers)25200": { + "label": "contract IPlayers", + "numberOfBytes": "20" + }, + "t_contract(ISamWitchVRF)25212": { + "label": "contract ISamWitchVRF", + "numberOfBytes": "20" + }, + "t_contract(ITerritories)25224": { + "label": "contract ITerritories", + "numberOfBytes": "20" + }, + "t_contract(ItemNFT)15022": { + "label": "contract ItemNFT", + "numberOfBytes": "20" + }, + "t_enum(Skill)23533": { + "label": "enum Skill", + "members": [ + "NONE", + "COMBAT", + "MELEE", + "RANGED", + "MAGIC", + "DEFENCE", + "HEALTH", + "RESERVED_COMBAT", + "MINING", + "WOODCUTTING", + "FISHING", + "SMITHING", + "THIEVING", + "CRAFTING", + "COOKING", + "FIREMAKING", + "AGILITY", + "ALCHEMY", + "FLETCHING", + "FORGING", + "RESERVED2", + "RESERVED3", + "RESERVED4", + "RESERVED5", + "RESERVED6", + "RESERVED7", + "RESERVED8", + "RESERVED9", + "RESERVED10", + "RESERVED11", + "RESERVED12", + "RESERVED13", + "RESERVED14", + "RESERVED15", + "RESERVED16", + "RESERVED17", + "RESERVED18", + "RESERVED19", + "RESERVED20", + "TRAVELING" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_struct(ClanBattleInfo)23221_storage))": { + "label": "mapping(uint256 => mapping(uint256 => struct ClanBattleInfo))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(ClanBattleInfo)23221_storage)": { + "label": "mapping(uint256 => struct ClanBattleInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(ClanInfo)23263_storage)": { + "label": "mapping(uint256 => struct ClanInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(PendingAttack)6916_storage)": { + "label": "mapping(uint256 => struct LockedBankVaults.PendingAttack)", + "numberOfBytes": "32" + }, + "t_struct(ClanBattleInfo)23221_storage": { + "label": "struct ClanBattleInfo", + "members": [ + { + "label": "lastClanIdAttackOtherClanIdCooldownTimestamp", + "type": "t_uint40", + "offset": 0, + "slot": "0" + }, + { + "label": "numReattacks", + "type": "t_uint8", + "offset": 5, + "slot": "0" + }, + { + "label": "lastOtherClanIdAttackClanIdCooldownTimestamp", + "type": "t_uint40", + "offset": 6, + "slot": "0" + }, + { + "label": "numReattacksOtherClan", + "type": "t_uint8", + "offset": 11, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ClanInfo)23263_storage": { + "label": "struct ClanInfo", + "members": [ + { + "label": "bank", + "type": "t_contract(IBank)24826", + "offset": 0, + "slot": "0" + }, + { + "label": "totalBrushLocked", + "type": "t_uint96", + "offset": 20, + "slot": "0" + }, + { + "label": "attackingCooldownTimestamp", + "type": "t_uint40", + "offset": 0, + "slot": "1" + }, + { + "label": "assignCombatantsCooldownTimestamp", + "type": "t_uint40", + "offset": 5, + "slot": "1" + }, + { + "label": "currentlyAttacking", + "type": "t_bool", + "offset": 10, + "slot": "1" + }, + { + "label": "gasPaid", + "type": "t_uint88", + "offset": 11, + "slot": "1" + }, + { + "label": "defendingVaultsOffset", + "type": "t_uint24", + "offset": 22, + "slot": "1" + }, + { + "label": "blockAttacksTimestamp", + "type": "t_uint40", + "offset": 25, + "slot": "1" + }, + { + "label": "blockAttacksCooldownHours", + "type": "t_uint8", + "offset": 30, + "slot": "1" + }, + { + "label": "isInMMRArray", + "type": "t_bool", + "offset": 31, + "slot": "1" + }, + { + "label": "playerIds", + "type": "t_array(t_uint48)dyn_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "defendingVaults", + "type": "t_array(t_struct(Vault)23232_storage)dyn_storage", + "offset": 0, + "slot": "3" + }, + { + "label": "superAttackCooldownTimestamp", + "type": "t_uint40", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(PendingAttack)6916_storage": { + "label": "struct LockedBankVaults.PendingAttack", + "members": [ + { + "label": "clanId", + "type": "t_uint40", + "offset": 0, + "slot": "0" + }, + { + "label": "defendingClanId", + "type": "t_uint40", + "offset": 5, + "slot": "0" + }, + { + "label": "attackInProgress", + "type": "t_bool", + "offset": 10, + "slot": "0" + }, + { + "label": "extraRollsAttacker", + "type": "t_uint8", + "offset": 11, + "slot": "0" + }, + { + "label": "extraRollsDefender", + "type": "t_uint8", + "offset": 12, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Vault)23232_storage": { + "label": "struct Vault", + "members": [ + { + "label": "claimed", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "timestamp", + "type": "t_uint40", + "offset": 1, + "slot": "0" + }, + { + "label": "amount", + "type": "t_uint80", + "offset": 6, + "slot": "0" + }, + { + "label": "timestamp1", + "type": "t_uint40", + "offset": 16, + "slot": "0" + }, + { + "label": "amount1", + "type": "t_uint80", + "offset": 21, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint24": { + "label": "uint24", + "numberOfBytes": "3" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint40": { + "label": "uint40", + "numberOfBytes": "5" + }, + "t_uint48": { + "label": "uint48", + "numberOfBytes": "6" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + }, + "t_uint80": { + "label": "uint80", + "numberOfBytes": "10" + }, + "t_uint88": { + "label": "uint88", + "numberOfBytes": "11" + }, + "t_uint96": { + "label": "uint96", + "numberOfBytes": "12" + } + } + } + }, + "c5ab58282eed5af089d34fd59230dcb0876201937284b47cc48d3d27fc82049b": { + "address": "0x8F9BC83F0BB36Cf46f511E703fe84b335d421161", + "txHash": "0x5681f950b7ed19f54194e450c64db135dc9be43cdd0560905071c72d67b02644", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "dummy", + "offset": 0, + "slot": "0", + "type": "t_address", + "contract": "RrpRequesterV0Upgradeable", + "src": "contracts\\RrpRequesterV0Upgradeable.sol:6" + }, + { + "label": "_initialized", + "offset": 20, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:66", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 21, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\Initializable.sol:71" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\ERC1967\\ERC1967UpgradeUpgradeable.sol:215" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "contracts\\ozUpgradeable\\proxy\\utils\\UUPSUpgradeable.sol:116" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "contracts\\ozUpgradeable\\utils\\ContextUpgradeable.sol:35" + }, + { + "label": "_owner", + "offset": 0, + "slot": "151", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "contracts\\ozUpgradeable\\access\\OwnableUpgradeable.sol:101" + }, + { + "label": "pendingAttacks", + "offset": 0, + "slot": "201", + "type": "t_mapping(t_uint256,t_struct(PendingAttack)12005_storage)", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:151" + }, + { + "label": "requestToPendingAttackIds", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_bytes32,t_uint256)", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:152" + }, + { + "label": "territories", + "offset": 0, + "slot": "203", + "type": "t_mapping(t_uint256,t_struct(Territory)11976_storage)", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:153" + }, + { + "label": "players", + "offset": 0, + "slot": "204", + "type": "t_address", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:154" + }, + { + "label": "nextTerritoryId", + "offset": 20, + "slot": "204", + "type": "t_uint16", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:155" + }, + { + "label": "nextPendingAttackId", + "offset": 22, + "slot": "204", + "type": "t_uint64", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:156" + }, + { + "label": "clans", + "offset": 0, + "slot": "205", + "type": "t_contract(IClans)27288", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:157" + }, + { + "label": "adminAccess", + "offset": 0, + "slot": "206", + "type": "t_contract(AdminAccess)5966", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:158" + }, + { + "label": "isBeta", + "offset": 20, + "slot": "206", + "type": "t_bool", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:159" + }, + { + "label": "lockedBankVaults", + "offset": 0, + "slot": "207", + "type": "t_contract(LockedBankVaults)9053", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:160" + }, + { + "label": "itemNFT", + "offset": 0, + "slot": "208", + "type": "t_contract(ItemNFT)17375", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:161" + }, + { + "label": "clanInfos", + "offset": 0, + "slot": "209", + "type": "t_mapping(t_uint256,t_struct(ClanInfo)11994_storage)", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:163" + }, + { + "label": "totalEmissionPercentage", + "offset": 0, + "slot": "210", + "type": "t_uint16", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:164" + }, + { + "label": "brush", + "offset": 2, + "slot": "210", + "type": "t_contract(IBrushToken)27217", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:165" + }, + { + "label": "comparableSkills", + "offset": 0, + "slot": "211", + "type": "t_array(t_enum(Skill)25886)dyn_storage", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:167" + }, + { + "label": "combatantsHelper", + "offset": 0, + "slot": "212", + "type": "t_address", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:169" + }, + { + "label": "airnode", + "offset": 0, + "slot": "213", + "type": "t_address", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:172" + }, + { + "label": "sponsorWallet", + "offset": 0, + "slot": "214", + "type": "t_address", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:173" + }, + { + "label": "endpointIdUint256", + "offset": 0, + "slot": "215", + "type": "t_bytes32", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:174" + }, + { + "label": "endpointIdUint256Array", + "offset": 0, + "slot": "216", + "type": "t_bytes32", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:175" + }, + { + "label": "indexGasPrice", + "offset": 0, + "slot": "217", + "type": "t_uint8", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:177" + }, + { + "label": "movingAverageGasPrice", + "offset": 1, + "slot": "217", + "type": "t_uint64", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:178" + }, + { + "label": "baseAttackCost", + "offset": 9, + "slot": "217", + "type": "t_uint88", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:179" + }, + { + "label": "expectedGasLimitFulfill", + "offset": 20, + "slot": "217", + "type": "t_uint24", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:180" + }, + { + "label": "prices", + "offset": 0, + "slot": "218", + "type": "t_array(t_uint64)4_storage", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:181" + }, + { + "label": "oracle", + "offset": 0, + "slot": "219", + "type": "t_address", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:183" + }, + { + "label": "samWitchVRF", + "offset": 0, + "slot": "220", + "type": "t_contract(ISamWitchVRF)27565", + "contract": "Territories", + "src": "contracts\\Clans\\Territories.sol:184" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_enum(Skill)25886)dyn_storage": { + "label": "enum Skill[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_array(t_uint48)dyn_storage": { + "label": "uint48[]", + "numberOfBytes": "32" + }, + "t_array(t_uint64)4_storage": { + "label": "uint64[4]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(AdminAccess)5966": { + "label": "contract AdminAccess", + "numberOfBytes": "20" + }, + "t_contract(IBrushToken)27217": { + "label": "contract IBrushToken", + "numberOfBytes": "20" + }, + "t_contract(IClans)27288": { + "label": "contract IClans", + "numberOfBytes": "20" + }, + "t_contract(ISamWitchVRF)27565": { + "label": "contract ISamWitchVRF", + "numberOfBytes": "20" + }, + "t_contract(ItemNFT)17375": { + "label": "contract ItemNFT", + "numberOfBytes": "20" + }, + "t_contract(LockedBankVaults)9053": { + "label": "contract LockedBankVaults", + "numberOfBytes": "20" + }, + "t_enum(Skill)25886": { + "label": "enum Skill", + "members": [ + "NONE", + "COMBAT", + "MELEE", + "RANGED", + "MAGIC", + "DEFENCE", + "HEALTH", + "RESERVED_COMBAT", + "MINING", + "WOODCUTTING", + "FISHING", + "SMITHING", + "THIEVING", + "CRAFTING", + "COOKING", + "FIREMAKING", + "AGILITY", + "ALCHEMY", + "FLETCHING", + "FORGING", + "RESERVED2", + "RESERVED3", + "RESERVED4", + "RESERVED5", + "RESERVED6", + "RESERVED7", + "RESERVED8", + "RESERVED9", + "RESERVED10", + "RESERVED11", + "RESERVED12", + "RESERVED13", + "RESERVED14", + "RESERVED15", + "RESERVED16", + "RESERVED17", + "RESERVED18", + "RESERVED19", + "RESERVED20", + "TRAVELING" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(ClanInfo)11994_storage)": { + "label": "mapping(uint256 => struct Territories.ClanInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(PendingAttack)12005_storage)": { + "label": "mapping(uint256 => struct Territories.PendingAttack)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Territory)11976_storage)": { + "label": "mapping(uint256 => struct Territories.Territory)", + "numberOfBytes": "32" + }, + "t_struct(ClanInfo)11994_storage": { + "label": "struct Territories.ClanInfo", + "members": [ + { + "label": "ownsTerritoryId", + "type": "t_uint16", + "offset": 0, + "slot": "0" + }, + { + "label": "attackingCooldownTimestamp", + "type": "t_uint40", + "offset": 2, + "slot": "0" + }, + { + "label": "assignCombatantsCooldownTimestamp", + "type": "t_uint40", + "offset": 7, + "slot": "0" + }, + { + "label": "currentlyAttacking", + "type": "t_bool", + "offset": 12, + "slot": "0" + }, + { + "label": "gasPaid", + "type": "t_uint88", + "offset": 13, + "slot": "0" + }, + { + "label": "blockAttacksTimestamp", + "type": "t_uint40", + "offset": 24, + "slot": "0" + }, + { + "label": "blockAttacksCooldownHours", + "type": "t_uint8", + "offset": 29, + "slot": "0" + }, + { + "label": "playerIds", + "type": "t_array(t_uint48)dyn_storage", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(PendingAttack)12005_storage": { + "label": "struct Territories.PendingAttack", + "members": [ + { + "label": "clanId", + "type": "t_uint40", + "offset": 0, + "slot": "0" + }, + { + "label": "territoryId", + "type": "t_uint16", + "offset": 5, + "slot": "0" + }, + { + "label": "attackInProgress", + "type": "t_bool", + "offset": 7, + "slot": "0" + }, + { + "label": "leaderPlayerId", + "type": "t_uint40", + "offset": 8, + "slot": "0" + }, + { + "label": "from", + "type": "t_address", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Territory)11976_storage": { + "label": "struct Territories.Territory", + "members": [ + { + "label": "territoryId", + "type": "t_uint16", + "offset": 0, + "slot": "0" + }, + { + "label": "percentageEmissions", + "type": "t_uint16", + "offset": 2, + "slot": "0" + }, + { + "label": "clanIdOccupier", + "type": "t_uint40", + "offset": 4, + "slot": "0" + }, + { + "label": "unclaimedEmissions", + "type": "t_uint88", + "offset": 9, + "slot": "0" + }, + { + "label": "lastClaimTimestamp", + "type": "t_uint40", + "offset": 20, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint24": { + "label": "uint24", + "numberOfBytes": "3" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint40": { + "label": "uint40", + "numberOfBytes": "5" + }, + "t_uint48": { + "label": "uint48", + "numberOfBytes": "6" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + }, + "t_uint88": { + "label": "uint88", + "numberOfBytes": "11" + } + } + } + }, + "5b732c5b42d09794a6875e727b94f53c7fc4c7fd4133c484e90cc5013ee11793": { + "address": "0x78026709De3D10a50C83bF51A5D77774FbB48ed9", + "txHash": "0xb9b9790ab9f33ca200c24568031a5574e422d110605849f9f62535fd9e546a85", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin\\contracts\\proxy\\utils\\Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin\\contracts\\proxy\\utils\\Initializable.sol:67" + }, + { + "label": "clanId", + "offset": 2, + "slot": "0", + "type": "t_uint32", + "contract": "Bank", + "src": "contracts\\Clans\\Bank.sol:48" + }, + { + "label": "bankRegistry", + "offset": 6, + "slot": "0", + "type": "t_contract(BankRegistry)14135", + "contract": "Bank", + "src": "contracts\\Clans\\Bank.sol:49" + }, + { + "label": "uniqueItemCount", + "offset": 26, + "slot": "0", + "type": "t_uint16", + "contract": "Bank", + "src": "contracts\\Clans\\Bank.sol:50" + }, + { + "label": "reentrantStatus", + "offset": 28, + "slot": "0", + "type": "t_uint8", + "contract": "Bank", + "src": "contracts\\Clans\\Bank.sol:51" + }, + { + "label": "uniqueItems", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_bool)", + "contract": "Bank", + "src": "contracts\\Clans\\Bank.sol:52" + } + ], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(BankRegistry)14135": { + "label": "contract BankRegistry", + "numberOfBytes": "20" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint32": { + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } } } } diff --git a/README.md b/README.md index 38b00a79..bb01947d 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ EggInstantVRFActionStrategy [0x7797fd3904fc399184d2a549dff025210d62e645](https:/ VRFRequestInfo [0x8c3dcf7b09ea620b265d9daab237f29f485f725b](https://ftmscan.com/address/0x8c3dcf7b09ea620b265d9daab237f29f485f725b) LockedBankVaults [0x65e944795d00cc287bdace77d57571fc4deff3e0](https://ftmscan.com/address/0x65e944795d00cc287bdace77d57571fc4deff3e0) +LockedBankVaultsLibrary [](https://ftmscan.com/address/) Territories [0x2cfd3b9f8b595200d6b4b7f667b2a1bcc6d0c170](https://ftmscan.com/address/0x2cfd3b9f8b595200d6b4b7f667b2a1bcc6d0c170) CombatantsHelper [0x8fedf83c55012acff7115b8fa164095721953c39](https://ftmscan.com/address/0x8fedf83c55012acff7115b8fa164095721953c39) DecoratorProvider [0xba2f8cff9ea18f3687eb685f0c1bcd509b539963](https://ftmscan.com/address/0xba2f8cff9ea18f3687eb685f0c1bcd509b539963) @@ -103,7 +104,7 @@ RoyaltyReceiver [0xc5de7625e1b5cb91d92bc65fd4d787f01c43e38e](https://ftmscan.com AdminAccess [0xa298f1636dacab0db352fec84d2079814e0ce778](https://ftmscan.com/address/0xa298f1636dacab0db352fec84d2079814e0ce778) ItemNFTLibrary [0x2d0b79a4d76d6fd86b8ba08acc68d3f35430aa7a](https://ftmscan.com/address/0x2d0b79a4d76d6fd86b8ba08acc68d3f35430aa7a) ItemNFT [0x1dae89b469d15b0ded980007dfdc8e68c363203d](https://ftmscan.com/address/0x1dae89b469d15b0ded980007dfdc8e68c363203d) -EstforLibrary [0x52ecba8c563f686f9d7964a89fbc1956523ce105](https://ftmscan.com/address/0x52ecba8c563f686f9d7964a89fbc1956523ce105) +EstforLibrary [0xc74af3e5e5c2e1fcde9e0e9828190da06722a997](https://ftmscan.com/address/0xc74af3e5e5c2e1fcde9e0e9828190da06722a997) PlayerNFT [0xde70e49756322afdf7714d3aca963abcb4547b8d](https://ftmscan.com/address/0xde70e49756322afdf7714d3aca963abcb4547b8d) PromotionsLibrary [0x684c6e254df63b9d5a28b29b7e4d0850d158f9f9](https://ftmscan.com/address/0x684c6e254df63b9d5a28b29b7e4d0850d158f9f9) Promotions [0xf28cab48e29be56fcc68574b5c147b780c35647c](https://ftmscan.com/address/0xf28cab48e29be56fcc68574b5c147b780c35647c) @@ -130,6 +131,7 @@ GenericInstantVRFActionStrategy [0x2ea7d26184188ec7495acaa84a7de1292e8a1794](htt EggInstantVRFActionStrategy [0x141234B4071e2D40e24F69788522127658285a49](https://ftmscan.com/address/0x141234B4071e2D40e24F69788522127658285a49) VRFRequestInfo [0x9bcf94e6c067c575dd6a748e45330b4ae4dc0483](https://ftmscan.com/address/0x9bcf94e6c067c575dd6a748e45330b4ae4dc0483) +LockedBankVaultsLibrary [0x17760193a82d3f0344e552390769c3326ea0ca1d](https://ftmscan.com/address/0x17760193a82d3f0344e552390769c3326ea0ca1d) LockedBankVaults [0x40567ad9cd25c56422807ed67f0e66f1825bdb91](https://ftmscan.com/address/0x40567ad9cd25c56422807ed67f0e66f1825bdb91) Territories [0xf31517db9f0987002f3a0fb4f787dfb9e892f184](https://ftmscan.com/address/0xf31517db9f0987002f3a0fb4f787dfb9e892f184) CombatantsHelper [0xe8231ac805a88b3c72e9602c2ae14a5d3421bc7c](https://ftmscan.com/address/0xe8231ac805a88b3c72e9602c2ae14a5d3421bc7c) diff --git a/scripts/contractAddresses.ts b/scripts/contractAddresses.ts index 9bbd98bf..18b9616b 100644 --- a/scripts/contractAddresses.ts +++ b/scripts/contractAddresses.ts @@ -90,7 +90,7 @@ if (!isBeta) { adminAccess = "0xa298f1636dacab0db352fec84d2079814e0ce778"; itemNFTLibrary = "0x2d0b79a4d76d6fd86b8ba08acc68d3f35430aa7a"; itemNFT = "0x1dae89b469d15b0ded980007dfdc8e68c363203d"; - estforLibrary = "0x52ecba8c563f686f9d7964a89fbc1956523ce105"; + estforLibrary = "0xc74af3e5e5c2e1fcde9e0e9828190da06722a997"; playerNFT = "0xde70e49756322afdf7714d3aca963abcb4547b8d"; promotions = "0xf28cab48e29be56fcc68574b5c147b780c35647c"; promotionsLibrary = "0x684c6e254df63b9d5a28b29b7e4d0850d158f9f9"; @@ -114,7 +114,7 @@ if (!isBeta) { genericInstantVRFActionStrategy = "0x2ea7d26184188ec7495acaa84a7de1292e8a1794"; eggInstantVRFActionStrategy = "0x141234B4071e2D40e24F69788522127658285a49"; lockedBankVaults = "0x40567ad9cd25c56422807ed67f0e66f1825bdb91"; - lockedBankVaultsLibrary = "TODO"; + lockedBankVaultsLibrary = "0x17760193a82d3f0344e552390769c3326ea0ca1d"; territories = "0xf31517db9f0987002f3a0fb4f787dfb9e892f184"; decoratorProvider = "0xea8c4d188eb8d9704bc36931d89ba4f8e935cee2"; combatantsHelper = "0xe8231ac805a88b3c72e9602c2ae14a5d3421bc7c"; diff --git a/scripts/deployBankBeaconUpgrade.ts b/scripts/deployBankBeaconUpgrade.ts index 259151e8..4f32c461 100644 --- a/scripts/deployBankBeaconUpgrade.ts +++ b/scripts/deployBankBeaconUpgrade.ts @@ -18,7 +18,7 @@ async function main() { const bankImplAddress = await upgrades.beacon.getImplementationAddress(BANK_ADDRESS); console.log("bankImplAddress", bankImplAddress); - await verifyContracts([bankImplAddress]); + await verifyContracts([bankImplAddress, bank.address]); if (isBeta) { // Also update the old first week's beta clans diff --git a/scripts/deployUpgrade.ts b/scripts/deployUpgrade.ts index b1361089..e401530a 100644 --- a/scripts/deployUpgrade.ts +++ b/scripts/deployUpgrade.ts @@ -61,6 +61,7 @@ async function main() { console.log(`estforLibrary = "${estforLibrary.address.toLowerCase()}"`); // Players + /* const Players = (await ethers.getContractFactory("Players")).connect(owner); const players = await upgrades.upgradeProxy(PLAYERS_ADDRESS, Players, { kind: "uups", @@ -95,7 +96,7 @@ async function main() { itemNFTLibrary = await ItemNFTLibrary.attach(ITEM_NFT_LIBRARY_ADDRESS); } console.log(`itemNFTLibrary = "${itemNFTLibrary.address.toLowerCase()}"`); - /* + const ItemNFT = ( await ethers.getContractFactory("ItemNFT", {libraries: {ItemNFTLibrary: itemNFTLibrary.address}}) ).connect(owner); @@ -189,7 +190,7 @@ async function main() { }); await adminAccess.deployed(); console.log(`adminAccess = "${adminAccess.address.toLowerCase()}"`); - +*/ const newPromotionsLibrary = false; const PromotionsLibrary = await ethers.getContractFactory("PromotionsLibrary"); let promotionsLibrary: PromotionsLibrary; @@ -217,7 +218,7 @@ async function main() { }); await promotions.deployed(); console.log(`promotions = "${promotions.address.toLowerCase()}"`); - + /* // Instant actions const InstantActions = (await ethers.getContractFactory("InstantActions")).connect(owner); const instantActions = await upgrades.upgradeProxy(INSTANT_ACTIONS_ADDRESS, InstantActions, { @@ -369,18 +370,20 @@ async function main() { }); await passiveActions.deployed(); console.log(`passiveActions = "${passiveActions.address.toLowerCase()}"`); + */ + if (network.chainId == 250) { - await verifyContracts([players.address]); + /* await verifyContracts([players.address]); await verifyContracts([playerNFT.address]); - await verifyContracts([itemNFT.address]); + await verifyContracts([itemNFT.address]); await verifyContracts([shop.address]); - await verifyContracts([quests.address]); + await verifyContracts([quests.address]); */ await verifyContracts([clans.address]); - await verifyContracts([world.address]); - await verifyContracts([worldLibrary.address]); + /* await verifyContracts([world.address]); + await verifyContracts([worldLibrary.address]); */ await verifyContracts([estforLibrary.address]); - await verifyContracts([adminAccess.address]); - /* await verifyContracts([players.address]); + /* await verifyContracts([adminAccess.address]); + await verifyContracts([players.address]); await verifyContracts([playerNFT.address]); await verifyContracts([itemNFT.address]); await verifyContracts([shop.address]); @@ -394,7 +397,9 @@ async function main() { await verifyContracts([adminAccess.address]); await verifyContracts([bankRegistry.address]); await verifyContracts([wishingWell.address]); + */ await verifyContracts([promotions.address]); + /* await verifyContracts([instantActions.address]); await verifyContracts([vrfRequestInfo.address]); await verifyContracts([instantVRFActions.address]); @@ -405,8 +410,9 @@ async function main() { await verifyContracts([eggInstantVRFActionStrategy.address]); await verifyContracts([petNFT.address]); */ await verifyContracts([lockedBankVaults.address]); - await verifyContracts([territories.address]); /* - await verifyContracts([decoratorProvider.address]); + await verifyContracts([territories.address]); + await verifyContracts([lockedBankVaultsLibrary.address]); + /* await verifyContracts([decoratorProvider.address]); await verifyContracts([combatantsHelper.address]); await verifyContracts([royaltyReceiver.address]); await verifyContracts([passiveActions.address]); */ diff --git a/scripts/verifyContracts.ts b/scripts/verifyContracts.ts index f520d435..64782fe7 100644 --- a/scripts/verifyContracts.ts +++ b/scripts/verifyContracts.ts @@ -35,6 +35,7 @@ import { PET_NFT_LIBRARY_ADDRESS, PASSIVE_ACTIONS_ADDRESS, EGG_INSTANT_VRF_ACTION_STRATEGY_ADDRESS, + LOCKED_BANK_VAULTS_LIBRARY_ADDRESS, } from "./contractAddresses"; import {verifyContracts} from "./utils"; @@ -71,6 +72,7 @@ async function main() { VRF_REQUEST_INFO_ADDRESS, DECORATOR_PROVIDER_ADDRESS, TERRITORIES_ADDRESS, + LOCKED_BANK_VAULTS_LIBRARY_ADDRESS, LOCKED_BANK_VAULTS_ADDRESS, COMBATANTS_HELPER_ADDRESS, PET_NFT_ADDRESS,