Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cli): Added ability to specify --boot-nodes option to the init command #4453

Merged
merged 3 commits into from
Jul 5, 2021

Conversation

chefsale
Copy link
Contributor

@chefsale chefsale commented Jul 2, 2021

Tested three scenarios:

  1. No boot nodes specified

  2. One boot node specified

  3. Multiple boot nodes specified.

    With no boot nodes specified:

    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> ./target/debug/neard init --chain-id betanet --download-genesis
    Jun 30 17:06:22.216  INFO neard: Version: 1.2.0, Build: 0d2d66ef-modified, Latest Protocol: 45
    Jun 30 17:06:22.219  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
    Jun 30 17:06:59.992  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
    Jun 30 17:07:13.464  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
            ...
      "network": {
        "addr": "0.0.0.0:24567",
        "external_address": "",
        "boot_nodes": "",
        "max_num_peers": 40,
        "minimum_outbound_peers": 5,
        "ideal_connections_lo": 30,
        "ideal_connections_hi": 35,
        "peer_recent_time_window": {
          "secs": 600,
          "nanos": 0
        },
        "safe_set_size": 20,
        "archival_peer_connections_lower_bound": 10,
        "handshake_timeout": {
          "secs": 20,
          "nanos": 0
        },
        "reconnect_delay": {
          "secs": 60,
          "nanos": 0
        },
        "skip_sync_wait": false,
        "ban_window": {
          "secs": 10800,
          "nanos": 0
        },
        "blacklist": [],
        "ttl_account_id_router": {
          "secs": 3600,
          "nanos": 0
        },
        "peer_stats_period": {
          "secs": 5,
          "nanos": 0
        }
      },
            ...
    

    With one boot nodes specified:

    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes) [2]> ./target/debug/neard init --chain-id betanet --download-genesis --boot-nodes ed25519:[email protected]:24567
    Jun 30 17:09:04.550  INFO neard: Version: 1.2.0, Build: 0d2d66ef-modified, Latest Protocol: 45
    Jun 30 17:09:04.552  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
    Jun 30 17:10:18.975  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
    Jun 30 17:10:31.853  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
    {
            ...
      "network": {
        "addr": "0.0.0.0:24567",
        "external_address": "",
        "boot_nodes": "ed25519:[email protected]:24567",
        "max_num_peers": 40,
        "minimum_outbound_peers": 5,
        "ideal_connections_lo": 30,
        "ideal_connections_hi": 35,
        "peer_recent_time_window": {
          "secs": 600,
          "nanos": 0
        },
        "safe_set_size": 20,
        "archival_peer_connections_lower_bound": 10,
        "handshake_timeout": {
          "secs": 20,
          "nanos": 0
        },
        "reconnect_delay": {
          "secs": 60,
          "nanos": 0
        },
        "skip_sync_wait": false,
        "ban_window": {
          "secs": 10800,
          "nanos": 0
        },
        "blacklist": [],
        "ttl_account_id_router": {
          "secs": 3600,
          "nanos": 0
        },
        "peer_stats_period": {
          "secs": 5,
          "nanos": 0
        }
      },
            ...
    

    With multiple boot nodes specified:

    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> rm -rf ~/.near/
    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> ./target/debug/neard init --chain-id betanet --download-genesis --boot-nodes ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567
    Jun 30 17:12:16.514  INFO neard: Version: 1.2.0, Build: 0d2d66ef-modified, Latest Protocol: 45
    Jun 30 17:12:16.517  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
    Jun 30 17:13:46.960  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
    Jun 30 17:14:01.344  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
    sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
            ...
      "network": {
        "addr": "0.0.0.0:24567",
        "external_address": "",
        "boot_nodes": "ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567",
        "max_num_peers": 40,
        "minimum_outbound_peers": 5,
        "ideal_connections_lo": 30,
        "ideal_connections_hi": 35,
        "peer_recent_time_window": {
          "secs": 600,
          "nanos": 0
        },
        "safe_set_size": 20,
        "archival_peer_connections_lower_bound": 10,
        "handshake_timeout": {
          "secs": 20,
          "nanos": 0
        },
        "reconnect_delay": {
          "secs": 60,
          "nanos": 0
        },
        "skip_sync_wait": false,
        "ban_window": {
          "secs": 10800,
          "nanos": 0
        },
        "blacklist": [],
        "ttl_account_id_router": {
          "secs": 3600,
          "nanos": 0
        },
        "peer_stats_period": {
          "secs": 5,
          "nanos": 0
        }
      },
            ...
    

chefsale added 2 commits July 2, 2021 08:56
I have tested three scenarios:

1) default config which generates the random chain id
2) betanet config which is generated
3) betanet config which is downloaded and should have tracked shards = [0] and boot_nodes set.

