Catch passing duplicate block to arbitrate consensus fault
This commit is contained in:
parent
84de47377c
commit
e3bed8d12a
@ -105,3 +105,9 @@ const BlsSignatureCacheSize = 40000
|
|||||||
// Limits
|
// Limits
|
||||||
|
|
||||||
const BlockMessageLimit = 512
|
const BlockMessageLimit = 512
|
||||||
|
|
||||||
|
/////////////
|
||||||
|
// Fork Heights
|
||||||
|
//
|
||||||
|
|
||||||
|
const ForkBlizzardHeight = 6000
|
||||||
|
@ -138,6 +138,12 @@ func (spa StoragePowerActor) ArbitrateConsensusFault(act *types.Actor, vmctx typ
|
|||||||
return nil, aerrors.New(2, "blocks must be from the same miner")
|
return nil, aerrors.New(2, "blocks must be from the same miner")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if vmctx.BlockHeight() > build.ForkBlizzardHeight {
|
||||||
|
if params.Block1.Cid() == params.Block2.Cid() {
|
||||||
|
return nil, aerrors.New(3, "blocks must be different")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rval, err := vmctx.Send(params.Block1.Miner, MAMethods.GetWorkerAddr, types.NewInt(0), nil)
|
rval, err := vmctx.Send(params.Block1.Miner, MAMethods.GetWorkerAddr, types.NewInt(0), nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, aerrors.Wrap(err, "failed to get miner worker")
|
return nil, aerrors.Wrap(err, "failed to get miner worker")
|
||||||
|
@ -93,7 +93,15 @@ func TestStorageMarketCreateAndSlashMiner(t *testing.T) {
|
|||||||
signBlock(t, h.w, workerAddr, b1)
|
signBlock(t, h.w, workerAddr, b1)
|
||||||
signBlock(t, h.w, workerAddr, b2)
|
signBlock(t, h.w, workerAddr, b2)
|
||||||
|
|
||||||
|
h.BlockHeight = build.ForkBlizzardHeight + 1
|
||||||
ret, _ := h.Invoke(t, ownerAddr, StoragePowerAddress, SPAMethods.ArbitrateConsensusFault,
|
ret, _ := h.Invoke(t, ownerAddr, StoragePowerAddress, SPAMethods.ArbitrateConsensusFault,
|
||||||
|
&ArbitrateConsensusFaultParams{
|
||||||
|
Block1: b1,
|
||||||
|
Block2: b1,
|
||||||
|
})
|
||||||
|
assert.Equal(t, uint8(3), ret.ExitCode, "should have failed with exit 3")
|
||||||
|
|
||||||
|
ret, _ = h.Invoke(t, ownerAddr, StoragePowerAddress, SPAMethods.ArbitrateConsensusFault,
|
||||||
&ArbitrateConsensusFaultParams{
|
&ArbitrateConsensusFaultParams{
|
||||||
Block1: b1,
|
Block1: b1,
|
||||||
Block2: b2,
|
Block2: b2,
|
||||||
|
Loading…
Reference in New Issue
Block a user