Skip to content

Commit 042b636

Browse files
authored
Minor tweaks to staker contract (#1179)
1 parent bff9fb6 commit 042b636

5 files changed

Lines changed: 49 additions & 19 deletions

File tree

builtin/staker/housekeeping.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func (s *Staker) activateValidators(currentBlock uint32) ([]*thor.Bytes32, error
174174
}
175175

176176
func (s *Staker) Transition(currentBlock uint32) (bool, error) {
177-
active, err := s.IsActive()
177+
active, err := s.IsPoSActive()
178178
if err != nil {
179179
return false, err
180180
}

builtin/staker/staker.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ func New(addr thor.Address, state *state.State, params *params.Params, charger *
5757
}
5858
}
5959

60-
// IsActive checks if the staker contract has become active, i.e. we have transitioned to PoS.
61-
func (s *Staker) IsActive() (bool, error) {
60+
// IsPoSActive checks if the staker contract has become active, i.e. we have transitioned to PoS.
61+
func (s *Staker) IsPoSActive() (bool, error) {
6262
return s.validations.IsActive()
6363
}
6464

@@ -130,8 +130,12 @@ func (s *Staker) AddValidator(
130130
autoRenew bool,
131131
currentBlock uint32,
132132
) (thor.Bytes32, error) {
133-
stakeETH := new(big.Int).Div(stake, big.NewInt(1e18))
134-
logger.Debug("adding validator", "endorsor", endorsor, "node", node, "period", period, "stake", stakeETH, "autoRenew", autoRenew)
133+
logger.Debug("adding validator", "endorsor", endorsor,
134+
"node", node,
135+
"period", period,
136+
"stake", new(big.Int).Div(stake, big.NewInt(1e18)),
137+
"autoRenew", autoRenew,
138+
)
135139

136140
if id, err := s.validations.Add(endorsor, node, period, stake, autoRenew, currentBlock); err != nil {
137141
logger.Info("add validator failed", "node", node, "error", err)

builtin/staker_native.go

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ func init() {
6767
env.ParseArgs(&args)
6868
charger := gascharger.New(env)
6969

70-
_, validationID, _ := Staker.NativeMetered(env.State(), charger).LookupNode(thor.Address(args.Node))
70+
_, validationID, err := Staker.NativeMetered(env.State(), charger).LookupNode(thor.Address(args.Node))
71+
if err != nil {
72+
return []any{thor.Bytes32{}, fmt.Sprintf("revert: %v", err)}
73+
}
7174

7275
return []any{validationID}
7376
}},
@@ -145,12 +148,12 @@ func init() {
145148
env.ParseArgs(&args)
146149
charger := gascharger.New(env)
147150

148-
isActive, err := Staker.NativeMetered(env.State(), charger).IsActive()
151+
isPoSActive, err := Staker.NativeMetered(env.State(), charger).IsPoSActive()
149152
if err != nil {
150153
return []any{thor.Bytes32{}, fmt.Sprintf("revert: %v", err)}
151154
}
152155

153-
if !isActive {
156+
if !isPoSActive {
154157
charger.Charge(thor.SloadGas) // a.getEntry(nodeMaster)
155158

156159
exists, endorsor, _, _, err := Authority.Native(env.State()).Get(thor.Address(args.Node))
@@ -169,7 +172,8 @@ func init() {
169172
AddValidator(
170173
thor.Address(args.Endorsor),
171174
thor.Address(args.Node),
172-
args.Period, args.Stake,
175+
args.Period,
176+
args.Stake,
173177
args.AutoRenew,
174178
env.BlockContext().Number,
175179
)
@@ -188,7 +192,12 @@ func init() {
188192
env.ParseArgs(&args)
189193
charger := gascharger.New(env)
190194

191-
err := Staker.NativeMetered(env.State(), charger).UpdateAutoRenew(thor.Address(args.Endorsor), thor.Bytes32(args.ValidationID), args.AutoRenew)
195+
err := Staker.NativeMetered(env.State(), charger).
196+
UpdateAutoRenew(
197+
thor.Address(args.Endorsor),
198+
thor.Bytes32(args.ValidationID),
199+
args.AutoRenew,
200+
)
192201
if err != nil {
193202
return []any{fmt.Sprintf("revert: %v", err)}
194203
}
@@ -203,11 +212,16 @@ func init() {
203212
env.ParseArgs(&args)
204213
charger := gascharger.New(env)
205214

206-
err := Staker.NativeMetered(env.State(), charger).IncreaseStake(thor.Address(args.Endorsor), thor.Bytes32(args.ValidationID), args.Amount)
215+
err := Staker.NativeMetered(env.State(), charger).
216+
IncreaseStake(
217+
thor.Address(args.Endorsor),
218+
thor.Bytes32(args.ValidationID),
219+
args.Amount,
220+
)
207221
if err != nil {
208222
return []any{fmt.Sprintf("revert: %v", err)}
209223
}
210-
env.UseGas(thor.SstoreSetGas)
224+
211225
return []any{""}
212226
}},
213227
{"native_decreaseStake", func(env *xenv.Environment) []any {
@@ -219,7 +233,12 @@ func init() {
219233
env.ParseArgs(&args)
220234
charger := gascharger.New(env)
221235

222-
err := Staker.NativeMetered(env.State(), charger).DecreaseStake(thor.Address(args.Endorsor), thor.Bytes32(args.ValidationID), args.Amount)
236+
err := Staker.NativeMetered(env.State(), charger).
237+
DecreaseStake(
238+
thor.Address(args.Endorsor),
239+
thor.Bytes32(args.ValidationID),
240+
args.Amount,
241+
)
223242
if err != nil {
224243
return []any{fmt.Sprintf("revert: %v", err)}
225244
}
@@ -235,7 +254,13 @@ func init() {
235254
env.ParseArgs(&args)
236255
charger := gascharger.New(env)
237256

238-
delegationID, err := Staker.NativeMetered(env.State(), charger).AddDelegation(thor.Bytes32(args.ValidationID), args.Stake, args.AutoRenew, args.Multiplier)
257+
delegationID, err := Staker.NativeMetered(env.State(), charger).
258+
AddDelegation(
259+
thor.Bytes32(args.ValidationID),
260+
args.Stake,
261+
args.AutoRenew,
262+
args.Multiplier,
263+
)
239264
if err != nil {
240265
return []any{thor.Bytes32{}, fmt.Sprintf("revert: %v", err)}
241266
}
@@ -281,7 +306,8 @@ func init() {
281306
if err != nil {
282307
return []any{thor.Bytes32{}, new(big.Int), uint32(0), uint32(0), uint8(0), false, false, fmt.Sprintf("revert: %v", err)}
283308
}
284-
var lastPeriod uint32 = math.MaxUint32
309+
310+
lastPeriod := uint32(math.MaxUint32)
285311
if delegation.LastIteration != nil {
286312
lastPeriod = *delegation.LastIteration
287313
}
@@ -320,7 +346,7 @@ func init() {
320346
charger.Charge(thor.SloadGas)
321347
raw, err := Params.Native(env.State()).Get(thor.KeyStargateContractAddress)
322348
if err != nil {
323-
return []any{thor.Address{}, fmt.Sprintf("failed to get Stargate contract address: %v", err)}
349+
return []any{thor.Address{}, fmt.Sprintf("revert: failed to get Stargate contract address: %v", err)}
324350
}
325351
addr := thor.BytesToAddress(raw.Bytes())
326352
return []any{addr, ""}
@@ -334,7 +360,7 @@ func init() {
334360

335361
totals, err := Staker.NativeMetered(env.State(), charger).GetValidatorsTotals(thor.Bytes32(args.ValidationID))
336362
if err != nil {
337-
return []any{new(big.Int), new(big.Int), new(big.Int), new(big.Int), fmt.Sprintf("failed to validators totals: %v", err)}
363+
return []any{new(big.Int), new(big.Int), new(big.Int), new(big.Int), fmt.Sprintf("revert: failed to get validators totals: %v", err)}
338364
}
339365
return []any{totals.TotalLockedStake, totals.TotalLockedWeight, totals.DelegationsLockedStake, totals.DelegationsLockedWeight, ""}
340366
}},

consensus/validator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ func (c *Consensus) syncPOS(staker *staker.Staker, current uint32) (active bool,
329329
return false, false, nil, nil
330330
}
331331
// check if the staker contract is active
332-
active, err = staker.IsActive()
332+
active, err = staker.IsPoSActive()
333333
if err != nil {
334334
return false, false, nil, err
335335
}

packer/packer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func (p *Packer) syncPOS(st *state.State, current uint32) (active bool, activate
201201
}
202202
// check if the staker contract currently is active
203203
staker := builtin.Staker.Native(st)
204-
active, err = staker.IsActive()
204+
active, err = staker.IsPoSActive()
205205
if err != nil {
206206
return false, false, err
207207
}

0 commit comments

Comments
 (0)