pocketnetteam / pocketnet.core

Decentralized social network based on the blockchain
https://pocketnet.app
Apache License 2.0
114 stars 28 forks source link

v0.20.19 Release #225

Closed tawmaz closed 2 years ago

tawmaz commented 2 years ago

Tracking issue for 0.20.19 release. Fixes contained in this release:

andyoknen commented 2 years ago

Added commit d456b1cb396f2b91b6b77e2c9310c531168e760b to increase the version

It is necessary to make sure before the release that this block will not roll back https://github.com/pocketnetteam/pocketnet.core/blob/d456b1cb396f2b91b6b77e2c9310c531168e760b/src/chainparams.cpp#L123

andyoknen commented 2 years ago

Updated at the moment d456b1cb396f2b91b6b77e2c9310c531168e760b

test.pocketnet.app
test.1.pocketnet.app

Awaiting update 0.21

test.2.pocketnet.app
tawmaz commented 2 years ago

All unit tests pass however bench tests will not build due to this issue: https://github.com/pocketnetteam/pocketnet.core/issues/226

tawmaz commented 2 years ago

Bench results:

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|       11,887,383.00 |               84.12 |   23.6% |      0.12 | :wavy_dash: `AssembleBlock` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
|            2,697.43 |          370,723.39 |    0.4% |      0.01 | `Base58CheckEncode`
|            1,322.47 |          756,158.34 |    4.3% |      0.01 | `Base58Decode`
|            1,568.08 |          637,720.92 |    1.7% |      0.01 | `Base58Encode`
|              487.50 |        2,051,280.94 |    0.7% |      0.01 | `Bech32Decode`
|              633.69 |        1,578,063.46 |    2.1% |      0.01 | `Bech32Encode`
|        1,130,742.00 |              884.38 |   13.3% |      0.01 | :wavy_dash: `BenchLockedPool` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)

|            ns/block |             block/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|          727,435.00 |            1,374.69 |   19.6% |      0.01 | :wavy_dash: `CCheckQueueSpeedPrevectorJob` (Unstable with ~1.2 iters. Increase `minEpochIterations` to e.g. 12)

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|            6,161.26 |          162,304.43 |    4.2% |      0.01 | `CCoinsCaching`

|             ns/elem |              elem/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|              224.09 |        4,462,409.11 |    6.4% |      0.03 | :wavy_dash: `ConstructGCSFilter` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

|            ns/block |             block/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|          244,923.00 |            4,082.92 |    7.2% |      0.01 | :wavy_dash: `DeserializeAndCheckBlockTest` (Unstable with ~3.9 iters. Increase `minEpochIterations` to e.g. 39)
|           71,659.40 |           13,954.90 |    5.0% |      0.01 | `DeserializeBlockTest`

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|                2.18 |      459,519,682.16 |    3.0% |      0.01 | `FastRandom_1bit`
|               11.40 |       87,684,239.60 |    0.9% |      0.01 | `FastRandom_32bit`

|             ns/elem |              elem/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|           31,530.97 |           31,714.85 |    1.0% |      0.01 | `MatchGCSFilter`

|            ns/block |             block/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|           25,207.85 |           39,670.18 |   17.1% |      0.01 | :wavy_dash: `MempoolEviction` (Unstable with ~46.3 iters. Increase `minEpochIterations` to e.g. 463)

|             ns/leaf |              leaf/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|              203.98 |        4,902,468.06 |    6.9% |      0.02 | :wavy_dash: `MerkleRoot` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)

|             ns/byte |              byte/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|                3.24 |      309,046,024.37 |    4.1% |      0.04 | `RIPEMD160`

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|            1,048.07 |          954,136.88 |   42.6% |      0.01 | :wavy_dash: `RollingBloom` (Unstable with ~480.7 iters. Increase `minEpochIterations` to e.g. 4807)

|             ns/byte |              byte/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|                2.68 |      373,712,467.12 |   10.1% |      0.03 | :wavy_dash: `SHA1_test` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
|                2.50 |      400,339,643.62 |    1.5% |      0.01 | `SHA256D64_1024`
|                8.99 |      111,217,863.08 |    3.4% |      0.01 | `SHA256_32b`
|                4.06 |      246,287,887.39 |    5.0% |      0.05 | `SHA256_test`
|                3.88 |      257,591,743.88 |    5.1% |      0.04 | :wavy_dash: `SHA512_test` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)

|               ns/op |                op/s |    err% |     total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
|               34.15 |       29,282,818.48 |    0.2% |      0.01 | `SipHash_32b`
|          231,141.25 |            4,326.36 |   10.3% |      0.01 | :wavy_dash: `VerifyScriptBench` (Unstable with ~4.1 iters. Increase `minEpochIterations` to e.g. 41)
tawmaz commented 2 years ago