Tested for the test chain command:
```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> ./target/debug/neard init
Jun 29 13:12:05.580  INFO neard: Version: 1.2.0, Build: 7e0fe60-modified, Latest Protocol: 45
Jun 29 13:12:05.593  INFO near: Generated node key, validator key, genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> cat /home/sandi/.near/config.json
{
  "genesis_file": "genesis.json",
  "genesis_records_file": null,
  "validator_key_file": "validator_key.json",
  "node_key_file": "node_key.json",
  "rpc": {
    "addr": "0.0.0.0:3030",
    "cors_allowed_origins": [
      "*"
    ],
    "polling_config": {
      "polling_interval": {
        "secs": 0,
        "nanos": 500000000
      },
      "polling_timeout": {
        "secs": 10,
        "nanos": 0
      }
    },
    "limits_config": {
      "json_payload_max_size": 10485760
    }
  },
  "telemetry": {
    "endpoints": []
  },
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": true,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
  "consensus": {
    "min_num_peers": 3,
    "block_production_tracking_delay": {
      "secs": 0,
      "nanos": 100000000
    },
    "min_block_production_delay": {
      "secs": 0,
      "nanos": 600000000
    },
    "max_block_production_delay": {
      "secs": 2,
      "nanos": 0
    },
    "max_block_wait_delay": {
      "secs": 6,
      "nanos": 0
    },
    "reduce_wait_for_missing_block": {
      "secs": 0,
      "nanos": 100000000
    },
    "produce_empty_blocks": true,
    "block_fetch_horizon": 50,
    "state_fetch_horizon": 5,
    "block_header_fetch_horizon": 50,
    "catchup_step_period": {
      "secs": 0,
      "nanos": 100000000
    },
    "chunk_request_retry_period": {
      "secs": 0,
      "nanos": 400000000
    },
    "header_sync_initial_timeout": {
      "secs": 10,
      "nanos": 0
    },
    "header_sync_progress_timeout": {
      "secs": 2,
      "nanos": 0
    },
    "header_sync_stall_ban_timeout": {
      "secs": 120,
      "nanos": 0
    },
    "state_sync_timeout": {
      "secs": 60,
      "nanos": 0
    },
    "header_sync_expected_height_per_second": 10,
    "sync_check_period": {
      "secs": 10,
      "nanos": 0
    },
    "sync_step_period": {
      "secs": 0,
      "nanos": 10000000
    },
    "doomslug_step_period": {
      "secs": 0,
      "nanos": 100000000
    }
  },
  "tracked_accounts": [],
  "tracked_shards": [],
  "archive": false,
  "log_summary_style": "colored",
  "gc_blocks_limit": 2,
  "view_client_threads": 4,
  "epoch_sync_enabled": true,
  "view_client_throttle_period": {
    "secs": 30,
    "nanos": 0
  },
  "trie_viewer_state_size_limit": 50000
}⏎                                                                                                                                                                                                                  sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)>
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> cat /home/sandi/.near/genesis.json
{
  "protocol_version": 45,
  "genesis_time": "2021-06-29T11:12:05.592321543Z",
  "chain_id": "test-chain-t2VXm",
  "genesis_height": 0,
  "num_block_producer_seats": 50,
  "num_block_producer_seats_per_shard": [
    50
  ],
  "avg_hidden_validator_seats_per_shard": [
    0
  ],
  "dynamic_resharding": false,
  "protocol_upgrade_stake_threshold": [
    4,
    5
  ],
  "protocol_upgrade_num_epochs": 2,
  "epoch_length": 500,
  "gas_limit": 1000000000000000,
  "min_gas_price": "1000000000",
  "max_gas_price": "10000000000000000000000",
  "block_producer_kickout_threshold": 90,
  "chunk_producer_kickout_threshold": 90,
  "online_min_threshold": [
    9,
    10
  ],
  "online_max_threshold": [
    99,
    100
  ],
  "gas_price_adjustment_rate": [
    1,
    100
  ],
  "runtime_config": {
    "storage_amount_per_byte": "90900000000000000000",
    "transaction_costs": {
      "action_receipt_creation_config": {
        "send_sir": 108059500000,
        "send_not_sir": 108059500000,
        "execution": 108059500000
      },
      "data_receipt_creation_config": {
        "base_cost": {
          "send_sir": 4697339419375,
          "send_not_sir": 4697339419375,
          "execution": 4697339419375
        },
        "cost_per_byte": {
          "send_sir": 59357464,
          "send_not_sir": 59357464,
          "execution": 59357464
        }
      },
      "action_creation_config": {
        "create_account_cost": {
          "send_sir": 99607375000,
          "send_not_sir": 99607375000,
          "execution": 99607375000
        },
        "deploy_contract_cost": {
          "send_sir": 184765750000,
          "send_not_sir": 184765750000,
          "execution": 184765750000
        },
        "deploy_contract_cost_per_byte": {
          "send_sir": 6812999,
          "send_not_sir": 6812999,
          "execution": 6812999
        },
        "function_call_cost": {
          "send_sir": 2319861500000,
          "send_not_sir": 2319861500000,
          "execution": 2319861500000
        },
        "function_call_cost_per_byte": {
          "send_sir": 2235934,
          "send_not_sir": 2235934,
          "execution": 2235934
        },
        "transfer_cost": {
          "send_sir": 115123062500,
          "send_not_sir": 115123062500,
          "execution": 115123062500
        },
        "stake_cost": {
          "send_sir": 141715687500,
          "send_not_sir": 141715687500,
          "execution": 102217625000
        },
        "add_key_cost": {
          "full_access_cost": {
            "send_sir": 101765125000,
            "send_not_sir": 101765125000,
            "execution": 101765125000
          },
          "function_call_cost": {
            "send_sir": 102217625000,
            "send_not_sir": 102217625000,
            "execution": 102217625000
          },
          "function_call_cost_per_byte": {
            "send_sir": 1925331,
            "send_not_sir": 1925331,
            "execution": 1925331
          }
        },
        "delete_key_cost": {
          "send_sir": 94946625000,
          "send_not_sir": 94946625000,
          "execution": 94946625000
        },
        "delete_account_cost": {
          "send_sir": 147489000000,
          "send_not_sir": 147489000000,
          "execution": 147489000000
        }
      },
      "storage_usage_config": {
        "num_bytes_account": 100,
        "num_extra_bytes_record": 40
      },
      "burnt_gas_reward": [
        3,
        10
      ],
      "pessimistic_gas_price_inflation_ratio": [
        103,
        100
      ]
    },
    "wasm_config": {
      "ext_costs": {
        "base": 264768111,
        "contract_compile_base": 35445963,
        "contract_compile_bytes": 216750,
        "read_memory_base": 2609863200,
        "read_memory_byte": 3801333,
        "write_memory_base": 2803794861,
        "write_memory_byte": 2723772,
        "read_register_base": 2517165186,
        "read_register_byte": 98562,
        "write_register_base": 2865522486,
        "write_register_byte": 3801564,
        "utf8_decoding_base": 3111779061,
        "utf8_decoding_byte": 291580479,
        "utf16_decoding_base": 3543313050,
        "utf16_decoding_byte": 163577493,
        "sha256_base": 4540970250,
        "sha256_byte": 24117351,
        "keccak256_base": 5879491275,
        "keccak256_byte": 21471105,
        "keccak512_base": 5811388236,
        "keccak512_byte": 36649701,
        "log_base": 3543313050,
        "log_byte": 13198791,
        "storage_write_base": 64196736000,
        "storage_write_key_byte": 70482867,
        "storage_write_value_byte": 31018539,
        "storage_write_evicted_byte": 32117307,
        "storage_read_base": 56356845750,
        "storage_read_key_byte": 30952533,
        "storage_read_value_byte": 5611005,
        "storage_remove_base": 53473030500,
        "storage_remove_key_byte": 38220384,
        "storage_remove_ret_value_byte": 11531556,
        "storage_has_key_base": 54039896625,
        "storage_has_key_byte": 30790845,
        "storage_iter_create_prefix_base": 0,
        "storage_iter_create_prefix_byte": 0,
        "storage_iter_create_range_base": 0,
        "storage_iter_create_from_byte": 0,
        "storage_iter_create_to_byte": 0,
        "storage_iter_next_base": 0,
        "storage_iter_next_key_byte": 0,
        "storage_iter_next_value_byte": 0,
        "touching_trie_node": 16101955926,
        "promise_and_base": 1465013400,
        "promise_and_per_promise": 5452176,
        "promise_return": 560152386,
        "validator_stake_base": 911834726400,
        "validator_total_stake_base": 911834726400
      },
      "grow_mem_cost": 1,
      "regular_op_cost": 3856371,
      "limit_config": {
        "max_gas_burnt": 200000000000000,
        "max_gas_burnt_view": 200000000000000,
        "max_stack_height": 16384,
        "initial_memory_pages": 1024,
        "max_memory_pages": 2048,
        "registers_memory_limit": 1073741824,
        "max_register_size": 104857600,
        "max_number_registers": 100,
        "max_number_logs": 100,
        "max_total_log_length": 16384,
        "max_total_prepaid_gas": 300000000000000,
        "max_actions_per_receipt": 100,
        "max_number_bytes_method_names": 2000,
        "max_length_method_name": 256,
        "max_arguments_length": 4194304,
        "max_length_returned_data": 4194304,
        "max_contract_size": 4194304,
        "max_length_storage_key": 4194304,
        "max_length_storage_value": 4194304,
        "max_promises_per_function_call_action": 1024,
        "max_number_input_data_dependencies": 128
      }
    },
    "account_creation_config": {
      "min_allowed_top_level_account_length": 0,
      "registrar_account_id": "registrar"
    }
  },
  "validators": [
    {
      "account_id": "test.near",
      "public_key": "ed25519:98jzeQmcPrVUjwrAawRsFotA5V4FyouDNsLWLM7W8koe",
      "amount": "50000000000000000000000000000000"
    }
  ],
  "transaction_validity_period": 100,
  "protocol_reward_rate": [
    1,
    10
  ],
  "max_inflation_rate": [
    1,
    20
  ],
  "total_supply": "2050000000000000000000000000000000",
  "num_blocks_per_year": 31536000,
  "protocol_treasury_account": "test.near",
  "fishermen_threshold": "10000000000000000000000000",
  "minimum_stake_divisor": 10,
  "records": [
    {
      "Account": {
        "account_id": "test.near",
        "account": {
          "amount": "1000000000000000000000000000000000",
          "locked": "50000000000000000000000000000000",
          "code_hash": "11111111111111111111111111111111",
          "storage_usage": 0
        }
      }
    },
    {
      "AccessKey": {
        "account_id": "test.near",
        "public_key": "ed25519:98jzeQmcPrVUjwrAawRsFotA5V4FyouDNsLWLM7W8koe",
        "access_key": {
          "nonce": 0,
          "permission": "FullAccess"
        }
      }
    },
    {
      "Account": {
        "account_id": "near",
        "account": {
          "amount": "1000000000000000000000000000000000",
          "locked": "0",
          "code_hash": "11111111111111111111111111111111",
          "storage_usage": 0
        }
      }
    },
    {
      "AccessKey": {
        "account_id": "near",
        "public_key": "ed25519:546XB2oHhj7PzUKHiH9Xve3Ze5q1JiW2WTh6abXFED3c",
        "access_key": {
          "nonce": 0,
          "permission": "FullAccess"
        }
      }
    }
  ]
}
```

