@@ -13,6 +13,7 @@ import (
13
13
"gopkg.in/urfave/cli.v2"
14
14
15
15
"github.com/filecoin-project/lotus/api"
16
+ "github.com/filecoin-project/lotus/chain/actors"
16
17
types "github.com/filecoin-project/lotus/chain/types"
17
18
)
18
19
@@ -28,6 +29,7 @@ var chainCmd = &cli.Command{
28
29
chainListCmd ,
29
30
chainGetCmd ,
30
31
chainExportCmd ,
32
+ slashConsensusFault ,
31
33
},
32
34
}
33
35
@@ -438,3 +440,65 @@ var chainExportCmd = &cli.Command{
438
440
return nil
439
441
},
440
442
}
443
+
444
+ var slashConsensusFault = & cli.Command {
445
+ Name : "slash-consensus" ,
446
+ Usage : "Report consensus fault" ,
447
+ Action : func (cctx * cli.Context ) error {
448
+ api , closer , err := GetFullNodeAPI (cctx )
449
+ if err != nil {
450
+ return err
451
+ }
452
+ defer closer ()
453
+ ctx := ReqContext (cctx )
454
+
455
+ c1 , err := cid .Parse (cctx .Args ().Get (0 ))
456
+ if err != nil {
457
+ return xerrors .Errorf ("parsing cid 1: %w" , err )
458
+ }
459
+
460
+ b1 , err := api .ChainGetBlock (ctx , c1 )
461
+ if err != nil {
462
+ return xerrors .Errorf ("getting block 1: %w" , err )
463
+ }
464
+
465
+ c2 , err := cid .Parse (cctx .Args ().Get (0 ))
466
+ if err != nil {
467
+ return xerrors .Errorf ("parsing cid 2: %w" , err )
468
+ }
469
+
470
+ b2 , err := api .ChainGetBlock (ctx , c2 )
471
+ if err != nil {
472
+ return xerrors .Errorf ("getting block 2: %w" , err )
473
+ }
474
+
475
+ def , err := api .WalletDefaultAddress (ctx )
476
+ if err != nil {
477
+ return err
478
+ }
479
+
480
+ params , err := actors .SerializeParams (& actors.ArbitrateConsensusFaultParams {
481
+ Block1 : b1 ,
482
+ Block2 : b2 ,
483
+ })
484
+
485
+ msg := & types.Message {
486
+ To : actors .StoragePowerAddress ,
487
+ From : def ,
488
+ Value : types .NewInt (0 ),
489
+ GasPrice : types .NewInt (1 ),
490
+ GasLimit : types .NewInt (10000000 ),
491
+ Method : actors .SPAMethods .ArbitrateConsensusFault ,
492
+ Params : params ,
493
+ }
494
+
495
+ smsg , err := api .MpoolPushMessage (ctx , msg )
496
+ if err != nil {
497
+ return err
498
+ }
499
+
500
+ fmt .Println (smsg .Cid ())
501
+
502
+ return nil
503
+ },
504
+ }
0 commit comments