Flag Storage
Contracts
Addresses
DFK Chain
FlagStorageV2
0x75d8ba2E4725633FcdcC165332dCA04c107915cA
0x49b145D2164B137a398951a76D069118F2EAfe4a
Klaytn
FlagStorageV2
0xeb9ff38209dCC4236DBFb3C275c0AAeEBf0B92Cf
0x3f81c3a28c4802E2B1966A5590beEAb895cC01DD
Interfaces
interface IFlagStorageV2 {
event CraftingGenesStorageSet(uint256 heroId, bool value);
event DarkSummoningStorageSet(uint256 heroId, tuple(uint32 levelCarryover) values);
// The first reroll that took place on Harmony for the CV release
event Gen0RerollCVStorageSet(uint256 heroId, tuple(address player, uint32 summonRecord, bool rerolledGameGenes, bool rerolledAppearanceGenes) values);
// The second reroll that took place on CV for the SD2.0 release
event Gen0RerollSDStorageSet(uint256 heroId, tuple(address player, uint32 summonRecord, bool rerolledGameGenes, bool rerolledAppearanceGenes) values);
event PerilousJourneyStorageSet(uint256 heroId, address value);
event HeroPendingReviewAdded(uint256 heroId);
event HeroTaintedGeneStorageDeleted(uint256 heroId);
event HeroTaintedGeneStorageSet(uint256 heroId, tuple(uint256 heroId, uint8[] geneIndex, uint8[] rankType, bool hasTaintedGenes, bool mayHaveTaintedGenes) geneValues);
event HeroesPendingReviewCleared();
function getCraftingGeneFlag(uint256 _heroId) view returns (bool);
function getCraftingGeneFlags(uint256[] _heroIds) view returns (uint256[], bool[]);
function getDarkSummoningStorage(uint256 _heroId) view returns (tuple(uint32 levelCarryover));
// The first reroll that took place on Harmony for the CV release
function getGen0RerollCVStorage(uint256 _heroId) view returns (tuple(address player, uint32 summonRecord, bool rerolledGameGenes, bool rerolledAppearanceGenes));
// The second reroll that took place on CV for the SD2.0 release
function getGen0RerollSDStorage(uint256 _heroId) view returns (tuple(address player, uint32 summonRecord, bool rerolledGameGenes, bool rerolledAppearanceGenes));
function getPJStorage(uint256 _heroId) view returns (address);
}
ABIs
Historical Contracts
These contracts have been deprecated and should not be used. They are listed here for data analysis and tracking purposes only.
Addresses
DFK Chain
FlagStorageV1
0x659D6F1Ba11c388A55091dc83e77808081201D5D
0xfD892302248D97626bF61Ea5C4308cFaF2b4dA1C
Harmony
FlagStorageV1
0x284F756A212Afd072E5a6033Ace9BE0Eed1d8811
0x2e0B652a5BBc6547DD11aA7A25235dd92d2Fde23
Interfaces
interface IFlagStorageV1 {
event UpdatedHeroStorage(uint256 indexed heroId, uint256 indexed storageId, uint32[] data);
event UpdatedWalletStorage(address indexed wallet, uint256 indexed storageId, uint32[] data);
function getHeroStorageData(uint256 _heroId, uint256 _storageId) view returns (uint32[]);
function getHeroStorageDataAtIndex(uint256 _heroId, uint256 _storageId, uint256 _index) view returns (uint32);
function getHeroStorageFlag(uint256 _heroId, uint256 _storageId, uint256 _dataIndex, uint8 _bitIndex) view returns (bool);
function getHeroStorageLower16BitValue(uint256 _heroId, uint256 _storageId, uint256 _index) view returns (uint32);
function getHeroStorageUpper16BitValue(uint256 _heroId, uint256 _storageId, uint256 _index) view returns (uint32);
function getHeroStorageWalletAddress(uint256 _heroId, uint256 _storageId, uint256 _startIndex) view returns (address);
function getWalletStorageData(address _wallet, uint256 _storageId) view returns (uint32[]);
function getWalletStorageDataAtIndex(address _wallet, uint256 _storageId, uint256 _index) view returns (uint32);
function getWalletStorageFlag(address _wallet, uint256 _storageId, uint256 _dataIndex, uint8 _bitIndex) view returns (bool);
function getWalletStorageLower16BitValue(address _wallet, uint256 _storageId, uint256 _index) view returns (uint32);
function getWalletStorageUpper16BitValue(address _wallet, uint256 _storageId, uint256 _index) view returns (uint32);, uint32 summonRecord, bool rerolledGameGenes, bool rerolledAppearanceGenes));
}
ABIs
FlagStorageV1
The V1 FlagStorage system is constructed from a two layer mapping, where the first layer is indexed by keys that correspond to wallet addresses or Hero IDs. The second layer is indexed by storage IDs and return an array of uint32
values. These uint
values can be broken down into their individual bits for boolean
storage, or split into lower and upper uint16
values.
To retrieve this data, use getWalletStorageFlag
or getHeroStorageFlag
for boolean
values, and getWallet
/HeroStorageLower
/Upper16BitValue
for uint16
values.
This is not a complete list of Flag Storage data, as the remainder can be retrieved from the Perilous Journey and Gen0 Reroll contracts. All relevant data will eventually be migrated to the V2 contract.
Wallet Storage
2
1
0
boolean
Donated to Philippines hurricane relief (2021)
Harmony
2
1
1
boolean
Donated to UNICEF campaign (April 2022)
Harmony DFK Chain
Hero Storage
4
0
0
boolean
Perilous Journey Survivor
Harmony
4
0
1
boolean
Gen0 Reroll (CV) Game Genes
Harmony
4
0
2
boolean
Gen0 Reroll (CV) Visual Genes
Harmony
5
0
0
boolean
Hero survived the Perilous Journey
Harmony
5
0
1
boolean
Hero died on the Perilous Journey
Harmony
5
0
2
boolean
Hero is eligible for 3x +5 Stat Ups from the Perilous Journey
Harmony
5
0
3
boolean
Hero received 3x +5 Stat Ups from the Perilous Journey
Harmony
Last updated