Tested for default betanet init:
```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> rm -rf ~/.near/
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> ./target/debug/neard init --chain-id betanet --download-genesis
Jun 29 13:14:38.613  INFO neard: Version: 1.2.0, Build: 7e0fe60-modified, Latest Protocol: 45
Jun 29 13:14:38.614  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
Jun 29 13:15:06.188  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
Jun 29 13:15:13.541  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> cat /home/sandi/.near/config.json
{
  "genesis_file": "genesis.json",
  "genesis_records_file": null,
  "validator_key_file": "validator_key.json",
  "node_key_file": "node_key.json",
  "rpc": {
    "addr": "0.0.0.0:3030",
    "cors_allowed_origins": [
      "*"
    ],
    "polling_config": {
      "polling_interval": {
        "secs": 0,
        "nanos": 500000000
      },
      "polling_timeout": {
        "secs": 10,
        "nanos": 0
      }
    },
    "limits_config": {
      "json_payload_max_size": 10485760
    }
  },
  "telemetry": {
    "endpoints": [
      "https://explorer.betanet.near.org/api/nodes"
    ]
  },
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": false,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
  "consensus": {
    "min_num_peers": 3,
    "block_production_tracking_delay": {
      "secs": 0,
      "nanos": 100000000
    },
    "min_block_production_delay": {
      "secs": 0,
      "nanos": 600000000
    },
    "max_block_production_delay": {
      "secs": 2,
      "nanos": 0
    },
    "max_block_wait_delay": {
      "secs": 6,
      "nanos": 0
    },
    "reduce_wait_for_missing_block": {
      "secs": 0,
      "nanos": 100000000
    },
    "produce_empty_blocks": true,
    "block_fetch_horizon": 50,
    "state_fetch_horizon": 5,
    "block_header_fetch_horizon": 50,
    "catchup_step_period": {
      "secs": 0,
      "nanos": 100000000
    },
    "chunk_request_retry_period": {
      "secs": 0,
      "nanos": 400000000
    },
    "header_sync_initial_timeout": {
      "secs": 10,
      "nanos": 0
    },
    "header_sync_progress_timeout": {
      "secs": 2,
      "nanos": 0
    },
    "header_sync_stall_ban_timeout": {
      "secs": 120,
      "nanos": 0
    },
    "state_sync_timeout": {
      "secs": 60,
      "nanos": 0
    },
    "header_sync_expected_height_per_second": 10,
    "sync_check_period": {
      "secs": 10,
      "nanos": 0
    },
    "sync_step_period": {
      "secs": 0,
      "nanos": 10000000
    },
    "doomslug_step_period": {
      "secs": 0,
      "nanos": 100000000
    }
  },
  "tracked_accounts": [],
  "tracked_shards": [],
  "archive": false,
  "log_summary_style": "colored",
  "gc_blocks_limit": 2,
  "view_client_threads": 4,
  "epoch_sync_enabled": true,
  "view_client_throttle_period": {
    "secs": 30,
    "nanos": 0
  },
  "trie_viewer_state_size_limit": 50000
}⏎
```

