Git Product home page Git Product logo

net.ton.dev's Introduction

README

This HOWTO contains instructions on how to build and configure a RUST validator node in TON blockchain. The instructions and scripts below were verified on Ubuntu 20.04.

Table of Contents

Getting Started

1. System Requirements

Configuration CPU (threads) RAM (GiB) Storage (GiB) Network (Gbit/s)
Minimum 48 128 1000 1

SSD/NVMe disks are obligatory.

2. Prerequisites

2.1 Set the Environment

Adjust (if needed) net.ton.dev/scripts/env.sh:

Set export DEPOOL_ENABLE=yes in env.sh for a depool validator (an elector request is sent to a depool from a validator multisignature wallet).

Set export DEPOOL_ENABLE=no in env.sh for a direct staking validator (an elector request is sent from a multisignature wallet directly to the elector).

cd net.ton.dev/scripts/
. ./env.sh 

Note: Make sure to run the script as . ./env.sh, not ./env.sh

2.2 Install Dependencies

install_deps.sh script supports Ubuntu OS only.

./install_deps.sh 

Install and configure Docker according to the official documentation.

Note: Make sure to add your user to the docker group, or run subsequent command as superuser:

sudo usermod -a -G docker $USER

3. Deploy RUST Validator Node

Do this step when the network is launched. Deploy the node:

./deploy.sh 2>&1 | tee ./deploy.log

Note: the log generated by this command will be located in the net.ton.dev/scripts/ folder and can be useful for troubleshooting.

Wait until the node is synced. Depending on network throughput this step may take significant time (up to several hours).

4. Check Node synchronization

Use the following command to check if the node is synced:

docker exec -it rnode /ton-node/tools/console -C /ton-node/configs/console.json --cmd getstats

Script output example:

tonlabs console 0.1.254
COMMIT_ID: 
BUILD_DATE: 2021-12-24 10:53:20 +0300
COMMIT_DATE: 
GIT_BRANCH: 
{
    "sync_status":    "synchronization finished",
    "masterchainblocktime":    1640343840,
    "masterchainblocknumber":    13393489,
    "timediff":    4,
    "in_current_vset_p34":    true,
    "in_next_vset_p36":    false,
    "last_applied_masterchain_block_id":    {"shard":"-1:8000000000000000","seq_no":13393489,"rh":"e74d505222bbe64617bbd42939cf01334b035990ae4b4e285e67ecbb1b537dd3","fh":"fc0be7c22310389400a7bdbd000b3737b317ce44d92e9a5ed72086c4fa404afa"},
    "processed_workchain":    0,
    "validation_stats":    {
  "-1:8000000000000000": "1 sec ago",
  "0:e800000000000000": "1 sec ago"
},
    "collation_stats":    {
  "-1:8000000000000000": "never",
  "0:e800000000000000": "6 sec ago"
},
    "tps_10":    2,
    "tps_300":    1
}

If the timediff parameter is less than 10 seconds, synchronization with masterchain is complete. "sync_status": "synchronization finished" means synchronization with workchains is complete

Note: The sync process may not start for up to one hour after node deployment, during which this command may result in error messages. If errors persist for more than an hour after deployment, review deployment log for errors and check the network status.

5. Configure validator multisignature wallet

There is a small difference between direct staking and DePool validators on this step:

  • For direct staking validator it is necessary to create and deploy a validator SafeMultisig wallet in -1 chain.
  • For a DePool validator it is necessary to create and deploy a validator SafeMultisig wallet in 0 chain.

You can use TONOS-CLI for this purpose. It should be configured to connect to the net.ton.dev network.

