Skip to content

Commit 5fb89cb

Browse files
committed
fix: block delay is 0
1 parent 51e65a1 commit 5fb89cb

File tree

4 files changed

+45
-34
lines changed

4 files changed

+45
-34
lines changed

cmd/miner.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ var minerInfoCmd = &cmds.Command{
229229
blockstoreAPI := env.(*node.Env).BlockStoreAPI
230230
api := env.(*node.Env).ChainAPI
231231

232-
blockDelay, err := blockDelay(req)
232+
blockDelay, err := getBlockDelay(ctx, env)
233233
if err != nil {
234234
return err
235235
}

cmd/miner_proving.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var provingInfoCmd = &cmds.Command{
4343
}
4444
ctx := req.Context
4545

46-
blockDelay, err := blockDelay(req)
46+
blockDelay, err := getBlockDelay(ctx, env)
4747
if err != nil {
4848
return err
4949
}
@@ -123,8 +123,8 @@ var provingInfoCmd = &cmds.Command{
123123
writer.Printf("Current Epoch: %d\n", cd.CurrentEpoch)
124124

125125
writer.Printf("Proving Period Boundary: %d\n", cd.PeriodStart%cd.WPoStProvingPeriod)
126-
writer.Printf("Proving Period Start: %s\n", EpochTime(cd.CurrentEpoch, cd.PeriodStart, blockDelay))
127-
writer.Printf("Next Period Start: %s\n", EpochTime(cd.CurrentEpoch, cd.PeriodStart+cd.WPoStProvingPeriod, blockDelay))
126+
writer.Printf("Proving Period Start: %s\n", EpochTimeTs(cd.CurrentEpoch, cd.PeriodStart, blockDelay, head))
127+
writer.Printf("Next Period Start: %s\n", EpochTimeTs(cd.CurrentEpoch, cd.PeriodStart+cd.WPoStProvingPeriod, blockDelay, head))
128128

129129
writer.Println()
130130
writer.Printf("Faults: %d (%.2f%%)\n", faults, faultPerc)

cmd/state.go

+12-30
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,10 @@ import (
55
"encoding/json"
66
"fmt"
77
"io"
8-
"path/filepath"
98
"strconv"
109

11-
"github.com/filecoin-project/venus/app/paths"
1210
"github.com/filecoin-project/venus/cmd/tablewriter"
1311

14-
"github.com/filecoin-project/venus/pkg/config"
15-
1612
"github.com/filecoin-project/go-address"
1713
"github.com/filecoin-project/go-state-types/abi"
1814
actorstypes "github.com/filecoin-project/go-state-types/actors"
@@ -257,7 +253,8 @@ var stateSectorCmd = &cmds.Command{
257253
return err
258254
}
259255

260-
ts, err := env.(*node.Env).ChainAPI.ChainHead(req.Context)
256+
ctx := req.Context
257+
ts, err := env.(*node.Env).ChainAPI.ChainHead(ctx)
261258
if err != nil {
262259
return err
263260
}
@@ -267,12 +264,12 @@ var stateSectorCmd = &cmds.Command{
267264
return err
268265
}
269266

270-
blockDelay, err := blockDelay(req)
267+
blockDelay, err := getBlockDelay(ctx, env)
271268
if err != nil {
272269
return err
273270
}
274271

275-
si, err := env.(*node.Env).ChainAPI.StateSectorGetInfo(req.Context, maddr, abi.SectorNumber(sid), ts.Key())
272+
si, err := env.(*node.Env).ChainAPI.StateSectorGetInfo(ctx, maddr, abi.SectorNumber(sid), ts.Key())
276273
if err != nil {
277274
return err
278275
}
@@ -289,8 +286,8 @@ var stateSectorCmd = &cmds.Command{
289286
writer.Println("SealedCID: ", si.SealedCID)
290287
writer.Println("DealIDs: ", si.DealIDs)
291288
writer.Println()
292-
writer.Println("Activation: ", EpochTime(height, si.Activation, blockDelay))
293-
writer.Println("Expiration: ", EpochTime(height, si.Expiration, blockDelay))
289+
writer.Println("Activation: ", EpochTimeTs(height, si.Activation, blockDelay, ts))
290+
writer.Println("Expiration: ", EpochTimeTs(height, si.Expiration, blockDelay, ts))
294291
writer.Println()
295292
writer.Println("DealWeight: ", si.DealWeight)
296293
writer.Println("VerifiedDealWeight: ", si.VerifiedDealWeight)
@@ -311,22 +308,6 @@ var stateSectorCmd = &cmds.Command{
311308
},
312309
}
313310

314-
func blockDelay(req *cmds.Request) (uint64, error) {
315-
var err error
316-
repoDir, _ := req.Options[OptionRepoDir].(string)
317-
repoDir, err = paths.GetRepoPath(repoDir)
318-
if err != nil {
319-
return 0, err
320-
}
321-
cfgPath := filepath.Join(repoDir, "config.json")
322-
cfg, err := config.ReadFile(cfgPath)
323-
if err != nil {
324-
return 0, err
325-
}
326-
327-
return cfg.NetworkParams.BlockDelay, nil
328-
}
329-
330311
var stateGetActorCmd = &cmds.Command{
331312
Helptext: cmds.HelpText{
332313
Tagline: "Print actor information",
@@ -471,22 +452,23 @@ var stateMinerInfo = &cmds.Command{
471452
return err
472453
}
473454

474-
blockDelay, err := blockDelay(req)
455+
ctx := req.Context
456+
blockDelay, err := getBlockDelay(ctx, env)
475457
if err != nil {
476458
return err
477459
}
478460

479-
ts, err := env.(*node.Env).ChainAPI.ChainHead(req.Context)
461+
ts, err := env.(*node.Env).ChainAPI.ChainHead(ctx)
480462
if err != nil {
481463
return err
482464
}
483465

484-
mi, err := env.(*node.Env).ChainAPI.StateMinerInfo(req.Context, addr, ts.Key())
466+
mi, err := env.(*node.Env).ChainAPI.StateMinerInfo(ctx, addr, ts.Key())
485467
if err != nil {
486468
return err
487469
}
488470

489-
availableBalance, err := env.(*node.Env).ChainAPI.StateMinerAvailableBalance(req.Context, addr, ts.Key())
471+
availableBalance, err := env.(*node.Env).ChainAPI.StateMinerAvailableBalance(ctx, addr, ts.Key())
490472
if err != nil {
491473
return fmt.Errorf("getting miner available balance: %w", err)
492474
}
@@ -535,7 +517,7 @@ var stateMinerInfo = &cmds.Command{
535517

536518
writer.Println()
537519

538-
cd, err := env.(*node.Env).ChainAPI.StateMinerProvingDeadline(req.Context, addr, ts.Key())
520+
cd, err := env.(*node.Env).ChainAPI.StateMinerProvingDeadline(ctx, addr, ts.Key())
539521
if err != nil {
540522
return fmt.Errorf("getting miner info: %w", err)
541523
}

cmd/utils.go

+29
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ func cidsFromSlice(args []string) ([]cid.Cid, error) {
141141
return out, nil
142142
}
143143

144+
func getBlockDelay(ctx context.Context, env cmds.Environment) (uint64, error) {
145+
params, err := env.(*node.Env).ChainAPI.StateGetNetworkParams(ctx)
146+
if err != nil {
147+
return 0, err
148+
}
149+
150+
return params.BlockDelaySecs, nil
151+
}
152+
144153
func EpochTime(curr, e abi.ChainEpoch, blockDelay uint64) string {
145154
switch {
146155
case curr > e:
@@ -154,6 +163,26 @@ func EpochTime(curr, e abi.ChainEpoch, blockDelay uint64) string {
154163
panic("math broke")
155164
}
156165

166+
// EpochTimeTs is like EpochTime, but also outputs absolute time. `ts` is only
167+
// used to provide a timestamp at some epoch to calculate time from. It can be
168+
// a genesis tipset.
169+
//
170+
// Example output: `1944975 (01 Jul 22 08:07 CEST, 10 hours 29 minutes ago)`
171+
func EpochTimeTs(curr, e abi.ChainEpoch, blockDelay uint64, ts *types.TipSet) string {
172+
timeStr := time.Unix(int64(ts.MinTimestamp()+(uint64(e-ts.Height())*blockDelay)), 0).Format(time.RFC822)
173+
174+
switch {
175+
case curr > e:
176+
return fmt.Sprintf("%d (%s, %s ago)", e, timeStr, durafmt.Parse(time.Second*time.Duration(int64(blockDelay)*int64(curr-e))).LimitFirstN(2))
177+
case curr == e:
178+
return fmt.Sprintf("%d (%s, now)", e, timeStr)
179+
case curr < e:
180+
return fmt.Sprintf("%d (%s, in %s)", e, timeStr, durafmt.Parse(time.Second*time.Duration(int64(blockDelay)*int64(e-curr))).LimitFirstN(2))
181+
}
182+
183+
panic("math broke")
184+
}
185+
157186
func printOneString(re cmds.ResponseEmitter, str string) error {
158187
buf := new(bytes.Buffer)
159188
writer := NewSilentWriter(buf)

0 commit comments

Comments
 (0)