update specs-actors
This commit is contained in:
parent
00d7bd1a77
commit
57c43183e6
@ -95,6 +95,13 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
return cid.Undef, xerrors.Errorf("failed to create genesis miner: %w", err)
|
return cid.Undef, xerrors.Errorf("failed to create genesis miner: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
params := mustEnc(&m.Worker)
|
||||||
|
_, err := doExecValue(ctx, vm, actors.StorageMarketAddress, m.Worker, big.Zero(), builtin.MethodsMarket.AddBalance, params)
|
||||||
|
if err != nil {
|
||||||
|
return cid.Undef, xerrors.Errorf("failed to create genesis miner: %w", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Publish preseal deals
|
// Publish preseal deals
|
||||||
|
|
||||||
@ -105,7 +112,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
|
|
||||||
params.Deals = append(params.Deals, market.ClientDealProposal{
|
params.Deals = append(params.Deals, market.ClientDealProposal{
|
||||||
Proposal: preseal.Deal,
|
Proposal: preseal.Deal,
|
||||||
ClientSignature: crypto.Signature{}, // TODO: do we want to sign these? Or do we want to fake signatures for genesis setup?
|
ClientSignature: crypto.Signature{Type:crypto.SigTypeBLS}, // TODO: do we want to sign these? Or do we want to fake signatures for genesis setup?
|
||||||
})
|
})
|
||||||
fmt.Printf("calling publish storage deals on miner %s with worker %s\n", preseal.Deal.Provider, m.Worker)
|
fmt.Printf("calling publish storage deals on miner %s with worker %s\n", preseal.Deal.Provider, m.Worker)
|
||||||
}
|
}
|
||||||
@ -197,7 +204,7 @@ func SetupStorageMiners(ctx context.Context, cs *store.ChainStore, sroot cid.Cid
|
|||||||
Info: miner.SectorPreCommitInfo{
|
Info: miner.SectorPreCommitInfo{
|
||||||
SectorNumber: preseal.SectorID,
|
SectorNumber: preseal.SectorID,
|
||||||
SealedCID: commcid.ReplicaCommitmentV1ToCID(preseal.CommR[:]),
|
SealedCID: commcid.ReplicaCommitmentV1ToCID(preseal.CommR[:]),
|
||||||
SealEpoch: 0,
|
SealRandEpoch: 0,
|
||||||
DealIDs: []abi.DealID{dealIDs[pi]},
|
DealIDs: []abi.DealID{dealIDs[pi]},
|
||||||
Expiration: preseal.Deal.EndEpoch,
|
Expiration: preseal.Deal.EndEpoch,
|
||||||
},
|
},
|
||||||
|
@ -2,24 +2,30 @@ package genesis
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/filecoin-project/go-amt-ipld/v2"
|
||||||
|
"github.com/ipfs/go-hamt-ipld"
|
||||||
|
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
||||||
bstore "github.com/ipfs/go-ipfs-blockstore"
|
bstore "github.com/ipfs/go-ipfs-blockstore"
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/chain/actors"
|
"github.com/filecoin-project/lotus/chain/actors"
|
||||||
"github.com/filecoin-project/lotus/chain/store"
|
|
||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetupStorageMarketActor(bs bstore.Blockstore) (*types.Actor, error) {
|
func SetupStorageMarketActor(bs bstore.Blockstore) (*types.Actor, error) {
|
||||||
cst := cbor.NewCborStore(bs)
|
cst := cbor.NewCborStore(bs)
|
||||||
ast := store.ActorStore(context.TODO(), bs)
|
|
||||||
|
|
||||||
sms, err := market.ConstructState(ast)
|
a, err := amt.NewAMT(cst).Flush(context.TODO())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
h, err := cst.Put(context.TODO(), hamt.NewNode(cst, hamt.UseTreeBitWidth(5)))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
sms := market.ConstructState(a, h, h)
|
||||||
|
|
||||||
stcid, err := cst.Put(context.TODO(), sms)
|
stcid, err := cst.Put(context.TODO(), sms)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -2,6 +2,7 @@ package stmgr
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/filecoin-project/lotus/chain/state"
|
||||||
|
|
||||||
amt "github.com/filecoin-project/go-amt-ipld/v2"
|
amt "github.com/filecoin-project/go-amt-ipld/v2"
|
||||||
commcid "github.com/filecoin-project/go-fil-commcid"
|
commcid "github.com/filecoin-project/go-fil-commcid"
|
||||||
@ -42,7 +43,13 @@ func GetMinerWorkerRaw(ctx context.Context, sm *StateManager, st cid.Cid, maddr
|
|||||||
return address.Undef, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err)
|
return address.Undef, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mas.Info.Worker, nil
|
cst := cbor.NewCborStore(sm.cs.Blockstore())
|
||||||
|
state, err := state.LoadStateTree(cst, st)
|
||||||
|
if err != nil {
|
||||||
|
return address.Undef, xerrors.Errorf("load state tree: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return vm.ResolveToKeyAddr(state, cst, mas.Info.Worker)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMinerOwner(ctx context.Context, sm *StateManager, st cid.Cid, maddr address.Address) (address.Address, error) {
|
func GetMinerOwner(ctx context.Context, sm *StateManager, st cid.Cid, maddr address.Address) (address.Address, error) {
|
||||||
@ -52,7 +59,13 @@ func GetMinerOwner(ctx context.Context, sm *StateManager, st cid.Cid, maddr addr
|
|||||||
return address.Undef, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err)
|
return address.Undef, xerrors.Errorf("(get sset) failed to load miner actor state: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mas.Info.Owner, nil
|
cst := cbor.NewCborStore(sm.cs.Blockstore())
|
||||||
|
state, err := state.LoadStateTree(cst, st)
|
||||||
|
if err != nil {
|
||||||
|
return address.Undef, xerrors.Errorf("load state tree: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return vm.ResolveToKeyAddr(state, cst, mas.Info.Owner)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPower(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) (types.BigInt, types.BigInt, error) {
|
func GetPower(ctx context.Context, sm *StateManager, ts *types.TipSet, maddr address.Address) (types.BigInt, types.BigInt, error) {
|
||||||
|
@ -41,6 +41,7 @@ type VMContext interface {
|
|||||||
Storage() Storage
|
Storage() Storage
|
||||||
StateTree() (StateTree, aerrors.ActorError)
|
StateTree() (StateTree, aerrors.ActorError)
|
||||||
ActorCodeCID(address.Address) (cid.Cid, error)
|
ActorCodeCID(address.Address) (cid.Cid, error)
|
||||||
|
LookupID(address.Address) (address.Address, error)
|
||||||
VerifySignature(sig *crypto.Signature, from address.Address, data []byte) aerrors.ActorError
|
VerifySignature(sig *crypto.Signature, from address.Address, data []byte) aerrors.ActorError
|
||||||
ChargeGas(uint64) aerrors.ActorError
|
ChargeGas(uint64) aerrors.ActorError
|
||||||
GetRandomness(height abi.ChainEpoch) ([]byte, aerrors.ActorError)
|
GetRandomness(height abi.ChainEpoch) ([]byte, aerrors.ActorError)
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-address"
|
"github.com/filecoin-project/go-address"
|
||||||
@ -25,6 +26,14 @@ type runtimeShim struct {
|
|||||||
vmctx types.VMContext
|
vmctx types.VMContext
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rs *runtimeShim) ResolveAddress(address address.Address) (ret address.Address, ok bool) {
|
||||||
|
r, err := rs.vmctx.LookupID(address)
|
||||||
|
if err != nil { // TODO: check notfound
|
||||||
|
rs.Abortf(exitcode.ErrPlaceholder, "resolve address: %v", err)
|
||||||
|
}
|
||||||
|
return r, true
|
||||||
|
}
|
||||||
|
|
||||||
func (rs *runtimeShim) Get(c cid.Cid, o vmr.CBORUnmarshaler) bool {
|
func (rs *runtimeShim) Get(c cid.Cid, o vmr.CBORUnmarshaler) bool {
|
||||||
err := rs.vmctx.Storage().Get(c, o)
|
err := rs.vmctx.Storage().Get(c, o)
|
||||||
if err != nil { // todo: not found
|
if err != nil { // todo: not found
|
||||||
@ -47,12 +56,12 @@ func (rs *runtimeShim) shimCall(f func() interface{}) (rval []byte, aerr aerrors
|
|||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
if ar, ok := r.(aerrors.ActorError); ok {
|
if ar, ok := r.(aerrors.ActorError); ok {
|
||||||
fmt.Println("VM.Call failure: ", ar)
|
fmt.Fprintln(os.Stderr, "VM.Call failure: ", ar)
|
||||||
debug.PrintStack()
|
debug.PrintStack()
|
||||||
aerr = ar
|
aerr = ar
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Println("caught one of those actor errors: ", r)
|
fmt.Fprintln(os.Stderr, "caught one of those actor errors: ", r)
|
||||||
debug.PrintStack()
|
debug.PrintStack()
|
||||||
log.Errorf("ERROR")
|
log.Errorf("ERROR")
|
||||||
aerr = aerrors.Newf(1, "generic spec actors failure")
|
aerr = aerrors.Newf(1, "generic spec actors failure")
|
||||||
@ -77,7 +86,20 @@ func (rs *runtimeShim) shimCall(f func() interface{}) (rval []byte, aerr aerrors
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (rs *runtimeShim) Message() vmr.Message {
|
func (rs *runtimeShim) Message() vmr.Message {
|
||||||
return rs.vmctx.Message()
|
var err error
|
||||||
|
|
||||||
|
rawm := *rs.vmctx.Message() // TODO: normalize addresses earlier
|
||||||
|
rawm.From, err = rs.vmctx.LookupID(rawm.From)
|
||||||
|
if err != nil {
|
||||||
|
rs.Abortf(exitcode.ErrPlaceholder, "resolve from address: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
rawm.To, err = rs.vmctx.LookupID(rawm.To)
|
||||||
|
if err != nil {
|
||||||
|
rs.Abortf(exitcode.ErrPlaceholder, "resolve to address: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &rawm
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rs *runtimeShim) ValidateImmediateCallerAcceptAny() {
|
func (rs *runtimeShim) ValidateImmediateCallerAcceptAny() {
|
||||||
@ -185,8 +207,13 @@ func (rs *runtimeShim) StartSpan(name string) vmr.TraceSpan {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (rs *runtimeShim) ValidateImmediateCallerIs(as ...address.Address) {
|
func (rs *runtimeShim) ValidateImmediateCallerIs(as ...address.Address) {
|
||||||
|
imm, err := rs.vmctx.LookupID(rs.vmctx.Message().From)
|
||||||
|
if err != nil {
|
||||||
|
rs.Abortf(exitcode.ErrIllegalState, "couldn't resolve immediate caller")
|
||||||
|
}
|
||||||
|
|
||||||
for _, a := range as {
|
for _, a := range as {
|
||||||
if rs.vmctx.Message().From == a {
|
if imm == a {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,6 +199,10 @@ func (vmc *VMContext) ActorCodeCID(addr address.Address) (ret cid.Cid, err error
|
|||||||
return act.Code, nil
|
return act.Code, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (vmc *VMContext) LookupID(a address.Address) (address.Address, error) {
|
||||||
|
return vmc.state.LookupID(a)
|
||||||
|
}
|
||||||
|
|
||||||
const GasVerifySignature = 50
|
const GasVerifySignature = 50
|
||||||
|
|
||||||
func (vmctx *VMContext) VerifySignature(sig *crypto.Signature, act address.Address, data []byte) aerrors.ActorError {
|
func (vmctx *VMContext) VerifySignature(sig *crypto.Signature, act address.Address, data []byte) aerrors.ActorError {
|
||||||
|
@ -74,7 +74,7 @@ func PreSeal(maddr address.Address, ssize abi.SectorSize, offset abi.SectorNumbe
|
|||||||
TicketBytes: trand,
|
TicketBytes: trand,
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("sector-id: %d, piece info: %v", sid, pi)
|
fmt.Printf("sector-id: %d, piece info: %v\n", sid, pi)
|
||||||
|
|
||||||
pco, err := sb.SealPreCommit(context.TODO(), sid, ticket, []sectorbuilder.PublicPieceInfo{pi})
|
pco, err := sb.SealPreCommit(context.TODO(), sid, ticket, []sectorbuilder.PublicPieceInfo{pi})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
3
go.mod
3
go.mod
@ -13,6 +13,7 @@ require (
|
|||||||
github.com/filecoin-project/chain-validation v0.0.3
|
github.com/filecoin-project/chain-validation v0.0.3
|
||||||
github.com/filecoin-project/filecoin-ffi v0.0.0-20191219131535-bb699517a590
|
github.com/filecoin-project/filecoin-ffi v0.0.0-20191219131535-bb699517a590
|
||||||
github.com/filecoin-project/go-address v0.0.2-0.20200218010043-eb9bb40ed5be
|
github.com/filecoin-project/go-address v0.0.2-0.20200218010043-eb9bb40ed5be
|
||||||
|
github.com/filecoin-project/go-amt-ipld v1.0.0 // indirect
|
||||||
github.com/filecoin-project/go-amt-ipld/v2 v2.0.1-0.20200131012142-05d80eeccc5e
|
github.com/filecoin-project/go-amt-ipld/v2 v2.0.1-0.20200131012142-05d80eeccc5e
|
||||||
github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2
|
github.com/filecoin-project/go-cbor-util v0.0.0-20191219014500-08c40a1e63a2
|
||||||
github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03
|
github.com/filecoin-project/go-crypto v0.0.0-20191218222705-effae4ea9f03
|
||||||
@ -23,7 +24,7 @@ require (
|
|||||||
github.com/filecoin-project/go-paramfetch v0.0.1
|
github.com/filecoin-project/go-paramfetch v0.0.1
|
||||||
github.com/filecoin-project/go-sectorbuilder v0.0.2-0.20200210220012-eb75ec747d6b
|
github.com/filecoin-project/go-sectorbuilder v0.0.2-0.20200210220012-eb75ec747d6b
|
||||||
github.com/filecoin-project/go-statestore v0.1.0
|
github.com/filecoin-project/go-statestore v0.1.0
|
||||||
github.com/filecoin-project/specs-actors v0.0.0-20200219191759-7e15e5c89659
|
github.com/filecoin-project/specs-actors v0.0.0-20200221155838-19bb26c4b9d7
|
||||||
github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1
|
github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1
|
||||||
github.com/go-ole/go-ole v1.2.4 // indirect
|
github.com/go-ole/go-ole v1.2.4 // indirect
|
||||||
github.com/gorilla/mux v1.7.3
|
github.com/gorilla/mux v1.7.3
|
||||||
|
4
go.sum
4
go.sum
@ -132,6 +132,10 @@ github.com/filecoin-project/specs-actors v0.0.0-20200218211922-372fea3f131f h1:x
|
|||||||
github.com/filecoin-project/specs-actors v0.0.0-20200218211922-372fea3f131f/go.mod h1:Ecx+3v6Bn4exCS0NbPu7VjrDCu2J+t1PdEpYin1/qOU=
|
github.com/filecoin-project/specs-actors v0.0.0-20200218211922-372fea3f131f/go.mod h1:Ecx+3v6Bn4exCS0NbPu7VjrDCu2J+t1PdEpYin1/qOU=
|
||||||
github.com/filecoin-project/specs-actors v0.0.0-20200219191759-7e15e5c89659 h1:qHn5166bAy0dVEZr1Z4TPoveZNEEcFVz+RumCSM6QqA=
|
github.com/filecoin-project/specs-actors v0.0.0-20200219191759-7e15e5c89659 h1:qHn5166bAy0dVEZr1Z4TPoveZNEEcFVz+RumCSM6QqA=
|
||||||
github.com/filecoin-project/specs-actors v0.0.0-20200219191759-7e15e5c89659/go.mod h1:Ecx+3v6Bn4exCS0NbPu7VjrDCu2J+t1PdEpYin1/qOU=
|
github.com/filecoin-project/specs-actors v0.0.0-20200219191759-7e15e5c89659/go.mod h1:Ecx+3v6Bn4exCS0NbPu7VjrDCu2J+t1PdEpYin1/qOU=
|
||||||
|
github.com/filecoin-project/specs-actors v0.0.0-20200221134721-ef38bdd3e05f h1:XplJWD0+rmozthAz4idL2wGyScmw9XlEZDaNmUKoY00=
|
||||||
|
github.com/filecoin-project/specs-actors v0.0.0-20200221134721-ef38bdd3e05f/go.mod h1:0HAWYrvajFHDgRaKbF0rl+IybVLZL5z4gQ8koCMPhoU=
|
||||||
|
github.com/filecoin-project/specs-actors v0.0.0-20200221155838-19bb26c4b9d7 h1:iBqYva5s34J0LVBe7Fqrv/ToNVUFyKwpaXLk47wjq3A=
|
||||||
|
github.com/filecoin-project/specs-actors v0.0.0-20200221155838-19bb26c4b9d7/go.mod h1:0HAWYrvajFHDgRaKbF0rl+IybVLZL5z4gQ8koCMPhoU=
|
||||||
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1 h1:EzDjxMg43q1tA2c0MV3tNbaontnHLplHyFF6M5KiVP0=
|
github.com/gbrlsnchs/jwt/v3 v3.0.0-beta.1 h1:EzDjxMg43q1tA2c0MV3tNbaontnHLplHyFF6M5KiVP0=
|
||||||
|
@ -103,7 +103,7 @@ func (m *Sealing) handlePreCommitting(ctx statemachine.Context, sector SectorInf
|
|||||||
SectorNumber: sector.SectorID,
|
SectorNumber: sector.SectorID,
|
||||||
|
|
||||||
SealedCID: commcid.ReplicaCommitmentV1ToCID(sector.CommR),
|
SealedCID: commcid.ReplicaCommitmentV1ToCID(sector.CommR),
|
||||||
SealEpoch: sector.Ticket.BlockHeight,
|
SealRandEpoch: sector.Ticket.BlockHeight,
|
||||||
DealIDs: nil, // sector.deals(), // TODO: REFACTOR
|
DealIDs: nil, // sector.deals(), // TODO: REFACTOR
|
||||||
}
|
}
|
||||||
enc, aerr := actors.SerializeParams(params)
|
enc, aerr := actors.SerializeParams(params)
|
||||||
|
Loading…
Reference in New Issue
Block a user