Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 63 additions & 178 deletions chain/indexer.go

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions tasks/actorstate/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"

"github.com/filecoin-project/lily/chain/actors/builtin/account"
"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/model"
)

Expand All @@ -18,7 +17,7 @@ func init() {
}

// Extract will create persistable data for a given actor's state.
func (AccountExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (AccountExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
return model.NoData, nil
}

Expand Down
3 changes: 1 addition & 2 deletions tasks/actorstate/account_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ import (
"context"
"testing"

"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/model"
)

func TestAccountExtract(t *testing.T) {
ae := AccountExtractor{}
d, err := ae.Extract(context.Background(), ActorInfo{}, []*lens.ExecutedMessage{}, nil)
d, err := ae.Extract(context.Background(), ActorInfo{}, nil)
if d != model.NoData {
t.Fatal("expected not to extract any extra data")
}
Expand Down
2 changes: 1 addition & 1 deletion tasks/actorstate/actor.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
// ActorExtractor extracts common actor state
type ActorExtractor struct{}

func (ActorExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (ActorExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
ctx, span := otel.Tracer("").Start(ctx, "ActorExtractor")
defer span.End()

Expand Down
3 changes: 1 addition & 2 deletions tasks/actorstate/actor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/filecoin-project/lily/lens"
commonmodel "github.com/filecoin-project/lily/model/actors/common"
"github.com/filecoin-project/lily/tasks/actorstate"
)
Expand Down Expand Up @@ -49,7 +48,7 @@ func TestActorExtractor(t *testing.T) {
}

ex := actorstate.ActorExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
assert.NoError(t, err)

actualState, ok := res.(*commonmodel.ActorTaskResult)
Expand Down
4 changes: 3 additions & 1 deletion tasks/actorstate/actorstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,13 @@ type ActorStateAPI interface {
// TODO(remove): StateMinerSectors loads the actor and then calls miner.Load which StorageMinerExtractor already has available
// StateMinerSectors(ctx context.Context, addr address.Address, bf *bitfield.BitField, tsk types.TipSetKey) ([]*miner.SectorOnChainInfo, error)
Store() adt.Store

ExecutedAndBlockMessages(ctx context.Context, ts, pts *types.TipSet) (*lens.TipSetMessages, error)
}

// An ActorStateExtractor extracts actor state into a persistable format
type ActorStateExtractor interface {
Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error)
Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error)
}

// All supported actor state extractors
Expand Down
7 changes: 7 additions & 0 deletions tasks/actorstate/actorstate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import (

"github.com/filecoin-project/lily/chain/actors/adt"
"github.com/filecoin-project/lily/chain/actors/builtin/miner"
"github.com/filecoin-project/lily/lens"

"github.com/filecoin-project/lily/tasks/actorstate"
"github.com/filecoin-project/lily/testutil"
)
Expand Down Expand Up @@ -123,6 +125,11 @@ func (m *MockAPI) StateMinerSectors(ctx context.Context, a address.Address, fiel
panic("not implemented yet")
}

func (m *MockAPI) ExecutedAndBlockMessages(ctx context.Context, ts, pts *types.TipSet) (*lens.TipSetMessages, error) {
//TODO implement me
panic("implement me")
}

// ----------------- MockAPI Helpers ----------------------------

type FakeTsOpts func(bh *types.BlockHeader)
Expand Down
3 changes: 1 addition & 2 deletions tasks/actorstate/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"golang.org/x/xerrors"

init_ "github.com/filecoin-project/lily/chain/actors/builtin/init"
"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/metrics"
"github.com/filecoin-project/lily/model"
initmodel "github.com/filecoin-project/lily/model/actors/init"
Expand All @@ -27,7 +26,7 @@ func init() {
}
}

