Binary Versions
antnode: v0.4.10antctld: v0.14.0antctl: v0.14.0ant: v0.4.13evm-testnet: v0.1.17nat-detection: v0.2.22node-launchpad: v0.6.0
Binary Hashes
x86_64-pc-windows-msvc
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 4fe040a49f322af1a2da3dce8b7a65fc2b82bb4bd489d490350a120e990fb46e
|
| node-launchpad | 44a5020637612889f31cc37ecb0365d372f95e3dc638e05d798ca294d19d16ba
|
| ant | 3200596788ee1d5001a980c121715ca8fa6e6bc17fdb26753f9a739f4a1f051a
|
| antnode | f9e1c48b5b56d487f72eb9f9018cc66c4f7b8c4d39a907394a8daf25e6385418
|
| antctl | 9040e12c1d2a4b15f677cd9057648b7ff476980b2bb4c664a83724ea7dee5ad7
|
| antctld | ae3f867505dff141775334fa8b6c5c8679f7900476c6c6bcb572b766da6d8dfd
|
| antnode_rpc_client | b90fad8e8ae548a47e6d9491421644b399bfa23ce387ef9f9e7cbc6f63b07225
|
| evm-testnet | bcd450cba480e3423531b1499de2aa6c029e7e22cad880285f111b60d0ab1491
|
x86_64-apple-darwin
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 1e60101b3b16fb1584100f62b998392619613e0f12bb014b85f5105a68a5d4b3
|
| node-launchpad | 6e27bf1c00a2f32ac05b8fd41d26494ba897aa882dd0e84e03d382c8fc0621b7
|
| ant | 6287f2016086e0695aea667a654a30e0383b25db59c45981b517e57e7b297a49
|
| antnode | 7c8a27707331cab3cf2299e82d71bd71d4ee231eedb321d25a9db0bc4e791e75
|
| antctl | d28a729ff4f02b5d77d90442b1d9798aa9e0decb2d009ef0eceb51fdea7a0f77
|
| antctld | f500f8e7a028194b21e9c4546e751ed739c4aa6ff5bb4a95f6f0663d12fbf5db
|
| antnode_rpc_client | ee43b854e32499aa2d54e28566019b0466162cfaee89e9052fe7cd2731132008
|
| evm-testnet | 105255822e4e0d938aefca286b367de90c6e02a85161f73016cdf941f8714c74
|
aarch64-apple-darwin
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 2b26fb6e5bb734270173b7d4172ea9b0528da9af23a13f7ef8593805bab370c8
|
| node-launchpad | 918c0ff3bdb1caa531f96d87610d7cce8234b20bd85e2598cf915f269051b614
|
| ant | 73e4d7796fe5089efa5d222c54c80c49d5fe775324de4f6db033afbdde8408a0
|
| antnode | 1a30bdbdb8c5a48b67877ec562c47063e347ef6e48eebbbe3b4fed647bb0f838
|
| antctl | 3929811ea881db90f70ce329980457fea611d5fdc81925d7f4cecabc40283028
|
| antctld | 3869c5f85b8e1632838edd736ceacbbead45dbba88e577611fc6e9c292dec895
|
| antnode_rpc_client | 6853b22e12056e3bb69b35686d7fb28a0c5a4540ed81fad29b7cd464b99c1ae1
|
| evm-testnet | 4f04663684bc5b5b9cfd171a965a53f104718921a7ab0f71a18c33df5283cf16
|
x86_64-unknown-linux-musl
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 8d41fccfa4a2a485c5e9dd9ee5de363c941cde9c94bcc3c81e44e60aefa7dd11
|
| node-launchpad | 298091b950fc28f6f89095553d544749e34b28eba22587b103537f401796f95f
|
| ant | 38b528e8fb86c69e1b735a41bfa3da6705a2db683375bb5b8be1787a4f30df01
|
| antnode | c7693a4e2c4abce6888e3af8ffa3604b5e825e975cee3d70ebd15ed58c8253ee
|
| antctl | a2dce18c93e9d11e4fc0d5813ec058eb6e20aa9f9fff54b59e62b93d2fbd0cd8
|
| antctld | e60da14a00e302b161dacd1870f6c0bfffd5445d123737ee14d2871d5145d6e0
|
| antnode_rpc_client | a8cf10c28fca794b8a8b116da37beb7bf5765097aabcab27b2618d90b4dc2493
|
| evm-testnet | 1ce61c8b49a9ea0b0cd79acf41a27942f5306ca3d59746468422fb593e582a90
|
arm-unknown-linux-musleabi
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 153abb95e3b3e37d3140947afc44f0618ad2306be6a94113f073fc7301e2df87
|
| node-launchpad | 6bb47a95f7a91fa2fbe44823d445c5b5ba9464fa8b173f9c9868fc95b9bf43dc
|
| ant | 83cbbd8e18bb20cf9be6b8e376333a05e4913206177d193ece9a4cc5f1f908b6
|
| antnode | 506c0eb6a2dcc86479c5c916789b45ce6e4227bf98c78bd132d1452587ebfd66
|
| antctl | 023a3b846e03a0c66cc8924047f3825170b3246fc6eec7ce0eae732cc5571275
|
| antctld | e39054014fcad6ac02201d9ba89031fbe5afff61d6c23c14492fd82ce1a384a8
|
| antnode_rpc_client | b374f20333bd3cda8f1df76204a59601159911a7f6533dbfe9d32c955c4a92a6
|
| evm-testnet | a1b096722a33877b2cc363b7d78d28573185e9944fd592ffd64217240c7551a1
|
armv7-unknown-linux-musleabihf
| Binary | SHA256 Hash |
|---|---|
| nat-detection | a7edb8c3e1894084b9148c8e3272c0a462336f4c19af4ea5fee2499a3cce512b
|
| node-launchpad | 3839db946d4cb25ea84753cefe3bdada83e33f65336c189443594bcd5b3c092b
|
| ant | 8b17ff23fed8c66fe1b534b90e4a459f76ed71badd1a8013339d7ea786d405af
|
| antnode | 0b90b39ecd7050a92b573b072702f1087c2799893654815255542fd1dbd6b9c0
|
| antctl | 7309c7c41d1f88c20b25b539970a6da97ef2d13cf29bb50c077a3931ee34724c
|
| antctld | 5bb60be4ccc136456194d5f52859ee20fcf66e6a6566a8bdff3d3c4f2cd91af0
|
| antnode_rpc_client | 674803d950e53b4923fa2586587584e1edfc191dc297ea55439c5668035811f2
|
| evm-testnet | 06d61323d2c985a0da940c6db4b7e422ae000ab9f05c6a967a15ba5bc70c9223
|
aarch64-unknown-linux-musl
| Binary | SHA256 Hash |
|---|---|
| nat-detection | 420107959441fda347e6c693a1d8d99d9fb97bb9b81ad1c94e355aa7d97a152c
|
| node-launchpad | 28b1f4911452e5250ef3e71621246e52696faf1b6afa4326fa49a75a5f5f6d9c
|
| ant | 4b3c6da7facf4464eb6a96d72d95377e05aa9c8ff124ba8e40056246da83a8b8
|
| antnode | 87ec69679ccc4bf5aff28ce169cb3748f38f93a42910b5cfb70368b6d6b6d21e
|
| antctl | ba39e34b970e134f4813ac6c0688debd47a333fb905384286606673dd248ece4
|
| antctld | 4de38a526ebe465ca32fa1953e45b3a48eae96275a0e0bac4dfd52b723fc5d26
|
| antnode_rpc_client | 12e07fb3a1a6f38bea05b4597604b89424cb5fdcb605b9ee7abceae0869d7305
|
| evm-testnet | 23eb9cd3d37bb324a2065f46a2603cb5ffb5b3252478bd492f144f980318f803
|
Merged Pull Requests
2025-12-04 #3319 -- feat(client): check target's close group from targeted nodes' perspective [@maqi]
2025-12-11 #3356 -- Support Automatic Upgrades [@jacderida] [BREAKING]
2025-12-11 #3354 -- Merkle payments Infrastructure (without CLI) [@grumbach]
Detailed Changes
API
Added
- Merkle payment support for batch payments through cryptographic proof verification.
MerklePaymentOptionenum to enable merkle payment mode in upload operations.MerkleUploadErrorandMerkleUploadErrorWithReceipterror types for merkle-specific upload
failures.MerklePaymentErrorfor merkle payment processing errors.MerklePaymentReceipttype to track successful merkle payment transactions.MerklePutErrorfor merkle-specific put operation failures.Client::upload_with_merkle_paymentsmethod to upload data using merkle batch payment mode.Client::put_with_merkle_paymentmethod for storing individual records with merkle payment
proofs.
Protocol
Added
Query::GetMerkleCandidateQuotequery variant for requesting merkle payment candidate quotes from
nodes.- Includes
key(target address for topology verification),data_type,data_size, and
merkle_payment_timestampfields. - Node signs its current state (metrics + reward address) with the provided timestamp, creating a
cryptographic commitment binding PeerId to RewardsAddress. RecordKind::DataWithMerklePaymentvariant for records paid via merkle proofs.- Uses index range starting at
RECORD_KIND_MERKLE_PAYMENT_STARTING_INDEX(20) to differentiate
from traditional payment records. - Merkle payment timestamp verification to ensure payments are neither expired nor in the future.
Changed
- Record serialization now supports merkle payment proof headers alongside data payloads.
RecordHeaderserialization extended to handle merkle payment record types.
Network
Added
- Merkle payment proof verification in
PutValidationfor all data types PutValidationError::MerklePaymentVerificationFailederror variant for failed merkle proof
validations.- Merkle payment quote generation signed with node metrics and reward address.
- Cryptographic verification of merkle proofs against on-chain merkle tree roots.
- Merkle payment expiration validation to reject expired payment proofs.
- Support for deserializing records containing
(MerklePaymentProof, T)tuples whereTis the
data type. - The
antnodebinary now supports automatic upgrades on macOS and Linux. Every 3 days the node
will check for the availability of a new version. If available, the new version will be downloaded
and the current binary will be replaced (this is permitted for running processes on Unix-based
systems and it also works with symlinks). Each node is then assigned a restart time based on its
peer ID and the network size. This ensures the restarts will be spread out quite evenly. When the
node restarts it will retain its peer ID and data.
Changed
- Put record validation now branches on
RecordKind::DataWithMerklePaymentto verify merkle proofs
before accepting records. - Node quote responses now include merkle payment candidate signatures when requested via
GetMerkleCandidateQuote. - Payment proof structure extended to accommodate merkle tree proofs alongside traditional payment
receipts.
Payments
Added
ant-evm::merkle_paymentsmodule providing core merkle payment infrastructure:MerkleTreefor constructing and managing merkle trees with up toMAX_LEAVES(1024) leaves.MerkleBranchtype representing the path from a leaf to the root in a merkle tree.MerklePaymentProofcontaining the merkle branch, on-chain commitment info, and signatures.MerklePaymentCandidateNoderepresenting a node's signed commitment for merkle payment selection.MerklePaymentCandidatePoolfor organizing candidates into payment pools.verify_merkle_prooffunction for cryptographic verification of merkle proofs.MidpointProoffor proving the midpoint of merkle tree ranges.
MERKLE_PAYMENT_EXPIRATIONconstant defining the validity period for merkle payment proofs.MAX_MERKLE_DEPTHconstant defining the maximum depth of merkle trees.CANDIDATES_PER_POOLconstant for pool organization.MerklePaymentVerificationErrorfor merkle-specific verification failures.PoolCommitmenttype for on-chain merkle root commitments.OnChainPaymentInfocontaining merkle root and payment metadata from smart contracts.expected_reward_poolsfunction to calculate expected number of reward pools based on data size.
Changed
- EVM network configuration now includes optional
merkle_payments_addressfor merkle payment vault
contracts. - Wallet and testnet setup extended to support merkle payment contract deployment and interaction.
Client
Changed
- Upload strategy now supports both traditional per-chunk payments and merkle batch payments.
- The client will now carry out a check of its close group candidates to see whether each peer is
known by the others in the group. This improves uploads because more robust nodes will be chosen,
and in turn downloads will also be more stable. - The quoting candidate range is extended from 7 to 10 peers to attempt to provide more stability.
Antctl
Changed
- The service definitions emitted by the
addcommand now use an 'on success' restart policy
on Unix platforms. This is to allow the service manager to restart the node for use with automatic
upgrades. Before upgrading to the new version ofantctl, users should useantctl resetwith
their current version to clear any existing node deployments. The new node is not compatible with
the old service definitions produced byantctl. New deployments can then be created with the new
version ofantctl. [BREAKING] - The
addcommand will assign a random port in the service definition rather than
delegating that to the node. This is to ensure the node will restart with the same port when it is
automatically upgraded. - The
statuscommand now obtains the version number of each service. This makes the command work
naturally with automatic upgrades.
Launchpad
Changed
- As with the
antctlchange above, old service definitions are not compatible with the new version
of the nodes to have automatic upgrades work correctly. Before upgrading to the new
node-launchpad, users should use the reset command withCtrl+Rto clear out their current node
deployments. New deployments can then be created with the new version ofnode-launchpad.
[BREAKING] - The
Statuspanel will update with the new node versions when automatic upgrades take place in
the background.