Add CLI command to calculate pledge collateral of a CC sector
This commit is contained in:
parent
7410c057c6
commit
6cf2fe50dc
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/filecoin-project/specs-actors/actors/builtin/miner"
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -31,6 +32,7 @@ var sectorsCmd = &cli.Command{
|
|||||||
sectorsMarkForUpgradeCmd,
|
sectorsMarkForUpgradeCmd,
|
||||||
sectorsStartSealCmd,
|
sectorsStartSealCmd,
|
||||||
sectorsSealDelayCmd,
|
sectorsSealDelayCmd,
|
||||||
|
sectorsCapacityCollateralCmd,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,6 +323,53 @@ var sectorsSealDelayCmd = &cli.Command{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sectorsCapacityCollateralCmd = &cli.Command{
|
||||||
|
Name: "get-cc-collateral",
|
||||||
|
Usage: "Get the collateral required to pledge a committed capacity sector",
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.Uint64Flag{
|
||||||
|
Name: "expiration",
|
||||||
|
Usage: "the epoch when the sector will expire",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Action: func(cctx *cli.Context) error {
|
||||||
|
|
||||||
|
mApi, mCloser, err := lcli.GetStorageMinerAPI(cctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer mCloser()
|
||||||
|
|
||||||
|
nApi, nCloser, err := lcli.GetFullNodeAPI(cctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer nCloser()
|
||||||
|
|
||||||
|
ctx := lcli.ReqContext(cctx)
|
||||||
|
|
||||||
|
maddr, err := mApi.ActorAddress(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
pci := miner.SectorPreCommitInfo{
|
||||||
|
Expiration: abi.ChainEpoch(cctx.Uint64("expiration")),
|
||||||
|
}
|
||||||
|
if pci.Expiration == 0 {
|
||||||
|
pci.Expiration = miner.MaxSectorExpirationExtension
|
||||||
|
}
|
||||||
|
pc, err := nApi.StateMinerInitialPledgeCollateral(ctx, maddr, pci, types.EmptyTSK)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Estimated collateral: %s\n", types.FIL(pc))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
var sectorsUpdateCmd = &cli.Command{
|
var sectorsUpdateCmd = &cli.Command{
|
||||||
Name: "update-state",
|
Name: "update-state",
|
||||||
Usage: "ADVANCED: manually update the state of a sector, this may aid in error recovery",
|
Usage: "ADVANCED: manually update the state of a sector, this may aid in error recovery",
|
||||||
|
@ -952,8 +952,12 @@ func (a *StateAPI) StateMinerInitialPledgeCollateral(ctx context.Context, maddr
|
|||||||
return types.EmptyInt, err
|
return types.EmptyInt, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var dealWeights market.VerifyDealsForActivationReturn
|
dealWeights := market.VerifyDealsForActivationReturn{
|
||||||
{
|
DealWeight: big.Zero(),
|
||||||
|
VerifiedDealWeight: big.Zero(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(pci.DealIDs) != 0 {
|
||||||
var err error
|
var err error
|
||||||
params, err := actors.SerializeParams(&market.VerifyDealsForActivationParams{
|
params, err := actors.SerializeParams(&market.VerifyDealsForActivationParams{
|
||||||
DealIDs: pci.DealIDs,
|
DealIDs: pci.DealIDs,
|
||||||
@ -980,11 +984,13 @@ func (a *StateAPI) StateMinerInitialPledgeCollateral(ctx context.Context, maddr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize, err := pci.SealProof.SectorSize()
|
mi, err := a.StateMinerInfo(ctx, maddr, tsk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.EmptyInt, err
|
return types.EmptyInt, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize := mi.SectorSize
|
||||||
|
|
||||||
duration := pci.Expiration - ts.Height() // NB: not exactly accurate, but should always lead us to *over* estimate, not under
|
duration := pci.Expiration - ts.Height() // NB: not exactly accurate, but should always lead us to *over* estimate, not under
|
||||||
|
|
||||||
circSupply, err := a.StateManager.CirculatingSupply(ctx, ts)
|
circSupply, err := a.StateManager.CirculatingSupply(ctx, ts)
|
||||||
|
Loading…
Reference in New Issue
Block a user