Cortina.18 - Optimize Peer Discovery
StephenButtolph
released this
18 Jan 20:01
·
670 commits
to master
since this release
This version is backwards compatible to v1.10.0. It is optional, but encouraged.
The plugin version is updated to 31
all plugins must update to be compatible.
APIs
- Added
info.acps
API - Added
supportedACPs
andobjectedACPs
for each peer returned byinfo.peers
- Added
txs
field toBanffProposalBlock
's json format - Added metrics:
avalanche_network_validator_ips
avalanche_network_gossipable_ips
avalanche_network_ip_bloom_count
avalanche_network_ip_bloom_entries
avalanche_network_ip_bloom_hashes
avalanche_network_ip_bloom_max_count
avalanche_network_ip_bloom_reset_count
- Added metrics related to
get_peer_list
message handling - Added p2p SDK metrics to the P-chain and X-chain
- Renamed metrics related to message handling:
version
->handshake
appRequestFailed
->appError
crossChainAppRequestFailed
->crossChainAppError
- Removed
gzip
compression time metrics - Converted p2p SDK metrics to use vectors rather than independent metrics
- Converted client name reported over the p2p network from
avalanche
toavalanchego
Configs
- Added:
--acp-support
--acp-object
snow-commit-threshold
network-peer-list-pull-gossip-frequency
network-peer-list-bloom-reset-frequency
network
to the X-chain and P-chain configs including:max-validator-set-staleness
target-gossip-size
pull-gossip-poll-size
pull-gossip-frequency
pull-gossip-throttling-period
pull-gossip-throttling-limit
expected-bloom-filter-elements
expected-bloom-filter-false-positive-probability
max-bloom-filter-false-positive-probability
legacy-push-gossip-cache-size
- Deprecated:
snow-virtuous-commit-threshold
snow-rogue-commit-threshold
network-peer-list-validator-gossip-size
network-peer-list-non-validator-gossip-size
network-peer-list-peers-gossip-size
network-peer-list-gossip-frequency
- Removed:
gzip
as an option fornetwork-compression-type
Fixes
- Fixed
platformvm.SetPreference
to correctly reset the block building timer - Fixed early bootstrapping termination
- Fixed duplicated transaction initialization in the X-chain and P-chain
- Fixed IP gossip when using dynamically allocated staking ports
- Updated
golang.org/x/exp
dependency to fix downstream compilation errors - Updated
golang.org/x/crypto
dependency to addressCVE-2023-48795
- Updated minimum golang version to address
CVE-2023-39326
- Restricted
GOPROXY
during compilation to avoiddirect
version control fallbacks - Fixed
merkledb
deletion of the empty key - Fixed
merkledb
race condition when interacting with invalidated or closed trie views - Fixed
json.Marshal
forwallet
transactions - Fixed duplicate outbound dialer for manually tracked nodes in the p2p network
What's Changed
- testing: Update to latest version of ginkgo by @marun in #2390
vms/platformvm
: Cleanup block builder tests by @dhrubabasu in #2406- Drop Pending Stakers 0 - De-duplicate staking tx verification by @abi87 in #2335
vms/platformvm
: Initialize txs inTransactions
field forBanffProposalBlock
by @dhrubabasu in #2419vms/platformvm
: MoveVerifyUniqueInputs
fromverifier
tobackend
by @dhrubabasu in #2410- Fix duplicated bootstrapper engine termination by @StephenButtolph in #2334
- allow user of
build_fuzz.sh
to specify a directory to fuzz in by @danlaine in #2414 - Update slices dependency to use Compare by @StephenButtolph in #2424
vms/platformvm
: Cleanup some block tests by @dhrubabasu in #2422- ProposerVM Extend windows 0 - Cleanup by @abi87 in #2404
vms/platformvm
: AdddecisionTxs
parameter toNewBanffProposalBlock
by @dhrubabasu in #2411- Update minimum golang version to v1.20.12 by @StephenButtolph in #2427
- Fix platformvm.SetPreference by @StephenButtolph in #2429
- Restrict GOPROXY by @StephenButtolph in #2434
- Drop Pending Stakers 1 - introduced ScheduledStaker txs by @abi87 in #2323
- Run merkledb fuzz tests every 6 hours by @danlaine in #2415
- Remove unused error by @joshua-kim in #2426
- Make
messageQueue.msgAndCtxs
a circular buffer by @danlaine in #2433 - ProposerVM Extend windows 1 - UTs Cleanup by @abi87 in #2412
- Change seed from int64 to uint64 by @StephenButtolph in #2438
- Remove usage of timer.Timer in node by @StephenButtolph in #2441
- Remove staged timer again by @StephenButtolph in #2440
merkledb
/sync
-- Disambiguate no end root from no start root by @danlaine in #2437- Drop Pending Stakers 2 - Replace txs.ScheduledStaker with txs.Staker by @abi87 in #2305
vms/platformvm
: Remove double block building logic by @dhrubabasu in #2380- Remove usage of timer.Timer in benchlist by @StephenButtolph in #2446
vms/avm
: SimplifyPeek
function in mempool by @dhrubabasu in #2449vms/platformvm
: RemovestandardBlockState
struct by @dhrubabasu in #2450- Refactor sampler seeding by @StephenButtolph in #2456
- Update tmpnet fixture to include Proof-of-Possession for initial stakers by @marun in #2391
vms/platformvm
: RemoveEnableAdding
andDisableAdding
fromMempool
interface by @dhrubabasu in #2463vms/avm
: Addexists
bool to mempoolPeek
by @dhrubabasu in #2465vms/platformvm
: RemovePeekTxs
fromMempool
interface by @dhrubabasu in #2378vms/platformvm
: AddprocessStandardTxs
helper by @dhrubabasu in #2461vms/platformvm
: ProcessatomicRequests
andonAcceptFunc
in option blocks by @dhrubabasu in #2459e2e
: Rename 'funded key' to 'pre-funded key' for consistency by @marun in #2455vms/platformvm
: SurfaceVerifyUniqueInputs
in theManager
by @dhrubabasu in #2467vms/platformvm
: AddTestBuildBlockShouldReward
test by @dhrubabasu in #2466- Switch client version to a proto type from a string by @joshua-kim in #2188
- Remove stale TODO by @danlaine in #2468
vms/platformvm
: AddTestBuildBlockDoesNotBuildWithEmptyMempool
test by @dhrubabasu in #2469vms/platformvm
: AddTestBuildBlockShouldAdvanceTime
test by @dhrubabasu in #2471vms/platformvm
: Permit usage of theTransactions
field inBanffProposalBlock
by @dhrubabasu in #2451vms/platformvm
: AddTestBuildBlockForceAdvanceTime
test by @dhrubabasu in #2472- P2P AppError handling by @joshua-kim in #2248
vms/platformvm
: Verify txs before building a block by @dhrubabasu in #2359- Refactor p2p unit tests by @joshua-kim in #2475
- Add ACP signaling by @StephenButtolph in #2476
- Refactor SDK by @joshua-kim in #2452
- Cleanup CI by @dhrubabasu in #2480
- Ensure upgrade test uses the correct binary on restart by @marun in #2478
- Prefetch Improvement by @dboehm-avalabs in #2435
- ci: run each fuzz test for 10 seconds by @dhrubabasu in #2483
- Remove nullable options by @nytzuga in #2481
merkledb
-- dynamic root by @danlaine in #2177- fix onEvictCache by @danlaine in #2484
- Remove cached node bytes from merkle nodes by @dboehm-avalabs in #2393
- Fix race in view iteration by @dboehm-avalabs in #2486
- MerkleDB -- update readme by @danlaine in #2423
- Drop Pending Stakers 3 - persist stakers' StartTime by @abi87 in #2306
- SDK Push Gossiper implementation by @joshua-kim in #2428
tmpnet
: Move tmpnet/local to tmpnet package by @marun in #2457merkledb
-- make tests use time as randomness seed by @danlaine in #2470tmpnet
: Break config.go up into coherent parts by @marun in #2462- Drop Pending Stakers 4 - minimal UT infra cleanup by @abi87 in #2332
- ProposerVM Extend windows 2- extend windowing by @abi87 in #2401
- Support json marshalling txs returned from the wallet by @StephenButtolph in #2494
- Avoid escaping to improve readability by @StephenButtolph in #2496
- Allow OutputOwners to be json marshalled without InitCtx by @StephenButtolph in #2495
- Drop Pending Stakers 5 - validated PostDurango StakerTxs by @abi87 in #2314
- Bump golang.org/x/crypto from 0.14.0 to 0.17.0 by @dependabot in #2502
- Remove unused
BuildGenesisTest
function by @dhrubabasu in #2503 - Remove unused
AcceptorTracker
struct by @dhrubabasu in #2508 - Dedupe secp256k1 key usage in tests by @dhrubabasu in #2511
- Merkledb readme updates by @danlaine in #2510
- Gossip Test structs by @joshua-kim in #2514
tmpnet
: Separate node into orchestration, config and process by @marun in #2460- Move
snow.DefaultConsensusContextTest
tosnowtest.ConsensusContext
by @dhrubabasu in #2507 - Add gossip Marshaller interface by @joshua-kim in #2509
- Include chain creation error in health check by @marun in #2519
- Make X-chain mempool safe for concurrent use by @StephenButtolph in #2520
- Initialize transactions once by @StephenButtolph in #2521
vms/avm
: Remove usage ofrequire.Contains
from service tests by @dhrubabasu in #2517- Move context lock into issueTx by @StephenButtolph in #2524
- Rework X-chain locking in tests by @StephenButtolph in #2526
vms/avm
: Simplifymempool.Remove
signature by @dhrubabasu in #2527- Remove unused mocks by @dhrubabasu in #2528
- Move
avm.newContext
tosnowtest.Context
by @dhrubabasu in #2513 - Do not fail-fast Tests / Unit by @StephenButtolph in #2530
- Make P-Chain Mempool thread-safe by @joshua-kim in #2523
vms/platformvm
: Usesnowtest.Context
helper by @dhrubabasu in #2515- Export mempool errors by @StephenButtolph in #2531
- Move locking into issueTx by @StephenButtolph in #2532
- Fix merge in wallet service by @StephenButtolph in #2534
- Introduce TxVerifier interface to network by @StephenButtolph in #2533
- Export P-Chain Mempool Errors by @joshua-kim in #2535
- Rename
Version
message toHandshake
by @danlaine in #2479 - Rename myVersionTime to ipSigningTime by @danlaine in #2537
- Remove resolved TODO by @dhrubabasu in #2540
- Only initialize Txs once by @joshua-kim in #2538
- JSON marshal the
Transactions
field inBanffProposalBlocks
by @dhrubabasu in #2541 - Enable
predeclared
linter by @dhrubabasu in #2539 - Move context lock into
network.issueTx
by @joshua-kim in #2525 - Remove comment on treating failed sends as FATAL by @joshua-kim in #2544
- Add TxVerifier interface to network by @joshua-kim in #2542
- X-chain SDK gossip by @joshua-kim in #2490
- Remove network context by @joshua-kim in #2543
- Remove
snow.DefaultContextTest
by @dhrubabasu in #2518 - Fix windowing when no validator is available by @abi87 in #2529
- Unexport fields from gossip.BloomFilter by @StephenButtolph in #2547
- P-Chain SDK Gossip by @joshua-kim in #2487
- Documentation Fixes: Grammatical Corrections and Typo Fixes Across Multiple Files by @joaolago1113 in #2550
- Notify block builder of txs after reject by @StephenButtolph in #2549
- Set dependabot target branch to
dev
by @dhrubabasu in #2553 - Remove
MockLogger
by @dhrubabasu in #2554 - Clean up merkleDB interface and duplicate code by @dboehm-avalabs in #2445
- Do not mark txs as dropped when mempool is full by @dhrubabasu in #2557
- Update bug bounty program to immunefi by @StephenButtolph in #2558
- Fix p2p sdk metric labels by @StephenButtolph in #2561
- Suppress gossip warnings due to no sampled peers by @StephenButtolph in #2562
- Remove dead code and unnecessary lock from reflect codec by @StephenButtolph in #2560
- Remove unused index interface by @StephenButtolph in #2564
- Implement SetMap and use it in XP-chain mempools by @StephenButtolph in #2555
vms/platformvm
: AddTestIterate
by @dhrubabasu in #2565- Cleanup codec usage by @StephenButtolph in #2563
- Remove
len
tag parsing from the reflect codec by @StephenButtolph in #2559 - Use more specific type by @dhrubabasu in #2567
- Standardize
onShutdownCtx
by @dhrubabasu in #2568 - Verify avm mempool txs against the last accepted state by @StephenButtolph in #2569
- Update
CODEOWNERS
by @dhrubabasu in #2570 - Remove license from mocks by @dhrubabasu in #2574
- Add missing import by @dhrubabasu in #2573
vms/platformvm
: Prune mempool periodically by @dhrubabasu in #2566- Update license header to 2024 by @dhrubabasu in #2572
- [MerkleDB] Make intermediate node cache two layered by @dboehm-avalabs in #2576
- Fix merkledb rebuild iterator by @dboehm-avalabs in #2581
- Fix intermediate node caching by @dboehm-avalabs in #2585
- Remove codec length check after Durango by @StephenButtolph in #2586
tmpnet
: Use AvalancheLocalChainConfig for cchain genesis by @marun in #2583testing
: Ensure CheckBootstrapIsPossible is safe for teardown by @marun in #2582tmpnet
: Separate network into orchestration and configuration by @marun in #2464- Update uintsize implementation by @danlaine in #2590
- Optimize bloom filter by @StephenButtolph in #2588
- Remove TLS key gen from networking tests by @StephenButtolph in #2596
- [utils/bloom] Optionally Update Bloom Filter Size on Reset by @patrick-ogrady in #2591
- [ci] Increase Fuzz Time in Periodic Runs by @patrick-ogrady in #2599
tmpnet
: Save metrics snapshot to disk before node shutdown by @marun in #2601- chore: Fix typo s/useage/usage by @hugo-syn in #2602
- Deprecate
SnowRogueCommitThresholdKey
andSnowVirtuousCommitThresholdKey
by @dhrubabasu in #2600 - Fix networking invalid field log by @StephenButtolph in #2604
- chore: Fix typo s/seperate/separate/ by @hugo-syn in #2605
- Support dynamic port peerlist gossip by @StephenButtolph in #2603
- Replace
PeerListAck
withGetPeerList
by @StephenButtolph in #2580 - Log critical consensus values during health checks by @StephenButtolph in #2609
- Update contributions branch to master by @StephenButtolph in #2610
- Add ip bloom metrics by @StephenButtolph in #2614
x/sync
: Auto-generateMockNetworkClient
by @dhrubabasu in #2617- Remove CreateStaticHandlers from VM interface by @joshua-kim in #2589
tmpnet
: Add support for subnets by @marun in #2492- Update
go.uber.org/mock/gomock
tov0.4.0
by @dhrubabasu in #2618 - Add
mockgen
source mode for generics + bls imports by @dhrubabasu in #2615 - Verify all MockGen generated files are re-generated in CI by @dhrubabasu in #2616
- Move division by 0 check out of the bloom loops by @StephenButtolph in #2622
- P-chain Add UTs around stakers persistence in platformvm state by @abi87 in #2505
- Revert "Set dependabot target branch to
dev
(#2553)" by @dhrubabasu in #2623 - Remove remaining 2023 remnants by @dhrubabasu in #2624
- Deprecate push-based peerlist gossip flags by @StephenButtolph in #2625
- Remove support for compressing gzip messages by @dhrubabasu in #2627
- Always attempt to install mockgen
v0.4.0
before execution by @dhrubabasu in #2628 - Modify TLS parsing rules for Durango by @StephenButtolph in #2458
New Contributors
- @joaolago1113 made their first contribution in #2550
- @hugo-syn made their first contribution in #2602
Full Changelog: v1.10.17...v1.10.18