Releases: storacha/piri
v0.0.16
v0.0.15
Piri v0.0.15: Egress Tracking & Contract Upgrade
This release upgrades the PDP contract used by Piri for proof submission, and introduces egress tracking.
โ ๏ธ Breaking Changes
PDP Verifier v2.1.0 Upgrade
This release upgrades to the PDP Verifier v2.1.0 smart contract. This is a breaking change that requires a full node reset.
Required Migration Steps:
- Stop your piri process
- Delete your data directory (preserving
service.pem
):rm -rf /path/to/piri/data # or your custom data directory path Important: Keep your service.pem key file
- Re-initialize and start your node following the setup guide: https://github.com/storacha/piri/blob/main/docs/guides/piri-server.md
Benefits:
- Proof sets are now viewable at https://pdp.vxb.ai/calibration
Egress Tracking
Piri now tracks and reports data served to clients. This allows the Storacha billing service to accurately account for bandwidth usage.
Change Log
- feat: implement proof set state inspection by @frrist in #239
- Implement Auto update of piri node as managed service by @frrist in #240
- fix(aws): return store.ErrNotFound by @hannahhoward in #260
- feat: add EgressBatchStore by @volmedo in #245
- feat: check consolidated records and clean receipt batches by @volmedo in #264
- fix: incremental SHA hashing works for fsjournal resume by @frrist in #267
- Fast follows to piri auto update by @frrist in #244
- feat: only auto update patch releas changes. by @frrist in #268
- refactor: hide auto update commands till ready by @frrist in #270
- Upgrade to PDP Verifier v2.1.0 by @frrist in #256
Full Changelog: v0.0.14...v0.0.15
v0.0.14
What's Changed
- chore: fix typos across codebase by @sukrucildirr in #113
- feat: add node version to help flag output by @codemaestro64 in #209
- refactor: remove dead pdp code, been replaced with fx setup by @frrist in #224
- feat: implement piri deployment process on EC2 instance(s) by @frrist in #195
- Update cli command by @frrist in #211
- Implement graceful shutdown of job queue w/ OnFailure method by @frrist in #225
- fix: make replicate Transfer idempotent by @frrist in #216
- Implement graceful shutdown of piri server by @frrist in #228
- fix: specify range in location commitment by @alanshaw in #229
- chore: update ucanto by @alanshaw in #236
- fix: replica transfer conclude invocation by @alanshaw in #241
- chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.4.0 by @dependabot[bot] in #242
- feat: fetch egress tracking proof on init by @volmedo in #243
- feat: automatically load config from a known location by @alanshaw in #250
- refactor: use digestutil from go-libstoracha by @alanshaw in #251
- docs: typo by @alanshaw in #247
- feat: UCAN authorized retrievals by @alanshaw in #238
- feat: allow allocation to be found by old key by @alanshaw in #253
- docs: more minor language fixes by @alanshaw in #248
New Contributors
- @sukrucildirr made their first contribution in #113
- @codemaestro64 made their first contribution in #209
- @dependabot[bot] made their first contribution in #242
Full Changelog: v0.0.13...v0.0.14
v0.0.13
Piri v0.0.13: A simpler way to run Piri
This release rethinks how Piri works. Based on your feedback about complexity and reliability issues, we've rebuilt the system to be much simpler to operate. The changes are significant enough that you'll need to start fresh with your node, but the result is worth it.
Release: https://github.com/storacha/piri/releases/tag/v0.0.13
Setup Guide: https://github.com/storacha/piri/blob/v0.0.13/docs/guides/piri-server.md
Why we made these changes
Running a Piri node was complicated. You had to manage multiple processes, visit external websites for registration and handle dozens of configuration flags. We heard you, and we fixed it.
What's different now
Your entire node runs as one process
Before, you had to run piri serve ucan
and piri serve pdp
separately and keep both running. Now everything runs through a single piri serve full
command. This means fewer things to monitor, simpler systemd configurations, and clearer logs.
Setup happens automatically
The new init
command handles all the complex setup that used to be manual. It creates your proof sets, registers with the Storacha network, and generates a proper configuration file. No more visiting https://staging.delegator.storacha.network/ or figuring out which flags to use.
Configuration lives in one place
Instead of passing a mixture of command line flags and environment variables, everything now lives in a single TOML configuration file that the init
command generates for you. We hope this change makes it easier to actually understand what your node is configured to do.
Data works immediately
This was a major pain point: after uploading data, it wouldn't be readable for a while, causing errors, retry loops, and failures. Now data is accessible as soon as it's uploaded. This makes the whole network faster and more reliable. You can test this yourself at https://staging.delegator.storacha.network/test-storage to see the difference (after upgrading of course ๐).
How to upgrade your node
Because we've fundamentally changed how Piri works, you need to completely reset your node. Think of this as setting up a new node rather than updating an existing one. Here's the complete process:
Step 1: Stop and remove your current setup
First, stop any running Piri processes.
Then remove the old installation:
# Find where Piri is currently installed
which piri
# Remove the binary (adjust the path based on what 'which' shows you)
sudo rm /usr/local/bin/piri # or wherever it's installed
# Remove your data directory completely
# This is whatever you specified with --data-dir or PIRI_DATA_DIR
rm -rf /path/to/piri/data # or your custom data directory path
Note: You should continue to use the service.pem
file you used previously for your Piri nodes identity. Do not delete this file.
Step 2: Clean up your web server configuration
Since Piri now uses just one endpoint instead of two, you can remove the extra configuration. If you set up separate domains for UCAN and PDP services (like up.piri.example.com
for PDP), here's how to clean that up:
For nginx users:
# Remove the extra server configuration
sudo rm /etc/nginx/sites-available/up.piri.example.com
sudo rm /etc/nginx/sites-enabled/up.piri.example.com
# Delete the SSL certificate for the old endpoint
sudo certbot delete --cert-name up.piri.example.com
# Test that your nginx configuration is still valid
sudo nginx -t
# If the test passes, reload nginx
sudo systemctl reload nginx
Also remove the DNS A record for up.piri.example.com
from your domain provider's control panel. You only need the main domain now (like piri.example.com
).
Step 3: Install v0.0.13 and set up your new node
Now you're ready to install the new version and get your node running. Follow the complete setup guide here:https://github.com/storacha/piri/blob/v0.0.13/docs/guides/piri-server.md
The guide walks you through:
- Installing the new Piri binary
- Running
piri init
to set everything up automatically - Starting your node with the generated configuration file
The whole process is much simpler than before. Where you previously had to coordinate multiple moving parts, now it's essentially just two commands after installation.
Change Log
- chore: upgrade go-ucanto by @alanshaw in #167
- docs: fix example .env by @alanshaw in #184
- fix: indexer UCAN endpoint by @alanshaw in #181
- fix(docs): --proof-set is required when using --pdp-server-url by @volmedo in #185
- feat: unify pdp client and server on common interface by @frrist in #169
- fix: join HTTP path to multiaddr by @alanshaw in #180
- feat: implement
proofset list
cli/client/api by @frrist in #186 - Frrist/refactor/task engine start by @frrist in #187
- fix(docs): add --public-url flag to serve ucan command and prefix envโฆ by @volmedo in #189
- Frrist/refactor/simplify config by @frrist in #190
- Single Process Piri Node by @frrist in #192
- fix: explicitly log handler execution errors by @alanshaw in #196
- fix: do not smother HTTP handler errors by @alanshaw in #197
- Implement Piri init command for automatic registration with the delegator by @frrist in #200
- feat: make data upload synchronous by @frrist in #201
- fix: include telemetry metrics for full server by @frrist in #204
- Revamp docs for single process operation. by @frrist in #203
Full Changelog: v0.0.12...v0.0.13
v0.0.12
What's Changed
- feat: server info as JSON by @alanshaw in #159
- refactor: move ucan service methods to own package by @frrist in #160
- chore: Upgrade go-ucanto by @Peeja in #130
- refactor: migrate service http handlers to echo by @frrist in #161
- Frrist/fix/piece polling by @frrist in #165
- fix: chain scheduler robustness by @frrist in #163
- fix: add timeout to eth api requests to prevent infinite hanging by @frrist in #164
- fix: skip test dialing real service by @frrist in #172
- refactor(testutil): use external testutil library by @hannahhoward in #170
- fix: correctly resub to chain notifications by @frrist in #168
- Implement (gradual) dependency injection via uber.fx by @frrist in #144
- feat: implement telemetry package for metrics by @frrist in #157
- feat: print configuration details when starting servers by @frrist in #178
- fix: trim trailing slashes from public URLs by @volmedo in #176
Full Changelog: v0.0.11...v0.0.12
v0.0.11
v0.0.10
What's Changed
- feat: implement object store via minio by @frrist in #129
- feat: resolve did:key from did:web by @frrist in #143
- Add (back) version command and fix goreleaser config by @frrist in #145
- docs: update with detailed steps for self-testing piri by @frrist in #147
- fix: tasks are retried correctly when they fail by @frrist in #148
- feat: make build date more human-friendly by @volmedo in #149
Full Changelog: v0.0.9...v0.0.10
v0.0.9
v0.0.8
v0.0.7
What's Changed
- docs: recommend pre-compiled binaries over building from source by @frrist in #121
- feat: migrate CLI to Cobra/Viper (#93) by @frrist in #110
- fix: don't fail to create pdp state dir when it exists by @frrist in #124
- Create CODEOWNERS by @frrist in #123
- fix: handle API timeouts in MessageWatcherEth task by @frrist in #127
- docs: update to refect new cli by @frrist in #125
Full Changelog: v0.0.6...v0.0.7