update message extraction tool for specs-actors update
This commit is contained in:
parent
8dcbd525da
commit
6825a485eb
@ -1,44 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin"
|
|
||||||
"github.com/ipfs/go-cid"
|
|
||||||
"github.com/multiformats/go-multihash"
|
|
||||||
)
|
|
||||||
|
|
||||||
var ActorMethodTable = make(map[string][]string, 64)
|
|
||||||
|
|
||||||
var Actors = map[cid.Cid]interface{}{
|
|
||||||
builtin.InitActorCodeID: builtin.MethodsInit,
|
|
||||||
builtin.CronActorCodeID: builtin.MethodsCron,
|
|
||||||
builtin.AccountActorCodeID: builtin.MethodsAccount,
|
|
||||||
builtin.StoragePowerActorCodeID: builtin.MethodsPower,
|
|
||||||
builtin.StorageMinerActorCodeID: builtin.MethodsMiner,
|
|
||||||
builtin.StorageMarketActorCodeID: builtin.MethodsMarket,
|
|
||||||
builtin.PaymentChannelActorCodeID: builtin.MethodsPaych,
|
|
||||||
builtin.MultisigActorCodeID: builtin.MethodsMultisig,
|
|
||||||
builtin.RewardActorCodeID: builtin.MethodsReward,
|
|
||||||
builtin.VerifiedRegistryActorCodeID: builtin.MethodsVerifiedRegistry,
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
for code, methods := range Actors {
|
|
||||||
cmh, err := multihash.Decode(code.Hash()) // identity hash.
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
aname = string(cmh.Digest)
|
|
||||||
rt = reflect.TypeOf(methods)
|
|
||||||
nf = rt.NumField()
|
|
||||||
)
|
|
||||||
|
|
||||||
ActorMethodTable[aname] = append(ActorMethodTable[aname], "Send")
|
|
||||||
for i := 0; i < nf; i++ {
|
|
||||||
ActorMethodTable[aname] = append(ActorMethodTable[aname], rt.Field(i).Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -12,10 +12,14 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
"github.com/filecoin-project/go-state-types/exitcode"
|
"github.com/filecoin-project/go-state-types/exitcode"
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
"github.com/multiformats/go-multihash"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/lotus/chain/stmgr"
|
||||||
lcli "github.com/filecoin-project/lotus/cli"
|
lcli "github.com/filecoin-project/lotus/cli"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -118,6 +122,8 @@ func runExtractMany(c *cli.Context) error {
|
|||||||
log.Println(color.GreenString("csv sanity check succeeded; header contains fields: %v", header))
|
log.Println(color.GreenString("csv sanity check succeeded; header contains fields: %v", header))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
codeCidBuilder := cid.V1Builder{Codec: cid.Raw, MhType: multihash.IDENTITY}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
generated []string
|
generated []string
|
||||||
merr = new(multierror.Error)
|
merr = new(multierror.Error)
|
||||||
@ -133,7 +139,7 @@ func runExtractMany(c *cli.Context) error {
|
|||||||
return fmt.Errorf("failed to read row: %w", err)
|
return fmt.Errorf("failed to read row: %w", err)
|
||||||
}
|
}
|
||||||
var (
|
var (
|
||||||
cid = row[0]
|
mcid = row[0]
|
||||||
actorcode = row[1]
|
actorcode = row[1]
|
||||||
methodnumstr = row[2]
|
methodnumstr = row[2]
|
||||||
exitcodestr = row[3]
|
exitcodestr = row[3]
|
||||||
@ -155,13 +161,18 @@ func runExtractMany(c *cli.Context) error {
|
|||||||
return fmt.Errorf("invalid method number: %s", methodnumstr)
|
return fmt.Errorf("invalid method number: %s", methodnumstr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
codeCid, err := codeCidBuilder.Sum([]byte(actorcode))
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to compute actor code CID")
|
||||||
|
}
|
||||||
|
|
||||||
// Lookup the method in actor method table.
|
// Lookup the method in actor method table.
|
||||||
if m, ok := ActorMethodTable[actorcode]; !ok {
|
if m, ok := stmgr.MethodsMap[codeCid]; !ok {
|
||||||
return fmt.Errorf("unrecognized actor: %s", actorcode)
|
return fmt.Errorf("unrecognized actor: %s", actorcode)
|
||||||
} else if methodnum >= len(m) {
|
} else if methodnum >= len(m) {
|
||||||
return fmt.Errorf("unrecognized method number for actor %s: %d", actorcode, methodnum)
|
return fmt.Errorf("unrecognized method number for actor %s: %d", actorcode, methodnum)
|
||||||
} else {
|
} else {
|
||||||
methodname = m[methodnum]
|
methodname = m[abi.MethodNum(methodnum)].Name
|
||||||
}
|
}
|
||||||
|
|
||||||
// exitcode string representations are of kind ErrType(0); strip out
|
// exitcode string representations are of kind ErrType(0); strip out
|
||||||
@ -181,14 +192,14 @@ func runExtractMany(c *cli.Context) error {
|
|||||||
id: id,
|
id: id,
|
||||||
block: block,
|
block: block,
|
||||||
class: "message",
|
class: "message",
|
||||||
cid: cid,
|
cid: mcid,
|
||||||
file: file,
|
file: file,
|
||||||
retain: "accessed-cids",
|
retain: "accessed-cids",
|
||||||
precursor: PrecursorSelectSender,
|
precursor: PrecursorSelectSender,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := doExtract(ctx, fapi, opts); err != nil {
|
if err := doExtract(ctx, fapi, opts); err != nil {
|
||||||
log.Println(color.RedString("failed to extract vector for message %s: %s; queuing for 'canonical' precursor selection", cid, err))
|
log.Println(color.RedString("failed to extract vector for message %s: %s; queuing for 'canonical' precursor selection", mcid, err))
|
||||||
retry = append(retry, opts)
|
retry = append(retry, opts)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user