How to create a Tendermint local network with same ip

不问归期 提交于 2019-12-08 04:08:52

问题


How to set the config.toml file when establish a local Tendermint network with the same ip address. Do I need to set both 'seeds' and 'persistent_peers' for each node?

node1

congfig.toml

proxy_app = "tcp://127.0.0.1:46658"
moniker = "pc-4e76-2"
fast_sync = false
db_backend = "leveldb"
db_path = "data"
log_level = "main:info,state:info,*:error"
genesis_file = "config/genesis.json"
priv_validator_file = "config/priv_validator.json"
node_key_file = "config/node_key.json"
abci = "socket"
prof_laddr = ""
filter_peers = false

[rpc]
laddr = "tcp://0.0.0.0:46657"
grpc_laddr = ""
unsafe = false

[p2p]
laddr = "tcp://0.0.0.0:46656"
seeds = ""
persistent_peers = "tcp://0.0.0.0:46659"
addr_book_file = "config/addrbook.json"
addr_book_strict = false
flush_throttle_timeout = 100
max_num_peers = 50
max_msg_packet_payload_size = 1024
send_rate = 512000
recv_rate = 512000
pex = true
seed_mode = false

[mempool]
recheck = true
recheck_empty = true
broadcast = true
wal_dir = "data/mempool.wal"

[consensus]
wal_file = "data/cs.wal/wal"
wal_light = false
timeout_propose = 3000
timeout_propose_delta = 500
timeout_prevote = 1000
timeout_prevote_delta = 500
timeout_precommit = 1000
timeout_precommit_delta = 500
timeout_commit = 1000
skip_timeout_commit = false
max_block_size_txs = 10000
max_block_size_bytes = 1
create_empty_blocks = false
create_empty_blocks_interval = 0
peer_gossip_sleep_duration = 100
peer_query_maj23_sleep_duration = 2000

[tx_index]
indexer = "kv"
index_tags = ""
index_all_tags = false

gensis.json

{
    "genesis_time": "0001-01-01T00:00:00Z",
    "chain_id": "test-chain-1uFNom",
    "validators": [
        {
            "pub_key": {
                "type": "ed25519",
                "data": "2920010B3C75FF9A33E6DF2BB483FE936CCD40A84B929FEABC86EA1B167FD613"
            },
            "power": 10,
            "name": ""
        },
        {
            "pub_key": {
                "type": "ed25519",
                "data": "1B6D7C4898007A7BB48E36FC11B8F5296A4FBF8B1280DD5A950F45A9064C8937"
            },
            "power": 10,
            "name": ""
        }

    ],
    "app_hash": ""
}

priv_validator.json

{
    "address": "C63DF7A33A2D72B908349CF99106B003BEEA8DF2",
    "pub_key": {
        "type": "ed25519",
        "data": 
"2920010B3C75FF9A33E6DF2BB483FE936CCD40A84B929FEABC86EA1B167FD613"
    },
    "last_height": 0,
    "last_round": 0,
    "last_step": 0,
    "last_signature": null,
    "priv_key": {
        "type": "ed25519",
        "data": "BA2044F3F67A24776048B938113F588C17DDCB292955DE9520BA60A0BB9FFA912920010B3C75FF9A33E6DF2BB483FE936CCD40A84B929FEABC86EA1B167FD613"
    }
}

node2

config.toml

[rpc]
laddr = "tcp://0.0.0.0:46660"
[p2p]
laddr = "tcp://0.0.0.0:46659"
seeds = ""
persistent_peers = "tcp://0.0.0.0:46656"

(other settings are same with node1)

gensis.json same with node1

priv_validator.json

{
    "address": "606FF21C48917E12EBC2266A3ED6168F8BE459A0",
    "pub_key": {
        "type": "ed25519",
        "data": "1B6D7C4898007A7BB48E36FC11B8F5296A4FBF8B1280DD5A950F45A9064C8937"
    },
    "last_height": 0,
    "last_round": 0,
    "last_step": 0,
    "last_signature": null,
    "priv_key": {
        "type": "ed25519",
        "data": "B05ACBB6DA6D9086827F057FEF6A03EA5F440853330B32540D6E3611F232106B1B6D7C4898007A7BB48E36FC11B8F5296A4FBF8B1280DD5A950F45A9064C8937"
    }
}

I tried many ways. Sometimes I can get nodes run, but transactions cannot be correctly committed.

These are all my settings for creating two validator nodes locally with the same ip address. I got the errors of "duplicate peer" and "Connect to self".

Ensure peers                                 module=p2p numOutPeers=1 numDialing=0 numToDial=9
Will dial address                            module=p2p addr=0.0.0.0:46659
Will dial address                            module=p2p addr=e5b4313a3c7d690c673d6daf8bcbe5a69504274c@10.66.31.178:46656
We need more addresses. Sending pexRequest to random peer module=p2p peer="Peer{MConn{127.0.0.1:46659} 7fe6d6fd249279345bc57f114423d100c21151a5 out}"
Dialing peer                                 module=p2p address=0.0.0.0:46659
Dialing peer                                 module=p2p address=e5b4313a3c7d690c673d6daf8bcbe5a69504274c@10.66.31.178:46656
Failed to add peer                           module=p2p address=e5b4313a3c7d690c673d6daf8bcbe5a69504274c@10.66.31.178:46656 err="Connect to self"
Ignoring inbound connection: error while adding peer module=p2p address=10.66.31.178:51238 err="Connect to self"
Dialed peer with unknown ID - unable to authenticate module=p2p peer=0.0.0.0:46659 addr=0.0.0.0:46659
Failed to add peer                           module=p2p address=0.0.0.0:46659 err="Duplicate peer"

回答1:


Do I need to set both 'seeds' and 'persistent_peers' for each node?

no, use persistent_peers

Dialed peer with unknown ID - unable to authenticate

please prepend IP:Port pairs with respective node IDs. https://tendermint.readthedocs.io/projects/tools/en/develop/using-tendermint.html#peers. You can use tendermint show_node_id to get node id. Or better, use tendermint testnet command to create a local testnet.



来源:https://stackoverflow.com/questions/49776159/how-to-create-a-tendermint-local-network-with-same-ip

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!