Binary Versions
antnode
: v0.4.1antctld
: v0.13.1antctl
: v0.13.1ant
: v0.4.2nat-detection
: v0.2.21node-launchpad
: v0.5.10
Merged Pull Requests
2025-04-10 #2888 -- refactor: autonomi use light networking driver [@mickvandijke] [BREAKING]
2025-04-16 #2891 -- client light networking [@mickvandijke]
2025-04-16 #2898 -- fix: pointer split handling [@grumbach]
2025-04-18 #2903 -- fix: disable periodic bootstrap & fix quoting existing records [@mickvandijke]
2025-04-18 #2900 -- fix: client light networking fixes [@grumbach]
2025-04-22 #2904 -- feat: impl retries for get put and quotes [@grumbach]
2025-04-22 #2910 -- feat: remove disjoint_query_path [@grumbach]
2025-04-22 #2911 -- feat: retry closest peers [@grumbach]
2025-04-23 #2920 -- passing the data_with_churn CI runs [@maqi]
2025-04-24 #2923 -- chore: reduce extra logging in client networking [@grumbach]
2025-04-24 #2924 -- fix: make errors more useful [@grumbach]
2025-04-24 #2927 -- feat: add easy 1 liner setup for alphanet [@grumbach]
2025-04-25 #2933 -- Easy alpha for cli [@grumbach]
2025-05-09 #2959 -- Merge 2025.5.1.2
release to main
[@jacderida]
2025-05-12 #2943 -- fix: don't repay for failed put [@grumbach]
2025-05-13 #2955 -- Client light networking rebased [@mickvandijke] [BREAKING]
2025-05-13 #2963 -- Client light networking rebased again [@grumbach]
2025-05-13 #2965 -- fix(test): allow margin for test_spawn_network
[@mickvandijke]
2025-05-21 #2976 -- feat: remove quote expiration [@grumbach]
2025-05-22 #2975 -- feat: remove quote expiration [@grumbach]
2025-05-26 #2980 -- fix(client): add target peers address to libp2p before put_record_to
[@mickvandijke]
2025-05-26 #2978 -- feat(cli): batch entire quote-pay-upload flow to overcome quote expiracy [@maqi]
2025-05-27 #2984 -- feat(client): upload record shall always using put_record_to [@maqi]
2025-05-27 #2986 -- fix(doc): correct outdated comment [@maqi]
2025-05-27 #2985 -- fix(client): avoid confusing output of private upload [@maqi]
2025-05-28 #2964 -- feat: pointer counter using u64 [@grumbach]
2025-05-28 #2987 -- fix: ignored req resp failure error [@grumbach]
2025-05-28 #2988 -- feat: decrease get closes peers / quotes retries in client [@mickvandijke]
2025-05-28 #2989 -- client light networking rebased [@mickvandijke]
2025-06-02 #2994 -- On quorum error try get records [@grumbach]
2025-06-02 #2997 -- feat: list file addr when uploading pub archive & list archive files in files list
cmd [@mickvandijke]
2025-06-03 #2993 -- feat: support network id from 0-255 [@jacderida]
2025-06-03 #2972 -- Status spinner error antctl [@ermineJose]
2025-06-04 #2947 -- fix: obtain addrs from connection info rather than identify [@RolandSherwin]
2025-06-04 #3002 -- fix(ci): bring back benchmark charts [@maqi]
2025-06-05 #2991 -- chore: add a network spawner example [@mickvandijke]
2025-06-05 #3005 -- chore: disable nightly test runs [@jacderida]
2025-06-05 #2739 -- chore: add spawn single node example [@mickvandijke]
2025-06-05 #2990 -- chore(network): remove un-used client only ant_networking methods [@maqi]
2025-06-05 #2977 -- feat: add timeout option for NAT-detection [@ermineJose]
2025-06-05 #2981 -- feat(network): add to dial queue if reachability check agent [@RolandSherwin]
2025-06-06 #3006 -- Merge main into CLN [@RolandSherwin]
2025-06-06 #3003 -- feat: early return GetRecord
request in CLN if quorum is met [@mickvandijke]
2025-06-06 #3008 -- fix(client): resolve deadlock issue [@maqi]
2025-06-06 #2896 -- refactor: client light networking [@mickvandijke] [BREAKING]
2025-06-10 #3016 -- chore: add debug trait to client and wallet [@grumbach]
2025-06-10 #3017 -- feat: no archive flag for cli and default to that for single file upload [@grumbach]
2025-06-10 #3023 -- fix(ci): add delay before data verification test [@mickvandijke]
2025-06-10 #3021 -- chore(network): move ConnectionClosed logging to debug level [@RolandSherwin]
2025-06-10 #2945 -- feat!: more max fee per gas options [@mickvandijke] [BREAKING]
2025-06-10 #3022 -- Revert "Merge pull request #2947 from RolandSherwin/addrs_from_conns" [@RolandSherwin]
2025-06-11 #3018 -- Scratchpad cli integration [@grumbach]
2025-06-11 #3028 -- fix(ant): use TransactionConfig to pass in the max fees per gas [@RolandSherwin]
2025-06-18 #3044 -- fix(node): use random irrelevent_record_cleanup_interval to avoid synced work [@maqi]
2025-06-19 #3049 -- feat: avoid printing progress when verbose is minimal [@ermineJose]
2025-06-20 #3050 -- fix: update custom_bin_path with antnode_path from args [@ermineJose]
2025-06-21 #3019 -- feat(node): move put validation error out of the main error enum [@RolandSherwin]
2025-06-21 #3048 -- Verify existence and retry failed uploads on default [@maqi]
2025-06-22 #3051 -- fix(client): enable talking to relayed nodes from the clients [@jacderida]
2025-06-25 #3055 -- chore(node): logging peer add/removal with more details [@RolandSherwin]
2025-06-25 #3024 -- Revert "Merge pull request #3022 from RolandSherwin/revert_addrs_from… [@RolandSherwin]
2025-06-26 #3057 -- fix(network): reset timer for old nodes until threshold [@RolandSherwin]
Detailed Changes
API
Key changes are the new networking module, Quorum
type replacement, pointer counter expansion to u64
.
Added
- Networking:
pub mod networking
: new network module.networking::Quorum
: enum for consensus operations.- Network driver, retry strategies, and utilities.
- Enhanced transaction configuration with the new
MaxFeePerGas
type.
Changed
- Type updates:
ResponseQuorum
→networking::Quorum
(breaking change)- Pointer counter type:
u32
→u64
(with backward compatibility)
- Error handling improvements:
- Enhanced
PointerError
error variants, e.g.,PutError
,GetError
. - More specific error handling in pointer operations.
- Enhanced
- Internal infrastructure:
- Enhanced networking layer with better retry mechanisms.
- Improved put/get record operations with retries.
- Better split record handling for pointers.
Fixed
Client::pointer_check_existance()
→Client::pointer_check_existence()
(typo fix)
Network
- A peer's address is obtained from its connection info rather than self-advertised addresses from
identify requests. The earlier method was incorrect and error prone. - Peers are now added to the routing table only if they can be dialled back after 180 seconds, giving
enough time for the UDP mapping to expire. Dialling back immediately would always succeed even if the
peer was not externally reachable. When the routing table consists more of these reachable peers,
it improves network health and should subsequently lead to better performance and reliability. - Introduce a
DoNotDisturb
behaviour to fix an edge case with the 180-second delayed dial-back
queue, where a peer would get re-added if it sent constant requests. This would happen if the peer
thinks we are close and spams periodic messages.
Client
Added
- The
ant
binary now has ascratchpad
subcommand for working with scratchpads. These are a
mutable 4MB blob of memory on the network. An initial payment is made to create one, but all
further mutations are free. Personal user vaults have been implemented with scratchpads and some
people have been using them for chat applications. - The
ant
binary now has apointer
subcommand for managing pointers. Pointers enable building
mutable data structures by providing authenticated, updatable references that only the owner can
modify. Here are the available subcommands:
+cost
: calculate payment required before creating pointers
+create
: point to different data types (chunks, graphs, scratchpads, other pointers) that
can be updated over time
+edit
: update an existing pointer reference
+generate-key
: create cryptographic keys for owning and updating pointers
+get
: retrieve the target of a pointer from the network
+list
: view all pointers controlled by the current user
+share
: give others read/write access by sharing pointer secret keys
Changed
The client has fundamentally changed with a large refactor we call 'light client networking'. The
previous networking implementation was complex and also shared between both node and client, leading
to all kinds of exceptions and special cases in the code. After the refactor, the client now has its
own, simpler networking implementation, and now the client and node network can evolve
independently.
This refactor made it easier to make other changes that featured in the release:
- Retry strategies were adapted to limit retrying without reason.
- Connect to peers in advance when performing libp2p put queries.
- No periodic network discovery.
- Improve connection success rate by using libp2p's
add_address
rather than dialling. - Use a batched upload flow to reduce payment rejection resulting from quote expiration.
All these changes led to the following observations in our testing:
- Improved performance and throughput for uploads.
- Improved reliability and elimination of errors in uploads, for errors that were not related to payments. We do
still see some errors related to gas prices on the Ethereum network, but these would hopefully be
mitigated with retrying. - Improved reliability and reduction of errors in downloads.
The download performance had parity with the current stable release.
There should be further improvements coming for the next release. In particular we are waiting on a
new libp2p
release which will have a feature contributed by us that should further improve
performance. We've been told by the libp2p
team that this release is now forthcoming.
Launchpad
Added
- Provide a 3-minute timeout for NAT detection. If not successful, relaying will be used.