Refer to this document for the detailed wallet creation procedure, or follow the links in the short guide below:

  1. All wallet custodians should create seed phrases and public keys for themselves. At least three custodians are recommended for validator wallet, one of which will be used by the validator node. All seed phrases should be kept secret by their owners and securely backed up.
  2. The wallet deployer (who may or may not be one of the custodians) should gather the public keys from all custodians.
  3. The wallet deployer should obtain SafeMultisig contract code from the repository.
  4. The wallet deployer should generate deployment keys.
  5. The wallet deployer should generate validator wallet address: in -1 chain for direct staking validator or in 0 chain for a DePool validator.
  6. Any user should send at least 1 token to the generated wallet address to create it in the blockchain.
  7. The wallet deployer should deploy the wallet contact to the blockchain and set all gathered public keys as its custodians. At this step the number of custodian signatures required to make transactions from the wallet is also set (>=2 recommended for validator wallets). Deploy to -1 chain for direct staking validator or to 0 chain for a DePool validator.
  8. In case of direct staking, the funds for staking should be transferred to the newly created validator wallet.

Once the wallet is deployed, place 2 files on the validator node:

  • /ton-node/configs/${VALIDATOR_NAME}.addr should contain validator multisignature wallet address in form X:XXX...XXX (the folder on the host is net.ton.dev/docker-compose/ton-node/configs)
  • /ton-node/configs/keys/msig.keys.json should contain validator multisignature custodian's keypair (the folder on the host is net.ton.dev/docker-compose/ton-node/configs/keys/)

The node will use the wallet address and the keys provided to it to generate election requests each validation cycle.

Note: If the validator wallet requires more than 1 custodian signature to make transactions, make sure each transaction sent by the validator node is confirmed by the required amount of custodians.

6. Configure DePool

For a DePool validator it is necessary to deploy a DePool contract to workchain 0.

You can use TONOS-CLI for this purpose. It should be configured to connect to the net.ton.dev network.

Refer to this document for the detailed DePool creation procedure, or follow the links in the short guide below:

  1. Obtain contract code from the repository.
  2. Generate deployment keys.
  3. Calculate contract addresses.
  4. Send tokens to the calculated addresses.
  5. Deploy contracts. Make sure to specify your validator wallet in the DePool contract at this step.
  6. Configure DePool state update method.

Once DePool is successfully deployed and configured to be regularly called to update its state, you can make stakes in it. Note that validator stakes must always exceed validator assurance, otherwise DePool will not participate in elections.

Also note, that DePool and supporting contracts balance should be monitored and kept positive at all times.

Once the validator wallet and the DePool are deployed, place 3 files on the validator node:

  • /ton-node/configs/${VALIDATOR_NAME}.addr should contain validator multisignature wallet address in form 0:XXX...XXX (the folder on the host is net.ton.dev/docker-compose/ton-node/configs)
  • /ton-node/configs/keys/msig.keys.json should contain validator multisignature custodian's keypair (the folder on the host is net.ton.dev/docker-compose/ton-node/configs/keys/)
  • /ton-node/configs/depool.addr should contain DePool address in form 0:XXX...XXX (the folder on the host is net.ton.dev/docker-compose/ton-node/configs)

The script generating validator election requests (directly through multisig wallet, or through DePool, depending on the setting selected on step 2.1) will run regularly, once the necessary addresses and keys are provided.

7. Upgrade RUST Validator Node

Note: You may need to renew your copy of net.ton.dev scripts but do not remove any working files from the previous deployment (for example, configs folder).

Adjust (specify new commit ID) net.ton.dev/scripts/env.sh:

export TON_NODE_GITHUB_REPO="https://github.com/tonlabs/ton-labs-node.git"
export TON_NODE_GITHUB_COMMIT_ID="master"
export TON_NODE_TOOLS_GITHUB_REPO="https://github.com/tonlabs/ton-labs-node-tools.git"
export TON_NODE_TOOLS_GITHUB_COMMIT_ID="master"
export TONOS_CLI_GITHUB_REPO="https://github.com/tonlabs/tonos-cli.git"
export TONOS_CLI_GITHUB_COMMIT_ID="master"

Upgrade the node:

