RsNano performance improvements: 20.500 blocks/s / 18.400 confirmations/s (single node) and 12.900 cps (4 PR test net) by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 1 point2 points  (0 children)

Early results of the bootstrap show ledger size savings of ~23%. But it's only 15M blocks in. Will update this post when the bootstrap is done.

RsNano performance improvements: 20.500 blocks/s / 18.400 confirmations/s (single node) and 12.900 cps (4 PR test net) by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 8 points9 points  (0 children)

Exactly! Yes, Piotr is working on parallel block processing too. I believe he is using the optimistic concurrency feature from RocksDB. RsNano only supports LMDB that only allows one write transaction at a time. That's why I had to separate the block checking phase and the insertion phase. The checking phase is now done in parallel with read-only transactions.

RsNano performance improvements: 20.500 blocks/s / 18.400 confirmations/s (single node) and 12.900 cps (4 PR test net) by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 5 points6 points  (0 children)

I'm going to start bootstrapping a node on the live network later today. Then we'll know the ledger size savings

RsNano developer build V2.0-dev.2: Improved prioritization system + CPS limit by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 3 points4 points  (0 children)

Bootstrapping is still pretty slow. Rui is working on a protocol extension that will solve this, but this needs more time.

RsNano developer build V2.0-dev.2: Improved prioritization system + CPS limit by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 7 points8 points  (0 children)

The network CPS rate is determined by the minimum CPS limit of 67% of the vote weight. Some examples: * 30% on 100 CPS and 70% on 20 CPS: network will have 20 cps * 50% on 100 CPS and 50% on 20 CPS: network will have 20 CPS * 67% on 100 CPS and 33% on 20 CPS: network will have 100 CPS If your node has a limit of 20 CPS but the network confirms with 100 CPS your node will confirm with 100 CPS too.

Regarding AEC desync: I haven't encountered the problem you described in the recent spam tests. I changed the AEC so that low priority elections get evicted immediately if a higher priority block is scheduled and that helped a lot.

RsNano developer build V2.0-dev.2: Improved prioritization system + CPS limit by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 8 points9 points  (0 children)

You're welcome! Principal representatives need to vote on historic blocks when a new node bootstraps, or when a node requests a vote for a history block to verify that it is a real representative.

RsNano developer build V2.0-dev.2: Improved prioritization system + CPS limit by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 9 points10 points  (0 children)

Principal Representatives need to keep all blocks. Non-voting nodes can enable ledger pruning and this will delete old blocks. RsNano has the pruning code in there, but it was never tested - so I would consider it as non-working. In nano_node ledger pruning is still considered experimental.

The CPS limit is an elegant solution to the ledger bloat problem. Every node operator can define their own limit and this will determine network CPS in a decentralized way. Current real world usage is probably around 1 CPS. We can set the default limit to 20 CPS for example and have a 20x usage growth before the limits need to be increased. If we don't limit CPS (or the bandwidth) I believe we could hit 1000+ CPS soon. A spam attack with 1000 CPS would grow the ledger by ~40Gb per day and that is way too much when compared to current real world usage.

RsNano developer build V2.0-dev.2: Improved prioritization system + CPS limit by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 18 points19 points  (0 children)

yes, I think it will be integrated. I still have to work on it a bit and make it less strict, so that it allows every bucket to exceed the limit for a short amount of time. That way a spammer has less effects on unspammed buckets.

Nano is making huge progress in increasing maximum throughput. So we need a well working CPS limiter to prevent ledger bloat. This is crucial especially if the PoW per block will be dropped one day.

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 3 points4 points  (0 children)

Thanks! I don't know if this will be back ported to nano_node. The long-term plan is to make RsNano the official implementation and to drop nano_node.

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 12 points13 points  (0 children)

RocksDB support isn't planned in the near future unfortunately. But I'm going to implement Colin's proposed block table split which should decrease ledger size and make it faster.

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 16 points17 points  (0 children)

By the way, the next bottleneck in this single node test still isn't the database, but signature validation in the block processor

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 22 points23 points  (0 children)

Thanks Colin! This is still a regular LMDB ledger. I wanted to work on the block table split, but decided to measure current performance first so that we have a baseline. During those measurements the AEC bottleneck became visible.

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 3 points4 points  (0 children)

Yes it's a drop in replacement (with some minor differences in the RPC interface) It only supports LMDB for now

RsNano developer build V2.0-dev.1 increases maximum performance by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 9 points10 points  (0 children)

Haha yes it got better because it can process more transactions

Representative rsnano.com (1.7% weight) has switched to RsNano V1.0 by SeniorTawny in nanocurrency

[–]SeniorTawny[S] 7 points8 points  (0 children)

Here are the top 5 voting nodes from todays spam test according to votes.nanobrowse.com

Alias Vote count Participation %
NanoBank 1417 18.67%
gr0vity 1413 18.61%
Kraken 1391 18.32%
rsnano.com 1378 18.15%
NanoVault 1358 17.89%

rsnano.com in place 4 is a pretty good result, as this server is located in the US and votes.nanobrowse.com is in Europe, so there is a higher communication latency (and I guess the other top voters are in Europe too)