Repository navigation
Releases: omnipin/hoverfly
Release list
v0.2.1
Stable upload overlay in daemon mode
A daemon-mode upload used to land under a fresh random overlay every time. The
daemon signs an upload with SwarmSigner::from_hex, which randomises the
nonce, while the in-process path uses the --nonce-file nonce. The overlay is
keccak256(eth_addr || network_id || nonce), and bee's kademlia memory is
keyed on it: peers that learned our overlay can route back to us, which is the
whole point of hoverfly vanity-overlay. So the mode built for long-lived,
repeated uploads was the one throwing the benefit away.
The upload request now carries an optional nonce, and the daemon derives the
upload signer from it — the same overlay the in-process path produces.
hoverfly upload --daemon passes the --nonce-file nonce over the socket.
The field is optional and unknown fields are ignored, so a new client against
an old daemon (and the other way round) still works; the fallback is the old
random-per-upload overlay.
Peerlists moved to their own repo. The peerlists were regenerated every
hour and committed straight into this repo — most of the commit log was data
churn. They now live in
omnipin/hoverfly-peers, refreshed
hourly, and the release tarball bundles the copy fetched at release time
instead of a frozen one.
Also in this release
fix(batch): an insufficient balance is reported in BZZ, not raw PLUR.
Compatibility
The upload request gained an optional field; older daemons ignore it and older
clients don't send it. Nothing else changes — a patch bump says it all: no new
commands, no new flags, no wire-format change.
What's Changed
- fix(batch): report insufficient BZZ balance in BZZ, not raw PLUR by @v1rtl in #34
- feat(daemon): let an upload carry the overlay nonce by @v1rtl in #35
- chore(peers): move the hourly peerlist refresh to its own repo by @v1rtl in #36
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Metered pusher relays
A relay can now charge for the bandwidth it spends on you, and a client can
decide — per lane — whether to pay. Design and threat model:
docs/pusher-incentives.md.
Relay side. hoverfly pusher --meter bills for bytes admitted and settles
in off-chain SWAP cheques, priced per KiB. It needs --origin (the admission
challenge binds the host the client dialled, never the Host header),
--beneficiary, and a durable --state-dir — without a persistent ledger a
client re-presents its last cumulative cheque after every restart and is
credited it again. Default is soft mode: meter, report, serve anyway, so the
overshoot rate can be measured against live traffic before anyone is refused.
--meter-hard turns on 402 enforcement. Credit lines are derived from the
batch's remaining on-chain value rather than asserted, which is what bounds
Sybil exposure.
Client side. Paying is opt-in and per lane. Without --chequebook nothing
signs and nothing spends: open and soft-metered lanes serve you exactly as
before, and hard-enforcing lanes are retired before the first dispatch instead
of burning a retry per chunk on a 401. With a chequebook configured, POSTs are
sized to live headroom in the credit line, debt carried across sessions is
settled, and dedup hits are billed at zero. --lane-pin URL,NODE,BENEFICIARY
pins a metered lane's identity; without a pin the first-seen quote is trusted
for the run (TOFU) with a warning.
New commands.
hoverfly chequebook deploy | fund | status— deploy a SWAP chequebook
through bee's canonicalSimpleSwapFactory, top it up, and read its
on-chain state. Deliberately explicit: an upload will never deploy a
contract for you because a lane quoted a price.hoverfly cashout— redeem the cheques a metered relay accepted. Run it
away from the relay box:cashChequeBeneficiarymust be sent by the
beneficiary, and that is the one key a relay is designed never to hold.
pusher.browserbzz.link is the first metered production lane. The three Render
lanes stay open.
Also in this release
fix(daemon): uploads hung forever when the client wanted no progress
stream (#31).ci(bench): stop re-discovering a peerlist the run just seeded (#32).
Compatibility
Open relays and unpaying clients are unchanged — metering is off unless
--meter is passed. The bump to 0.2.0 marks the size of the new surface;
this project does not promise semver before 1.0.
What's Changed
- fix(daemon): upload hung forever whenever the client wanted no progress stream by @v1rtl in #31
- ci(bench): stop re-discovering a peerlist we just seeded by @v1rtl in #32
- Metered relay mode: pay a pusher for the bandwidth it spends on you by @v1rtl in #33
Full Changelog: v0.1.11...v0.2.0
v0.1.11
v0.1.10
What's Changed
- feat(transport): park early redials under a per-peer GCRA dial limiter by @v1rtl in #22
- Warm session pool: spread maintenance, decoupled idle timeout, pool-size 256 by @v1rtl in #23
- upload dApp: drop swarmscan poll for a fixed batch-ready wait by @v1rtl in #24
- daemon: fix Status hang + unkillable Ctrl-C (locks held across dial marathons) by @v1rtl in #26
- upload: top up the session pool mid-push to fix the tail stall by @v1rtl in #25
- deps: nectar 0.4 + wasm simd128 for the dApp build by @v1rtl in #27
- feat(fetch): erasure-coding-aware download (Reed–Solomon reconstruction) by @v1rtl in #28
Full Changelog: v0.1.9...v0.1.10
v0.1.9
What's Changed
- feat: in-browser Swarm upload dApp + threadless (no-shared-memory) wasm by @v1rtl in #16
- feat(upload): poll swarmscan for batch indexing instead of fixed wait… by @v1rtl in #17
- migrate from omnipin nectar fork to upstream v0.3.0 by @v1rtl in #18
- fix(upload): support mutable batches + stream daemon upload progress by @v1rtl in #19
- feat(daemon): support
fetch --listover the daemon socket by @v1rtl in #20 - fix(wasm/upload): real progress bar, mutable batches, healthier browser pool by @v1rtl in #21
Full Changelog: v0.1.7...v0.1.9
v0.1.8
v0.1.7
v0.1.6
What's Changed
- gateway: fix blank pages, stale feed content, and missing chunk fetches by @v1rtl in #11
- fetch: decouple chunks-in-flight from per-chunk peer race (browser throughput) by @v1rtl in #12
- style: cargo fmt feed.rs (fix failing CI fmt check on main) by @v1rtl in #13
- deps: use crates.io nectar 0.1.0 instead of git pin by @v1rtl in #10
Full Changelog: v0.1.5...v0.1.6
v0.1.5
v0.1.4
What's Changed
- feat(feed): read-only Swarm feed resolution by @v1rtl in #5
- fix(gateway): don't append .html to all trailing slashes
- feat(daemon):
--no-discoverflag to improve initial peer connection performance - feat(daemon): ENS resolution
Full Changelog: v0.1.3...v0.1.4