func (InitExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (InitExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
ctx, span := otel.Tracer("").Start(ctx, "InitExtractor")
defer span.End()

Expand Down
20 changes: 10 additions & 10 deletions tasks/actorstate/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"testing"

"github.com/filecoin-project/go-address"
init_ "github.com/filecoin-project/lily/chain/actors/builtin/init"
"github.com/filecoin-project/lotus/chain/types"
sa0builtin "github.com/filecoin-project/specs-actors/actors/builtin"
sa0init "github.com/filecoin-project/specs-actors/actors/builtin/init"
Expand All @@ -21,7 +20,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/filecoin-project/lily/lens"
init_ "github.com/filecoin-project/lily/chain/actors/builtin/init"

initmodel "github.com/filecoin-project/lily/model/actors/init"
"github.com/filecoin-project/lily/tasks/actorstate"
)
Expand Down Expand Up @@ -78,7 +78,7 @@ func TestInitExtractorV0(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -132,7 +132,7 @@ func TestInitExtractorV0(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -188,7 +188,7 @@ func TestInitExtractorV2(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -242,7 +242,7 @@ func TestInitExtractorV2(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -298,7 +298,7 @@ func TestInitExtractorV3(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -352,7 +352,7 @@ func TestInitExtractorV3(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -408,7 +408,7 @@ func TestInitExtractorV4(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down Expand Up @@ -462,7 +462,7 @@ func TestInitExtractorV4(t *testing.T) {
}

ex := actorstate.InitExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

is, ok := res.(initmodel.IdAddressList)
Expand Down
3 changes: 1 addition & 2 deletions tasks/actorstate/market.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (

market "github.com/filecoin-project/lily/chain/actors/builtin/market"

"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/metrics"
"github.com/filecoin-project/lily/model"
marketmodel "github.com/filecoin-project/lily/model/actors/market"
Expand Down Expand Up @@ -78,7 +77,7 @@ func (m *MarketStateExtractionContext) IsGenesis() bool {
return m.CurrTs.Height() == 0
}

func (m StorageMarketExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (m StorageMarketExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
ctx, span := otel.Tracer("").Start(ctx, "StorageMarketExtractor")
defer span.End()

Expand Down
6 changes: 3 additions & 3 deletions tasks/actorstate/market_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ import (
"github.com/filecoin-project/go-address"
"github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/go-state-types/big"
"github.com/filecoin-project/lotus/chain/types"

"github.com/filecoin-project/lily/chain/actors/builtin/market"
marketmodel "github.com/filecoin-project/lily/model/actors/market"
"github.com/filecoin-project/lily/tasks/actorstate"
"github.com/filecoin-project/lotus/chain/types"

sabuiltin "github.com/filecoin-project/specs-actors/actors/builtin"
samarket "github.com/filecoin-project/specs-actors/actors/builtin/market"
tutils "github.com/filecoin-project/specs-actors/support/testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/testutil"
)

Expand Down Expand Up @@ -148,7 +148,7 @@ func TestMarketPredicates(t *testing.T) {
}

ex := actorstate.StorageMarketExtractor{}
res, err := ex.Extract(ctx, info, []*lens.ExecutedMessage{}, mapi)
res, err := ex.Extract(ctx, info, mapi)
require.NoError(t, err)

mtr, ok := res.(*marketmodel.MarketTaskResult)
Expand Down
13 changes: 9 additions & 4 deletions tasks/actorstate/miner.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func init() {
}
}

func (m StorageMinerExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (m StorageMinerExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
ctx, span := otel.Tracer("").Start(ctx, "StorageMinerExtractor")
if span.IsRecording() {
span.SetAttributes(attribute.String("actor", a.Address.String()))
Expand Down Expand Up @@ -73,7 +73,7 @@ func (m StorageMinerExtractor) Extract(ctx context.Context, a ActorInfo, emsgs [
return nil, xerrors.Errorf("extracting miner sector changes: %w", err)
}

posts, err := ExtractMinerPoSts(ctx, &a, ec, emsgs, node)
posts, err := ExtractMinerPoSts(ctx, &a, ec, node)
if err != nil {
return nil, xerrors.Errorf("extracting miner posts: %v", err)
}
Expand Down Expand Up @@ -420,7 +420,7 @@ func ExtractMinerSectorData(ctx context.Context, ec *MinerStateExtractionContext
return preCommitModel, sectorModel, sectorDealsModel, sectorEventModel, nil
}

func ExtractMinerPoSts(ctx context.Context, actor *ActorInfo, ec *MinerStateExtractionContext, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (minermodel.MinerSectorPostList, error) {
func ExtractMinerPoSts(ctx context.Context, actor *ActorInfo, ec *MinerStateExtractionContext, node ActorStateAPI) (minermodel.MinerSectorPostList, error) {
_, span := otel.Tracer("").Start(ctx, "ExtractMinerPoSts")
defer span.End()
// short circuit genesis state, no PoSt messages in genesis blocks.
Expand Down Expand Up @@ -498,7 +498,12 @@ func ExtractMinerPoSts(ctx context.Context, actor *ActorInfo, ec *MinerStateExtr
return nil
}

for _, msg := range emsgs {
tsMsgs, err := node.ExecutedAndBlockMessages(ctx, actor.TipSet, actor.ParentTipSet)
if err != nil {
return nil, xerrors.Errorf("getting executed and block messages: %w", err)
}

for _, msg := range tsMsgs.Executed {
if msg.Message.To == actor.Address && msg.Message.Method == 5 /* miner.SubmitWindowedPoSt */ {
if err := processPostMsg(msg); err != nil {
return nil, xerrors.Errorf("process post msg: %w", err)
Expand Down
3 changes: 1 addition & 2 deletions tasks/actorstate/multisig.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"github.com/filecoin-project/lily/chain/actors/adt"
"github.com/filecoin-project/lily/chain/actors/builtin/multisig"

"github.com/filecoin-project/lily/lens"
"github.com/filecoin-project/lily/metrics"
"github.com/filecoin-project/lily/model"
multisigmodel "github.com/filecoin-project/lily/model/actors/multisig"
Expand All @@ -24,7 +23,7 @@ func init() {

type MultiSigActorExtractor struct{}

func (m MultiSigActorExtractor) Extract(ctx context.Context, a ActorInfo, emsgs []*lens.ExecutedMessage, node ActorStateAPI) (model.Persistable, error) {
func (m MultiSigActorExtractor) Extract(ctx context.Context, a ActorInfo, node ActorStateAPI) (model.Persistable, error) {
ctx, span := otel.Tracer("").Start(ctx, "MultiSigActor")
defer span.End()

Expand Down
Loading