Change log
- The front end is fully removed
- After adding the GatewayID to DNS record the PDA will be issued with the next CRON trigger
- Reduced scope → Reduced development time → Reduced development cost
- No need for storing metadata of the snapshot in sub-graph or local db, instead we’ll be using Arweave tagging feature
User journey
- As a staker, I will register in mygateway.xyz (will be referred to as the gateway site) and get a Gateway-ID
- Custodian
- Navigate to the gateway site, and copy gateway id
- Add the following record to the DNS records:
POKT_GATEWAY_ID=copied-id
- On daily basis system will calculate the voting power of each service domain by accounting for its custodian nodes
- Checks the service domain to find the POKT_GATEWAY_ID record
- If found, will issue the PDA to the GatewayID
- if not found, ignore
- Checks all issued PDAs and revokes any service domain PDA that is not in the calculated list
- Non-custodian
- Users will connect all of their non-custodian wallets to their Gateway ID through the gateway dashboard
- On a daily basis we calculate the voting power of all non-custodian wallets
- For each wallet we try to update/assign a PDA using the POKT wallet (ignore if the wallet was not found)
- The users will also connect their ETH wallet to the same Gateway ID
- Using the ETH wallet they will vote
- Again on daily basis, we take a snapshot of all the PDAs we have issued (what we know which GatewayID has what PDAs)
- In the snapshot strategy, we request and get the related GatewayID for each Eth wallet
- Get the immutable snapshot based on the date the proposal has been created
- Lastly, we carry out the voting calculation
Requirements
- Backend
- Integration with POKTscan
- Get Service domains
- Get service domain wallets and custodian type
- Logic
- Calculate voting power for custodian staker (service domain)
- Calculate voting power for non-custodian staker (wallet)
- integration with gateway
- Setup dataModel, and dataModelRequest
- Issue PDA automatically
- Mirror all PDAs and keep a change log in a separate database in DB
- DNS integration
- Check service domain DNS record for gateway-id
- Daily PDA update
- Run logic daily and update voting power
- Check mygateway for new POKT wallets connected to the Gateway ID
- Snapshot strategy
- Immutable DB integration (IPFS)
- Integration
- A daily snapshot of the PDAs state
- Store snapshots
- Expose snapshots for users and snapshot strategy
- Snapshot should include all of our PDAs
- Get all the PDAs related to pokt
- DevOps
- Dev environment setup
- Prod environment setup
- Logging and error handling
Acceptance criteria
- As a validator, I can see,
- A reference to a document on how to claim my PDA
- Button to connect my POKT wallet
- Two sections for custodian and non-custodian
- As a validator, I can
- Connect my wallet
- Claim my PDA
- System will,
- Check the POKTscan for service domain or wallet
- Check if the PDA has been claimed already for the specific wallet or wallets connected to the service domain
- Calculates the voting power
- Stores the PDA and claimer details
- Issues PDA to specified gateway id
- System will take a snapshot from the PDAs and stores them on an immutable database on daily basis