My testnet node has stopped syncing at block 289521 with v0.20.19. Are other testnet nodes healthy?

tawmaz commented 2 years ago

Running into the following error when trying to sync on testnet at block 454224:

2022-03-02T18:40:59Z Warning: SocialConsensus check type:200 failed with result:21 for tx:8bc939ffdba75311155bd5452f5da2ce7511b9f06662402b9bc2a63f3a21d9d4 in blk:9db8608d4f2f92727ceea128cba65bfeb6835731535fa0b643e63fedf854e194 at height:454224
andyoknen commented 2 years ago

Running into the following error when trying to sync on testnet at block 454224:

2022-03-02T18:40:59Z Warning: SocialConsensus check type:200 failed with result:21 for tx:8bc939ffdba75311155bd5452f5da2ce7511b9f06662402b9bc2a63f3a21d9d4 in blk:9db8608d4f2f92727ceea128cba65bfeb6835731535fa0b643e63fedf854e194 at height:454224

I am facing this problem at completely different heights. I found out that some transactions come with an incomplete payload. I assume that there is a node in the test network that incorrectly serializes transactions for transmission to the network. I am testing this hypothesis and thinking about a mechanism for rejecting such data for further attempts to download them from another node.

andyoknen commented 2 years ago

@tawmaz @lostystyg I think I found the reason.

there is a fix in this branch: https://github.com/pocketnetteam/pocketnet.core/tree/fix/list_transactions

I think this function does not always write or lose data: https://github.com/pocketnetteam/pocketnet.core/blob/44ac6d2b343348c43935e0ef59bb458bb6e93ba2/src/pocketdb/repositories/TransactionRepository.cpp#L120-L125

I also think it makes sense to mark the header of the block that failed the check - this will trigger a mechanism for reloading the block. https://github.com/pocketnetteam/pocketnet.core/blob/f55ad47de416d32232ac7242c988a6381bf740f6/src/validation.cpp#L4634-L4641

tawmaz commented 2 years ago

Added new tag v0.20.19-beta2 and restarting testing from that tag.

tawmaz commented 2 years ago

All unit tests pass on the tag v0.20.19-beta2

andyoknen commented 2 years ago

Added RPC API fixes in v0.20.19-beta3

tawmaz commented 2 years ago

My testnet node was able to fully sync without issue on v0.20.19-beta2. Switching over to tag v0.20.19-beta3.

tawmaz commented 2 years ago

Running full sync test on mainnet from node at IP 35.87.194.183. It is just past block 1000000 and should be completed in a few more days.

tawmaz commented 2 years ago

Syncing is blocked at block 1044030, hash 66ee85eb70d58c50611521b803d938891a6d52ba25635cdf05464a2263754f59. Here is the error message from the log:

2022-03-06T16:09:41Z WARNING: SocialConsensus validating failed with result 6 for block 66ee85eb70d58c50611521b803d938891a6d52ba25635cdf05464a2263754f59 2022-03-06T16:09:41Z ERROR: ConnectTip: ConnectBlock 66ee85eb70d58c50611521b803d938891a6d52ba25635cdf05464a2263754f59 failed, failed-validate-social-consensus (code 96)

https://github.com/pocketnetteam/pocketnet.core/issues/236

andyoknen commented 2 years ago

Added some fixes in v0.20.19-beta4

tawmaz commented 2 years ago

All unit tests pass with v0.20.19-beta4 Upgrade was successful on testnet and mainnet. Restarting block sync test on both networks.

tawmaz commented 2 years ago

Sync test against mainnet is at block 1513778 and should finish today. I will try to get upgrade and client performance tests kicked off today or early tomorrow.

tawmaz commented 2 years ago

Sync completed on mainnet, and upgrade succeeded on one of my staking nodes. I'll run perf tests tomorrow.

tawmaz commented 2 years ago

Staking node looks good and was able to successfully stake 10+ times. I ran the load test which shows 150kops per 5 minute period. This is with 2 i5 8GB systems connected in a client server setup over a 1GbE switch. image

gab-fer commented 2 years ago

The results of load testing for the test network.

test.1.pocketnet.app

2 VCPU
4 GB RAM
SSD

threads=10
workqueue=100

duration 1 hour
Test # Threads /
TX per sec
Count Time AVG (ms) Time MAX (ms) Time MIN (ms) RPC Pool
exceeded
1 4 / 2 6654 132 1734 93 0
2 8 / 1 20710 362 28790 94 15
3 16 / 0.5 49934 626 82275 92 3257
4 32 / 0.25 69941 1256 132139 91 34260

The method of generating a transaction in the test network - pocketdb/web/PocketTransactionRpc.h::GenerateTransaction The following types of transactions were used in equal proportions:

Comment
Post
Rating
Subscription