1

I followed this tutorial (https://github.com/jpmorganchase/quorum/wiki/From-Scratch) to start up Quorum with 4 nodes using istanbul consensus. The nodes can connect and blocks are being generated but I cannot add transactions as I always get "Error: invalid sender undefined" for any type of transaction I want to add (e.g. new contract creation or ether transfer).

For example if I "geth attach new-node-2/geth.ipc" into my second node and I unlock its main account so that

> personal.listWallets
[{
    accounts: [{
        address: "0x5449199af0e2c3d59b35ebabb926a2dae6e2fba4",
        url: "keystore:///home/.../Node2/new-node-2/keystore/UTC--2019-03-29T15-24-11.813787559Z--5449199af0e2c3d59b35ebabb926a2dae6e2fba4"
    }],
    status: "Unlocked",
    url: "keystore:///home/.../Node2/new-node-2/keystore/UTC--2019-03-29T15-24-11.813787559Z--5449199af0e2c3d59b35ebabb926a2dae6e2fba4"
}]

And I perform any transaction, then I get an error like so:

> eth.sendTransaction({from: '0x5449199af0e2c3d59b35ebabb926a2dae6e2fba4', to: '0x952e0ce2a4bf5e9dbbd5e186b03f760fa25d3278', value: web3.toWei(1, "ether")})
Error: invalid sender
    at web3.js:3143:20
    at web3.js:6347:15
    at web3.js:5081:36
    at <anonymous>:1:1

Note that my files are arranged:

.../Node2$ ls
genesis.json  new-node-2  node.log  nohup.out

.../Node2$ ls new-node-2/
geth
geth.ipc
keystore
nodekey
permissioned-nodes.json
static-nodes.json

.../Node2$ ls new-node-2/keystore
UTC--2019-03-29T15-24-11.813787559Z--5449199af0e2c3d59b35ebabb926a2dae6e2fba4

While all nodes share the same genesis.json, permissioned-nodes.json and static-nodes.json file. The genesis.json file being:

{
    "config": {
        "chainId": 20,
        "eip150Block": 1,
        "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "eip155Block": 1,
        "eip158Block": 1,
        "byzantiumBlock": 1,
        "istanbul": {
            "epoch": 30000,
            "policy": 0
        },
        "isQuorum": true
    },
    "nonce": "0x0",
    "timestamp": "0x5c9e3793",
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f89af854947f2fb27d5bf950b3845e6a83161afcae1cf0823e94d7427ce2ebdbfbcf9a80c628df51af118faea25894965d1690307a389e5ac9c3a2abc6972786e01f8194d2209c0a0549cf4458764bf11433a6fe4054c730b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0",
    "gasLimit": "0xe0000000",
    "difficulty": "0x1",
    "mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
    "coinbase": "0x0000000000000000000000000000000000000000",
    "alloc": {
        "7f2fb27d5bf950b3845e6a83161afcae1cf0823e": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "965d1690307a389e5ac9c3a2abc6972786e01f81": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "d2209c0a0549cf4458764bf11433a6fe4054c730": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "d7427ce2ebdbfbcf9a80c628df51af118faea258": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "6f42aa5c4b9ca57d264395f4eaa8b653bb83047e": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "5449199af0e2c3d59b35ebabb926a2dae6e2fba4": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "5449199af0e2c3d59b35ebabb926a2dae6e2fba4": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        },
        "6aa89d734ea689c05baa5833459e768dfb6cb54d": {
            "balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
        }
    },
    "number": "0x0",
    "gasUsed": "0x0",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

And all nodes are on the same network, i.e. the following holds for all nodes:

> admin.nodeInfo.protocols.istanbul.network
20
  • Note that "geth version new-node-2/geth.ipc" gives Geth Version: 1.7.2-stable Git Commit: 43424382f29ec3472941fa9de014a41344e5ec55 Quorum Version: 2.0.2 Architecture: amd64 Network Id: 1 Go Version: go1.10.3 Operating System: linux Notice that the network Id is different to "admin.nodeInfo.protocols.istanbul.network" , is this a clash of ethereum and quorum geth on the same PC? – Luker501 Mar 29 at 21:13
0

Note that I solved this issue by analysing the Quorum 7-node example and realising that the config section of the genesis file needs to have

"eip150Block": 2,
       "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
       "eip155Block": 0,
       "eip158Block": 3,
       "byzantiumBlock": 1,
       "istanbul": {
           "epoch": 30000,
           "policy": 0
       },
       "isQuorum": true

but istanbul setup generates different numbers. Note that I am not sure exactly what parameter not allows me to add transactions but it is one of the above. This issue can be tracked here: https://github.com/jpmorganchase/quorum/issues/670

0

istanbul-tools is generic for ethereum, so it doesn't generate a genesis specific to quorum, and some hand-crafting is expected. For example, the 'isQuorum' flag has to be added. Taking a istanbul-genesis.json copy from quorum-examples is a good solution. Having said that, I just generated a genesis.json using istanbul-tools and it worked fine with quorum. The only change I had to make was to change extraData to have the correct validator node addresses.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.