./upgrade.sh 2>&1 | tee ./upgrade.log

Note: the log generated by this command will be located in the net.ton.dev/scripts/ folder and can be useful for troubleshooting.

Wait until the node is synced.

Stopping, restarting the RUST Node

Note: call docker-compose commands from the net.ton.dev/docker-compose/ton-node folder.

To stop the node use the following command:

docker-compose stop

To restart a stopped node use the following command:

docker-compose restart

Logging

During deployment

It is highly recommended to record the full log during node deployment:

./deploy.sh 2>&1 | tee ./deploy.log

The log is saved to the net.ton.dev/scripts/ folder next to the deployment script and can be useful for troubleshooting.

During operation

When operational, the node keeps a number of logs in the net.ton.dev/docker-compose/ton-node/logs folder.

Logs are generated with log4rs framework. For detailed documentation on it refer to https://docs.rs/log4rs/1.0.0/log4rs/.

Logging configuration is determined by the net.ton.dev/docker-compose/ton-node/configs/log_cfg.yml file. By default is contains the recommended configuration for the Rust node.

refresh_rate: 30 seconds

appenders:
  stdout:
    kind: console
    encoder:
      pattern: "{d(%s.%f)} {l} [{h({t})}] {I}: {m}{n}"

  stdout_ref:
    kind: console
    encoder:
      pattern: "{f}:{L} {l} [{h({t})}] {I}: {m}{n}"

  logfile:
    kind: file
    path: "/ton-node/logs/output.log"
    encoder:
      pattern: "{d(%s.%f)} {l} [{h({t})}] {I}: {m}{n}"

  rolling_logfile:
    kind: rolling_file
    encoder:
      pattern: "{d(%Y-%m-%d %H:%M:%S.%f)} {l} [{h({t})}] {I}: {m}{n}"
    path: /ton-node/logs/output.log
    policy:
      kind: compound
      trigger:
        kind: size
        limit: 50 gb
      roller:
        kind: fixed_window
        pattern: '/ton-node/logs/output_{}.log'
        base: 1
        count: 1

  tvm_logfile:
    kind: file
    path: "target/log/tvm.log"
    encoder:
      pattern: "{m}{n}"

root:
  level: info
  appenders:
    - rolling_logfile

loggers:
  # node messages
  ton_node:
    level: trace
  boot:
    level: trace
  sync:
    level: trace

  # adnl messages
  adnl:
    level: info

  overlay:
    level: info

  rldp:
    level: info

  dht:
    level: info

  # block messages
  ton_block:
    level: debug

  # block messages
  executor:
    level: debug

  # tvm messages
  tvm:
    level: info

  librdkafka:
    level: info

  validator:
    level: debug

  catchain:
    level: debug

  validator_session:
    level: debug

The currently configured targets are the following:

ton_node: node-related messages, except initial boot and sync, block exchange with other nodes

boot: initial boot messages, creation of trusted key block chain, loading blockchain state

sync: node synchronization - loading a certain number of most recent blocks

adnl: messages of the ADNL protocol

overlay: messages of the overlay protocol

rldp: messages of the RLDP protocol

dht: messages of the DHT protocol

ton_block: messages of the block structures library, logs are turned on in debug

executor: messages of the smart contract execution library, logs are turned on in debug

tvm: ton virtual machine messages, logs are turned on in debug

librdkafka: kafka client library messages

validator: top level consensus protocol messages

catchain: low level consensus protocol messages

validator_session: mid level consensus protocol messages

Migrating from C++ node

