Binary Versions
antnode
: v0.4.4antctld
: v0.13.3antctl
: v0.13.3ant
: v0.4.6evm-testnet
: v0.1.16nat-detection
: v0.2.22node-launchpad
: v0.5.10
Merged Pull Requests
2025-07-15 #3098 -- fix(client): make file_upload use same workflow as dir_upload [@maqi]
2025-07-16 #3099 -- feat(client): remove existence verification during upload [@maqi]
2025-07-16 #3102 -- feat: factor out encryption in fs api [@grumbach]
2025-07-17 #3103 -- fix: remove expect from routine work flow [@maqi]
2025-07-29 #3020 -- feat: Node.js package for Ant Node [@b-zee]
2025-07-30 #3112 -- feat(antctl): spawn evm-testnet as part of local testnet cmd [@RolandSherwin]
2025-07-31 #3109 -- upload flow refactor for the future streaming accomodation [@grumbach]
2025-07-31 #3115 -- fix(node): log result for query response type [@RolandSherwin]
2025-07-31 #3130 -- fix(bootstrap): remove multiple config dependencies [@RolandSherwin]
2025-08-01 #3123 -- feat: added remaining methods and classes + fixed PyTransactionConfig [@vphongph]
2025-08-03 #3091 -- chore: remove CI formatting enforcement and standardize Rust lints [@dirvine]
2025-08-04 #3095 -- feat: upgrade all workspace crates to Rust Edition 2024 [@dirvine]
2025-08-04 #3065 -- docs: clarify timestamps in file Metadata are UTC (see #2983) [@happybeing]
2025-08-04 #3136 -- fix: resolve failuring data_with_churn CI test [@maqi]
2025-08-04 #3014 -- fix(test): fix cross_platform_service_install..
[@mickvandijke]
2025-08-04 #3132 -- feat: update wallet term information [@ermineJose]
2025-08-05 #3124 -- feat: add caching possibility to mut types [@grumbach]
2025-08-05 #3127 -- feat(node): block peers with unsupported protocols [@RolandSherwin]
2025-08-05 #3037 -- feat: make chunk_batch_upload public [@b-zee]
2025-08-06 #3139 -- chore: fix fmt and unused fn params [@grumbach]
2025-08-06 #3142 -- fix(autonomi): retry failed chunks from the final / only batch [@mickvandijke] [BREAKING]
2025-08-06 #3138 -- feat(node): add git branch to the metadata endpoint [@RolandSherwin]
2025-08-07 #3143 -- fix: store single file upload access locally [@mickvandijke]
2025-08-07 #3141 -- test: self_encryption backward compatible test [@maqi]
2025-08-07 #3147 -- chore(test): more output to help identify benchmark charts issue [@maqi]
2025-08-07 #3146 -- chore(deps): bump actions/download-artifact from 4 to 5 [@dependabot[bot]]
2025-08-07 #3149 -- chore: resolve clippy error [@maqi]
2025-08-07 #3150 -- fix(bench): trying to restore the benchmark charts [@maqi]
2025-08-07 #3151 -- fix(benchmark): shall have more data_files for the benchmark run [@maqi]
2025-08-07 #3152 -- fix(benchmark): dest_file shall not be a directory [@maqi]
2025-08-07 #3153 -- fix(benchmark): correct benchmark chart download throughput calculation [@maqi]
2025-08-08 #3148 -- feat(client): utilize streaming encryption for upload [@maqi]
2025-08-08 #3154 -- feat(client): implement streaming downloads for file_download and fil… [@grumbach]
2025-08-13 #3156 -- chore(client): using streaming_decrypt_from_storage corrected self_encryption [@maqi]
2025-08-13 #3161 -- chore: fix new clippy lints [@RolandSherwin]
2025-08-13 #3157 -- fix(client): support recursive data_map properly [@maqi]
2025-08-14 #3162 -- using stream_encryption during CI [@maqi]
2025-08-19 #3164 -- fix(node): add and sync on the same thread [@RolandSherwin]
2025-08-21 #3159 -- chore(deps): bump actions/checkout from 4 to 5 [@dependabot[bot]]
2025-08-22 #3167 -- fix(bootstrap): dont overwrite self with peers from fs [@RolandSherwin]
2025-08-23 #3165 -- ci: provide tests for covering all file types [@jacderida]
2025-08-25 #3168 -- fix(cli): re-enable ant cli logging [@maqi]
2025-08-25 #3168 -- fix(cli): re-enable ant cli logging [@maqi]
2025-08-27 #3166 -- chore(client): unify Pointer and Scratchpad split resolution approacch [@maqi]
2025-08-27 #3172 -- Extend stream download coverage [@maqi]
2025-08-28 #3173 -- feat: cleanup api methods duplication [@grumbach]
2025-08-28 #3169 -- chore(deps): bump actions/checkout from 4 to 5 [@dependabot[bot]]
2025-09-01 #3175 -- Revert "feat(node): block peers that do not support mandatory protocols" [@jacderida]
2025-09-03 #3177 -- Fix the issue that after download success, chunk_cache not got cleaned up properly [@maqi]
Detailed Changes
API
Added
chunk_batch_upload
function is now public, allowing developers to upload multiple chunks in
batches with custom receipt handling.deserialize_data_map
function inDataMapChunk
for backward compatibility with old data map
schemes.pointer_update_from
async method for updating pointers from specific sources.scratchpad_update_from
async method for updating scratchpads from specific sources.EncryptionStream
struct with methods:total_chunks()
to get the total number of chunksnext_batch()
to retrieve the next batch of chunks for processingdata_map_chunk()
to get the associated data map chunkdata_address()
to retrieve the data addressnew_in_memory_with()
,new_in_memory()
, andnew_stream_from_file()
constructors for
different encryption modes
Changed
DataMapChunk
field visibility changed frompub(crate)
topub
, making the innerChunk
publicly accessible.- Enhanced error handling and retry mechanisms for chunk upload operations through improved helper
functions. - File upload workflow now uses the same approach as directory uploads for consistency.
- Improved streaming encryption support with updated self-encryption dependency integration.
- Enhanced language usage in user-facing messages for better clarity across client operations.
- Unified approach for
Pointer
andScratchpad
split resolution throughresolve_split_records
function. - Reduced
IN_MEMORY_ENCRYPTION_MAX_SIZE
threshold to 50MB for improved memory management during
encryption operations. - Streaming download capability in high-level file operations for
file_download
,
file_download_public
,dir_download_public
,dir_download
. Allows downloading larger files
without spikes in memory usage experienced previously. - The streaming capability results in a new datamap format that requires four extra chunks. If there
is an attempt to re-upload files uploaded before the streaming implementation, there will be a cost
for these extra chunks. - The new datamap format always returns a root datamap that points to three chunks. These three
extra chunks will now be paid for in uploads.
Fixed
- Vault operations now properly support single file uploads and access.
- If there were failed chunks in the final batch of an upload they were not retried. This has now
been fixed with improved error handling. - Deduplication logic for fetched scratchpads with identical highest counter values.
Language Bindings
Added
Python:
AttoTokens
class with methods:zero()
,is_zero()
,from_atto()
,from_u64()
,from_u128()
,as_atto()
,checked_add()
,checked_sub()
,as_bytes()
,from_str()
,__str__()
,__repr__()
ClientOperatingStrategy
class with getters:get_chunks()
,get_graph_entry()
,get_pointer()
,get_scratchpad()
BootstrapCacheConfig
class with configuration methods:new()
,empty()
,with_addr_expiry_duration()
,with_cache_dir()
,with_max_peers()
,with_addrs_per_peer()
,with_disable_cache_writing()
InitialPeersConfig
class with peer management methods:new()
, getters/setters forfirst
,addrs
,network_contacts_url
,local
,ignore_cache
,bootstrap_cache_dir
,get_bootstrap_addr()
,read_bootstrap_addr_from_env()
MainPubkey
class with methods:new()
,verify()
,derive_key()
,as_bytes()
,as_hex()
,from_hex()
,__str__()
,__repr__()
MainSecretKey
class with methods:new()
,public_key()
,sign()
,derive_key()
,to_bytes()
,random()
,random_derived_key()
,__repr__()
Signature
class with methods:parity()
,from_bytes()
,to_bytes()
,__str__()
,__repr__()
StoreQuote
class with methods:price()
,len()
,is_empty()
,payments()
RetryStrategy
class with methods:none()
,quick()
,balanced()
,persistent()
,default()
,attempts()
,backoff()
,__str__()
,__repr__()
Quorum
class with string representation methodsStrategy
class with getters:get_put_quorum()
,get_put_retry()
,get_verification_quorum()
,get_get_quorum()
,get_get_retry()
QuoteForAddress
class withprice()
methodRegisterAddress
class with methods:new()
,owner()
,as_underlying_graph_root()
,as_underlying_head_pointer()
,as_hex()
,from_hex()
DerivationIndex
,DerivedPubkey
,DerivedSecretKey
classes for key derivation functionality- Enhanced
ChunkAddress
class withxorname()
andfrom_hex()
methods - Enhanced
TransactionConfig
class withnew()
constructor andmax_fee_per_gas
getter
Node.js:
- Complete ant-node package with network spawning capabilities
Fixed
- Python
get_bootstrap_addr()
method updated to match original Rust API changes - Python
cache_save_scaling_factor
return type corrected from u64 to u32 to match Rust API - Python
PyTransactionConfig
class fixes for proper configuration handling
Network
Added
- New metrics:
antnode_branch
- Improved logging for query response types to aid in network debugging and monitoring. This will
help us measure the success of the next node upgrade.
Fixed
- Race condition in local network startup where bootstrap cache where the bootstrap cache was never
written with newer addresses. - Issue with the bootstrap cache where newer nodes were not updated when the cache became full.
- Expected holder calculation now properly capped to majority of
CLOSE_GROUP_SIZE
for improved
consensus reliability. - Replication accept range expanded from 5 to 7 nodes for middle range records to improve data
availability.
Antctl
Changed
- The
local run
command will now automatically provide the EVM setup for a local testnet without
having to run theevm-testnet
binary separately.
Fixed
- The
local run
command has extra wait time before launching a second node to prevent startup
conflicts and improve reliability.
Payments
Added
- The
evm-testnet
binary will be included in each release. This will make it easier to work with
local testnets and we will also use it in our CI processes.
Ant Client
Changed
- Previously, the
file download
command required access to RAM in proportion to the size of the
file being downloaded, making it prohibitive to download large files. The command has now been
changed to utilise new streaming features that keep memory usage low and consistent, so larger
files can be downloaded without issue.
Fixed
- Logging is restored for events in the
ant
binary after it was inadvertently disabled. - In some cases the chunk cache was not correctly cleared after a download.