Tested on betanet with the download config flag set:
```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> rm -rf ~/.near/
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> ./target/debug/neard init --chain-id betanet --download-genesis --download-config
Jun 29 13:19:12.545  INFO neard: Version: 1.2.0, Build: 3f3986d4-modified, Latest Protocol: 45
Jun 29 13:19:12.545  INFO near: Downloading config file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/config.json ...
Jun 29 13:19:13.476  INFO near: Saved the config file to: /home/sandi/.near/config.json ...
Jun 29 13:19:13.479  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
Jun 29 13:19:41.038  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
Jun 29 13:19:48.309  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (download-config)> cat /home/sandi/.near/config.json
{
  "genesis_file": "genesis.json",
  "genesis_records_file": null,
  "validator_key_file": "validator_key.json",
  "node_key_file": "node_key.json",
  "rpc": {
    "addr": "0.0.0.0:3030",
    "cors_allowed_origins": [
      "*"
    ],
    "polling_config": {
      "polling_interval": {
        "secs": 0,
        "nanos": 500000000
      },
      "polling_timeout": {
        "secs": 10,
        "nanos": 0
      }
    },
    "limits_config": {
      "json_payload_max_size": 10485760
    }
  },
  "telemetry": {
    "endpoints": [
      "https://explorer.betanet.near.org/api/nodes"
    ]
  },
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "ed25519:[email protected]:24567,ed25519:[email protected]:24567",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": false,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
  "consensus": {
    "min_num_peers": 3,
    "block_production_tracking_delay": {
      "secs": 0,
      "nanos": 100000000
    },
    "min_block_production_delay": {
      "secs": 0,
      "nanos": 600000000
    },
    "max_block_production_delay": {
      "secs": 2,
      "nanos": 0
    },
    "max_block_wait_delay": {
      "secs": 6,
      "nanos": 0
    },
    "reduce_wait_for_missing_block": {
      "secs": 0,
      "nanos": 100000000
    },
    "produce_empty_blocks": true,
    "block_fetch_horizon": 50,
    "state_fetch_horizon": 5,
    "block_header_fetch_horizon": 50,
    "catchup_step_period": {
      "secs": 0,
      "nanos": 100000000
    },
    "chunk_request_retry_period": {
      "secs": 0,
      "nanos": 400000000
    },
    "header_sync_initial_timeout": {
      "secs": 10,
      "nanos": 0
    },
    "header_sync_progress_timeout": {
      "secs": 2,
      "nanos": 0
    },
    "header_sync_stall_ban_timeout": {
      "secs": 120,
      "nanos": 0
    },
    "state_sync_timeout": {
      "secs": 60,
      "nanos": 0
    },
    "header_sync_expected_height_per_second": 10,
    "sync_check_period": {
      "secs": 10,
      "nanos": 0
    },
    "sync_step_period": {
      "secs": 0,
      "nanos": 10000000
    },
    "doomslug_step_period": {
      "secs": 0,
      "nanos": 100000000
    }
  },
  "tracked_accounts": [],
  "tracked_shards": [
    0
  ],
  "archive": false,
  "log_summary_style": "colored",
  "gc_blocks_limit": 2,
  "view_client_threads": 4,
  "epoch_sync_enabled": true,
  "view_client_throttle_period": {
    "secs": 30,
    "nanos": 0
  },
  "trie_viewer_state_size_limit": 50000
}⏎
```
… command

