package mockstorage import ( "fmt" "github.com/filecoin-project/go-address" commcid "github.com/filecoin-project/go-fil-commcid" "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/lotus/extern/sector-storage/mock" "github.com/filecoin-project/specs-actors/actors/builtin/market" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/wallet" "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper" "github.com/filecoin-project/lotus/extern/sector-storage/zerocomm" "github.com/filecoin-project/lotus/genesis" ) func PreSeal(ssize abi.SectorSize, maddr address.Address, sectors int) (*genesis.Miner, *types.KeyInfo, error) { k, err := wallet.GenerateKey(crypto.SigTypeBLS) if err != nil { return nil, nil, err } genm := &genesis.Miner{ ID: maddr, Owner: k.Address, Worker: k.Address, MarketBalance: big.NewInt(0), PowerBalance: big.NewInt(0), SectorSize: ssize, Sectors: make([]*genesis.PreSeal, sectors), } st, err := ffiwrapper.SealProofTypeFromSectorSize(ssize) if err != nil { return nil, nil, err } for i := range genm.Sectors { preseal := &genesis.PreSeal{} preseal.ProofType = st preseal.CommD = zerocomm.ZeroPieceCommitment(abi.PaddedPieceSize(ssize).Unpadded()) d, _ := commcid.CIDToPieceCommitmentV1(preseal.CommD) r := mock.CommDR(d) preseal.CommR, _ = commcid.ReplicaCommitmentV1ToCID(r[:]) preseal.SectorID = abi.SectorNumber(i + 1) preseal.Deal = market.DealProposal{ PieceCID: preseal.CommD, PieceSize: abi.PaddedPieceSize(ssize), Client: k.Address, Provider: maddr, Label: fmt.Sprintf("%d", i), StartEpoch: 1, EndEpoch: 10000, StoragePricePerEpoch: big.Zero(), ProviderCollateral: big.Zero(), ClientCollateral: big.Zero(), } genm.Sectors[i] = preseal } return genm, &k.KeyInfo, nil }