finish up making the new serializations work
This commit is contained in:
parent
2f019158d0
commit
a47969c76b
@ -183,6 +183,8 @@ func (ias *InitActorState) AddActor(cst *hamt.CborIpldStore, addr address.Addres
|
|||||||
nid := ias.NextID
|
nid := ias.NextID
|
||||||
ias.NextID++
|
ias.NextID++
|
||||||
|
|
||||||
|
fmt.Println("ADD ACTOR: ", addr.String())
|
||||||
|
|
||||||
amap, err := hamt.LoadNode(context.TODO(), cst, ias.AddressMap)
|
amap, err := hamt.LoadNode(context.TODO(), cst, ias.AddressMap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return address.Undef, err
|
return address.Undef, err
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
cbg "github.com/whyrusleeping/cbor-gen"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
"github.com/filecoin-project/go-lotus/chain/address"
|
"github.com/filecoin-project/go-lotus/chain/address"
|
||||||
@ -23,7 +24,7 @@ func TestMultiSigCreate(t *testing.T) {
|
|||||||
|
|
||||||
h := NewHarness(t, opts...)
|
h := NewHarness(t, opts...)
|
||||||
ret, _ := h.CreateActor(t, creatorAddr, actors.MultisigActorCodeCid,
|
ret, _ := h.CreateActor(t, creatorAddr, actors.MultisigActorCodeCid,
|
||||||
actors.MultiSigConstructorParams{
|
&actors.MultiSigConstructorParams{
|
||||||
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
|
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
|
||||||
Required: 2,
|
Required: 2,
|
||||||
})
|
})
|
||||||
@ -49,8 +50,8 @@ func TestMultiSigOps(t *testing.T) {
|
|||||||
HarnessAddr(&sig2Addr, 100000),
|
HarnessAddr(&sig2Addr, 100000),
|
||||||
HarnessAddr(&outsideAddr, 100000),
|
HarnessAddr(&outsideAddr, 100000),
|
||||||
HarnessActor(&multSigAddr, &creatorAddr, actors.MultisigActorCodeCid,
|
HarnessActor(&multSigAddr, &creatorAddr, actors.MultisigActorCodeCid,
|
||||||
func() interface{} {
|
func() cbg.CBORMarshaler {
|
||||||
return actors.MultiSigConstructorParams{
|
return &actors.MultiSigConstructorParams{
|
||||||
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
|
Signers: []address.Address{creatorAddr, sig1Addr, sig2Addr},
|
||||||
Required: 2,
|
Required: 2,
|
||||||
}
|
}
|
||||||
@ -71,8 +72,7 @@ func TestMultiSigOps(t *testing.T) {
|
|||||||
// Transfer funds outside of multsig
|
// Transfer funds outside of multsig
|
||||||
const sendVal = 1000
|
const sendVal = 1000
|
||||||
ret, _ := h.Invoke(t, creatorAddr, multSigAddr, actors.MultiSigMethods.Propose,
|
ret, _ := h.Invoke(t, creatorAddr, multSigAddr, actors.MultiSigMethods.Propose,
|
||||||
|
&actors.MultiSigProposeParams{
|
||||||
actors.MultiSigProposeParams{
|
|
||||||
To: outsideAddr,
|
To: outsideAddr,
|
||||||
Value: types.NewInt(sendVal),
|
Value: types.NewInt(sendVal),
|
||||||
})
|
})
|
||||||
@ -82,12 +82,12 @@ func TestMultiSigOps(t *testing.T) {
|
|||||||
assert.NoError(t, err, "decoding txid")
|
assert.NoError(t, err, "decoding txid")
|
||||||
|
|
||||||
ret, _ = h.Invoke(t, outsideAddr, multSigAddr, actors.MultiSigMethods.Approve,
|
ret, _ = h.Invoke(t, outsideAddr, multSigAddr, actors.MultiSigMethods.Approve,
|
||||||
txIDParam)
|
&txIDParam)
|
||||||
assert.Equal(t, uint8(1), ret.ExitCode, "outsideAddr should not approve")
|
assert.Equal(t, uint8(1), ret.ExitCode, "outsideAddr should not approve")
|
||||||
h.AssertBalanceChange(t, multSigAddr, 0)
|
h.AssertBalanceChange(t, multSigAddr, 0)
|
||||||
|
|
||||||
ret2, _ := h.Invoke(t, sig1Addr, multSigAddr, actors.MultiSigMethods.Approve,
|
ret2, _ := h.Invoke(t, sig1Addr, multSigAddr, actors.MultiSigMethods.Approve,
|
||||||
txIDParam)
|
&txIDParam)
|
||||||
ApplyOK(t, ret2)
|
ApplyOK(t, ret2)
|
||||||
|
|
||||||
h.AssertBalanceChange(t, outsideAddr, sendVal)
|
h.AssertBalanceChange(t, outsideAddr, sendVal)
|
||||||
|
@ -113,6 +113,7 @@ func (pca PaymentChannelActor) UpdateChannelState(act *types.Actor, vmctx types.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := vmctx.VerifySignature(sv.Signature, self.From, vb); err != nil {
|
if err := vmctx.VerifySignature(sv.Signature, self.From, vb); err != nil {
|
||||||
|
fmt.Printf("bad bits: %x", vb)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +121,7 @@ func (pca PaymentChannelActor) UpdateChannelState(act *types.Actor, vmctx types.
|
|||||||
return nil, aerrors.New(2, "cannot use this voucher yet!")
|
return nil, aerrors.New(2, "cannot use this voucher yet!")
|
||||||
}
|
}
|
||||||
|
|
||||||
if sv.SecretPreimage != nil {
|
if len(sv.SecretPreimage) > 0 {
|
||||||
if !bytes.Equal(hash(params.Secret), sv.SecretPreimage) {
|
if !bytes.Equal(hash(params.Secret), sv.SecretPreimage) {
|
||||||
return nil, aerrors.New(3, "incorrect secret!")
|
return nil, aerrors.New(3, "incorrect secret!")
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package actors_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
@ -19,7 +20,7 @@ func TestPaychCreate(t *testing.T) {
|
|||||||
|
|
||||||
h := NewHarness(t, opts...)
|
h := NewHarness(t, opts...)
|
||||||
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
|
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
|
||||||
actors.PCAConstructorParams{
|
&actors.PCAConstructorParams{
|
||||||
To: targetAddr,
|
To: targetAddr,
|
||||||
})
|
})
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
@ -36,6 +37,7 @@ func signVoucher(t *testing.T, w *wallet.Wallet, addr address.Address, sv *types
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fmt.Printf("SIGNING: %x\n", vb)
|
||||||
sv.Signature = sig
|
sv.Signature = sig
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +50,7 @@ func TestPaychUpdate(t *testing.T) {
|
|||||||
|
|
||||||
h := NewHarness(t, opts...)
|
h := NewHarness(t, opts...)
|
||||||
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
|
ret, _ := h.CreateActor(t, creatorAddr, actors.PaymentChannelActorCodeCid,
|
||||||
actors.PCAConstructorParams{
|
&actors.PCAConstructorParams{
|
||||||
To: targetAddr,
|
To: targetAddr,
|
||||||
})
|
})
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
@ -66,12 +68,12 @@ func TestPaychUpdate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
signVoucher(t, h.w, creatorAddr, sv)
|
signVoucher(t, h.w, creatorAddr, sv)
|
||||||
|
|
||||||
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.UpdateChannelState, actors.PCAUpdateChannelStateParams{
|
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.UpdateChannelState, &actors.PCAUpdateChannelStateParams{
|
||||||
Sv: *sv,
|
Sv: *sv,
|
||||||
})
|
})
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
|
|
||||||
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.GetToSend, struct{}{})
|
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.GetToSend, nil)
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
|
|
||||||
bi := types.BigFromBytes(ret.Return)
|
bi := types.BigFromBytes(ret.Return)
|
||||||
@ -79,13 +81,13 @@ func TestPaychUpdate(t *testing.T) {
|
|||||||
t.Fatal("toSend amount was wrong: ", bi.String())
|
t.Fatal("toSend amount was wrong: ", bi.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Close, struct{}{})
|
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Close, nil)
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
|
|
||||||
// now we have to 'wait' for the chain to advance.
|
// now we have to 'wait' for the chain to advance.
|
||||||
h.vm.SetBlockHeight(1000)
|
h.vm.SetBlockHeight(1000)
|
||||||
|
|
||||||
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Collect, struct{}{})
|
ret, _ = h.Invoke(t, targetAddr, pch, actors.PCAMethods.Collect, nil)
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
|
|
||||||
h.AssertBalanceChange(t, targetAddr, 100)
|
h.AssertBalanceChange(t, targetAddr, 100)
|
||||||
|
@ -13,11 +13,6 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDumpEmpyStruct(t *testing.T) {
|
|
||||||
res, err := SerializeParams(struct{}{})
|
|
||||||
t.Logf("res: %x, err: %+v", res, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStorageMarketCreateMiner(t *testing.T) {
|
func TestStorageMarketCreateMiner(t *testing.T) {
|
||||||
var ownerAddr, workerAddr address.Address
|
var ownerAddr, workerAddr address.Address
|
||||||
|
|
||||||
@ -31,7 +26,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
|
|||||||
var minerAddr address.Address
|
var minerAddr address.Address
|
||||||
{
|
{
|
||||||
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.CreateStorageMiner,
|
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.CreateStorageMiner,
|
||||||
CreateStorageMinerParams{
|
&CreateStorageMinerParams{
|
||||||
Owner: ownerAddr,
|
Owner: ownerAddr,
|
||||||
Worker: workerAddr,
|
Worker: workerAddr,
|
||||||
SectorSize: types.NewInt(build.SectorSize),
|
SectorSize: types.NewInt(build.SectorSize),
|
||||||
@ -45,7 +40,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.IsMiner,
|
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.IsMiner,
|
||||||
IsMinerParam{Addr: minerAddr})
|
&IsMinerParam{Addr: minerAddr})
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
|
|
||||||
var output bool
|
var output bool
|
||||||
@ -61,7 +56,7 @@ func TestStorageMarketCreateMiner(t *testing.T) {
|
|||||||
|
|
||||||
{
|
{
|
||||||
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.PowerLookup,
|
ret, _ := h.Invoke(t, ownerAddr, StorageMarketAddress, SMAMethods.PowerLookup,
|
||||||
PowerLookupParams{Miner: minerAddr})
|
&PowerLookupParams{Miner: minerAddr})
|
||||||
ApplyOK(t, ret)
|
ApplyOK(t, ret)
|
||||||
power := types.BigFromBytes(ret.Return)
|
power := types.BigFromBytes(ret.Return)
|
||||||
|
|
||||||
|
@ -3,9 +3,10 @@ package actors_test
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"github.com/filecoin-project/go-lotus/build"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/build"
|
||||||
|
|
||||||
. "github.com/filecoin-project/go-lotus/chain/actors"
|
. "github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
"github.com/filecoin-project/go-lotus/chain/address"
|
"github.com/filecoin-project/go-lotus/chain/address"
|
||||||
"github.com/filecoin-project/go-lotus/chain/gen"
|
"github.com/filecoin-project/go-lotus/chain/gen"
|
||||||
@ -14,7 +15,6 @@ import (
|
|||||||
"github.com/filecoin-project/go-lotus/chain/vm"
|
"github.com/filecoin-project/go-lotus/chain/vm"
|
||||||
dstore "github.com/ipfs/go-datastore"
|
dstore "github.com/ipfs/go-datastore"
|
||||||
bstore "github.com/ipfs/go-ipfs-blockstore"
|
bstore "github.com/ipfs/go-ipfs-blockstore"
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func blsaddr(n uint64) address.Address {
|
func blsaddr(n uint64) address.Address {
|
||||||
@ -62,7 +62,8 @@ func TestVMInvokeMethod(t *testing.T) {
|
|||||||
vm, addrs := setupVMTestEnv(t)
|
vm, addrs := setupVMTestEnv(t)
|
||||||
from := addrs[0]
|
from := addrs[0]
|
||||||
|
|
||||||
cenc, err := cbor.DumpObject(StorageMinerConstructorParams{})
|
var err error
|
||||||
|
cenc, err := SerializeParams(&StorageMinerConstructorParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -71,7 +72,7 @@ func TestVMInvokeMethod(t *testing.T) {
|
|||||||
Code: StorageMinerCodeCid,
|
Code: StorageMinerCodeCid,
|
||||||
Params: cenc,
|
Params: cenc,
|
||||||
}
|
}
|
||||||
enc, err := cbor.DumpObject(execparams)
|
enc, err := SerializeParams(execparams)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -115,7 +116,8 @@ func TestStorageMarketActorCreateMiner(t *testing.T) {
|
|||||||
SectorSize: types.NewInt(build.SectorSize),
|
SectorSize: types.NewInt(build.SectorSize),
|
||||||
PeerID: "fakepeerid",
|
PeerID: "fakepeerid",
|
||||||
}
|
}
|
||||||
enc, err := cbor.DumpObject(params)
|
var err error
|
||||||
|
enc, err := SerializeParams(params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,7 @@
|
|||||||
package actors_test
|
package actors_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@ -9,7 +10,7 @@ import (
|
|||||||
hamt "github.com/ipfs/go-hamt-ipld"
|
hamt "github.com/ipfs/go-hamt-ipld"
|
||||||
blockstore "github.com/ipfs/go-ipfs-blockstore"
|
blockstore "github.com/ipfs/go-ipfs-blockstore"
|
||||||
bstore "github.com/ipfs/go-ipfs-blockstore"
|
bstore "github.com/ipfs/go-ipfs-blockstore"
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbg "github.com/whyrusleeping/cbor-gen"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
@ -91,7 +92,7 @@ func HarnessMiner(addr *address.Address) HarnessOpt {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func HarnessActor(actor *address.Address, creator *address.Address, code cid.Cid, params func() interface{}) HarnessOpt {
|
func HarnessActor(actor *address.Address, creator *address.Address, code cid.Cid, params func() cbg.CBORMarshaler) HarnessOpt {
|
||||||
return func(t testing.TB, h *Harness) error {
|
return func(t testing.TB, h *Harness) error {
|
||||||
if h.Stage != HarnessPostInit {
|
if h.Stage != HarnessPostInit {
|
||||||
return nil
|
return nil
|
||||||
@ -205,7 +206,7 @@ func (h *Harness) Apply(t testing.TB, msg types.Message) (*vm.ApplyRet, *state.S
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *Harness) CreateActor(t testing.TB, from address.Address,
|
func (h *Harness) CreateActor(t testing.TB, from address.Address,
|
||||||
code cid.Cid, params interface{}) (*vm.ApplyRet, *state.StateTree) {
|
code cid.Cid, params cbg.CBORMarshaler) (*vm.ApplyRet, *state.StateTree) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
return h.Apply(t, types.Message{
|
return h.Apply(t, types.Message{
|
||||||
@ -237,7 +238,7 @@ func (h *Harness) SendFunds(t testing.TB, from address.Address, to address.Addre
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *Harness) Invoke(t testing.TB, from address.Address, to address.Address,
|
func (h *Harness) Invoke(t testing.TB, from address.Address, to address.Address,
|
||||||
method uint64, params interface{}) (*vm.ApplyRet, *state.StateTree) {
|
method uint64, params cbg.CBORMarshaler) (*vm.ApplyRet, *state.StateTree) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
return h.Apply(t, types.Message{
|
return h.Apply(t, types.Message{
|
||||||
To: to,
|
To: to,
|
||||||
@ -297,11 +298,14 @@ func (h *Harness) AssertBalanceChange(t testing.TB, addr address.Address, amt in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func DumpObject(t testing.TB, obj interface{}) []byte {
|
func DumpObject(t testing.TB, obj cbg.CBORMarshaler) []byte {
|
||||||
|
if obj == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
t.Helper()
|
t.Helper()
|
||||||
enc, err := cbor.DumpObject(obj)
|
b := new(bytes.Buffer)
|
||||||
if err != nil {
|
if err := obj.MarshalCBOR(b); err != nil {
|
||||||
t.Fatalf("dumping params: %+v", err)
|
t.Fatalf("dumping params: %+v", err)
|
||||||
}
|
}
|
||||||
return enc
|
return b.Bytes()
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ func (m mybs) Get(c cid.Cid) (block.Block, error) {
|
|||||||
b, err := m.Blockstore.Get(c)
|
b, err := m.Blockstore.Get(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// change to error for stacktraces, don't commit with that pls
|
// change to error for stacktraces, don't commit with that pls
|
||||||
log.Warnf("Get failed: %s %s", c, err)
|
//log.Warnf("Get failed: %s %s", c, err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,6 +119,7 @@ func NewGenerator() (*ChainGen, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to generate receiver key: %w", err)
|
return nil, xerrors.Errorf("failed to generate receiver key: %w", err)
|
||||||
}
|
}
|
||||||
|
fmt.Println("RECEIVER KEY: ", receievers[r].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
minercfg := &GenMinerCfg{
|
minercfg := &GenMinerCfg{
|
||||||
|
@ -55,8 +55,6 @@ func SetupInitActor(bs bstore.Blockstore, addrs []address.Address) (*types.Actor
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("INIT ACTOR HEAD: ", statecid)
|
|
||||||
|
|
||||||
act := &types.Actor{
|
act := &types.Actor{
|
||||||
Code: actors.InitActorCodeCid,
|
Code: actors.InitActorCodeCid,
|
||||||
Head: statecid,
|
Head: statecid,
|
||||||
|
@ -61,8 +61,6 @@ func (st *StateTree) SetActor(addr address.Address, act *types.Actor) error {
|
|||||||
if act == cact {
|
if act == cact {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
st.actorcache[addr] = act
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return st.root.Set(context.TODO(), string(addr.Bytes()), act)
|
return st.root.Set(context.TODO(), string(addr.Bytes()), act)
|
||||||
@ -91,7 +89,7 @@ func (st *StateTree) GetActor(addr address.Address) (*types.Actor, error) {
|
|||||||
iaddr, err := st.lookupID(addr)
|
iaddr, err := st.lookupID(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if xerrors.Is(err, hamt.ErrNotFound) {
|
if xerrors.Is(err, hamt.ErrNotFound) {
|
||||||
return nil, xerrors.Errorf("lookup failed: %w", types.ErrActorNotFound)
|
return nil, xerrors.Errorf("resolution lookup failed (%s): %w", addr, types.ErrActorNotFound)
|
||||||
}
|
}
|
||||||
return nil, xerrors.Errorf("address resolution: %w", err)
|
return nil, xerrors.Errorf("address resolution: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,10 @@ import (
|
|||||||
var _ = xerrors.Errorf
|
var _ = xerrors.Errorf
|
||||||
|
|
||||||
func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{140}); err != nil {
|
if _, err := w.Write([]byte{140}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -23,7 +27,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Tickets ([]*Ticket)
|
// t.t.Tickets ([]*types.Ticket)
|
||||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Tickets)))); err != nil {
|
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Tickets)))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -51,7 +55,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.ParentWeight (BigInt)
|
// t.t.ParentWeight (types.BigInt)
|
||||||
if err := t.ParentWeight.MarshalCBOR(w); err != nil {
|
if err := t.ParentWeight.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -71,7 +75,7 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
|||||||
return xerrors.Errorf("failed to write cid field t.Messages: %w", err)
|
return xerrors.Errorf("failed to write cid field t.Messages: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.BLSAggregate (Signature)
|
// t.t.BLSAggregate (types.Signature)
|
||||||
if err := t.BLSAggregate.MarshalCBOR(w); err != nil {
|
if err := t.BLSAggregate.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -86,14 +90,15 @@ func (t *BlockHeader) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.BlockSig (Signature)
|
// t.t.BlockSig (types.Signature)
|
||||||
if err := t.BlockSig.MarshalCBOR(w); err != nil {
|
if err := t.BlockSig.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -109,10 +114,14 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
|||||||
|
|
||||||
// t.t.Miner (address.Address)
|
// t.t.Miner (address.Address)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Miner.UnmarshalCBOR(br); err != nil {
|
if err := t.Miner.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// t.t.Tickets ([]*Ticket)
|
|
||||||
|
}
|
||||||
|
// t.t.Tickets ([]*types.Ticket)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -179,11 +188,15 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
|||||||
t.Parents[i] = c
|
t.Parents[i] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.ParentWeight (BigInt)
|
// t.t.ParentWeight (types.BigInt)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.ParentWeight.UnmarshalCBOR(br); err != nil {
|
if err := t.ParentWeight.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.Height (uint64)
|
// t.t.Height (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -212,11 +225,15 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
|||||||
}
|
}
|
||||||
t.Messages = c
|
t.Messages = c
|
||||||
}
|
}
|
||||||
// t.t.BLSAggregate (Signature)
|
// t.t.BLSAggregate (types.Signature)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.BLSAggregate.UnmarshalCBOR(br); err != nil {
|
if err := t.BLSAggregate.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.MessageReceipts (cid.Cid)
|
// t.t.MessageReceipts (cid.Cid)
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -236,15 +253,23 @@ func (t *BlockHeader) UnmarshalCBOR(br io.Reader) error {
|
|||||||
return fmt.Errorf("wrong type for uint64 field")
|
return fmt.Errorf("wrong type for uint64 field")
|
||||||
}
|
}
|
||||||
t.Timestamp = extra
|
t.Timestamp = extra
|
||||||
// t.t.BlockSig (Signature)
|
// t.t.BlockSig (types.Signature)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.BlockSig.UnmarshalCBOR(br); err != nil {
|
if err := t.BlockSig.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Ticket) MarshalCBOR(w io.Writer) error {
|
func (t *Ticket) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{131}); err != nil {
|
if _, err := w.Write([]byte{131}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -275,7 +300,8 @@ func (t *Ticket) MarshalCBOR(w io.Writer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Ticket) UnmarshalCBOR(br io.Reader) error {
|
func (t *Ticket) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -344,6 +370,10 @@ func (t *Ticket) UnmarshalCBOR(br io.Reader) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Message) MarshalCBOR(w io.Writer) error {
|
func (t *Message) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{136}); err != nil {
|
if _, err := w.Write([]byte{136}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -363,17 +393,17 @@ func (t *Message) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Value (BigInt)
|
// t.t.Value (types.BigInt)
|
||||||
if err := t.Value.MarshalCBOR(w); err != nil {
|
if err := t.Value.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.GasPrice (BigInt)
|
// t.t.GasPrice (types.BigInt)
|
||||||
if err := t.GasPrice.MarshalCBOR(w); err != nil {
|
if err := t.GasPrice.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.GasLimit (BigInt)
|
// t.t.GasLimit (types.BigInt)
|
||||||
if err := t.GasLimit.MarshalCBOR(w); err != nil {
|
if err := t.GasLimit.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -393,7 +423,8 @@ func (t *Message) MarshalCBOR(w io.Writer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Message) UnmarshalCBOR(br io.Reader) error {
|
func (t *Message) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -409,14 +440,22 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
|
|||||||
|
|
||||||
// t.t.To (address.Address)
|
// t.t.To (address.Address)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.To.UnmarshalCBOR(br); err != nil {
|
if err := t.To.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.From (address.Address)
|
// t.t.From (address.Address)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.From.UnmarshalCBOR(br); err != nil {
|
if err := t.From.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.Nonce (uint64)
|
// t.t.Nonce (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -427,21 +466,33 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
|
|||||||
return fmt.Errorf("wrong type for uint64 field")
|
return fmt.Errorf("wrong type for uint64 field")
|
||||||
}
|
}
|
||||||
t.Nonce = extra
|
t.Nonce = extra
|
||||||
// t.t.Value (BigInt)
|
// t.t.Value (types.BigInt)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Value.UnmarshalCBOR(br); err != nil {
|
if err := t.Value.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// t.t.GasPrice (BigInt)
|
|
||||||
|
}
|
||||||
|
// t.t.GasPrice (types.BigInt)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.GasPrice.UnmarshalCBOR(br); err != nil {
|
if err := t.GasPrice.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// t.t.GasLimit (BigInt)
|
|
||||||
|
}
|
||||||
|
// t.t.GasLimit (types.BigInt)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.GasLimit.UnmarshalCBOR(br); err != nil {
|
if err := t.GasLimit.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.Method (uint64)
|
// t.t.Method (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -473,23 +524,28 @@ func (t *Message) UnmarshalCBOR(br io.Reader) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *SignedMessage) MarshalCBOR(w io.Writer) error {
|
func (t *SignedMessage) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{130}); err != nil {
|
if _, err := w.Write([]byte{130}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Message (Message)
|
// t.t.Message (types.Message)
|
||||||
if err := t.Message.MarshalCBOR(w); err != nil {
|
if err := t.Message.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Signature (Signature)
|
// t.t.Signature (types.Signature)
|
||||||
if err := t.Signature.MarshalCBOR(w); err != nil {
|
if err := t.Signature.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *SignedMessage) UnmarshalCBOR(br io.Reader) error {
|
func (t *SignedMessage) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -503,20 +559,32 @@ func (t *SignedMessage) UnmarshalCBOR(br io.Reader) error {
|
|||||||
return fmt.Errorf("cbor input had wrong number of fields")
|
return fmt.Errorf("cbor input had wrong number of fields")
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Message (Message)
|
// t.t.Message (types.Message)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Message.UnmarshalCBOR(br); err != nil {
|
if err := t.Message.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// t.t.Signature (Signature)
|
|
||||||
|
}
|
||||||
|
// t.t.Signature (types.Signature)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MsgMeta) MarshalCBOR(w io.Writer) error {
|
func (t *MsgMeta) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{130}); err != nil {
|
if _, err := w.Write([]byte{130}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -533,7 +601,8 @@ func (t *MsgMeta) MarshalCBOR(w io.Writer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MsgMeta) UnmarshalCBOR(br io.Reader) error {
|
func (t *MsgMeta) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -569,6 +638,10 @@ func (t *MsgMeta) UnmarshalCBOR(br io.Reader) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{137}); err != nil {
|
if _, err := w.Write([]byte{137}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -586,7 +659,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Extra (ModVerifyParams)
|
// t.t.Extra (types.ModVerifyParams)
|
||||||
if err := t.Extra.MarshalCBOR(w); err != nil {
|
if err := t.Extra.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -601,7 +674,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Amount (BigInt)
|
// t.t.Amount (types.BigInt)
|
||||||
if err := t.Amount.MarshalCBOR(w); err != nil {
|
if err := t.Amount.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -611,7 +684,7 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Merges ([]Merge)
|
// t.t.Merges ([]types.Merge)
|
||||||
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Merges)))); err != nil {
|
if _, err := w.Write(cbg.CborEncodeMajorType(cbg.MajArray, uint64(len(t.Merges)))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -621,14 +694,15 @@ func (t *SignedVoucher) MarshalCBOR(w io.Writer) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Signature (Signature)
|
// t.t.Signature (types.Signature)
|
||||||
if err := t.Signature.MarshalCBOR(w); err != nil {
|
if err := t.Signature.MarshalCBOR(w); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
func (t *SignedVoucher) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -669,13 +743,27 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
|||||||
if _, err := io.ReadFull(br, t.SecretPreimage); err != nil {
|
if _, err := io.ReadFull(br, t.SecretPreimage); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// t.t.Extra (ModVerifyParams)
|
// t.t.Extra (types.ModVerifyParams)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
pb, err := br.PeekByte()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if pb == cbg.CborNull[0] {
|
||||||
|
var nbuf [1]byte
|
||||||
|
if _, err := br.Read(nbuf[:]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
t.Extra = new(ModVerifyParams)
|
t.Extra = new(ModVerifyParams)
|
||||||
|
|
||||||
if err := t.Extra.UnmarshalCBOR(br); err != nil {
|
if err := t.Extra.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.Lane (uint64)
|
// t.t.Lane (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -696,11 +784,15 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
|||||||
return fmt.Errorf("wrong type for uint64 field")
|
return fmt.Errorf("wrong type for uint64 field")
|
||||||
}
|
}
|
||||||
t.Nonce = extra
|
t.Nonce = extra
|
||||||
// t.t.Amount (BigInt)
|
// t.t.Amount (types.BigInt)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Amount.UnmarshalCBOR(br); err != nil {
|
if err := t.Amount.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.MinCloseHeight (uint64)
|
// t.t.MinCloseHeight (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -711,7 +803,7 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
|||||||
return fmt.Errorf("wrong type for uint64 field")
|
return fmt.Errorf("wrong type for uint64 field")
|
||||||
}
|
}
|
||||||
t.MinCloseHeight = extra
|
t.MinCloseHeight = extra
|
||||||
// t.t.Merges ([]Merge)
|
// t.t.Merges ([]types.Merge)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -736,17 +828,35 @@ func (t *SignedVoucher) UnmarshalCBOR(br io.Reader) error {
|
|||||||
t.Merges[i] = v
|
t.Merges[i] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
// t.t.Signature (Signature)
|
// t.t.Signature (types.Signature)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
pb, err := br.PeekByte()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if pb == cbg.CborNull[0] {
|
||||||
|
var nbuf [1]byte
|
||||||
|
if _, err := br.Read(nbuf[:]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
t.Signature = new(Signature)
|
t.Signature = new(Signature)
|
||||||
|
|
||||||
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
if err := t.Signature.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
|
func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{131}); err != nil {
|
if _, err := w.Write([]byte{131}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -771,7 +881,8 @@ func (t *ModVerifyParams) MarshalCBOR(w io.Writer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
|
func (t *ModVerifyParams) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -787,9 +898,13 @@ func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
|
|||||||
|
|
||||||
// t.t.Actor (address.Address)
|
// t.t.Actor (address.Address)
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if err := t.Actor.UnmarshalCBOR(br); err != nil {
|
if err := t.Actor.UnmarshalCBOR(br); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
// t.t.Method (uint64)
|
// t.t.Method (uint64)
|
||||||
|
|
||||||
maj, extra, err = cbg.CborReadHeader(br)
|
maj, extra, err = cbg.CborReadHeader(br)
|
||||||
@ -821,6 +936,10 @@ func (t *ModVerifyParams) UnmarshalCBOR(br io.Reader) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Merge) MarshalCBOR(w io.Writer) error {
|
func (t *Merge) MarshalCBOR(w io.Writer) error {
|
||||||
|
if t == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if _, err := w.Write([]byte{130}); err != nil {
|
if _, err := w.Write([]byte{130}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -837,7 +956,8 @@ func (t *Merge) MarshalCBOR(w io.Writer) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Merge) UnmarshalCBOR(br io.Reader) error {
|
func (t *Merge) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
br := cbg.GetPeeker(r)
|
||||||
|
|
||||||
maj, extra, err := cbg.CborReadHeader(br)
|
maj, extra, err := cbg.CborReadHeader(br)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -6,8 +6,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
|
||||||
"github.com/polydawn/refmt/obj/atlas"
|
|
||||||
cbg "github.com/whyrusleeping/cbor-gen"
|
cbg "github.com/whyrusleeping/cbor-gen"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,21 +23,6 @@ const (
|
|||||||
IKTBLS
|
IKTBLS
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
cbor.RegisterCborType(atlas.BuildEntry(Signature{}).Transform().
|
|
||||||
TransformMarshal(atlas.MakeMarshalTransformFunc(
|
|
||||||
func(s Signature) ([]byte, error) {
|
|
||||||
buf := make([]byte, 4)
|
|
||||||
n := binary.PutUvarint(buf, uint64(s.TypeCode()))
|
|
||||||
return append(buf[:n], s.Data...), nil
|
|
||||||
})).
|
|
||||||
TransformUnmarshal(atlas.MakeUnmarshalTransformFunc(
|
|
||||||
func(x []byte) (Signature, error) {
|
|
||||||
return SignatureFromBytes(x)
|
|
||||||
})).
|
|
||||||
Complete())
|
|
||||||
}
|
|
||||||
|
|
||||||
type Signature struct {
|
type Signature struct {
|
||||||
Type string
|
Type string
|
||||||
Data []byte
|
Data []byte
|
||||||
@ -80,6 +63,11 @@ func (s *Signature) TypeCode() int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Signature) MarshalCBOR(w io.Writer) error {
|
func (s *Signature) MarshalCBOR(w io.Writer) error {
|
||||||
|
if s == nil {
|
||||||
|
_, err := w.Write(cbg.CborNull)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
header := cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(s.Data)+1))
|
header := cbg.CborEncodeMajorType(cbg.MajByteString, uint64(len(s.Data)+1))
|
||||||
|
|
||||||
if _, err := w.Write(header); err != nil {
|
if _, err := w.Write(header); err != nil {
|
||||||
|
@ -8,12 +8,6 @@ import (
|
|||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
cbor.RegisterCborType(Merge{})
|
|
||||||
cbor.RegisterCborType(SignedVoucher{})
|
|
||||||
cbor.RegisterCborType(ModVerifyParams{})
|
|
||||||
}
|
|
||||||
|
|
||||||
type SignedVoucher struct {
|
type SignedVoucher struct {
|
||||||
TimeLock uint64
|
TimeLock uint64
|
||||||
SecretPreimage []byte
|
SecretPreimage []byte
|
||||||
@ -31,16 +25,22 @@ type SignedVoucher struct {
|
|||||||
func (sv *SignedVoucher) SigningBytes() ([]byte, error) {
|
func (sv *SignedVoucher) SigningBytes() ([]byte, error) {
|
||||||
osv := *sv
|
osv := *sv
|
||||||
osv.Signature = nil
|
osv.Signature = nil
|
||||||
return cbor.DumpObject(osv)
|
|
||||||
|
buf := new(bytes.Buffer)
|
||||||
|
if err := osv.MarshalCBOR(buf); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sv *SignedVoucher) EncodedString() (string, error) {
|
func (sv *SignedVoucher) EncodedString() (string, error) {
|
||||||
data, err := cbor.DumpObject(sv)
|
buf := new(bytes.Buffer)
|
||||||
if err != nil {
|
if err := sv.MarshalCBOR(buf); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return base64.RawURLEncoding.EncodeToString(data), nil
|
return base64.RawURLEncoding.EncodeToString(buf.Bytes()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sv *SignedVoucher) Equals(other *SignedVoucher) bool {
|
func (sv *SignedVoucher) Equals(other *SignedVoucher) bool {
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
package vm
|
package vm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
cbg "github.com/whyrusleeping/cbor-gen"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
"github.com/filecoin-project/go-lotus/chain/actors/aerrors"
|
"github.com/filecoin-project/go-lotus/chain/actors/aerrors"
|
||||||
"github.com/filecoin-project/go-lotus/chain/types"
|
"github.com/filecoin-project/go-lotus/chain/types"
|
||||||
)
|
)
|
||||||
@ -15,6 +19,25 @@ type basicParams struct {
|
|||||||
B byte
|
B byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *basicParams) MarshalCBOR(w io.Writer) error {
|
||||||
|
_, err := w.Write(cbg.CborEncodeMajorType(cbg.MajUnsignedInt, uint64(b.B)))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *basicParams) UnmarshalCBOR(r io.Reader) error {
|
||||||
|
maj, val, err := cbg.CborReadHeader(r)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if maj != cbg.MajUnsignedInt {
|
||||||
|
return fmt.Errorf("bad cbor type")
|
||||||
|
}
|
||||||
|
|
||||||
|
b.B = byte(val)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cbor.RegisterCborType(basicParams{})
|
cbor.RegisterCborType(basicParams{})
|
||||||
}
|
}
|
||||||
@ -39,6 +62,7 @@ func (basicContract) InvokeSomething0(act *types.Actor, vmctx types.VMContext,
|
|||||||
params *basicParams) ([]byte, aerrors.ActorError) {
|
params *basicParams) ([]byte, aerrors.ActorError) {
|
||||||
return nil, aerrors.New(params.B, "params.B")
|
return nil, aerrors.New(params.B, "params.B")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (basicContract) BadParam(act *types.Actor, vmctx types.VMContext,
|
func (basicContract) BadParam(act *types.Actor, vmctx types.VMContext,
|
||||||
params *basicParams) ([]byte, aerrors.ActorError) {
|
params *basicParams) ([]byte, aerrors.ActorError) {
|
||||||
return nil, aerrors.New(255, "bad params")
|
return nil, aerrors.New(255, "bad params")
|
||||||
@ -55,7 +79,7 @@ func TestInvokerBasic(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
{
|
{
|
||||||
bParam, err := cbor.DumpObject(basicParams{B: 1})
|
bParam, err := actors.SerializeParams(&basicParams{B: 1})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
_, aerr := code[0](nil, &VMContext{}, bParam)
|
_, aerr := code[0](nil, &VMContext{}, bParam)
|
||||||
@ -67,7 +91,7 @@ func TestInvokerBasic(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
bParam, err := cbor.DumpObject(basicParams{B: 2})
|
bParam, err := actors.SerializeParams(&basicParams{B: 2})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
_, aerr := code[10](nil, &VMContext{}, bParam)
|
_, aerr := code[10](nil, &VMContext{}, bParam)
|
||||||
@ -77,7 +101,7 @@ func TestInvokerBasic(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, aerr := code[1](nil, &VMContext{}, []byte{0})
|
_, aerr := code[1](nil, &VMContext{}, []byte{99})
|
||||||
if aerrors.IsFatal(aerr) {
|
if aerrors.IsFatal(aerr) {
|
||||||
t.Fatal("err should not be fatal")
|
t.Fatal("err should not be fatal")
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,9 @@ package vm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/go-lotus/chain/actors"
|
"github.com/filecoin-project/go-lotus/chain/actors"
|
||||||
|
"github.com/filecoin-project/go-lotus/chain/actors/aerrors"
|
||||||
"github.com/filecoin-project/go-lotus/chain/address"
|
"github.com/filecoin-project/go-lotus/chain/address"
|
||||||
"github.com/filecoin-project/go-lotus/chain/state"
|
"github.com/filecoin-project/go-lotus/chain/state"
|
||||||
"github.com/filecoin-project/go-lotus/chain/types"
|
"github.com/filecoin-project/go-lotus/chain/types"
|
||||||
@ -27,42 +27,41 @@ func init() {
|
|||||||
|
|
||||||
var EmptyObjectCid cid.Cid
|
var EmptyObjectCid cid.Cid
|
||||||
|
|
||||||
func TryCreateAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) {
|
func TryCreateAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
|
||||||
act, err := makeActor(st, addr)
|
act, err := makeActor(st, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = st.RegisterNewAddress(addr, act)
|
if _, err := st.RegisterNewAddress(addr, act); err != nil {
|
||||||
if err != nil {
|
return nil, aerrors.Escalate(err, "registering actor address")
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return act, nil
|
return act, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeActor(st *state.StateTree, addr address.Address) (*types.Actor, error) {
|
func makeActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
|
||||||
switch addr.Protocol() {
|
switch addr.Protocol() {
|
||||||
case address.BLS:
|
case address.BLS:
|
||||||
return NewBLSAccountActor(st, addr)
|
return NewBLSAccountActor(st, addr)
|
||||||
case address.SECP256K1:
|
case address.SECP256K1:
|
||||||
return NewSecp256k1AccountActor(st, addr)
|
return NewSecp256k1AccountActor(st, addr)
|
||||||
case address.ID:
|
case address.ID:
|
||||||
return nil, fmt.Errorf("no actor with given ID")
|
return nil, aerrors.New(1, "no actor with given ID")
|
||||||
case address.Actor:
|
case address.Actor:
|
||||||
return nil, fmt.Errorf("no such actor: %s", addr)
|
return nil, aerrors.Newf(1, "no such actor: %s", addr)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("address has unsupported protocol: %d", addr.Protocol())
|
return nil, aerrors.Newf(1, "address has unsupported protocol: %d", addr.Protocol())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) {
|
func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
|
||||||
var acstate actors.AccountActorState
|
var acstate actors.AccountActorState
|
||||||
acstate.Address = addr
|
acstate.Address = addr
|
||||||
|
|
||||||
c, err := st.Store.Put(context.TODO(), acstate)
|
c, err := st.Store.Put(context.TODO(), &acstate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, aerrors.Escalate(err, "serializing account actor state")
|
||||||
}
|
}
|
||||||
|
|
||||||
nact := &types.Actor{
|
nact := &types.Actor{
|
||||||
@ -74,7 +73,7 @@ func NewBLSAccountActor(st *state.StateTree, addr address.Address) (*types.Actor
|
|||||||
return nact, nil
|
return nact, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSecp256k1AccountActor(st *state.StateTree, addr address.Address) (*types.Actor, error) {
|
func NewSecp256k1AccountActor(st *state.StateTree, addr address.Address) (*types.Actor, aerrors.ActorError) {
|
||||||
nact := &types.Actor{
|
nact := &types.Actor{
|
||||||
Code: actors.AccountActorCodeCid,
|
Code: actors.AccountActorCodeCid,
|
||||||
Balance: types.NewInt(0),
|
Balance: types.NewInt(0),
|
||||||
|
@ -319,6 +319,7 @@ func (vm *VM) send(ctx context.Context, msg *types.Message, parent *VMContext,
|
|||||||
toActor, err := st.GetActor(msg.To)
|
toActor, err := st.GetActor(msg.To)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if xerrors.Is(err, types.ErrActorNotFound) {
|
if xerrors.Is(err, types.ErrActorNotFound) {
|
||||||
|
fmt.Println("actor not found on send: ", msg.To.String())
|
||||||
a, err := TryCreateAccountActor(st, msg.To)
|
a, err := TryCreateAccountActor(st, msg.To)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, aerrors.Absorb(err, 1, "could not create account"), nil
|
return nil, aerrors.Absorb(err, 1, "could not create account"), nil
|
||||||
|
@ -62,7 +62,7 @@ var createMinerCmd = &cli.Command{
|
|||||||
return xerrors.Errorf("failed to get default address: %w", err)
|
return xerrors.Errorf("failed to get default address: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
params, err := actors.SerializeParams(createMinerArgs)
|
params, err := actors.SerializeParams(&createMinerArgs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -224,7 +224,7 @@ func createStorageMiner(ctx context.Context, api api.FullNode, peerid peer.ID) (
|
|||||||
|
|
||||||
collateral := types.NewInt(1000) // TODO: Get this from params
|
collateral := types.NewInt(1000) // TODO: Get this from params
|
||||||
|
|
||||||
params, err := actors.SerializeParams(actors.CreateStorageMinerParams{
|
params, err := actors.SerializeParams(&actors.CreateStorageMinerParams{
|
||||||
Owner: defOwner,
|
Owner: defOwner,
|
||||||
Worker: k,
|
Worker: k,
|
||||||
SectorSize: types.NewInt(build.SectorSize),
|
SectorSize: types.NewInt(build.SectorSize),
|
||||||
|
2
go.mod
2
go.mod
@ -67,7 +67,7 @@ require (
|
|||||||
github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a
|
github.com/polydawn/refmt v0.0.0-20190809202753-05966cbd336a
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
|
github.com/whyrusleeping/bencher v0.0.0-20190829221104-bb6607aa8bba
|
||||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106
|
||||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
||||||
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
|
github.com/whyrusleeping/pubsub v0.0.0-20131020042734-02de8aa2db3d
|
||||||
github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33
|
github.com/whyrusleeping/sharray v0.0.0-20190718051354-e41931821e33
|
||||||
|
2
go.sum
2
go.sum
@ -536,6 +536,8 @@ github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb h1:8yBVx6dg
|
|||||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910031516-c1cbffdb01bb/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6 h1:e46mGjWNMelsw+YLq/5TyMfwGz8p0cBY2cf91y6tSBA=
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6 h1:e46mGjWNMelsw+YLq/5TyMfwGz8p0cBY2cf91y6tSBA=
|
||||||
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910040623-f29470053db6/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||||
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106 h1:PRWDVakEjB5ju0toKWbXSExfi5BB+oU87/8GhBKXIWE=
|
||||||
|
github.com/whyrusleeping/cbor-gen v0.0.0-20190910224804-fde80d83b106/go.mod h1:xdlJQaiqipF0HW+Mzpg7XRM3fWbGvfgFlcppuvlkIvY=
|
||||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
|
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E=
|
||||||
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
|
github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8=
|
||||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
|
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k=
|
||||||
|
Loading…
Reference in New Issue
Block a user