To migrate your validator from legacy C++ node to Rust node, complete the following steps:

  1. Set up a new host for the Rust node, according to steps 1-3 of this document.
  2. Wait for node to sync. Check sync according to step 4 of this document.
  3. Stop the C++ node sending election requests (by default - disable scheduling of the validator script). Do not shut down the C++ validator itself, let it finish the current round.
  4. Configure validator wallet and corresponding keys, optionally - DePool (copy them from C++ node files to Rust Node files). By default:
    1. Copy validator wallet address from ~/ton-keys/$(hostname -s).addr file on the C++ node to /ton-node/configs/${VALIDATOR_NAME}.addr on the Rust Node.
    2. Copy validator wallet keys from /ton-keys/msig.keys.json on the C++ node to /ton-node/configs/keys/msig.keys.json on the Rust Node.
    3. If you have a DePool set up, copy DePool address from ~/ton-keys/depool.addr on the C++ node to /ton-node/configs/depool.addr on the Rust Node. Once this is done, the Rust node validator script will start automatically with the next round.
  5. DO NOT shut down the C++ host. Wait for the C++ node to complete the current round until the validator set is changed.
  6. Check logs/validator.log on the Rust node, and make sure the first election request was successfully sent. There should be no errors in the log.
  7. Only once the validator set changes, the C++ node is no longer a validator and the Rust node starts validating (validation_stats and collation_stats in the console output should not be empty), shut down the C++ node.

Troubleshooting

Here are some solutions to frequently encountered problems.

1. Couldn’t connect to Docker daemon at http+docker://localhost

This error occurs in two cases. Either the docker daemon isn't running, or current user doesn't have rights to access docker.

You can fix the rights issue either by running relevant commands as the superuser or adding the user to the docker group:

sudo usermod -a -G docker $USER

Make sure to restart the system or log out and back in, for the new group settings to take effect.

2. thread 'main' panicked error when checking node synchronization

The following error may occur for a short time immediately after node deployment when attempting to check synchronization:

thread 'main' panicked at 'Can't create client: Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }', bin/console.rs:454:59

Currently this is expected behavior, unless it persists for more than a few minutes. If it does persist, check network status at https://net.ton.live/, and, if the network is up and running, review deployment logs for errors.

3. Error executing command when checking node synchronization

The following error may occur for up to an hour after node deployment when attempting to check synchronization:

Error executing command: Error receiving answer: early eof bin/console.rs:296

Currently this is expected behavior, unless it persists for more than one hour. If it does persist, check network status at https://net.ton.live/, and, if the network is up and running, review deployment logs for errors.

4. Cannot stop/restart/remove node container

Make sure you are running all docker-compose commands from the net.ton.dev/docker-compose/ton-node folder.

5. DePool state not updating

It's recommended to send at least two ticktocks while the elections are open. For rust node you can use the provided ticktock script, which sends 5 ticktocks after the elections open.

net.ton.dev's People

Contributors

a-zorina avatar ar-tmp avatar aslanin avatar boo50 avatar futurizt avatar samorodkin avatar serge-medvedev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

net.ton.dev's Issues

Validator node crashes after receiveing invalid proofs

[ 1][t 5][1590074181.125699282][validate-query.cpp:116][!validateblock(0,e800000000000000):245137]        aborting validation of block candidate for (0,e800000000000000) : [Error : -666 : reference masterchain block (-1,8000000000000000,178929):5AD5EBE085D87E0C47A6B36D8275DE96FC5CF0C8286E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]6E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 started
[ 1][t 1][1590074181.225957394][validate-query.cpp:116][!validateblock(0,e800000000000000):245137]        aborting validation of block candidate for (0,e800000000000000) : [Error : -666 : reference masterchain block (-1,8000000000000000,178929):5AD5EBE085D87E0C47A6B36D8275DE96FC5CF0C8286E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]6E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 started
[ 1][t 6][1590074181.326241016][validate-query.cpp:116][!validateblock(0,e800000000000000):245137]        aborting validation of block candidate for (0,e800000000000000) : [Error : -666 : reference masterchain block (-1,8000000000000000,178929):5AD5EBE085D87E0C47A6B36D8275DE96FC5CF0C8286E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]6E726BE6A6AAD4AA348D3F:9DFDAECF2C561D81FB661C75D2ABCCBBDDC191B16E4AA4E8A9FCC06B82BC13F2 for block (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 does not have a valid proof]
[ 3][t 5][1590074181.426372290][validate-query.cpp:159][!validateblock(0,e800000000000000):245137]        validate query for (0,e800000000000000,245137):5DE2371F0A9BC117430206E75A440B0EFBE5B35B30C0B5CD43A547B36D933C22:1EE93A973A6453DCA62CDF91B33C521DAFA994E3666BD46F48BEE049FCFC9A83 started
(
  (hme_root
    root:(hm_edge
      label:(hml_long n:96 s:x80000000000000000002BAF1)
      node:(hmn_leaf
        value:(processed_upto last_msg_lt:271466000003 last_msg_hash:xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)))))
