Sync

Under situation:
 
  • But some nodes make different block,
  • The number of these nodes is under blocking number.
Expected actions:
 
  • These nodes will move to sync state for syncing their block state with network.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
global:
  modules:
    proposal_maker:
      name: ConditionProposalMaker
      delay: 1s
      conditions:
nodes:
  n3:
    modules:
      proposal_validator:
        name: ConditionProposalValidator
        conditions:
          # will make bad block when height, 13 and round, 0
          - condition: block.height="13" AND block.round in (0)
            actions:
              - action: block-hash
                value: bk:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

conditions:
  all:
     - current_state="booting" AND new_state="joining"
     - current_state="joining" AND new_state="consensus"
  
     - m="check majority" AND height="14" AND round=0 AND stage="INIT" AND is_finished=true
  
  network_creates_new_block:
     # new block created
     - node IN ("n0", "n1", "n2") AND m="new block created" AND block.height="13" AND block.round=0
     - node IN ("n0", "n1", "n2") AND m="new block created" AND block.height="15" AND block.round=0

  but_n3_move_to_sync:
     - node="n3" AND current_state="consensus" AND new_state="syncing"
1
2
3
 $ ./contest run sync-bad-block.yml --log ./contest-sync-bad-block
 $ echo $?
 0

This is the filtered new block messages:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ cat ./contest-sync-bad-block/all.log | \
     grep -i 'new block created' | \
     jq -c '[.node, .block.height, .block.round, .block.hash.hash]' | \
     column -s ',' -t
 ["n0",10,0,"bk:8rZSbCCNeEh1e6cecsfWa6Zx6ZuxbhhriEp8gGtsU5qQ"]
 ["n1",10,0,"bk:8rZSbCCNeEh1e6cecsfWa6Zx6ZuxbhhriEp8gGtsU5qQ"]
 ["n2",10,0,"bk:8rZSbCCNeEh1e6cecsfWa6Zx6ZuxbhhriEp8gGtsU5qQ"]
 ["n3",10,0,"bk:8rZSbCCNeEh1e6cecsfWa6Zx6ZuxbhhriEp8gGtsU5qQ"]
 ["n0",11,0,"bk:DobUDexxfWjLznXGLEajtDQzGfgQ9yQYg3JxHJkmm1To"]
 ["n1",11,0,"bk:DobUDexxfWjLznXGLEajtDQzGfgQ9yQYg3JxHJkmm1To"]
 ["n2",11,0,"bk:DobUDexxfWjLznXGLEajtDQzGfgQ9yQYg3JxHJkmm1To"]
 ["n3",11,0,"bk:DobUDexxfWjLznXGLEajtDQzGfgQ9yQYg3JxHJkmm1To"]
 ["n0",12,0,"bk:C6JyiHt9q5GPDenoNxPzohCB52XXBZ7BcuwyzPbgpi5P"]
 ["n1",12,0,"bk:C6JyiHt9q5GPDenoNxPzohCB52XXBZ7BcuwyzPbgpi5P"]
 ["n2",12,0,"bk:C6JyiHt9q5GPDenoNxPzohCB52XXBZ7BcuwyzPbgpi5P"]
 ["n3",12,0,"bk:C6JyiHt9q5GPDenoNxPzohCB52XXBZ7BcuwyzPbgpi5P"]
 ["n0",13,0,"bk:4CdvUY1w3jsn1cT1KW1AoGFicBHe3SeQDgzHy4YjjHSr"]
 ["n1",13,0,"bk:4CdvUY1w3jsn1cT1KW1AoGFicBHe3SeQDgzHy4YjjHSr"]
 ["n2",13,0,"bk:4CdvUY1w3jsn1cT1KW1AoGFicBHe3SeQDgzHy4YjjHSr"]
 ["n0",14,0,"bk:AXLi5g43jiyAXiK6G6dpE5uX6wjExWZEMF3ki1CnT7us"]
 ["n1",14,0,"bk:AXLi5g43jiyAXiK6G6dpE5uX6wjExWZEMF3ki1CnT7us"]
 ["n2",14,0,"bk:AXLi5g43jiyAXiK6G6dpE5uX6wjExWZEMF3ki1CnT7us"]
 ["n0",15,0,"bk:ANVfJE2gufoX2yc6ByyaHgMyb5Dbd7tZCszjrbviuyzc"]
 ["n1",15,0,"bk:ANVfJE2gufoX2yc6ByyaHgMyb5Dbd7tZCszjrbviuyzc"]
 ["n2",15,0,"bk:ANVfJE2gufoX2yc6ByyaHgMyb5Dbd7tZCszjrbviuyzc"]