-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Service Provider Rewards and Promotions #867
Commits on Oct 2, 2024
-
This workspace is all about dealing with Service Provider Promotion Fund allocation. HIP-114 https://github.com/helium/HIP/blob/main/0114-incentive-escrow-fund-for-subscriber-referrals.md Service Provider Promotions are stored in CarrierV0 on Solana. To keep the mobile-verifier from talking to a chain, this service will periodically check Solana and compare Service Providers allocations to what is stored in S3. If the values have changed, a new file will be output to a bucket for the mobile-verifier rewarder to read from. NOTE: Allocation Values are stored in Bps (Basis Points) https://www.investopedia.com/terms/b/basispoint.asp ** Commands *** ./promotion_fund write-solana Fetch Allocation values from Solana and write them to S3. This command _always_ writes an S3 file. *** ./promotion_fund print-s3 Using the lookback time in the provided settings file, show the Allocation values this service would start up with. *** ./promotion_fund server Start a server that reads from S3, then checks with Solana periodically for updated Allocatino values. Writing new files when needed.
Configuration menu - View commit details
-
Copy full SHA for e6d99c7 - Browse repository at this point
Copy the full SHA e6d99c7View commit details -
Supporting material for promotion_fund workspace
- ingest promotion rewards, nothing will be done with them until the processor is added into mobile-verifier. - dump reward files - add sp_allocations dummy field to rewarder output - reward indexer mobile promotion type added
Configuration menu - View commit details
-
Copy full SHA for 19db98f - Browse repository at this point
Copy the full SHA 19db98fView commit details -
use existing reward_types for reward_indexer
Otherwise inserting a new reward would match on the address and continually change the reward_type column for no reason.
Configuration menu - View commit details
-
Copy full SHA for ff39335 - Browse repository at this point
Copy the full SHA ff39335View commit details -
Configuration menu - View commit details
-
Copy full SHA for 97b0c57 - Browse repository at this point
Copy the full SHA 97b0c57View commit details -
Add Continuous struct helper for file_source
Default trait impls cannot be added to functions, but they can be added to structs. This struct keeps us from needing to do the gross blank generic filling in when we want a continuous file source with a decode other than MsgDecodeFileInfoPollerParser.
Configuration menu - View commit details
-
Copy full SHA for 882aadb - Browse repository at this point
Copy the full SHA 882aadbView commit details -
Configuration menu - View commit details
-
Copy full SHA for eb97f57 - Browse repository at this point
Copy the full SHA eb97f57View commit details -
Swap over Service Provider rewards to use percents
Rather than always dealing with conrete numbers, now that Service Providers can allocate a percentage of their rewards to promotions for subscribers or gateways, it becomes easier to speak of everything in percentages. This is a quick overview of what a more detailed overview you will find in the PR. For every Service Provider (SP) we figure out how much of the total rewards allocation they are being awarded for data transfer. We get the percent they have allocated for promotions (essentially from solana, but really s3), and we determine which percentage of the _total rewards allocation_ that is. If a SP is getting 50% of the total rewards, and they allocate 20% of those rewards to promotions, then the SP will receive 40% of the total, and promotions from them will represent 10% of the total. We do that for all SPs. The unallocated percentage is then distributed to the promotions of each SP. If there is more than enough unallocated left over, each SP get's a matched percentage of the whole to what they set aside. When there is not enough, they get a percentage equal to their initial rewards percentage. This is to keep a service provider from getting the bulk of extra rewards by settings aside a large amount for promotions, and receiving little in rewards for data transfer, but getting more for matching. A SP may never receive more in matched rewards than they have allocated themselves.
Configuration menu - View commit details
-
Copy full SHA for 754a380 - Browse repository at this point
Copy the full SHA 754a380View commit details -
Wrap everything in a service provider type
This makes invocations of rewarding look very consistent
Configuration menu - View commit details
-
Copy full SHA for d3a4241 - Browse repository at this point
Copy the full SHA d3a4241View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1dfe1da - Browse repository at this point
Copy the full SHA 1dfe1daView commit details -
Configuration menu - View commit details
-
Copy full SHA for be4e610 - Browse repository at this point
Copy the full SHA be4e610View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1f16e7a - Browse repository at this point
Copy the full SHA 1f16e7aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7d44da2 - Browse repository at this point
Copy the full SHA 7d44da2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1632262 - Browse repository at this point
Copy the full SHA 1632262View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9167d53 - Browse repository at this point
Copy the full SHA 9167d53View commit details -
Configuration menu - View commit details
-
Copy full SHA for 72c7706 - Browse repository at this point
Copy the full SHA 72c7706View commit details -
the nature of the math has changed
because we're dealing with percentages, and not doing bankers rounding or nearest even, the likelihood that a calculation comes out extremely close to a hole number then gets rounded down is increased. Especially when dealing with percentages to the 7th decimal point and a base number in the trillions.
Configuration menu - View commit details
-
Copy full SHA for df41d2c - Browse repository at this point
Copy the full SHA df41d2cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4c0c05e - Browse repository at this point
Copy the full SHA 4c0c05eView commit details -
stub for reporting sp allocations
I'm hoping there's an easy way to do this someone can point me to
Configuration menu - View commit details
-
Copy full SHA for 9c17404 - Browse repository at this point
Copy the full SHA 9c17404View commit details -
rename collection class for consistency
it get a bit verbose with all the service_provider flying around, but I think it will be rather helpful when you only have the type and it hasn't been aliased.
Configuration menu - View commit details
-
Copy full SHA for 1012a00 - Browse repository at this point
Copy the full SHA 1012a00View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4c50dc3 - Browse repository at this point
Copy the full SHA 4c50dc3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5b972bd - Browse repository at this point
Copy the full SHA 5b972bdView commit details -
Configuration menu - View commit details
-
Copy full SHA for d088627 - Browse repository at this point
Copy the full SHA d088627View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7100362 - Browse repository at this point
Copy the full SHA 7100362View commit details -
truncating to 5 decimal places for a % can result in the summed allocation exceeding 100%. Thanks proptest
Configuration menu - View commit details
-
Copy full SHA for 02c031a - Browse repository at this point
Copy the full SHA 02c031aView commit details -
It has been noted that in tests a single bone is okay, as long as we're not going over the allocated bones
Configuration menu - View commit details
-
Copy full SHA for 3ad8630 - Browse repository at this point
Copy the full SHA 3ad8630View commit details -
let's not have the worst of both worlds where we comment out unused code. Remove the printlns, they're not hard to add back in if you need them.
Configuration menu - View commit details
-
Copy full SHA for bd19088 - Browse repository at this point
Copy the full SHA bd19088View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1f48208 - Browse repository at this point
Copy the full SHA 1f48208View commit details -
Service Providers can use multiple keys for dc_transfer
For accounting reasons, Service Providers can have multiple payer keys listed. We need to ensuure all their dc transfer are accumulated into their service provider entry when we are generating rewards.
Configuration menu - View commit details
-
Copy full SHA for 1abf203 - Browse repository at this point
Copy the full SHA 1abf203View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6d0ba72 - Browse repository at this point
Copy the full SHA 6d0ba72View commit details
Commits on Oct 3, 2024
-
Configuration menu - View commit details
-
Copy full SHA for c02d5ca - Browse repository at this point
Copy the full SHA c02d5caView commit details -
Read Service Provider Promotion values from unique bucket
- Add settings `promotion_ingest`
Configuration menu - View commit details
-
Copy full SHA for 41ef60e - Browse repository at this point
Copy the full SHA 41ef60eView commit details