Phase 1
Delivery deadline: January 15
User journey
- As a staker, I will register in mygateway.xyz (will be referred to as the gateway site) and get a Gateway-ID
- Then I’ll go to the issuer website (The client site is a minimal frontend for the validators to claim their PDA, from now on I refer to it as the issuer site)
- I will see detailed documentation on how to claim my PDA, based on the type of my stake I proceed as follows:
- Custodian
- Navigate to the gateway site, and copy gateway id
- Add the following record to the DNS records:
POKT_GATEWAY_ID=copied-id
- Return to the issuer site
- Input service domain name and request for check
- The system checks the service domain looking for the gateway ID, calculates power based on POKTscan, and issues the PDA.
- New flow
- 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
Connect POKT wallet used for staking (marked as output wallet in POKTscan)
Input gateway id and request to claim PDA
The system will calculate the voting power and issue the PDA to the gateway id
Users will connect their related POKT wallets to their gateway-id in mygateway.xyz dashboard
Then they will return to the issuer site and input their Gateway ID
The system checks for the wallets and does the calculation, then sends the PDA to the gateway ID
- 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)
DB → DB schema
Only tables related to the staker and PDA will be developed at this point
- 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
- Frontend
- PDA claim path for custodian and non-custodian validators
- Connect POKT wallet
- Backend integration
- DevOps
- Dev environment setup
- Prod environment setup
DB 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
Figma Design