x{C_}
 x{B0400000000000000000015D788000001F9A513741FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC_}
[ 0][t 1][1590074181.485998392][Status.h:273][!slice]     Unexpected Status [Error : 651 : file not in archive slice] in file ../validator/db/archiver.cpp at line 80
[pid 17107] [time 1590074181] Signal: 6

rights mask no right

after ./setup.sh I find that the folder ~/ton-keys/elections is missing the x-bit for the user.
drw------- 2 ton ton 4096 Jun 17 19:00 elections

that breaks the validator-msig.sh script to my undertanding... maybe even more

you can manually correct by issuing the command
chmod u+x ~/ton-keys/elections/
but I think it would be better to fix the mask in the scripts directly

Deploy validation error.

Hi,

While running "deploy.sh" for deploying the validator docker node. I got the below error.

Error:-

`Updating git submodule `https://github.com/google/benchmark.git`
    Updating git submodule `https://github.com/google/googletest.git`
    Updating git repository `https://github.com/tonlabs/ton-labs-dht`
    Updating git submodule `https://github.com/tonlabs/common.git`
    Updating git repository `https://github.com/tonlabs/ever-labs-crypto`
    Updating git repository `https://github.com/tonlabs/ton-labs-overlay`
    Updating git submodule `https://github.com/tonlabs/common.git`
    Updating git repository `https://github.com/tonlabs/ton-labs-rldp`
    Updating git submodule `https://github.com/tonlabs/common.git`
    Updating git repository `https://github.com/tonlabs/ton-labs-abi.git`
    Updating git repository `https://github.com/tonlabs/ton-labs-block-json.git`
    Updating git repository `https://github.com/tonlabs/ton-labs-executor`
    Updating git repository `https://github.com/tonlabs/ton-labs-vm`
error: failed to select a version for `zstd-sys`.
    ... required by package `zstd-safe v4.0.0+zstd.1.4.9`
    ... which satisfies dependency `zstd-safe = "=4.0.0"` of package `zstd v0.8.0+zstd.1.4.9`
    ... which satisfies dependency `zstd = "^0.8"` of package `adnl v0.7.74 (https://github.com/tonlabs/ton-labs-adnl?tag=0.7.74#4f2335e0)`
    ... which satisfies git dependency `adnl` of package `catchain v0.1.0 (/tonlabs/ton-node/catchain)`
    ... which satisfies path dependency `catchain` of package `ton_node v0.50.21 (/tonlabs/ton-node)`
versions that meet the requirements `=1.5.0` are: 1.5.0+zstd.1.4.9

the package `zstd-sys` links to the native library `zstd`, but it conflicts with a previous package which links to `zstd` as well:
package `zstd-sys v2.0.0+zstd.1.5.2`
    ... which satisfies dependency `zstd-sys = "^2.0"` of package `librocksdb-sys v0.7.1+7.3.1 (https://github.com/rust-rocksdb/rust-rocksdb.git#39dc822d)`
    ... which satisfies git dependency `librocksdb-sys` of package `rocksdb v0.18.0 (https://github.com/rust-rocksdb/rust-rocksdb.git#39dc822d)`
    ... which satisfies git dependency `rocksdb` of package `storage v0.5.0 (/tonlabs/ton-node/storage)`
    ... which satisfies path dependency `storage` of package `catchain v0.1.0 (/tonlabs/ton-node/catchain)`
    ... which satisfies path dependency `catchain` of package `ton_node v0.50.21 (/tonlabs/ton-node)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='zstd-sys' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

failed to select a version for `zstd-sys` which could resolve this conflict
Service 'node' failed to build: The command '/bin/sh -c cargo update && cargo build --release' returned a non-zero code: 101`

