Due to the snapshot constrains Snapshot constrains we are forced to use hash table model for faster access, also we calculate the points before snapshot strategy and store it on immutableDB with the proof of how it has been calculated. Also, we store the mapping between Eth wallets and gatewayID to not invoke the Gateway site as it will take time and adds another dependency to our strategy. Current dependancies are Uniswap Graphql and Arweave.
{
PDASnapshot: {
"GatewayID1": {
"Citizen": {
Point: SUM(PDAs.filterDuplicateSubTypes().points)
PDAs: [
PoktDaoQuest // with expration date: Feb 2024
PoktDaoQuest // with expration date: Dec 2024
poktDnaQuest
]
},
"Builder": {
// if points > 10 then 10 else points
Point: SUM(PDAs.filterDuplicateSubTypesOfSamePoint().points)
PDAs:[
BuilderSocketPDAsubTypeAPoint1, // exp date: Feb 2024
BuilderSocketPDAsubTypeAPoint1, // exp date: Dec 2024
BuilderSocketPDAsubTypeAPoint8, // exp date: Jan 2024
BuilderSocketPDAsubTypeBPoint8, // exp date: May 2024
BuilderSocketPDAsubTypeCPoint5
]
},
"Staker": {
PointValidator: SQRT(SUM(
PDAs.subtype(Validator).filterInactiveStatus().points
)
),
PointGateway: SUM(PDAs.subtype(Gateway).points),
PDAs:[
NonCustodianValidatorPDAForServiceDomainC0d3r,
NonCustodianValidatorPDAForServiceDomainPoktPool,
CustodianValidatorPDAForWalletXXXXXXXX,
CustodianValidatorPDAForWalletYYYYYYY,
GatewayPDAForGatewayGrove
]
}
},
"GatewayID2": {
...
},
"GatewayID3": {
...
}
}
mapping:{
ethWallet1: GatewayID1,
ethwallet2: GatewayID2,
ethwallet3: GatewayID2,
ethwallet4: GatewayID2,
ethwallet5: GatewayID3,
/*
voting_eth_wallet -> GatewayIDX
POKT-eth-stake-wallet-1 -> GatewayIDX
POKT-eth-stake-wallet-2 -> GatewayIDX
POKT-eth-stake-wallet-3 -> GatewayIDX
*/
}
}