@@ -16,6 +16,18 @@ import (
1616 log "github.com/inconshreveable/log15"
1717)
1818
19+ const (
20+ LotteryRewardDivisor = 100
21+ MinBlockCost = 0
22+
23+ DefaultFreeClaimStorage = 1 * units .MiB
24+ DefaultValueUnitSize = 1 * units .KiB
25+ DefaultFreeClaimUnits = DefaultFreeClaimStorage / DefaultValueUnitSize
26+ DefaultFreeClaimDuration = 60 * 60 * 24 * 30 // 30 Days
27+
28+ DefaultLookbackWindow = 60
29+ )
30+
1931type Airdrop struct {
2032 // Address strings are hex-formatted common.Address
2133 Address common.Address `serialize:"true" json:"address"`
@@ -38,30 +50,26 @@ type Genesis struct {
3850 MaxValueSize uint64 `serialize:"true" json:"maxValueSize"`
3951
4052 // Claim Params
41- ClaimFeeMultiplier uint64 `serialize:"true" json:"claimFeeMultiplier"`
42- ClaimTier3Multiplier uint64 `serialize:"true" json:"claimTier3Multiplier"`
43- ClaimTier2Size uint64 `serialize:"true" json:"claimTier2Size"`
44- ClaimTier2Multiplier uint64 `serialize:"true" json:"claimTier2Multiplier"`
45- ClaimTier1Size uint64 `serialize:"true" json:"claimTier1Size"`
46- ClaimTier1Multiplier uint64 `serialize:"true" json:"claimTier1Multiplier"`
53+ ClaimLoadMultiplier uint64 `serialize:"true" json:"claimLoadMultiplier"`
54+ MinClaimFee uint64 `serialize:"true" json:"minClaimFee"`
55+ SpaceDesirabilityMultiplier uint64 `serialize:"true" json:"spaceDesirabilityMultiplier"`
4756
4857 // Lifeline Params
49- PrefixRenewalDiscount uint64 `serialize:"true" json:"prefixRenewalDiscount"`
58+ SpaceRenewalDiscount uint64 `serialize:"true" json:"prefixRenewalDiscount"`
5059
5160 // Reward Params
52- ClaimReward uint64 `serialize:"true" json:"claimReward"`
53- LifelineUnitReward uint64 `serialize:"true" json:"lifelineUnitReward"`
61+ ClaimReward uint64 `serialize:"true" json:"claimReward"`
5462
5563 // Mining Reward (% of min required fee)
56- LotteryRewardMultipler uint64 `serialize:"true" json:"lotteryRewardMultipler"`
57- LotteryRewardDivisor uint64 `serialize:"true" json:"lotteryRewardDivisor"`
64+ LotteryRewardMultipler uint64 `serialize:"true" json:"lotteryRewardMultipler"` // divided by 100
5865
5966 // Fee Mechanism Params
60- LookbackWindow int64 `serialize:"true" json:"lookbackWindow"`
61- BlockTarget int64 `serialize:"true" json:"blockTarget"`
62- TargetUnits uint64 `serialize:"true" json:"targetUnits"`
63- MinPrice uint64 `serialize:"true" json:"minPrice"`
64- MinBlockCost uint64 `serialize:"true" json:"minBlockCost"`
67+ MinPrice uint64 `serialize:"true" json:"minPrice"`
68+ LookbackWindow int64 `serialize:"true" json:"lookbackWindow"`
69+ TargetBlockRate int64 `serialize:"true" json:"targetBlockRate"` // seconds
70+ TargetBlockSize uint64 `serialize:"true" json:"targetBlockSize"` // units
71+ MaxBlockSize uint64 `serialize:"true" json:"maxBlockSize"` // units
72+ BlockCostEnabled bool `serialize:"true" json:"blockCostEnabled"`
6573
6674 // Allocations
6775 CustomAllocation []* CustomAllocation `serialize:"true" json:"customAllocation"`
@@ -72,51 +80,50 @@ type Genesis struct {
7280func DefaultGenesis () * Genesis {
7381 return & Genesis {
7482 // Tx params
75- BaseTxUnits : 10 ,
83+ BaseTxUnits : 1 ,
7684
7785 // SetTx params
78- ValueUnitSize : 256 , // 256B
79- MaxValueSize : 64 * units .KiB , // (250 Units)
86+ ValueUnitSize : DefaultValueUnitSize ,
87+ MaxValueSize : 256 * units .KiB ,
8088
8189 // Claim Params
82- ClaimFeeMultiplier : 5 ,
83- ClaimTier3Multiplier : 1 ,
84- ClaimTier2Size : 36 ,
85- ClaimTier2Multiplier : 5 ,
86- ClaimTier1Size : 12 ,
87- ClaimTier1Multiplier : 25 ,
90+ ClaimLoadMultiplier : 5 ,
91+ MinClaimFee : 100 ,
92+ SpaceDesirabilityMultiplier : 5 ,
8893
8994 // Lifeline Params
90- PrefixRenewalDiscount : 5 ,
95+ SpaceRenewalDiscount : 10 ,
9196
9297 // Reward Params
93- ClaimReward : 60 * 60 * 24 * 15 , // 15 Days
94- LifelineUnitReward : 60 * 60 , // 1 Hours Per Fee Unit
98+ ClaimReward : DefaultFreeClaimUnits * DefaultFreeClaimDuration ,
9599
96- // Lottery Reward (80% of tx.FeeUnits() * block.Price)
97- LotteryRewardMultipler : 8 ,
98- LotteryRewardDivisor : 10 ,
100+ // Lottery Reward (50% of tx.FeeUnits() * block.Price)
101+ LotteryRewardMultipler : 50 ,
99102
100103 // Fee Mechanism Params
101- LookbackWindow : 60 , // 60 Seconds
102- BlockTarget : 1 , // 1 Block per Second
103- TargetUnits : 10 * 512 * 60 , // 5012 Units Per Block (~1.2MB of SetTx)
104- MinPrice : 1 , // (50 for easiest claim)
105- MinBlockCost : 0 , // Minimum Unit Overhead
104+ LookbackWindow : DefaultLookbackWindow , // 60 Seconds
105+ TargetBlockRate : 1 , // 1 Block per Second
106+ TargetBlockSize : 1500 , // 1500 Units Per Block (~1.5MB of SetTx)
107+ MaxBlockSize : 2000 , // 2000 Units (~2MB)
108+ MinPrice : 1 ,
109+ BlockCostEnabled : true ,
106110 }
107111}
108112
109113func (g * Genesis ) StatefulBlock () * StatefulBlock {
110114 return & StatefulBlock {
111115 Price : g .MinPrice ,
112- Cost : g . MinBlockCost ,
116+ Cost : MinBlockCost ,
113117 }
114118}
115119
116120func (g * Genesis ) Verify () error {
117121 if g .Magic == 0 {
118122 return ErrInvalidMagic
119123 }
124+ if g .TargetBlockRate == 0 {
125+ return ErrInvalidBlockRate
126+ }
120127 return nil
121128}
122129
0 commit comments