Script validator_msig.sh can't see tokens for return.

Script validator_msig.sh can't see tokens for return if begin work same seconds after begin election.
Election already start, but tokens not unlocked.

For example:
Election start 04:09:48 but script run in 04:10:00

Out of log file:
INFO: validator_msig.sh BEGIN 1594429801 / Sat Jul 11 03:10:01 CEST 2020
INFO: MSIG_ADDR = -1:....
INFO: recover_amount = 0 nanotokens
INFO: nothing to recover
INFO: 2020-07-11 03:10:01 Elections 1594462556

But after 10 minutes script successfull returned tokens.

May be script have to wait some seconds after election start?

Node unexpectedly crashed

Here is a node.log tail:

[ 2][t 6][1590078551.268077850][check-proof.cpp:46][!checkprooflink][&VALIDATOR_WARNING]        aborting check proof for [ w=0 s=15564440312192434176 seq=246606 7+tREn60ju09PCLX/HSe7/R4I+7IjV5zuwdx7s8+NFs= ZPklZXVcazG/Y9lBpbTOmnCa6UEIrRyaYBqwvnEpMsw= ] query: [Error : 651 : timeout]
[ 3][t 3][1590078551.268093348][wait-block-state.cpp:187][!checkprooflink]      received bad proof link: [Error : 651 : timeout]
[ 3][t 6][1590078551.268104553][wait-block-state.cpp:187][!checkprooflink]      received bad proof link: [Error : 651 : timeout]
[ 2][t 3][1590078551.268289089][Timer.cpp:82][!checkprooflink][&duration > max_duration_]       SLOW: [name:checkproof][duration:28.7s]
[ 2][t 6][1590078551.268302679][Timer.cpp:82][!checkprooflink][&duration > max_duration_]       SLOW: [name:checkproof][duration:28.5s]
[ 2][t 6][1590078551.268370628][check-proof.cpp:46][!checkprooflink][&VALIDATOR_WARNING]        aborting check proof for [ w=0 s=15564440312192434176 seq=246608 0URCeBCIni+APBIkEegoWoD0dk7SF2Dy6zgaW1Fw6Qg= D2xy5N6BvRQAHRpN2HOTuZs3MaxyiGm7Gj8AaQogXfs= ] query: [Error : 651 : timeout]
[ 2][t 3][1590078551.268381357][check-proof.cpp:46][!checkprooflink][&VALIDATOR_WARNING]        aborting check proof for [ w=0 s=15564440312192434176 seq=246607 ktd1eLHWe5vXLVL6JILsZ7GL9L8xu194PiQTymeB2pk= AwkM34jzjLDq8KaP/FnC0KmUZ6OUT5dqrgc9BKECqPk= ] query: [Error : 651 : timeout]
[ 3][t 6][1590078551.268398762][wait-block-state.cpp:187][!checkprooflink]      received bad proof link: [Error : 651 : timeout]
[ 3][t 3][1590078551.268411636][wait-block-state.cpp:187][!checkprooflink]      received bad proof link: [Error : 651 : timeout]
[ 2][t 6][1590078551.268431664][Timer.cpp:82][!checkprooflink][&duration > max_duration_]       SLOW: [name:checkproof][duration:24.3s]
[ 2][t 3][1590078551.268470526][Timer.cpp:82][!checkprooflink][&duration > max_duration_]       SLOW: [name:checkproof][duration:26.0s]
[ 2][t 6][1590078551.268506289][check-proof.cpp:46][!checkprooflink][&VALIDATOR_WARNING]        aborting check proof for [ w=-1 s=9223372036854775808 seq=180005 d/5i+7pJqNt7M20B9DUbJPc/GyxBL8ZE5KKT08NqCT4= Z5EXE/+KIMvG2CmWEyRCoID5P+INgs4IYlv2+S391Bg= ] query: [Error : 651 : timeout]
[ 3][t 6][1590078551.268526793][wait-block-state.cpp:187][!checkprooflink]      received bad proof link: [Error : 651 : timeout]
[ 2][t 6][1590078551.268544197][wait-block-state.cpp:36][!waitstate]    aborting wait block state query for [ w=-1 s=9223372036854775808 seq=180005 d/5i+7pJqNt7M20B9DUbJPc/GyxBL8ZE5KKT08NqCT4= Z5EXE/+KIMvG2CmWEyRCoID5P+INgs4IYlv2+S391Bg= ] priority=2: [Error : 652 : timeout]
[ 2][t 6][1590078551.268577576][Timer.cpp:82][!checkprooflink][&duration > max_duration_]       SLOW: [name:checkproof][duration:24.2s]
[ 2][t 7][1590078551.268639803][Timer.cpp:82][!broadcast][&duration > max_duration_]    SLOW: [name:validatebroadcast][duration:15.0s]
------- Stack Backtrace -------
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x1fd7a1)[0x563e5e36d7a1]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x1fa56e)[0x563e5e36a56e]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7f6a2c763890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7f6a2b857e97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7f6a2b859801]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x210207)[0x563e5e380207]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x210de5)[0x563e5e380de5]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x21009a)[0x563e5e38009a]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x4b73ef)[0x563e5e6273ef]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x68f03b)[0x563e5e7ff03b]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x69c109)[0x563e5e80c109]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x220b2a)[0x563e5e390b2a]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x220d7d)[0x563e5e390d7d]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x230e58)[0x563e5e3a0e58]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(+0x223786)[0x563e5e393786]
/home/dmitry/net.ton.dev/ton/build/validator-engine/validator-engine(_ZN2td6detail13ThreadPthread10run_threadEPv+0x37)[0x563e5e2bd627]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7f6a2c7586db]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7f6a2b93a88f]
-------------------------------

Please change validator_msig.sh for FreeBSD compatibility

base64 on FreeBSD and some other systems has not '--wrap' key
so please change
recover_query_boc=$(base64 --wrap=0 "${ELECTIONS_WORK_DIR}/recover-query.boc")
to
recover_query_boc=$(base64 "${ELECTIONS_WORK_DIR}/recover-query.boc" | tr -d "\n")
and
validator_query_boc=$(base64 --wrap=0 "${ELECTIONS_WORK_DIR}/validator-query.boc")
to
validator_query_boc=$(base64 "${ELECTIONS_WORK_DIR}/validator-query.boc" |tr -d "\n")

for compatibility

Node doesn't syncing

Hi.
After installation node doesn't syncing with a lot of same messages in the log:

[ 2][t 5][1589655555.102943897][full-node-shard.cpp:447][!manager] getnextkey: [Error : 651 : not inited] [ 2][t 3][1589655556.522623301][full-node-shard.cpp:447][!manager] getnextkey: [Error : 651 : not inited] [ 2][t 4][1589655557.890264750][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout] [ 2][t 4][1589655557.943520069][full-node-shard.cpp:447][!manager] getnextkey: [Error : 651 : not inited] [ 2][t 2][1589655561.938862085][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout] [ 2][t 5][1589655565.666907549][full-node-shard.cpp:447][!manager] getnextkey: [Error : 651 : not inited] [ 2][t 2][1589655565.961014032][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout] [ 2][t 4][1589655570.009113789][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout] [ 2][t 4][1589655571.399553061][full-node-shard.cpp:447][!manager] getnextkey: [Error : 651 : not inited] [ 2][t 6][1589655572.013873339][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout] [ 2][t 4][1589655576.058635712][download-state.cpp:232][!downloadstatereq(-1,8000000000000000,0)] failed to download state : [Error : 652 : adnl query timeout]

