Skip to content

Commit 5ab958f

Browse files
committed
Change service provider rewarder to be flat 24% and remove promotions support
1 parent 8602f52 commit 5ab958f

File tree

11 files changed

+45
-1687
lines changed

11 files changed

+45
-1687
lines changed

mobile_verifier/src/cli/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
pub mod reward_from_db;
22
pub mod server;
3-
pub mod service_provider_promotions;
43
pub mod verify_disktree;

mobile_verifier/src/cli/server.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use file_store_oracles::traits::{FileSinkCommitStrategy, FileSinkRollTime, FileS
1919
use helium_proto::services::poc_mobile::{Heartbeat, SeniorityUpdate, SpeedtestAvg};
2020
use mobile_config::client::{
2121
hex_boosting_client::HexBoostingClient, sub_dao_client::SubDaoClient, AuthorizationClient,
22-
CarrierServiceClient, GatewayClient,
22+
GatewayClient,
2323
};
2424
use task_manager::TaskManager;
2525

@@ -42,7 +42,6 @@ impl Cmd {
4242
// mobile config clients
4343
let gateway_client = GatewayClient::from_settings(&settings.config_client)?;
4444
let auth_client = AuthorizationClient::from_settings(&settings.config_client)?;
45-
let carrier_client = CarrierServiceClient::from_settings(&settings.config_client)?;
4645
let hex_boosting_client = HexBoostingClient::from_settings(&settings.config_client)?;
4746
let sub_dao_rewards_client = SubDaoClient::from_settings(&settings.config_client)?;
4847

@@ -173,7 +172,6 @@ impl Cmd {
173172
pool,
174173
settings,
175174
file_upload,
176-
carrier_client,
177175
hex_boosting_client,
178176
sub_dao_rewards_client,
179177
speedtests_avg,

mobile_verifier/src/cli/service_provider_promotions.rs

Lines changed: 0 additions & 39 deletions
This file was deleted.

mobile_verifier/src/main.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use anyhow::Result;
22
use clap::Parser;
33
use mobile_verifier::{
4-
cli::{reward_from_db, server, service_provider_promotions, verify_disktree},
4+
cli::{reward_from_db, server, verify_disktree},
55
Settings,
66
};
77
use std::path;
@@ -38,8 +38,6 @@ pub enum Cmd {
3838
/// Go through every cell and ensure it's value can be turned into an Assignment.
3939
/// NOTE: This can take a very long time. Run with a --release binary.
4040
VerifyDisktree(verify_disktree::Cmd),
41-
/// Print active Service Provider Promotions
42-
ServiceProviderPromotions(service_provider_promotions::Cmd),
4341
}
4442

4543
impl Cmd {
@@ -48,7 +46,6 @@ impl Cmd {
4846
Self::Server(cmd) => cmd.run(&settings).await,
4947
Self::RewardFromDb(cmd) => cmd.run(&settings).await,
5048
Self::VerifyDisktree(cmd) => cmd.run(&settings).await,
51-
Self::ServiceProviderPromotions(cmd) => cmd.run(&settings).await,
5249
}
5350
}
5451
}

mobile_verifier/src/reward_shares.rs

Lines changed: 2 additions & 192 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ use coverage_point_calculator::{
1717
use file_store::traits::TimestampEncode;
1818
use futures::{Stream, StreamExt};
1919
use helium_crypto::PublicKeyBinary;
20-
use helium_proto::services::{
21-
poc_mobile as proto,
22-
};
20+
use helium_proto::services::poc_mobile as proto;
2321
use mobile_config::{boosted_hex_info::BoostedHexes, sub_dao_epoch_reward_info::EpochRewardInfo};
2422
use radio_reward_v2::{RadioRewardV2Ext, ToProtoDecimal};
2523
use rust_decimal::prelude::*;
@@ -546,12 +544,10 @@ pub fn get_scheduled_tokens_for_poc(total_emission_pool: Decimal) -> Decimal {
546544
total_emission_pool * poc_percent
547545
}
548546

549-
550547
pub fn get_scheduled_tokens_for_service_providers(total_emission_pool: Decimal) -> Decimal {
551548
total_emission_pool * SERVICE_PROVIDER_PERCENT
552549
}
553550

554-
555551
fn eligible_for_coverage_map(
556552
oracle_boosting_status: OracleBoostingStatus,
557553
speedtests: &[Speedtest],
@@ -590,18 +586,13 @@ mod test {
590586
coverage::{CoveredHexStream, HexCoverage},
591587
data_session::{self, HotspotDataSession, HotspotReward},
592588
heartbeats::{HeartbeatReward, KeyType, OwnedKeyType},
593-
service_provider::{
594-
self, ServiceProviderDCSessions, ServiceProviderPromotions, ServiceProviderRewardInfos,
595-
},
596589
speedtests::Speedtest,
597590
speedtests_average::SpeedtestAverage,
598591
};
599592
use chrono::{Duration, Utc};
600593
use file_store_oracles::speedtest::CellSpeedtest;
601594
use futures::stream::{self, BoxStream};
602-
use helium_proto::{
603-
services::poc_mobile::mobile_reward_share::Reward as MobileReward, ServiceProvider,
604-
};
595+
use helium_proto::services::poc_mobile::mobile_reward_share::Reward as MobileReward;
605596
use hextree::Cell;
606597
use solana::Token;
607598
use std::collections::HashMap;
@@ -647,11 +638,6 @@ mod test {
647638
assert_eq!(dc_to_hnt_bones(Decimal::from(2), dec!(1.0)), dec!(0.00002));
648639
}
649640

650-
fn hnt_bones_to_dc(hnt_bones_amount: Decimal, hnt_bones_price: Decimal) -> Decimal {
651-
let hnt_value = hnt_bones_amount * hnt_bones_price;
652-
(hnt_value / DC_USD_PRICE).round_dp_with_strategy(0, RoundingStrategy::ToNegativeInfinity)
653-
}
654-
655641
fn rewards_info_1_hour() -> EpochRewardInfo {
656642
let now = Utc::now();
657643
let epoch_duration = Duration::hours(1);
@@ -688,14 +674,12 @@ mod test {
688674
assert_eq!(dec!(70), v, "poc gets 70%");
689675
}
690676

691-
692677
#[test]
693678
fn test_service_provider_scheduled_tokens() {
694679
let v = get_scheduled_tokens_for_service_providers(dec!(100));
695680
assert_eq!(dec!(24), v, "service providers get 24%");
696681
}
697682

698-
699683
#[test]
700684
fn test_price_conversion() {
701685
let token = Token::Hnt;
@@ -1511,178 +1495,4 @@ mod test {
15111495
.into_rewards(reward_shares, &rewards_info.epoch_period)
15121496
.is_none());
15131497
}
1514-
1515-
#[test]
1516-
fn service_provider_reward_amounts() {
1517-
let hnt_bone_price = dec!(0.00001);
1518-
1519-
let sp1 = ServiceProvider::HeliumMobile;
1520-
1521-
let rewards_info = rewards_info_1_hour();
1522-
1523-
let total_sp_rewards = service_provider::get_scheduled_tokens(rewards_info.epoch_emissions);
1524-
let sp_reward_infos = ServiceProviderRewardInfos::new(
1525-
ServiceProviderDCSessions::from([(sp1, dec!(1000))]),
1526-
ServiceProviderPromotions::default(),
1527-
total_sp_rewards,
1528-
hnt_bone_price,
1529-
rewards_info.clone(),
1530-
);
1531-
1532-
let mut sp_rewards = HashMap::<i32, u64>::new();
1533-
let mut allocated_sp_rewards = 0_u64;
1534-
1535-
for (reward_amount, reward) in sp_reward_infos.iter_rewards() {
1536-
if let Some(MobileReward::ServiceProviderReward(r)) = reward.reward {
1537-
sp_rewards.insert(r.service_provider_id, r.amount);
1538-
assert_eq!(reward_amount, r.amount);
1539-
allocated_sp_rewards += reward_amount;
1540-
}
1541-
}
1542-
1543-
let sp1_reward_amount = *sp_rewards
1544-
.get(&(sp1 as i32))
1545-
.expect("Could not fetch sp1 shares");
1546-
assert_eq!(sp1_reward_amount, 999);
1547-
1548-
// confirm the unallocated service provider reward amounts
1549-
let unallocated_sp_reward_amount = (total_sp_rewards - Decimal::from(allocated_sp_rewards))
1550-
.round_dp_with_strategy(0, RoundingStrategy::ToZero)
1551-
.to_u64()
1552-
.unwrap_or(0);
1553-
assert_eq!(unallocated_sp_reward_amount, 821_917_807_220);
1554-
}
1555-
1556-
#[test]
1557-
fn service_provider_reward_amounts_capped() {
1558-
let hnt_bone_price = dec!(1.0);
1559-
let sp1 = ServiceProvider::HeliumMobile;
1560-
1561-
let rewards_info = rewards_info_1_hour();
1562-
1563-
let total_sp_rewards_in_bones = dec!(1_0000_0000);
1564-
let total_rewards_value_in_dc = hnt_bones_to_dc(total_sp_rewards_in_bones, hnt_bone_price);
1565-
1566-
let sp_reward_infos = ServiceProviderRewardInfos::new(
1567-
// force the service provider to have spend more DC than total rewardable
1568-
ServiceProviderDCSessions::from([(sp1, total_rewards_value_in_dc * dec!(2.0))]),
1569-
ServiceProviderPromotions::default(),
1570-
total_sp_rewards_in_bones,
1571-
hnt_bone_price,
1572-
rewards_info.clone(),
1573-
);
1574-
1575-
let mut sp_rewards = HashMap::new();
1576-
let mut allocated_sp_rewards = 0_u64;
1577-
1578-
for (reward_amount, reward) in sp_reward_infos.iter_rewards() {
1579-
if let Some(MobileReward::ServiceProviderReward(r)) = reward.reward {
1580-
sp_rewards.insert(r.service_provider_id, r.amount);
1581-
assert_eq!(reward_amount, r.amount);
1582-
allocated_sp_rewards += reward_amount;
1583-
}
1584-
}
1585-
1586-
let sp1_reward_amount = *sp_rewards
1587-
.get(&(sp1 as i32))
1588-
.expect("Could not fetch sp1 shares");
1589-
1590-
assert_eq!(Decimal::from(sp1_reward_amount), total_sp_rewards_in_bones);
1591-
assert_eq!(sp1_reward_amount, 1_0000_0000);
1592-
1593-
// confirm the unallocated service provider reward amounts
1594-
let unallocated_sp_reward_amount = (total_sp_rewards_in_bones
1595-
- Decimal::from(allocated_sp_rewards))
1596-
.round_dp_with_strategy(0, RoundingStrategy::ToZero)
1597-
.to_u64()
1598-
.unwrap_or(0);
1599-
assert_eq!(unallocated_sp_reward_amount, 0);
1600-
}
1601-
1602-
#[test]
1603-
fn service_provider_reward_hip87_ex1() {
1604-
// price from hip example and converted to bones
1605-
let hnt_bone_price = dec!(0.0001) / dec!(1_0000_0000);
1606-
let sp1 = ServiceProvider::HeliumMobile;
1607-
1608-
let rewards_info = rewards_info_1_hour();
1609-
1610-
let total_sp_rewards_in_bones = dec!(500_000_000) * dec!(1_0000_0000);
1611-
1612-
let sp_reward_infos = ServiceProviderRewardInfos::new(
1613-
ServiceProviderDCSessions::from([(sp1, dec!(1_0000_0000))]),
1614-
ServiceProviderPromotions::default(),
1615-
total_sp_rewards_in_bones,
1616-
hnt_bone_price,
1617-
rewards_info.clone(),
1618-
);
1619-
1620-
let mut sp_rewards = HashMap::new();
1621-
let mut allocated_sp_rewards = 0_u64;
1622-
1623-
for (reward_amount, reward) in sp_reward_infos.iter_rewards() {
1624-
if let Some(MobileReward::ServiceProviderReward(r)) = reward.reward {
1625-
sp_rewards.insert(r.service_provider_id, r.amount);
1626-
assert_eq!(reward_amount, r.amount);
1627-
allocated_sp_rewards += reward_amount;
1628-
}
1629-
}
1630-
1631-
let sp1_reward_amount_in_bones = *sp_rewards
1632-
.get(&(sp1 as i32))
1633-
.expect("Could not fetch sp1 shares");
1634-
// assert expected value in bones
1635-
assert_eq!(sp1_reward_amount_in_bones, 10_000_000 * 1_0000_0000);
1636-
1637-
// confirm the unallocated service provider reward amounts
1638-
let unallocated_sp_reward_amount = (total_sp_rewards_in_bones
1639-
- Decimal::from(allocated_sp_rewards))
1640-
.round_dp_with_strategy(0, RoundingStrategy::ToZero)
1641-
.to_u64()
1642-
.unwrap_or(0);
1643-
assert_eq!(unallocated_sp_reward_amount, 49_000_000_000_000_000);
1644-
}
1645-
1646-
#[test]
1647-
fn service_provider_reward_hip87_ex2() {
1648-
// price from hip example and converted to bones
1649-
let hnt_bone_price = dec!(0.0001) / dec!(1_0000_0000);
1650-
let sp1 = ServiceProvider::HeliumMobile;
1651-
1652-
let rewards_info = rewards_info_1_hour();
1653-
let total_sp_rewards_in_bones = dec!(500_000_000) * dec!(1_0000_0000);
1654-
1655-
let sp_reward_infos = ServiceProviderRewardInfos::new(
1656-
ServiceProviderDCSessions::from([(sp1, dec!(100_000_000_000))]),
1657-
ServiceProviderPromotions::default(),
1658-
total_sp_rewards_in_bones,
1659-
hnt_bone_price,
1660-
rewards_info.clone(),
1661-
);
1662-
1663-
let mut sp_rewards = HashMap::new();
1664-
let mut allocated_sp_rewards = 0_u64;
1665-
1666-
for (reward_amount, reward) in sp_reward_infos.iter_rewards() {
1667-
if let Some(MobileReward::ServiceProviderReward(r)) = reward.reward {
1668-
sp_rewards.insert(r.service_provider_id, r.amount);
1669-
assert_eq!(reward_amount, r.amount);
1670-
allocated_sp_rewards += reward_amount;
1671-
}
1672-
}
1673-
1674-
let sp1_reward_amount_in_bones = *sp_rewards
1675-
.get(&(sp1 as i32))
1676-
.expect("Could not fetch sp1 shares");
1677-
// assert expected value in bones
1678-
assert_eq!(sp1_reward_amount_in_bones, 500_000_000 * 1_0000_0000);
1679-
1680-
// confirm the unallocated service provider reward amounts
1681-
let unallocated_sp_reward_amount = (total_sp_rewards_in_bones
1682-
- Decimal::from(allocated_sp_rewards))
1683-
.round_dp_with_strategy(0, RoundingStrategy::ToZero)
1684-
.to_u64()
1685-
.unwrap_or(0);
1686-
assert_eq!(unallocated_sp_reward_amount, 0);
1687-
}
16881498
}

0 commit comments

Comments
 (0)