With no boot nodes specified:
```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> ./target/debug/neard init --chain-id betanet --download-genesis
Jun 30 17:06:22.216  INFO neard: Version: 1.2.0, Build: 0d2d66e-modified, Latest Protocol: 45
Jun 30 17:06:22.219  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
Jun 30 17:06:59.992  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
Jun 30 17:07:13.464  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
	...
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": false,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
	...
```

With one boot nodes specified:
```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes) [2]> ./target/debug/neard init --chain-id betanet --download-genesis --boot-nodes ed25519:[email protected]:24567
Jun 30 17:09:04.550  INFO neard: Version: 1.2.0, Build: 0d2d66e-modified, Latest Protocol: 45
Jun 30 17:09:04.552  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
Jun 30 17:10:18.975  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
Jun 30 17:10:31.853  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
{
	...
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "ed25519:[email protected]:24567",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": false,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
	...
```

With multiple boot nodes specified:

```
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> rm -rf ~/.near/
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> ./target/debug/neard init --chain-id betanet --download-genesis --boot-nodes ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567
Jun 30 17:12:16.514  INFO neard: Version: 1.2.0, Build: 0d2d66e-modified, Latest Protocol: 45
Jun 30 17:12:16.517  INFO near: Downloading genesis file from: https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/betanet/genesis.json ...
Jun 30 17:13:46.960  INFO near: Saved the genesis file to: /home/sandi/.near/genesis.json ...
Jun 30 17:14:01.344  INFO near: Generated for betanet network node key and genesis file in /home/sandi/.near
sandi@sandi-ThinkPad-X1-Carbon-7th ~/w/n/nearcore (add-boot-nodes)> cat /home/sandi/.near/config.json
	...
  "network": {
    "addr": "0.0.0.0:24567",
    "external_address": "",
    "boot_nodes": "ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567,ed25519:[email protected]:24567",
    "max_num_peers": 40,
    "minimum_outbound_peers": 5,
    "ideal_connections_lo": 30,
    "ideal_connections_hi": 35,
    "peer_recent_time_window": {
      "secs": 600,
      "nanos": 0
    },
    "safe_set_size": 20,
    "archival_peer_connections_lower_bound": 10,
    "handshake_timeout": {
      "secs": 20,
      "nanos": 0
    },
    "reconnect_delay": {
      "secs": 60,
      "nanos": 0
    },
    "skip_sync_wait": false,
    "ban_window": {
      "secs": 10800,
      "nanos": 0
    },
    "blacklist": [],
    "ttl_account_id_router": {
      "secs": 3600,
      "nanos": 0
    },
    "peer_stats_period": {
      "secs": 5,
      "nanos": 0
    }
  },
	...
```
@chefsale chefsale changed the title Add boot nodes feat(cli): Added ability to specify --boot-nodes option to the init command Jul 2, 2021
@chefsale chefsale marked this pull request as ready for review July 2, 2021 07:00
@chefsale chefsale self-assigned this Jul 2, 2021
@chefsale chefsale added the T-SRE Team: issues relevant to the SRE team label Jul 2, 2021
@@ -44,6 +44,8 @@ pub struct InitConfigArgs {
pub download_config: bool,
/// Specify a custom download URL for the config file.
pub download_config_url: Option<String>,
/// Specify the boot nodes to bootstrap the network
pub boot_nodes: Option<String>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's worth to put a new arg after the last existing? Especially in init_configs function signature to make breaking change a little bit easier?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have put it in front, as logically this is kind tied tothe download_config flags, as well. It seemed weird to me to put it after max_gas_burnt_view for that reason :)

@near-bulldozer near-bulldozer bot merged commit 7fe6819 into master Jul 5, 2021
@near-bulldozer near-bulldozer bot deleted the add-boot-nodes branch July 5, 2021 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-SRE Team: issues relevant to the SRE team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants