34 lines
1.5 KiB
V
34 lines
1.5 KiB
V
module datamodel
|
|
|
|
// is a root object, is the only obj farmer needs to configure in the UI, this defines how slices will be created
|
|
@[heap]
|
|
pub struct NodeGroup {
|
|
pub mut:
|
|
id u32
|
|
farmerid u32 // link back to farmer who owns the nodegroup, is a user?
|
|
secret string // only visible by farmer, in future encrypted, used to boot a node
|
|
description string
|
|
slapolicy SLAPolicy
|
|
pricingpolicy PricingPolicy
|
|
compute_slice_normalized_pricing_cc f64 // pricing in CC - cloud credit, per 2GB node slice
|
|
storage_slice_normalized_pricing_cc f64 // pricing in CC - cloud credit, per 1GB storage slice
|
|
signature_farmer string // signature as done by farmers to validate that they created this group
|
|
}
|
|
|
|
pub struct SLAPolicy {
|
|
pub mut:
|
|
sla_uptime int // should +90
|
|
sla_bandwidth_mbit int // minimal mbits we can expect avg over 1h per node, 0 means we don't guarantee
|
|
sla_penalty int // 0-100, percent of money given back in relation to month if sla breached, e.g. 200 means we return 2 months worth of rev if sla missed
|
|
}
|
|
|
|
pub struct PricingPolicy {
|
|
pub mut:
|
|
marketplace_year_discounts []int = [30, 40, 50] // e.g. 30,40,50 means if user has more CC in wallet than 1 year utilization on all his purchaes then this provider gives 30%, 2Y 40%, ...
|
|
// volume_discounts []int = [10, 20, 30] // e.g. 10,20,30
|
|
}
|
|
|
|
|
|
|
|
|