Skip to content

Commit d7fa878

Browse files
authored
snap: Obey collateral-from-miner config (#172)
1 parent 6b0f5d1 commit d7fa878

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

tasks/snap/task_submit.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type SubmitTaskNodeAPI interface {
5757
StateSectorGetInfo(ctx context.Context, maddr address.Address, sectorNumber abi.SectorNumber, tsk types.TipSetKey) (*miner.SectorOnChainInfo, error)
5858

5959
StateMinerInfo(context.Context, address.Address, types.TipSetKey) (api.MinerInfo, error)
60+
StateMinerAvailableBalance(context.Context, address.Address, types.TipSetKey) (big.Int, error)
6061
StateGetActor(ctx context.Context, actor address.Address, tsk types.TipSetKey) (*types.Actor, error)
6162
StateVMCirculatingSupplyInternal(ctx context.Context, tsk types.TipSetKey) (api.CirculatingSupply, error)
6263
}
@@ -65,6 +66,8 @@ type submitConfig struct {
6566
maxFee types.FIL
6667
RequireActivationSuccess bool
6768
RequireNotificationSuccess bool
69+
CollateralFromMinerBalance bool
70+
DisableCollateralFallback bool
6871
}
6972

7073
type SubmitTask struct {
@@ -92,6 +95,9 @@ func NewSubmitTask(db *harmonydb.DB, api SubmitTaskNodeAPI, bstore curiochain.Cu
9295
maxFee: cfg.Fees.MaxCommitGasFee, // todo snap-specific
9396
RequireActivationSuccess: cfg.Subsystems.RequireActivationSuccess,
9497
RequireNotificationSuccess: cfg.Subsystems.RequireNotificationSuccess,
98+
99+
CollateralFromMinerBalance: cfg.Fees.CollateralFromMinerBalance,
100+
DisableCollateralFallback: cfg.Fees.DisableCollateralFallback,
95101
},
96102
}
97103
}
@@ -255,6 +261,22 @@ func (s *SubmitTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done
255261
collateral = big.Zero()
256262
}
257263

264+
if s.cfg.CollateralFromMinerBalance {
265+
if s.cfg.DisableCollateralFallback {
266+
collateral = big.Zero()
267+
}
268+
balance, err := s.api.StateMinerAvailableBalance(ctx, maddr, types.EmptyTSK)
269+
if err != nil {
270+
if err != nil {
271+
return false, xerrors.Errorf("getting miner balance: %w", err)
272+
}
273+
}
274+
collateral = big.Sub(collateral, balance)
275+
if collateral.LessThan(big.Zero()) {
276+
collateral = big.Zero()
277+
}
278+
}
279+
258280
a, _, err := s.as.AddressFor(ctx, s.api, maddr, mi, api.CommitAddr, collateral, big.Zero())
259281
if err != nil {
260282
return false, xerrors.Errorf("getting address for precommit: %w", err)

0 commit comments

Comments
 (0)