diff --git a/chain/types/bigint.go b/chain/types/bigint.go index 0b8faac52..80cb98914 100644 --- a/chain/types/bigint.go +++ b/chain/types/bigint.go @@ -63,18 +63,34 @@ func BigCmp(a, b BigInt) int { return a.Int.Cmp(b.Int) } -var sizeUnits = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"} +var byteSizeUnits = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB"} func SizeStr(bi BigInt) string { r := new(big.Rat).SetInt(bi.Int) den := big.NewRat(1, 1024) var i int - for f, _ := r.Float64(); f >= 1024 && i+1 < len(sizeUnits); f, _ = r.Float64() { + for f, _ := r.Float64(); f >= 1024 && i+1 < len(byteSizeUnits); f, _ = r.Float64() { i++ r = r.Mul(r, den) } f, _ := r.Float64() - return fmt.Sprintf("%.3g %s", f, sizeUnits[i]) + return fmt.Sprintf("%.3g %s", f, byteSizeUnits[i]) +} + +var decUnits = []string{"", "K", "M", "G", "T", "P", "E", "Z"} + +func DecStr(bi BigInt) string { + r := new(big.Rat).SetInt(bi.Int) + den := big.NewRat(1, 1000) + + var i int + for f, _ := r.Float64(); f >= 1000 && i+1 < len(decUnits); f, _ = r.Float64() { + i++ + r = r.Mul(r, den) + } + + f, _ := r.Float64() + return fmt.Sprintf("%.3g %s", f, decUnits[i]) } diff --git a/cmd/lotus-storage-miner/info.go b/cmd/lotus-storage-miner/info.go index dc1924ae1..3a4cf8345 100644 --- a/cmd/lotus-storage-miner/info.go +++ b/cmd/lotus-storage-miner/info.go @@ -52,8 +52,8 @@ var infoCmd = &cli.Command{ rpercI := types.BigDiv(types.BigMul(pow.MinerPower.RawBytePower, types.NewInt(1000000)), pow.TotalPower.RawBytePower) qpercI := types.BigDiv(types.BigMul(pow.MinerPower.QualityAdjPower, types.NewInt(1000000)), pow.TotalPower.QualityAdjPower) - fmt.Printf("Raw Power: %s / %s (%0.4f%%)\n", types.SizeStr(pow.MinerPower.RawBytePower), types.SizeStr(pow.TotalPower.RawBytePower), float64(rpercI.Int64())/10000) - fmt.Printf("Actual Power: %s / %s (%0.4f%%)\n", types.SizeStr(pow.MinerPower.QualityAdjPower), types.SizeStr(pow.TotalPower.QualityAdjPower), float64(qpercI.Int64())/10000) + fmt.Printf("Byte Power: %s / %s (%0.4f%%)\n", types.SizeStr(pow.MinerPower.RawBytePower), types.SizeStr(pow.TotalPower.RawBytePower), float64(rpercI.Int64())/10000) + fmt.Printf("Actual Power: %s / %s (%0.4f%%)\n", types.DecStr(pow.MinerPower.QualityAdjPower), types.DecStr(pow.TotalPower.QualityAdjPower), float64(qpercI.Int64())/10000) secCounts, err := api.StateMinerSectorCount(ctx, maddr, types.EmptyTSK) if err != nil { return err diff --git a/cmd/lotus/daemon.go b/cmd/lotus/daemon.go index 7d8fcbae4..f08c1a16d 100644 --- a/cmd/lotus/daemon.go +++ b/cmd/lotus/daemon.go @@ -123,13 +123,14 @@ var DaemonCmd = &cli.Command{ return xerrors.Errorf("fetching proof parameters: %w", err) } - genBytes := build.MaybeGenesis() - + var genBytes []byte if cctx.String("genesis") != "" { genBytes, err = ioutil.ReadFile(cctx.String("genesis")) if err != nil { return xerrors.Errorf("reading genesis: %w", err) } + } else { + genBytes = build.MaybeGenesis() } chainfile := cctx.String("import-chain")