Merge pull request #2245 from filecoin-project/feat/fauxrep
Feat/fauxrep
This commit is contained in:
commit
19178cca08
@ -145,7 +145,7 @@ func NewGeneratorWithSectors(numSectors int) (*ChainGen, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
genm1, k1, err := seed.PreSeal(maddr1, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, numSectors, m1temp, []byte("some randomness"), nil)
|
genm1, k1, err := seed.PreSeal(maddr1, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, numSectors, m1temp, []byte("some randomness"), nil, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ func NewGeneratorWithSectors(numSectors int) (*ChainGen, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
genm2, k2, err := seed.PreSeal(maddr2, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, numSectors, m2temp, []byte("some randomness"), nil)
|
genm2, k2, err := seed.PreSeal(maddr2, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, numSectors, m2temp, []byte("some randomness"), nil, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,10 @@ var preSealCmd = &cli.Command{
|
|||||||
Value: "",
|
Value: "",
|
||||||
Usage: "(optional) Key to use for signing / owner/worker addresses",
|
Usage: "(optional) Key to use for signing / owner/worker addresses",
|
||||||
},
|
},
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "fake-sectors",
|
||||||
|
Value: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) error {
|
Action: func(c *cli.Context) error {
|
||||||
sdir := c.String("sector-dir")
|
sdir := c.String("sector-dir")
|
||||||
@ -126,7 +130,7 @@ var preSealCmd = &cli.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
gm, key, err := seed.PreSeal(maddr, rp, abi.SectorNumber(c.Uint64("sector-offset")), c.Int("num-sectors"), sbroot, []byte(c.String("ticket-preimage")), k)
|
gm, key, err := seed.PreSeal(maddr, rp, abi.SectorNumber(c.Uint64("sector-offset")), c.Int("num-sectors"), sbroot, []byte(c.String("ticket-preimage")), k, c.Bool("fake-sectors"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,9 @@ import (
|
|||||||
"github.com/minio/blake2b-simd"
|
"github.com/minio/blake2b-simd"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
|
ffi "github.com/filecoin-project/filecoin-ffi"
|
||||||
"github.com/filecoin-project/go-address"
|
"github.com/filecoin-project/go-address"
|
||||||
|
"github.com/filecoin-project/sector-storage/zerocomm"
|
||||||
"github.com/filecoin-project/specs-actors/actors/abi"
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
||||||
"github.com/filecoin-project/specs-actors/actors/abi/big"
|
"github.com/filecoin-project/specs-actors/actors/abi/big"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
||||||
@ -33,7 +35,7 @@ import (
|
|||||||
|
|
||||||
var log = logging.Logger("preseal")
|
var log = logging.Logger("preseal")
|
||||||
|
|
||||||
func PreSeal(maddr address.Address, spt abi.RegisteredSealProof, offset abi.SectorNumber, sectors int, sbroot string, preimage []byte, key *types.KeyInfo) (*genesis.Miner, *types.KeyInfo, error) {
|
func PreSeal(maddr address.Address, spt abi.RegisteredSealProof, offset abi.SectorNumber, sectors int, sbroot string, preimage []byte, key *types.KeyInfo, fakeSectors bool) (*genesis.Miner, *types.KeyInfo, error) {
|
||||||
mid, err := address.IDFromAddress(maddr)
|
mid, err := address.IDFromAddress(maddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@ -68,41 +70,20 @@ func PreSeal(maddr address.Address, spt abi.RegisteredSealProof, offset abi.Sect
|
|||||||
sid := abi.SectorID{Miner: abi.ActorID(mid), Number: next}
|
sid := abi.SectorID{Miner: abi.ActorID(mid), Number: next}
|
||||||
next++
|
next++
|
||||||
|
|
||||||
pi, err := sb.AddPiece(context.TODO(), sid, nil, abi.PaddedPieceSize(ssize).Unpadded(), rand.Reader)
|
var preseal *genesis.PreSeal
|
||||||
|
if !fakeSectors {
|
||||||
|
preseal, err = presealSector(sb, sbfs, sid, spt, ssize, preimage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
trand := blake2b.Sum256(preimage)
|
preseal, err = presealSectorFake(sbfs, sid, spt, ssize)
|
||||||
ticket := abi.SealRandomness(trand[:])
|
|
||||||
|
|
||||||
fmt.Printf("sector-id: %d, piece info: %v\n", sid, pi)
|
|
||||||
|
|
||||||
in2, err := sb.SealPreCommit1(context.TODO(), sid, ticket, []abi.PieceInfo{pi})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, xerrors.Errorf("commit: %w", err)
|
return nil, nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cids, err := sb.SealPreCommit2(context.TODO(), sid, in2)
|
sealedSectors = append(sealedSectors, preseal)
|
||||||
if err != nil {
|
|
||||||
return nil, nil, xerrors.Errorf("commit: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := sb.FinalizeSector(context.TODO(), sid, nil); err != nil {
|
|
||||||
return nil, nil, xerrors.Errorf("trim cache: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := cleanupUnsealed(sbfs, sid); err != nil {
|
|
||||||
return nil, nil, xerrors.Errorf("remove unsealed file: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Warn("PreCommitOutput: ", sid, cids.Sealed, cids.Unsealed)
|
|
||||||
sealedSectors = append(sealedSectors, &genesis.PreSeal{
|
|
||||||
CommR: cids.Sealed,
|
|
||||||
CommD: cids.Unsealed,
|
|
||||||
SectorID: sid.Number,
|
|
||||||
ProofType: spt,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var minerAddr *wallet.Key
|
var minerAddr *wallet.Key
|
||||||
@ -165,6 +146,69 @@ func PreSeal(maddr address.Address, spt abi.RegisteredSealProof, offset abi.Sect
|
|||||||
return miner, &minerAddr.KeyInfo, nil
|
return miner, &minerAddr.KeyInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func presealSector(sb *ffiwrapper.Sealer, sbfs *basicfs.Provider, sid abi.SectorID, spt abi.RegisteredSealProof, ssize abi.SectorSize, preimage []byte) (*genesis.PreSeal, error) {
|
||||||
|
pi, err := sb.AddPiece(context.TODO(), sid, nil, abi.PaddedPieceSize(ssize).Unpadded(), rand.Reader)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
trand := blake2b.Sum256(preimage)
|
||||||
|
ticket := abi.SealRandomness(trand[:])
|
||||||
|
|
||||||
|
fmt.Printf("sector-id: %d, piece info: %v\n", sid, pi)
|
||||||
|
|
||||||
|
in2, err := sb.SealPreCommit1(context.TODO(), sid, ticket, []abi.PieceInfo{pi})
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Errorf("commit: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
cids, err := sb.SealPreCommit2(context.TODO(), sid, in2)
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Errorf("commit: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := sb.FinalizeSector(context.TODO(), sid, nil); err != nil {
|
||||||
|
return nil, xerrors.Errorf("trim cache: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cleanupUnsealed(sbfs, sid); err != nil {
|
||||||
|
return nil, xerrors.Errorf("remove unsealed file: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Warn("PreCommitOutput: ", sid, cids.Sealed, cids.Unsealed)
|
||||||
|
|
||||||
|
return &genesis.PreSeal{
|
||||||
|
CommR: cids.Sealed,
|
||||||
|
CommD: cids.Unsealed,
|
||||||
|
SectorID: sid.Number,
|
||||||
|
ProofType: spt,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func presealSectorFake(sbfs *basicfs.Provider, sid abi.SectorID, spt abi.RegisteredSealProof, ssize abi.SectorSize) (*genesis.PreSeal, error) {
|
||||||
|
paths, done, err := sbfs.AcquireSector(context.TODO(), sid, 0, stores.FTSealed | stores.FTCache, true)
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Errorf("acquire unsealed sector: %w", err)
|
||||||
|
}
|
||||||
|
defer done()
|
||||||
|
|
||||||
|
if err := os.Mkdir(paths.Cache, 0755); err != nil {
|
||||||
|
return nil, xerrors.Errorf("mkdir cache: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
commr, err := ffi.FauxRep(spt, paths.Cache, paths.Sealed)
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerrors.Errorf("fauxrep: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &genesis.PreSeal{
|
||||||
|
CommR: commr,
|
||||||
|
CommD: zerocomm.ZeroPieceCommitment(abi.PaddedPieceSize(ssize).Unpadded()),
|
||||||
|
SectorID: sid.Number,
|
||||||
|
ProofType: spt,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func cleanupUnsealed(sbfs *basicfs.Provider, sid abi.SectorID) error {
|
func cleanupUnsealed(sbfs *basicfs.Provider, sid abi.SectorID) error {
|
||||||
paths, done, err := sbfs.AcquireSector(context.TODO(), sid, stores.FTUnsealed, stores.FTNone, stores.PathSealing)
|
paths, done, err := sbfs.AcquireSector(context.TODO(), sid, stores.FTUnsealed, stores.FTNone, stores.PathSealing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
2
extern/filecoin-ffi
vendored
2
extern/filecoin-ffi
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 5342c7c97d1a1df4650629d14f2823d52889edd9
|
Subproject commit 6a143e06f923f3a4f544c7a652e8b4df420a3d28
|
@ -49,7 +49,7 @@ func (api *api) Spawn() (nodeInfo, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sbroot := filepath.Join(dir, "preseal")
|
sbroot := filepath.Join(dir, "preseal")
|
||||||
genm, ki, err := seed.PreSeal(genMiner, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, 2, sbroot, []byte("8"), nil)
|
genm, ki, err := seed.PreSeal(genMiner, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, 2, sbroot, []byte("8"), nil, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nodeInfo{}, xerrors.Errorf("preseal failed: %w", err)
|
return nodeInfo{}, xerrors.Errorf("preseal failed: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -189,7 +189,7 @@ func builder(t *testing.T, nFull int, storage []test.StorageMiner) ([]test.TestN
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
genm, k, err := seed.PreSeal(maddr, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, test.GenesisPreseals, tdir, []byte("make genesis mem random"), nil)
|
genm, k, err := seed.PreSeal(maddr, abi.RegisteredSealProof_StackedDrg2KiBV1, 0, test.GenesisPreseals, tdir, []byte("make genesis mem random"), nil, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user