paych actor: pass verification errors
This commit is contained in:
parent
83932a7c80
commit
8b29c98919
@ -7,6 +7,8 @@ const UnixfsLinksPerLevel = 1024
|
|||||||
|
|
||||||
const SectorSize = 1024
|
const SectorSize = 1024
|
||||||
|
|
||||||
|
const PaymentChannelClosingDelay = 6 * 60 * 2 // six hours
|
||||||
|
|
||||||
const ForkLengthThreshold = 20
|
const ForkLengthThreshold = 20
|
||||||
|
|
||||||
// TODO: Move other important consts here
|
// TODO: Move other important consts here
|
||||||
|
@ -7,13 +7,12 @@ import (
|
|||||||
"github.com/ipfs/go-cid"
|
"github.com/ipfs/go-cid"
|
||||||
cbor "github.com/ipfs/go-ipld-cbor"
|
cbor "github.com/ipfs/go-ipld-cbor"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/go-lotus/build"
|
||||||
"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/address"
|
"github.com/filecoin-project/go-lotus/chain/address"
|
||||||
"github.com/filecoin-project/go-lotus/chain/types"
|
"github.com/filecoin-project/go-lotus/chain/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
const ChannelClosingDelay = 6 * 60 * 2 // six hours
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cbor.RegisterCborType(PaymentChannelActorState{})
|
cbor.RegisterCborType(PaymentChannelActorState{})
|
||||||
cbor.RegisterCborType(PCAConstructorParams{})
|
cbor.RegisterCborType(PCAConstructorParams{})
|
||||||
@ -132,19 +131,19 @@ func (pca PaymentChannelActor) UpdateChannelState(act *types.Actor, vmctx types.
|
|||||||
|
|
||||||
if sv.SecretPreimage != nil {
|
if sv.SecretPreimage != nil {
|
||||||
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!")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if sv.Extra != nil {
|
if sv.Extra != nil {
|
||||||
encoded, err := SerializeParams([]interface{}{sv.Extra.Data, params.Proof})
|
encoded, err := SerializeParams(PaymentVerifyParams{sv.Extra.Data, params.Proof})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = vmctx.Send(sv.Extra.Actor, sv.Extra.Method, types.NewInt(0), encoded)
|
_, err = vmctx.Send(sv.Extra.Actor, sv.Extra.Method, types.NewInt(0), encoded)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, aerrors.New(4, "spend voucher verification failed")
|
return nil, aerrors.Newf(4, "spend voucher verification failed: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,7 +230,7 @@ func (pca PaymentChannelActor) Close(act *types.Actor, vmctx types.VMContext, pa
|
|||||||
return nil, aerrors.New(2, "channel already closing")
|
return nil, aerrors.New(2, "channel already closing")
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ClosingAt = vmctx.BlockHeight() + ChannelClosingDelay
|
self.ClosingAt = vmctx.BlockHeight() + build.PaymentChannelClosingDelay
|
||||||
if self.ClosingAt < self.MinCloseHeight {
|
if self.ClosingAt < self.MinCloseHeight {
|
||||||
self.ClosingAt = self.MinCloseHeight
|
self.ClosingAt = self.MinCloseHeight
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user