Skip to content
This repository was archived by the owner on Nov 6, 2020. It is now read-only.
This repository was archived by the owner on Nov 6, 2020. It is now read-only.

[PoA] Transactions are not propagated when adding a new node to the network #10040

Closed
@fooock

Description

@fooock

Before filing a new issue, please provide the following information.

  • Parity Ethereum version: Parity-Ethereum/v2.1.8-stable-3eae1d3-20181130/x86_64-linux-gnu/rustc1.30.1
  • Operating system: Linux
  • Installation: one-line installer
  • Fully synchronized: yes
  • Network: Private PoA
  • Restarted: yes

I'm trying the demo PoA tutorial. All seems to work, but when I add a new node to the network (this node isn't validator), the transactions from this node doesn't propagate to the other nodes in the network.

The initial network is composed of the nodes:

  • validator-01
  • validator-02

The updated network is with the node:

  • regular-02

All transactions related to this issue are from regular-02 node.

The genesis file for my network is:

{
  "name":"primer",
  "engine":{
    "authorityRound":{
      "params":{
        "stepDuration":"5",
        "blockReward":"0xDE0B6B3A7640000",
        "validators":{
          "list":[
            "0x001b3fc96e38936badeb3b43bf8b05e43c6128e3",
            "0x009dfd994dfe87af895bd9a6a3e5576182d52d9f"
          ]
        }
      }
    }
  },
  "params":{
    "gasLimitBoundDivisor":"0x400",
    "maximumExtraDataSize":"0x20",
    "minGasLimit":"0x1388",
    "networkID":"0x3144E",
    "eip155Transition":0,
    "validateChainIdTransition":0,
    "eip140Transition":0,
    "eip211Transition":0,
    "eip214Transition":0,
    "eip658Transition":0
  },
  "genesis":{
    "seal":{
      "authorityRound":{
        "step":"0x0",
        "signature":"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "difficulty":"0x20000",
    "gasLimit":"0x5B8D80"
  },
  "accounts":{
    "0x0000000000000000000000000000000000000001":{
      "balance":"1",
      "builtin":{
        "name":"ecrecover",
        "pricing":{
          "linear":{
            "base":3000,
            "word":0
          }
        }
      }
    },
    "0x0000000000000000000000000000000000000002":{
      "balance":"1",
      "builtin":{
        "name":"sha256",
        "pricing":{
          "linear":{
            "base":60,
            "word":12
          }
        }
      }
    },
    "0x0000000000000000000000000000000000000003":{
      "balance":"1",
      "builtin":{
        "name":"ripemd160",
        "pricing":{
          "linear":{
            "base":600,
            "word":120
          }
        }
      }
    },
    "0x0000000000000000000000000000000000000004":{
      "balance":"1",
      "builtin":{
        "name":"identity",
        "pricing":{
          "linear":{
            "base":15,
            "word":3
          }
        }
      }
    },
    "0x89f9097168fd14bdf95155f5b268759d8550d43c":{
      "balance":"10000000000000000000000000"
    }
  }
}

The .toml configuration file from the regular node is:

[parity]                                                                                                                                                                                                           
chain = "/parity/primer.json"                                                                                                                                                                                      
base_path = "/parity/regular-02"                                                                                                                                                                                   
identity = "primer-regular-02"                                                                                                                                                                           
no_persistent_txqueue = true                                                                                                                                                                                       
[network]                                                                                                                                                                                                          
port = 30302                                                                                                                                                                                                       
[rpc]                                                                                                                                                                                                              
interface = "all"                                                                                                                                                                                                  
port = 8542                                                                                                                                                                                                        
cors = ["*"]                                                                                                                                                                                                       
apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"]                                                                                                              
[ui]                                                                                                                                                                                                               
port = 8182                                                                                                                                                                                                        
[websockets]                                                                                                                                                                                                       
port = 8452                                                                                                                                                                                                        
[ipc]                                                                                                                                                                                                              
disable = true 

The .toml config file from one of the validator nodes is (the other one is the same config but with different identity and base path):

[parity]                                                                                                                                                                                                           
chain = "/parity/primer.json"                                                                                                                                                                                      
base_path = "/parity/validator-02"                                                                                                                                                                                 
identity = "primer-validator-02"                                                                                                                                                                         
no_persistent_txqueue = true                                                                                                                                                                                       
[network]                                                                                                                                                                                                          
port = 30300                                                                                                                                                                                                       
min_peers = 50                                                                                                                                                                                                     
max_peers = 100                                                                                                                                                                                                    
[rpc]                                                                                                                                                                                                              
port = 8540                                                                                                                                                                                                        
cors = ["*"]                                                                                                                                                                                                       
apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"]                                                                                                              
[ui]                                                                                                                                                                                                               
port = 8180                                                                                                                                                                                                        
[websockets]                                                                                                                                                                                                       
port = 8450                                                                                                                                                                                                        
[account]                                                                                                                                                                                                          
password = ["/parity/validator-02/node.pwds"]                                                                                                                                                                      
[mining]                                                                                                                                                                                                           
engine_signer = "0x001b3fc96e38936badeb3b43bf8b05e43c6128e3"                                                                                                                                                       
force_sealing = true                                                                                                                                                                                               
reseal_on_txs = "all"  

When I send a new transaction from this node, a new transaction is created:

curl --data '{"jsonrpc":"2.0","method":"personal_sendTransaction","params":[{\
  "from":"0x00c498303595303a7533c47cf32f632087dc1c0c",\
  "to":"0x009dfd994dfe87af895bd9a6a3e5576182d52d9f",\
  "value":"0xDE0B6B3A7640000"}, "**************"],"id":0}' \
  -H "Content-Type: application/json" -X POST localhost:8542                                                                                             

{"jsonrpc":"2.0","result":"0x3135e61208a47af85e677be1e9f39efbd7a81098212f525f4cbcf6be082e8930","id":0}   

When I want to retrieve the transaction info from this node, I obtain this result:

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x3135e61208a47af85e677be1e9f39efbd7a81098212f525f4cbcf6be082e8930"],"id":1}' -H "Content
-Type: application/json" localhost:8542

{                                                                                                                                                                                                                  
  "jsonrpc": "2.0",
  "result": {
    "blockHash": null,
    "blockNumber": null,
    "chainId": "0x3144e",
    "condition": null,
    "creates": null,
    "from": "0x00c498303595303a7533c47cf32f632087dc1c0c",
    "gas": "0x186a00",
    "gasPrice": "0x0",
    "hash": "0x3135e61208a47af85e677be1e9f39efbd7a81098212f525f4cbcf6be082e8930",
    "input": "0x",
    "nonce": "0x16",
    "publicKey": "0xa0263cf09db59c38b4c155aa72b059b06db26cb7123ef07a48025960254268e45496890d7aa258f1337ea43d9a0d1bb05ee99410f42205c6dd817276a311e512",
    "r": "0xefad4a024b155b4bb83c519ac3f5991184c7579d328f13ce1c0b5c922f7e5b75",
    "raw": "0xf86b168083186a0094009dfd994dfe87af895bd9a6a3e5576182d52d9f880de0b6b3a764000080830628bfa0efad4a024b155b4bb83c519ac3f5991184c7579d328f13ce1c0b5c922f7e5b75a06e97cd60d336c666ba702ba52abc49862f6158c2368
5350c89c79e1c6874560c",
    "s": "0x6e97cd60d336c666ba702ba52abc49862f6158c23685350c89c79e1c6874560c",
    "standardV": "0x0",
    "to": "0x009dfd994dfe87af895bd9a6a3e5576182d52d9f",
    "transactionIndex": null,
    "v": "0x628bf",
    "value": "0xde0b6b3a7640000"
  },
  "id": 1
}

From the Ethereum network status this is what I see:

parity-poa-network

I expect the transaction sent from the regular-02 node has been mined, but this never occurs.

What I'm missing?

When I use Parity 1.11.7 or 1.11.11, this network config work as expected, and all transactions are mined.

Related?

#9329

Metadata

Metadata

Assignees

No one assigned

    Labels

    F2-bug 🐞The client fails to follow expected behavior.M4-core ⛓Core client code / Rust.P5-sometimesoon 🌲Issue is worth doing soon.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions