Skip to content

Releases: omnipin/hoverfly

v0.2.1

Choose a tag to compare

@v1rtl v1rtl released this 20 Oct 11:10
17946bb

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

Choose a tag to compare

@v1rtl v1rtl released this 06 Sep 12:53
dcc3244

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 canonical SimpleSwapFactory, 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: cashChequeBeneficiary must 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

Choose a tag to compare

@v1rtl v1rtl released this 29 Jul 12:33
2ac90e0

What's Changed

  • Pusher architecture by @v1rtl in #29
  • Erasure-coding-aware upload (Reed–Solomon encoding) by @v1rtl in #30

Full Changelog: v0.1.10...v0.1.11

v0.1.10

Choose a tag to compare

@v1rtl v1rtl released this 23 Jul 17:09
7ed825f

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

Choose a tag to compare

@v1rtl v1rtl released this 01 Jul 14:28
a168d11

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 --list over 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

Choose a tag to compare

@v1rtl v1rtl released this 14 Jun 16:01
3a877c7

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@v1rtl v1rtl released this 13 Jun 15:40
c9e8519

What's Changed

  • gateway: in-browser daemon mode (warm session pool) + reliability fixes by @v1rtl in #14

Full Changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@v1rtl v1rtl released this 10 Jun 15:26
e3dd30c

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

Choose a tag to compare

@v1rtl v1rtl released this 09 Jun 11:31
46d680d

What's Changed

  • bridge: optional hoverfly bridge command (Relay -> xDAI + BZZ on Gnosis) by @v1rtl in #7
  • deps: bump nectar to bafa3ac (mantaray ref_size=0 decode fix) by @v1rtl in #8
  • feat(daemon): auto-skip pre-fill discover on a warm peerlist by @v1rtl in #9

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@v1rtl v1rtl released this 08 Jun 14:15
a474831

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-discover flag to improve initial peer connection performance
  • feat(daemon): ENS resolution

Full Changelog: v0.1.3...v0.1.4