Connection refused : 111 : Error on [fd:5]] conn failed

I've got connection error already two times.
Validator node worked for a week and suddenly got error, all attempts to restart give this error
After that create new build with new working dirs and it's connected successfully, but after 2 days got same error.
And again I can start another build with clean setup and working dirs, but this one won't connect.

connecting to [127.0.0.1:3030]
local key: B156EF991E7B32FB2891654E12DEDC4736B06548AC309C99546194452B6663EC
remote key: 7F0549BDEAC3B7F350D00A9F340668BDB10B50AE23FE7E24751135674C97EFC6
[ 1][t 0][1590632653.744904518][adnl-ext-connection.cpp:129][!outconn] Client got error [PosixError : Connection refused : 111 : Error on [fd:5]]
conn failed
[ 1][t 0][1590632663.755304575][adnl-ext-connection.cpp:129][!outconn] Client got error [PosixError : Connection refused : 111 : Error on [fd:5]]
conn failed
[ 1][t 0][1590632673.765874624][adnl-ext-connection.cpp:129][!outconn] Client got error [PosixError : Connection refused : 111 : Error on [fd:5]]
conn failed
[ 1][t 0][1590632683.772887945][adnl-ext-connection.cpp:129][!outconn] Client got error [PosixError : Connection refused : 111 : Error on [fd:5]]
conn failed

full node log provided below
https://anonfiles.com/1dX2z438o4/node_log

issue with build ton_executor

Tried fresh build today and got error about ton_executor:

error[E0432]: unresolved imports ton_block::GasFlatPfx, ton_block::GasPrices, ton_block::GasPricesEx--> /home/tontest/.cargo/git/checkouts/ton-labs-executor-1c02eaf6bb19aa83/1f7e80b/src/blockchain_config.rs:17:5 | 17 | GasFlatPfx, GasLimitsPrices, GasPrices, GasPricesEx, Message, MsgAddressInt, | ^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^ noGasPricesExin the root | | | | | noGasPricesin the root | noGasFlatPfx` in the root

error[E0599]: no associated item named Std found for struct ton_block::config_params::GasLimitsPrices in the current scope
--> /home/tontest/.cargo/git/checkouts/ton-labs-executor-1c02eaf6bb19aa83/1f7e80b/src/blockchain_config.rs:260:30
|
260 | GasLimitsPrices::Std(prices) => prices.into(),
| ^^^ associated item not found in ton_block::config_params::GasLimitsPrices

error[E0599]: no associated item named Ex found for struct ton_block::config_params::GasLimitsPrices in the current scope
--> /home/tontest/.cargo/git/checkouts/ton-labs-executor-1c02eaf6bb19aa83/1f7e80b/src/blockchain_config.rs:261:30
|
261 | GasLimitsPrices::Ex(prices) => prices.into(),
| ^^ associated item not found in ton_block::config_params::GasLimitsPrices

error[E0599]: no associated item named FlatPfx found for struct ton_block::config_params::GasLimitsPrices in the current scope
--> /home/tontest/.cargo/git/checkouts/ton-labs-executor-1c02eaf6bb19aa83/1f7e80b/src/blockchain_config.rs:262:30
|
262 | GasLimitsPrices::FlatPfx(prices) => prices.into(),
| ^^^^^^^ associated item not found in ton_block::config_params::GasLimitsPrices

error: aborting due to 4 previous errors

Some errors have detailed explanations: E0432, E0599.
For more information about an error, try rustc --explain E0432.
error: could not compile ton_executor.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.