conformance: tipset-class driver: allow actor msgs, dummy-sign secp msgs.
This commit is contained in:
parent
b774563ec3
commit
8e7a8d8c97
@ -2,7 +2,8 @@ package conformance
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
|
"github.com/filecoin-project/specs-actors/actors/crypto"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/chain/stmgr"
|
"github.com/filecoin-project/lotus/chain/stmgr"
|
||||||
"github.com/filecoin-project/lotus/chain/store"
|
"github.com/filecoin-project/lotus/chain/store"
|
||||||
@ -80,11 +81,14 @@ func (d *Driver) ExecuteTipset(bs blockstore.Blockstore, ds ds.Batching, preroot
|
|||||||
}
|
}
|
||||||
switch msg.From.Protocol() {
|
switch msg.From.Protocol() {
|
||||||
case address.SECP256K1:
|
case address.SECP256K1:
|
||||||
sb.SecpkMessages = append(sb.SecpkMessages, msg)
|
sb.SecpkMessages = append(sb.SecpkMessages, toChainMsg(msg))
|
||||||
case address.BLS:
|
case address.BLS:
|
||||||
sb.BlsMessages = append(sb.BlsMessages, msg)
|
sb.BlsMessages = append(sb.BlsMessages, toChainMsg(msg))
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("from account is not secpk nor bls: %s", msg.From)
|
// sneak in messages originating from other addresses as both kinds.
|
||||||
|
// these should fail, as they are actually invalid senders.
|
||||||
|
sb.SecpkMessages = append(sb.SecpkMessages, msg)
|
||||||
|
sb.BlsMessages = append(sb.BlsMessages, msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blocks = append(blocks, sb)
|
blocks = append(blocks, sb)
|
||||||
@ -143,7 +147,7 @@ func (d *Driver) ExecuteMessage(bs blockstore.Blockstore, preroot cid.Cid, epoch
|
|||||||
|
|
||||||
lvm.SetInvoker(invoker)
|
lvm.SetInvoker(invoker)
|
||||||
|
|
||||||
ret, err := lvm.ApplyMessage(d.ctx, msg)
|
ret, err := lvm.ApplyMessage(d.ctx, toChainMsg(msg))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, cid.Undef, err
|
return nil, cid.Undef, err
|
||||||
}
|
}
|
||||||
@ -151,3 +155,22 @@ func (d *Driver) ExecuteMessage(bs blockstore.Blockstore, preroot cid.Cid, epoch
|
|||||||
root, err := lvm.Flush(d.ctx)
|
root, err := lvm.Flush(d.ctx)
|
||||||
return ret, root, err
|
return ret, root, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// toChainMsg injects a synthetic 0-filled signature of the right length to
|
||||||
|
// messages that originate from secp256k senders, leaving all
|
||||||
|
// others untouched.
|
||||||
|
// TODO: generate a signature in the DSL so that it's encoded in
|
||||||
|
// the test vector.
|
||||||
|
func toChainMsg(msg *types.Message) (ret types.ChainMsg) {
|
||||||
|
ret = msg
|
||||||
|
if msg.From.Protocol() == address.SECP256K1 {
|
||||||
|
ret = &types.SignedMessage{
|
||||||
|
Message: *msg,
|
||||||
|
Signature: crypto.Signature{
|
||||||
|
Type: crypto.SigTypeSecp256k1,
|
||||||
|
Data: make([]byte, 65),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user