For real? No, not of course yet, had to try a couple things with 1.2GB linux distro:
export CHUNK_DOWNLOAD_BATCH_SIZE=64
real 3m17.428s
user 2m6.677s
sys 0m52.120s
export CHUNK_DOWNLOAD_BATCH_SIZE=256
real 4m16.057s
user 3m7.244s
sys 0m58.515s
CHUNK_DOWNLOAD_BATCH_SIZE=32
real 3m52.862s
user 2m35.587s
sys 1m3.782s
Seems like 64 is close to sweet spot to me. Or am I reading too much into these numbers? How much there is just random variation?
How are these numbers even possible? I’m the official “Mr. Crappy Router” in any case.
Yeah, the upload feature isn’t doing anything custom. It just saves the upload from the client/browser to a temp directory and then uploads it within an archive using the autonomi libs.
Maybe it is a different use case here? For AntTP, the chunks arrive out of order and I can’t stream them to the client/browser until they can be ordered in sequence. So, I have to hold the ‘ready’ chunks somewhere, while they are blocked from being sent to the client/browser. Once the blockage is cleared, the blocked chunks all get pushed out too (until it hits the next blockage).
I did have a poke around the self-encryption streaming API, but I couldn’t see a way to make it fit. That could be on me just not seeing it though.
The network seems much quicker this week after the latest antnode has propagated wider. I got some impressive results from lots of smaller files too, which illustrates the strides forward with lowering latency.
I found that 32 - 64 chunks work well for me too, but 16 gives maximum reliability. That’s over a relatively busy connection + wifi though. Tbh, 16 isn’t much slower than 32 for me either, mind.
I thought I’d get in on this dog fooding act too… AntTP v0.4.6 uploaded!
paul@mini-vader:~/dev/anttp/target/x86_64-unknown-linux-musl/release$ ls -lah anttp
-rwxrwxr-x 2 paul paul 30M Apr 28 23:05 anttp
paul@mini-vader:~/dev/anttp/target/x86_64-unknown-linux-musl/release$ echo $CHUNK_UPLOAD_BATCH_SIZE
16
paul@mini-vader:~/dev/anttp/target/x86_64-unknown-linux-musl/release$ time ant file upload -p anttp
Logging to directory: "/home/paul/.local/share/autonomi/client/logs/log_2025-04-30_21-41-08"
🔗 Connected to the Network Uploading data to network...
Encrypting file: "anttp"..
Successfully encrypted file: "anttp"
Quoting for 9 chunks..
Paying for 9 chunks..
Chunk payments of 9 chunks completed. 0 chunks were free / already paid for
Uploading file: anttp (9 chunks)..
(2/9) Chunk stored at: c52b7396563f124973bf1cdb266273ed4376fa8a810e5750c0e7a25531d730c7
(6/9) Chunk stored at: 5d423f7738e26f7bfffc7f6975e6a324e7190b19b474dd2f91797afaf6484e42
(9/9) Chunk stored at: 01966b01077761bc83d17ae31fda46714e2335e0b4e8575eddb9360685498c49
(1/9) Chunk stored at: fe9e965054e8a3e0e7fffa1541b185bc813fdd5d3193338dd31d716b90a34c46
(4/9) Chunk stored at: 719c89bcf0124501e752750deaf832259ae39c633807e8761791b1e80b72842b
(5/9) Chunk stored at: 724030961e95daafbd4935f90456e5dd9229346c28cfe3e444bc52d5e7a27dca
(3/9) Chunk stored at: a729b460484a2c30ce3067125b627d28ec26de3e6f31fec13833e50b4f1b2584
(8/9) Chunk stored at: ef0993eea31f5f6a551ab00d2a454ec88ae266ea36122d823295778fbf5a6cb0
(7/9) Chunk stored at: b6d5e9bafb7b9947ba4d41b8430b26cea511f46e5ac94a5d2d645700bd54729e
Successfully uploaded anttp (9 chunks) to: 01966b01077761bc83d17ae31fda46714e2335e0b4e8575eddb9360685498c49
Upload of 1 files completed in 263.136115056s
Uploading public archive referencing 1 files
Paying for 4 chunks..
Chunk payments of 4 chunks completed. 0 chunks were free / already paid for
(3/4) Chunk stored at: 5eb35045a67291be767454feb04bdc2bb68dc4a08852ea025de57f99286ad534
(4/4) Chunk stored at: f70dd703a2788e304f3abe9a7e12c33abc8292f808940ec2901da119f7a7caac
(2/4) Chunk stored at: 9630ca9aed1cddcd8b6a6b8f0ee545b17e8d13f10f930951d2a8da7dffea00d9
(1/4) Chunk stored at: 57d014d542e8ba80787c7405e3793834e0db5347095cd94208a5ca9fe93ed7cc
Successfully uploaded: anttp
At address: f70dd703a2788e304f3abe9a7e12c33abc8292f808940ec2901da119f7a7caac
Number of chunks uploaded: 13
Number of chunks already paid/uploaded: 0
Total cost: 348388276099 AttoTokens
real 5m26.887s
user 0m22.938s
sys 0m10.609s
About 100 KB/s, if you include the time for quotes, archive, etc. When actually uploading the chunks, it looked closer to 500-1000 KB/s from eyeballing system monitor.
It worked first time too, with no retries, special prep, etc. Great job, team!
EDIT: And to download with AntTP, it took no time at all… 4 seconds (or 7.5 MB/s)!
[2025-04-30T21:00:14Z INFO anttp::file_service] streaming item [anttp] at addr [01966b01077761bc83d17ae31fda46714e2335e0b4e8575eddb9360685498c49], range_from [0], range_to [18446744073709551615]
...
[2025-04-30T21:00:18Z INFO actix_web::middleware::logger] 127.0.0.1 "GET /anttp HTTP/1.1" 200 31383800 "http://f70dd703a2788e304f3abe9a7e12c33abc8292f808940ec2901da119f7a7caac/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0" 4.559878
Network performance seems great. It feels like UX is all that’s holding things back just now, and that should take a good step forward with Impossible Futures.
In due course I’m looking forward to an Android based browser / wallet / upload & download manager combo so I can just get on the network & start browsing / downloading / uploading
Yes, for uploading, native will be a game changer.
But, $5 for 5.8gb (Anatomic’s recent cost for Ubuntu upload) isn’t terrible for many applications… just a shame ANT utility is almost zero. Maybe ANT cost must equal at least 20% of total upload cost until the network is sufficiently full to give ANT some utility value.
I had a bit of a play with @happybeing’s dweb and made my first Autonomi website.
It just takes his ScratchChat and adds some bells and whistles. Not well tested so probably buggy but if you have used Scratchchat you should get the gist of it pretty quickly.
dweb open atlas won’t work for others until I hard-code it in dweb, so you need to publish the History and/or Archive address.
BTW I realised there’s no need for apps to use host+port for accessing the API and am updating my demos to only use local paths for API access in JS and HTML. You’ll see an updated ScratchChat shortly.
Things will be less likely to break (e.g. if people want dweb serve to listen on a different port) because the whole API is available on the app’s own server.