summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbruno <bruno@tinkerbox.org>2025-03-18 15:00:57 +0100
committerRobert Clausecker <fuz@FreeBSD.org>2025-03-26 02:34:45 +0100
commit138e932c241c2a0ac6bba0a3e5dc9e210bd962ca (patch)
tree5fd4b8dc83728b48d74904f30ab1ede7a0ff1fb3
parentcad/irsim: adopt and update 9.7.116 => 9.7.118 (diff)
net-p2p/{renterd,hostd,walletd}: new ports
renterd is an advanced Sia renter engineered by the Sia Foundation. Designed to cater to both casual users seeking straightforward data storage and developers requiring a robust API for building apps on Sia. hostd is an advanced Sia host solution created by the Sia Foundation, designed to enhance the experience for storage providers within the Sia network. Tailored for both individual and large-scale storage providers, hostd boasts a user-friendly interface and a robust API, empowering providers to efficiently manage their storage resources and revenue. hostd incorporates an embedded web-UI, simplifying deployment and enabling remote management capabilities, ensuring a smooth user experience across a diverse range of devices. walletd is the flagship Sia wallet, suitable for miners, exchanges, and everyday hodlers. Its client-server architecture gives you the flexibility to access your funds from anywhere, on any device, without compromising the security of your private keys. The server is agnostic, so you can derive those keys from a 12-word seed phrase, a legacy (siad) 28-word phrase, a Ledger hardware wallet, or another preferred method. Like other Foundation node software, walletd ships with a slick embedded UI, but developers can easily build headless integrations leveraging its powerful JSON API. Whether you're using a single address or millions, walletd scales to your needs. WWW: https://sia.tech/software/hostd WWW: https://sia.tech/software/renterd WWW: https://sia.tech/software/walletd PR: 285367
-rw-r--r--GIDs6
-rw-r--r--UIDs6
-rw-r--r--net-p2p/Makefile3
-rw-r--r--net-p2p/hostd/Makefile89
-rw-r--r--net-p2p/hostd/distinfo87
-rw-r--r--net-p2p/hostd/files/hostd.conf.in2
-rw-r--r--net-p2p/hostd/files/hostd.in35
-rw-r--r--net-p2p/hostd/files/hostd.yml.in30
-rw-r--r--net-p2p/hostd/files/patch-build_meta.go15
-rw-r--r--net-p2p/hostd/files/patch-vendor_modules.txt290
-rw-r--r--net-p2p/hostd/pkg-descr8
-rw-r--r--net-p2p/hostd/pkg-message9
-rw-r--r--net-p2p/renterd/Makefile96
-rw-r--r--net-p2p/renterd/distinfo101
-rw-r--r--net-p2p/renterd/files/patch-build_meta.go22
-rw-r--r--net-p2p/renterd/files/patch-vendor_modules.txt351
-rw-r--r--net-p2p/renterd/files/renterd.conf.in2
-rw-r--r--net-p2p/renterd/files/renterd.in35
-rw-r--r--net-p2p/renterd/files/renterd.yml.in54
-rw-r--r--net-p2p/renterd/pkg-descr4
-rw-r--r--net-p2p/renterd/pkg-message9
-rw-r--r--net-p2p/walletd/Makefile79
-rw-r--r--net-p2p/walletd/distinfo65
-rw-r--r--net-p2p/walletd/files/patch-build_meta.go15
-rw-r--r--net-p2p/walletd/files/patch-vendor_modules.txt204
-rw-r--r--net-p2p/walletd/files/pkg-message.in10
-rw-r--r--net-p2p/walletd/files/walletd-syslog.conf.in2
-rw-r--r--net-p2p/walletd/files/walletd.conf.in1
-rw-r--r--net-p2p/walletd/files/walletd.in36
-rw-r--r--net-p2p/walletd/files/walletd.yml.in30
-rw-r--r--net-p2p/walletd/pkg-descr10
31 files changed, 1700 insertions, 6 deletions
diff --git a/GIDs b/GIDs
index 124c911b94ac..50727c43468f 100644
--- a/GIDs
+++ b/GIDs
@@ -317,9 +317,9 @@ _wsdd:*:370:
# free: 374
# free: 375
# free: 376
-# free: 377
-# free: 378
-# free: 379
+hostd:*:377:
+walletd:*:378:
+renterd:*:379:
spoofdpi:*:380:
hydroxide:*:381:
# free: 382
diff --git a/UIDs b/UIDs
index a4dd1f676f71..22e316471440 100644
--- a/UIDs
+++ b/UIDs
@@ -323,9 +323,9 @@ _wsdd:*:370:370::0:0:Web Service Discovery Daemon:/nonexistent:/usr/sbin/nologin
# free: 374
# free: 375
# free: 376
-# free: 377
-# free: 378
-# free: 379
+hostd:*:377:377::0:0:hostd Daemon:/nonexistent:/usr/sbin/nologin
+walletd:*:378:378::0:0:walletd Daemon:/nonexistent:/usr/sbin/nologin
+renterd:*:379:379::0:0:renterd Daemon:/nonexistent:/usr/sbin/nologin
spoofdpi:*:380:380::0:0:SpoofDPI Daemon:/nonexistent:/usr/sbin/nologin
hydroxide:*:381:381::0:0:Hydroxide Daemon:/var/db/hydroxide:/usr/sbin/nologin
# free: 382
diff --git a/net-p2p/Makefile b/net-p2p/Makefile
index 635a3768aafb..0510ca815383 100644
--- a/net-p2p/Makefile
+++ b/net-p2p/Makefile
@@ -35,6 +35,7 @@
SUBDIR += ethash
SUBDIR += go-ethereum
SUBDIR += gtk-gnutella
+ SUBDIR += hostd
SUBDIR += intermodal
SUBDIR += jackett
SUBDIR += jigdo
@@ -88,6 +89,7 @@
SUBDIR += qbittorrent
SUBDIR += radarr
SUBDIR += readarr
+ SUBDIR += renterd
SUBDIR += reticulum
SUBDIR += retroshare
SUBDIR += rslsync
@@ -105,6 +107,7 @@
SUBDIR += udpt
SUBDIR += uhub
SUBDIR += vuze
+ SUBDIR += walletd
SUBDIR += warpinator
SUBDIR += xbt
SUBDIR += xmrig
diff --git a/net-p2p/hostd/Makefile b/net-p2p/hostd/Makefile
new file mode 100644
index 000000000000..fac04c19e735
--- /dev/null
+++ b/net-p2p/hostd/Makefile
@@ -0,0 +1,89 @@
+PORTNAME= hostd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.4
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Offer your storage space on the Sia network
+WWW= https://sia.tech/host
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+
+USE_RC_SUBR= hostd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/hostd
+GO_BUILDFLAGS+= -tags='netgo timetzdata'
+
+GH_TUPLE= SiaFoundation:core:v0.10.1:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:v0.11.1:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.3.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:hostd/v0.58.0:siafoundation_web_1/vendor/go.sia.tech/web/hostd \
+ aws:aws-sdk-go:v1.55.6:aws_aws_sdk_go/vendor/github.com/aws/aws-sdk-go \
+ cloudflare:cloudflare-go:v0.115.0:cloudflare_cloudflare_go/vendor/github.com/cloudflare/cloudflare-go \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v2.4.0:go_yaml_yaml/vendor/gopkg.in/yaml.v2 \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml_1/vendor/gopkg.in/yaml.v3 \
+ goccy:go-json:v0.10.5:goccy_go_json/vendor/github.com/goccy/go-json \
+ golang:crypto:v0.33.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.18.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:time:v0.10.0:golang_time/vendor/golang.org/x/time \
+ golang:tools:v0.22.0:golang_tools/vendor/golang.org/x/tools \
+ google:go-querystring:v1.1.0:google_go_querystring/vendor/github.com/google/go-querystring \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ hashicorp:golang-lru:v2.0.7:hashicorp_golang_lru_v2/vendor/github.com/hashicorp/golang-lru/v2 \
+ jmespath:go-jmespath:v0.4.0:jmespath_go_jmespath/vendor/github.com/jmespath/go-jmespath \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ lukechampine:flagg:v1.1.1:lukechampine_flagg/vendor/lukechampine.com/flagg \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ lukechampine:upnp:v0.3.0:lukechampine_upnp/vendor/lukechampine.com/upnp \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.49.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ rogpeppe:go-internal:v1.12.0:rogpeppe_go_internal/vendor/github.com/rogpeppe/go-internal \
+ shopspring:decimal:v1.4.0:shopspring_decimal/vendor/github.com/shopspring/decimal \
+ uber-go:goleak:v1.3.0:uber_go_goleak/vendor/go.uber.org/goleak \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample etc/hostd.yml.sample" \
+ "@sample etc/newsyslog.conf.d/hostd.conf.sample" \
+ bin/hostd
+
+SUB_FILES= ${PORTNAME}.conf ${PORTNAME}.yml
+
+SUB_LIST= GROUPS=${GROUPS} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/hostd/distinfo b/net-p2p/hostd/distinfo
new file mode 100644
index 000000000000..b618bb995ef7
--- /dev/null
+++ b/net-p2p/hostd/distinfo
@@ -0,0 +1,87 @@
+TIMESTAMP = 1741778012
+SHA256 (SiaFoundation-hostd-v2.0.4_GH0.tar.gz) = 774cfa132b98453dc887b8e8048811aeed1656705cfdc9de76b98b0b9c68dbd2
+SIZE (SiaFoundation-hostd-v2.0.4_GH0.tar.gz) = 249233
+SHA256 (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 5981e02ffc9533a5cf1549aef7f14639a848414e4f4ad54299b19b337bc29527
+SIZE (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 150928
+SHA256 (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = f8331816cba3e36607fa96a66588acc2ed230a19ec900604dd24b33a72509d39
+SIZE (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = 99325
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = d1297bc70bad3006e1381b4ef9e824823319ef785dc211b38ab1d72f869cc94b
+SIZE (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = 28529
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-hostd-v0.58.0_GH0.tar.gz) = db607128a490367f100a9907f5f3f8061d6e4e4580757810ce8b090681de7491
+SIZE (SiaFoundation-web-hostd-v0.58.0_GH0.tar.gz) = 27986484
+SHA256 (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = ae51032a0575b798a24670ec1f006dcd7dc0804c7131f4061887df96f7d114c5
+SIZE (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = 33373600
+SHA256 (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = b82c3ed62a37aee5359b31822a4152c06b019ce43ba623f2ef7d7664bb27cffb
+SIZE (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = 517339
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v2.4.0_GH0.tar.gz) = d8e94679e5fff6bd1a35e10241543929a5f3da44f701755babf99b3daf0faac0
+SIZE (go-yaml-yaml-v2.4.0_GH0.tar.gz) = 73209
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (goccy-go-json-v0.10.5_GH0.tar.gz) = 15a6994e238a3d520816d53eacd115e6d3fd0816e570e8ae79f3a8fcf74616aa
+SIZE (goccy-go-json-v0.10.5_GH0.tar.gz) = 399031
+SHA256 (golang-crypto-v0.33.0_GH0.tar.gz) = f226aebdbb44372844bb754cedd9d4f6d958cf4686db4489de970546c5860913
+SIZE (golang-crypto-v0.33.0_GH0.tar.gz) = 1840655
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.18.0_GH0.tar.gz) = 247133e4ef1a5863af267a81c2d3f2b6e6b439f250db4e1d7e16df46d37e4d71
+SIZE (golang-mod-v0.18.0_GH0.tar.gz) = 123147
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-time-v0.10.0_GH0.tar.gz) = 4c04f20b8d5cac372d97e350ecb652ba2434c019cbb9e89dfeb1a0049b414cf6
+SIZE (golang-time-v0.10.0_GH0.tar.gz) = 12489
+SHA256 (golang-tools-v0.22.0_GH0.tar.gz) = ae80020fa6994e1e112478eb4fc3aefcf9b21500c6e2ef5c5b3bdbb3f8943f13
+SIZE (golang-tools-v0.22.0_GH0.tar.gz) = 3853706
+SHA256 (google-go-querystring-v1.1.0_GH0.tar.gz) = a5641dee688eb2c733608ce5a88d8181c93ad9f5083fd97fadbccb91afad9a56
+SIZE (google-go-querystring-v1.1.0_GH0.tar.gz) = 10423
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 312697d0bf6e6bb44e66a94b2a8a07955edf89af10b09e69b5a9101d30ad5149
+SIZE (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 23860
+SHA256 (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = aa86d00b6836345eee196c13df2df084a18e0b1159935de9289f2ef6a7fe375d
+SIZE (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = 128861
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 18be5b31baa80cef0f6ab83dc3022d1de96e3025011e4e290ff066a834913900
+SIZE (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 3163
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (lukechampine-upnp-v0.3.0_GH0.tar.gz) = e0911c0bf4acf197b3d5793259b2734d01d00dea93829845ee7a7de5cdd6e517
+SIZE (lukechampine-upnp-v0.3.0_GH0.tar.gz) = 5880
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 8816ec8c7f799e553442ddb686238ddffe28f843a576757ee2e7d491ea72117b
+SIZE (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 609138
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (rogpeppe-go-internal-v1.12.0_GH0.tar.gz) = b51d588d05f3e82d3045545ef46bd758a0610b9cfde1ae243489a593908b6060
+SIZE (rogpeppe-go-internal-v1.12.0_GH0.tar.gz) = 116899
+SHA256 (shopspring-decimal-v1.4.0_GH0.tar.gz) = 6ddc6bc4e94a0b3a8366bdd5674b4c2890faca1171afc3f7d20aec95e2c8d413
+SIZE (shopspring-decimal-v1.4.0_GH0.tar.gz) = 53681
+SHA256 (uber-go-goleak-v1.3.0_GH0.tar.gz) = 4813e7694736f4d7fd1aad195d942f40ffca448c29bff3282ba6e92eaba4e0cd
+SIZE (uber-go-goleak-v1.3.0_GH0.tar.gz) = 20057
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/hostd/files/hostd.conf.in b/net-p2p/hostd/files/hostd.conf.in
new file mode 100644
index 000000000000..4ca23bdb1227
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/hostd.log 600 20 * @T00 J /var/run/hostd.pid
diff --git a/net-p2p/hostd/files/hostd.in b/net-p2p/hostd/files/hostd.in
new file mode 100644
index 000000000000..e2cf08e5a730
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: hostd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# hostd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# hostd_config (path): Set to %%PREFIX%%/etc/hostd.yml
+# by default.
+
+. /etc/rc.subr
+
+name=hostd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${hostd_enable:=NO}
+: ${hostd_executable:="%%PREFIX%%/bin/hostd"}
+: ${hostd_config:="%%PREFIX%%/etc/hostd.yml"}
+
+hostd_env="HOSTD_CONFIG_FILE=${hostd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${hostd_executable}\""
+
+
+run_rc_command "$1"
diff --git a/net-p2p/hostd/files/hostd.yml.in b/net-p2p/hostd/files/hostd.yml.in
new file mode 100644
index 000000000000..1fb278d68209
--- /dev/null
+++ b/net-p2p/hostd/files/hostd.yml.in
@@ -0,0 +1,30 @@
+directory: /var/db/hostd
+recoveryPhrase: indicate nature buzz route rude embody engage confirm aspect potato weapon bid
+autoOpenWebUI: true
+http:
+ address: :9980
+ password: sia is cool
+syncer:
+ address: :9981
+ bootstrap: true
+consensus:
+ network: mainnet
+ indexBatchSize: 100
+explorer:
+ url: https://api.siascan.com
+rhp2:
+ address: :9982
+rhp3:
+ tcp: :9983
+log:
+ level: info # global log level
+ stdout:
+ enabled: true # enable logging to stdout
+ level: info # log level for console logger
+ format: human # log format (human, json)
+ enableANSI: false # enable ANSI color codes (disabled on Windows)
+ file:
+ enabled: false # enable logging to file
+ level: info # log level for file logger
+ path: /var/log/hostd.log # the path of the log file
+ format: json # log format (human, json)
diff --git a/net-p2p/hostd/files/patch-build_meta.go b/net-p2p/hostd/files/patch-build_meta.go
new file mode 100644
index 000000000000..daf356fdda06
--- /dev/null
+++ b/net-p2p/hostd/files/patch-build_meta.go
@@ -0,0 +1,15 @@
+--- build/meta.go.orig 2025-02-24 21:26:07 UTC
++++ build/meta.go
+@@ -1,7 +1,9 @@
++// Code generated by go generate; DO NOT EDIT.
++// This file was generated by go generate at 2025-03-10T13:09:09+01:00.
+ package build
+
+ const (
+- commit = "?"
+- version = "2.0.0"
+- buildTime = 0
++ commit = "4094916"
++ version = "v2.0.4"
++ buildTime = %%BUILDTIME%%
+ )
diff --git a/net-p2p/hostd/files/patch-vendor_modules.txt b/net-p2p/hostd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..8a8239e2be0f
--- /dev/null
+++ b/net-p2p/hostd/files/patch-vendor_modules.txt
@@ -0,0 +1,290 @@
+--- vendor/modules.txt.orig 2025-03-12 12:08:29 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,287 @@
++# github.com/aws/aws-sdk-go v1.55.6
++## explicit; go 1.19
++github.com/aws/aws-sdk-go/aws
++github.com/aws/aws-sdk-go/aws/auth/bearer
++github.com/aws/aws-sdk-go/aws/awserr
++github.com/aws/aws-sdk-go/aws/awsutil
++github.com/aws/aws-sdk-go/aws/client
++github.com/aws/aws-sdk-go/aws/client/metadata
++github.com/aws/aws-sdk-go/aws/corehandlers
++github.com/aws/aws-sdk-go/aws/credentials
++github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
++github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
++github.com/aws/aws-sdk-go/aws/credentials/processcreds
++github.com/aws/aws-sdk-go/aws/credentials/ssocreds
++github.com/aws/aws-sdk-go/aws/credentials/stscreds
++github.com/aws/aws-sdk-go/aws/csm
++github.com/aws/aws-sdk-go/aws/defaults
++github.com/aws/aws-sdk-go/aws/ec2metadata
++github.com/aws/aws-sdk-go/aws/endpoints
++github.com/aws/aws-sdk-go/aws/request
++github.com/aws/aws-sdk-go/aws/session
++github.com/aws/aws-sdk-go/aws/signer/v4
++github.com/aws/aws-sdk-go/internal/context
++github.com/aws/aws-sdk-go/internal/ini
++github.com/aws/aws-sdk-go/internal/sdkio
++github.com/aws/aws-sdk-go/internal/sdkmath
++github.com/aws/aws-sdk-go/internal/sdkrand
++github.com/aws/aws-sdk-go/internal/sdkuri
++github.com/aws/aws-sdk-go/internal/shareddefaults
++github.com/aws/aws-sdk-go/internal/strings
++github.com/aws/aws-sdk-go/internal/sync/singleflight
++github.com/aws/aws-sdk-go/private/protocol
++github.com/aws/aws-sdk-go/private/protocol/json/jsonutil
++github.com/aws/aws-sdk-go/private/protocol/jsonrpc
++github.com/aws/aws-sdk-go/private/protocol/query
++github.com/aws/aws-sdk-go/private/protocol/query/queryutil
++github.com/aws/aws-sdk-go/private/protocol/rest
++github.com/aws/aws-sdk-go/private/protocol/restjson
++github.com/aws/aws-sdk-go/private/protocol/restxml
++github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
++github.com/aws/aws-sdk-go/service/route53
++github.com/aws/aws-sdk-go/service/sso
++github.com/aws/aws-sdk-go/service/sso/ssoiface
++github.com/aws/aws-sdk-go/service/ssooidc
++github.com/aws/aws-sdk-go/service/sts
++github.com/aws/aws-sdk-go/service/sts/stsiface
++# github.com/cloudflare/cloudflare-go v0.115.0
++## explicit; go 1.21
++github.com/cloudflare/cloudflare-go
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/goccy/go-json v0.10.5
++## explicit; go 1.19
++github.com/goccy/go-json
++github.com/goccy/go-json/internal/decoder
++github.com/goccy/go-json/internal/encoder
++github.com/goccy/go-json/internal/encoder/vm
++github.com/goccy/go-json/internal/encoder/vm_color
++github.com/goccy/go-json/internal/encoder/vm_color_indent
++github.com/goccy/go-json/internal/encoder/vm_indent
++github.com/goccy/go-json/internal/errors
++github.com/goccy/go-json/internal/runtime
++# github.com/google/go-querystring v1.1.0
++## explicit; go 1.10
++github.com/google/go-querystring/query
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/hashicorp/golang-lru/v2 v2.0.7
++## explicit; go 1.18
++github.com/hashicorp/golang-lru/v2
++github.com/hashicorp/golang-lru/v2/internal
++github.com/hashicorp/golang-lru/v2/simplelru
++# github.com/jmespath/go-jmespath v0.4.0
++## explicit; go 1.14
++github.com/jmespath/go-jmespath
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.49.0
++## explicit; go 1.22
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/qtls
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# github.com/rogpeppe/go-internal v1.12.0
++## explicit; go 1.20
++# github.com/shopspring/decimal v1.4.0
++## explicit; go 1.10
++github.com/shopspring/decimal
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.1
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v3
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.11.1
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.3.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/hostd v0.58.0
++## explicit; go 1.23.0
++go.sia.tech/web/hostd
++# go.uber.org/goleak v1.3.0
++## explicit; go 1.20
++go.uber.org/goleak
++go.uber.org/goleak/internal/stack
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/internal/ztest
++go.uber.org/zap/zapcore
++go.uber.org/zap/zaptest
++# golang.org/x/crypto v0.33.0
++## explicit; go 1.20
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.18.0
++## explicit; go 1.18
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/time v0.10.0
++## explicit; go 1.18
++golang.org/x/time/rate
++# golang.org/x/tools v0.22.0
++## explicit; go 1.19
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/internal/packagesdriver
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/tokeninternal
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v2 v2.4.0
++## explicit; go 1.15
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/flagg v1.1.1
++## explicit; go 1.12
++lukechampine.com/flagg
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
++# lukechampine.com/upnp v0.3.0
++## explicit; go 1.17
++lukechampine.com/upnp
++lukechampine.com/upnp/internal/goupnp
diff --git a/net-p2p/hostd/pkg-descr b/net-p2p/hostd/pkg-descr
new file mode 100644
index 000000000000..571348715619
--- /dev/null
+++ b/net-p2p/hostd/pkg-descr
@@ -0,0 +1,8 @@
+hostd is an advanced Sia host solution created by the Sia Foundation,
+designed to enhance the experience for storage providers within the
+Sia network. Tailored for both individual and large-scale storage
+providers, hostd boasts a user-friendly interface and a robust API,
+empowering providers to efficiently manage their storage resources and
+revenue. hostd incorporates an embedded web-UI, simplifying deployment
+and enabling remote management capabilities, ensuring a smooth user
+experience across a diverse range of devices.
diff --git a/net-p2p/hostd/pkg-message b/net-p2p/hostd/pkg-message
new file mode 100644
index 000000000000..726e6c1a133e
--- /dev/null
+++ b/net-p2p/hostd/pkg-message
@@ -0,0 +1,9 @@
+[
+{ type: install
+ message: <<EOM
+The program hostd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc hostd_enable="YES"
+EOM
+}
+]
diff --git a/net-p2p/renterd/Makefile b/net-p2p/renterd/Makefile
new file mode 100644
index 000000000000..26b25a850549
--- /dev/null
+++ b/net-p2p/renterd/Makefile
@@ -0,0 +1,96 @@
+PORTNAME= renterd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.1
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Rent storage space on the Sia network
+WWW= https://sia.tech/renterd
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+
+USE_RC_SUBR= renterd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/renterd
+GO_BUILDFLAGS+= -tags='netgo'
+
+GH_TUPLE= FiloSottile:edwards25519:v1.1.0:filosottile_edwards25519/vendor/filippo.io/edwards25519 \
+ SiaFoundation:core:v0.10.3:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:362f2554d5ca:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:gofakes3:v0.0.5:siafoundation_gofakes3/vendor/go.sia.tech/gofakes3 \
+ SiaFoundation:hostd:c17f8d0bcfae:siafoundation_hostd/vendor/go.sia.tech/hostd \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.4.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:renterd/v0.77.0:siafoundation_web_1/vendor/go.sia.tech/web/renterd \
+ aws:aws-sdk-go:v1.55.6:aws_aws_sdk_go/vendor/github.com/aws/aws-sdk-go \
+ cloudflare:cloudflare-go:v0.115.0:cloudflare_cloudflare_go/vendor/github.com/cloudflare/cloudflare-go \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ gabriel-vasile:mimetype:v1.4.8:gabriel_vasile_mimetype/vendor/github.com/gabriel-vasile/mimetype \
+ go-sql-driver:mysql:v1.9.0:go_sql_driver_mysql/vendor/github.com/go-sql-driver/mysql \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
+ goccy:go-json:v0.10.5:goccy_go_json/vendor/github.com/goccy/go-json \
+ golang:crypto:v0.35.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.22.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:time:v0.10.0:golang_time/vendor/golang.org/x/time \
+ golang:tools:v0.28.0:golang_tools/vendor/golang.org/x/tools \
+ google:go-cmp:v0.7.0:google_go_cmp/vendor/github.com/google/go-cmp \
+ google:go-querystring:v1.1.0:google_go_querystring/vendor/github.com/google/go-querystring \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ gotd:contrib:v0.21.0:gotd_contrib/vendor/github.com/gotd/contrib \
+ hashicorp:golang-lru:v2.0.7:hashicorp_golang_lru_v2/vendor/github.com/hashicorp/golang-lru/v2 \
+ jmespath:go-jmespath:v0.4.0:jmespath_go_jmespath/vendor/github.com/jmespath/go-jmespath \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ klauspost:cpuid:v2.2.9:klauspost_cpuid_v2/vendor/github.com/klauspost/cpuid/v2 \
+ klauspost:reedsolomon:v1.12.4:klauspost_reedsolomon/vendor/github.com/klauspost/reedsolomon \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ montanaflynn:stats:v0.7.1:montanaflynn_stats/vendor/github.com/montanaflynn/stats \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.50.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ ryszard:goskiplist:2dfbae5fcf46:ryszard_goskiplist/vendor/github.com/ryszard/goskiplist \
+ shabbyrobe:gocovmerge:c3350d9342df:shabbyrobe_gocovmerge/vendor/github.com/shabbyrobe/gocovmerge \
+ shopspring:decimal:v1.4.0:shopspring_decimal/vendor/github.com/shopspring/decimal \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample etc/newsyslog.conf.d/renterd.conf.sample" \
+ "@sample etc/renterd.yml.sample" \
+ bin/renterd
+
+SUB_FILES= ${PORTNAME}.conf ${PORTNAME}.yml
+
+SUB_LIST= GROUPS=${GROUPS} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/renterd/distinfo b/net-p2p/renterd/distinfo
new file mode 100644
index 000000000000..6fba9a924743
--- /dev/null
+++ b/net-p2p/renterd/distinfo
@@ -0,0 +1,101 @@
+TIMESTAMP = 1741782335
+SHA256 (SiaFoundation-renterd-v2.0.1_GH0.tar.gz) = f8a0074483dd905539425b8d9e68eb603e2710124f8b9e3a2e4b0d66f56d9021
+SIZE (SiaFoundation-renterd-v2.0.1_GH0.tar.gz) = 479158
+SHA256 (FiloSottile-edwards25519-v1.1.0_GH0.tar.gz) = b480c71e26d7a65e468a4f0cc2a414302dc89c6be4e58fe34779b0c9f12cac60
+SIZE (FiloSottile-edwards25519-v1.1.0_GH0.tar.gz) = 47125
+SHA256 (SiaFoundation-core-v0.10.3_GH0.tar.gz) = a21772d9b0a1d66c2c0022a0a644aa4d18fe72d21bb40254bf7bd5b9aebe5339
+SIZE (SiaFoundation-core-v0.10.3_GH0.tar.gz) = 152486
+SHA256 (SiaFoundation-coreutils-362f2554d5ca_GH0.tar.gz) = 92aea63e1cadab97a32f25c2619ce21fe74b4000903870301cc7f5eab7c41218
+SIZE (SiaFoundation-coreutils-362f2554d5ca_GH0.tar.gz) = 103497
+SHA256 (SiaFoundation-gofakes3-v0.0.5_GH0.tar.gz) = b8ce8e3c2db00f7486db1d13c13688cb3bd14420df43a0e6f8b1aae828f95b15
+SIZE (SiaFoundation-gofakes3-v0.0.5_GH0.tar.gz) = 288336
+SHA256 (SiaFoundation-hostd-c17f8d0bcfae_GH0.tar.gz) = c02f77deebffb09b8061655d676a1414c6b131140d2d814d2a32d15ba31c430b
+SIZE (SiaFoundation-hostd-c17f8d0bcfae_GH0.tar.gz) = 251575
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.4.0_GH0.tar.gz) = 36d408992c89a1b60ede9bdaf1fb65d6022b45212ad1e336b7ed931f719e7209
+SIZE (SiaFoundation-mux-v1.4.0_GH0.tar.gz) = 28746
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-renterd-v0.77.0_GH0.tar.gz) = 892947e3de4aab0b75bc95e9fb8e20c52c31feaddd6697de1a3b46815b815314
+SIZE (SiaFoundation-web-renterd-v0.77.0_GH0.tar.gz) = 27986823
+SHA256 (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = ae51032a0575b798a24670ec1f006dcd7dc0804c7131f4061887df96f7d114c5
+SIZE (aws-aws-sdk-go-v1.55.6_GH0.tar.gz) = 33373600
+SHA256 (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = b82c3ed62a37aee5359b31822a4152c06b019ce43ba623f2ef7d7664bb27cffb
+SIZE (cloudflare-cloudflare-go-v0.115.0_GH0.tar.gz) = 517339
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (gabriel-vasile-mimetype-v1.4.8_GH0.tar.gz) = 678759ccc452e15a3b58a65c7a9020ededb67f1de338d28491de5dc8c6de0ede
+SIZE (gabriel-vasile-mimetype-v1.4.8_GH0.tar.gz) = 811575
+SHA256 (go-sql-driver-mysql-v1.9.0_GH0.tar.gz) = 35da5ec9c4822c8aa0b36c6455e66989c33aa28c151981df65636d85d7152e4f
+SIZE (go-sql-driver-mysql-v1.9.0_GH0.tar.gz) = 109086
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (goccy-go-json-v0.10.5_GH0.tar.gz) = 15a6994e238a3d520816d53eacd115e6d3fd0816e570e8ae79f3a8fcf74616aa
+SIZE (goccy-go-json-v0.10.5_GH0.tar.gz) = 399031
+SHA256 (golang-crypto-v0.35.0_GH0.tar.gz) = c2d7dae8adb272567d5d9cc0c5f8566ca210b149149a4f790f25a6eef7731a2b
+SIZE (golang-crypto-v0.35.0_GH0.tar.gz) = 1841173
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.22.0_GH0.tar.gz) = 851bd2d05101f3592bd7331119af938300cd5f134ca0222a01bf5db773733ff1
+SIZE (golang-mod-v0.22.0_GH0.tar.gz) = 125874
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-time-v0.10.0_GH0.tar.gz) = 4c04f20b8d5cac372d97e350ecb652ba2434c019cbb9e89dfeb1a0049b414cf6
+SIZE (golang-time-v0.10.0_GH0.tar.gz) = 12489
+SHA256 (golang-tools-v0.28.0_GH0.tar.gz) = 2c0aa55c1748ba406eec2db21bf44ebec62b1d5812b6ba350b5d421af1544adb
+SIZE (golang-tools-v0.28.0_GH0.tar.gz) = 7452244
+SHA256 (google-go-cmp-v0.7.0_GH0.tar.gz) = c98f4f998ad8134b26816500b5c4c5cd6329905c0610b0c1f031efe7fbb469af
+SIZE (google-go-cmp-v0.7.0_GH0.tar.gz) = 105149
+SHA256 (google-go-querystring-v1.1.0_GH0.tar.gz) = a5641dee688eb2c733608ce5a88d8181c93ad9f5083fd97fadbccb91afad9a56
+SIZE (google-go-querystring-v1.1.0_GH0.tar.gz) = 10423
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (gotd-contrib-v0.21.0_GH0.tar.gz) = 6ef78b51dd6fcc378091855736d5dc3d07f480e138c6342c8a7f514480100c66
+SIZE (gotd-contrib-v0.21.0_GH0.tar.gz) = 58368
+SHA256 (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 312697d0bf6e6bb44e66a94b2a8a07955edf89af10b09e69b5a9101d30ad5149
+SIZE (hashicorp-golang-lru-v2.0.7_GH0.tar.gz) = 23860
+SHA256 (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = aa86d00b6836345eee196c13df2df084a18e0b1159935de9289f2ef6a7fe375d
+SIZE (jmespath-go-jmespath-v0.4.0_GH0.tar.gz) = 128861
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (klauspost-cpuid-v2.2.9_GH0.tar.gz) = d0aa17338c623af41fe17bb542ebaac5313a56c5f0a400577ee89319d054b4ca
+SIZE (klauspost-cpuid-v2.2.9_GH0.tar.gz) = 668327
+SHA256 (klauspost-reedsolomon-v1.12.4_GH0.tar.gz) = 24045381a4c36cbe2176edcdfb2ead0a5d498b6bf4f021db4503df50546d6a2a
+SIZE (klauspost-reedsolomon-v1.12.4_GH0.tar.gz) = 571323
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (montanaflynn-stats-v0.7.1_GH0.tar.gz) = 97e9258173992d3caee6f7d7ac175d559dfc086388ad6c65fde439b808e1b725
+SIZE (montanaflynn-stats-v0.7.1_GH0.tar.gz) = 52136
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.50.0_GH0.tar.gz) = 5d5f061777823de7e8108c639c00724086449335e73d863352118e861e01cc8d
+SIZE (quic-go-quic-go-v0.50.0_GH0.tar.gz) = 618203
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (ryszard-goskiplist-2dfbae5fcf46_GH0.tar.gz) = 7749ec2dc1d5c16fbefc70080357ee123e6b25210cebce40e66bfa1a3cc6dc01
+SIZE (ryszard-goskiplist-2dfbae5fcf46_GH0.tar.gz) = 13876
+SHA256 (shabbyrobe-gocovmerge-c3350d9342df_GH0.tar.gz) = 0352ebd52d40a02380d4654ac892bd1386fb30f2663c296f57f718384ac83f41
+SIZE (shabbyrobe-gocovmerge-c3350d9342df_GH0.tar.gz) = 3366
+SHA256 (shopspring-decimal-v1.4.0_GH0.tar.gz) = 6ddc6bc4e94a0b3a8366bdd5674b4c2890faca1171afc3f7d20aec95e2c8d413
+SIZE (shopspring-decimal-v1.4.0_GH0.tar.gz) = 53681
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/renterd/files/patch-build_meta.go b/net-p2p/renterd/files/patch-build_meta.go
new file mode 100644
index 000000000000..020805bcfd32
--- /dev/null
+++ b/net-p2p/renterd/files/patch-build_meta.go
@@ -0,0 +1,22 @@
+--- build/meta.go.orig 2025-03-11 14:55:31 UTC
++++ build/meta.go
+@@ -1,5 +1,5 @@
+ // Code generated by go generate; DO NOT EDIT.
+-// This file was generated by go generate at 2024-08-12T08:54:43-07:00.
++// This file was generated by go generate at 2025-03-11T15:05:35+01:00.
+ package build
+
+ //go:generate go run gen.go
+@@ -9,9 +9,9 @@ const (
+ )
+
+ const (
+- commit = "?"
+- version = "?"
+- buildTime = 0
++ commit = "ec7e9c70"
++ version = "v2.0.1"
++ buildTime = %%BUILDTIME%%
+ )
+
+ // Commit returns the commit hash of hostd
diff --git a/net-p2p/renterd/files/patch-vendor_modules.txt b/net-p2p/renterd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..10189f0f3bbf
--- /dev/null
+++ b/net-p2p/renterd/files/patch-vendor_modules.txt
@@ -0,0 +1,351 @@
+--- vendor/modules.txt.orig 2025-03-12 12:29:21 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,348 @@
++# filippo.io/edwards25519 v1.1.0
++## explicit; go 1.20
++filippo.io/edwards25519
++filippo.io/edwards25519/field
++# github.com/aws/aws-sdk-go v1.55.6
++## explicit; go 1.19
++github.com/aws/aws-sdk-go/aws
++github.com/aws/aws-sdk-go/aws/arn
++github.com/aws/aws-sdk-go/aws/auth/bearer
++github.com/aws/aws-sdk-go/aws/awserr
++github.com/aws/aws-sdk-go/aws/awsutil
++github.com/aws/aws-sdk-go/aws/client
++github.com/aws/aws-sdk-go/aws/client/metadata
++github.com/aws/aws-sdk-go/aws/corehandlers
++github.com/aws/aws-sdk-go/aws/credentials
++github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds
++github.com/aws/aws-sdk-go/aws/credentials/endpointcreds
++github.com/aws/aws-sdk-go/aws/credentials/processcreds
++github.com/aws/aws-sdk-go/aws/credentials/ssocreds
++github.com/aws/aws-sdk-go/aws/credentials/stscreds
++github.com/aws/aws-sdk-go/aws/csm
++github.com/aws/aws-sdk-go/aws/defaults
++github.com/aws/aws-sdk-go/aws/ec2metadata
++github.com/aws/aws-sdk-go/aws/endpoints
++github.com/aws/aws-sdk-go/aws/request
++github.com/aws/aws-sdk-go/aws/session
++github.com/aws/aws-sdk-go/aws/signer/v4
++github.com/aws/aws-sdk-go/internal/context
++github.com/aws/aws-sdk-go/internal/ini
++github.com/aws/aws-sdk-go/internal/s3shared
++github.com/aws/aws-sdk-go/internal/s3shared/arn
++github.com/aws/aws-sdk-go/internal/s3shared/s3err
++github.com/aws/aws-sdk-go/internal/sdkio
++github.com/aws/aws-sdk-go/internal/sdkmath
++github.com/aws/aws-sdk-go/internal/sdkrand
++github.com/aws/aws-sdk-go/internal/sdkuri
++github.com/aws/aws-sdk-go/internal/shareddefaults
++github.com/aws/aws-sdk-go/internal/strings
++github.com/aws/aws-sdk-go/internal/sync/singleflight
++github.com/aws/aws-sdk-go/private/checksum
++github.com/aws/aws-sdk-go/private/protocol
++github.com/aws/aws-sdk-go/private/protocol/eventstream
++github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi
++github.com/aws/aws-sdk-go/private/protocol/json/jsonutil
++github.com/aws/aws-sdk-go/private/protocol/jsonrpc
++github.com/aws/aws-sdk-go/private/protocol/query
++github.com/aws/aws-sdk-go/private/protocol/query/queryutil
++github.com/aws/aws-sdk-go/private/protocol/rest
++github.com/aws/aws-sdk-go/private/protocol/restjson
++github.com/aws/aws-sdk-go/private/protocol/restxml
++github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil
++github.com/aws/aws-sdk-go/service/route53
++github.com/aws/aws-sdk-go/service/s3
++github.com/aws/aws-sdk-go/service/sso
++github.com/aws/aws-sdk-go/service/sso/ssoiface
++github.com/aws/aws-sdk-go/service/ssooidc
++github.com/aws/aws-sdk-go/service/sts
++github.com/aws/aws-sdk-go/service/sts/stsiface
++# github.com/cloudflare/cloudflare-go v0.115.0
++## explicit; go 1.21
++github.com/cloudflare/cloudflare-go
++# github.com/gabriel-vasile/mimetype v1.4.8
++## explicit; go 1.20
++github.com/gabriel-vasile/mimetype
++github.com/gabriel-vasile/mimetype/internal/charset
++github.com/gabriel-vasile/mimetype/internal/json
++github.com/gabriel-vasile/mimetype/internal/magic
++# github.com/go-sql-driver/mysql v1.9.0
++## explicit; go 1.21
++github.com/go-sql-driver/mysql
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/goccy/go-json v0.10.5
++## explicit; go 1.19
++github.com/goccy/go-json
++github.com/goccy/go-json/internal/decoder
++github.com/goccy/go-json/internal/encoder
++github.com/goccy/go-json/internal/encoder/vm
++github.com/goccy/go-json/internal/encoder/vm_color
++github.com/goccy/go-json/internal/encoder/vm_color_indent
++github.com/goccy/go-json/internal/encoder/vm_indent
++github.com/goccy/go-json/internal/errors
++github.com/goccy/go-json/internal/runtime
++# github.com/google/go-cmp v0.7.0
++## explicit; go 1.21
++github.com/google/go-cmp/cmp
++github.com/google/go-cmp/cmp/cmpopts
++github.com/google/go-cmp/cmp/internal/diff
++github.com/google/go-cmp/cmp/internal/flags
++github.com/google/go-cmp/cmp/internal/function
++github.com/google/go-cmp/cmp/internal/value
++# github.com/google/go-querystring v1.1.0
++## explicit; go 1.10
++github.com/google/go-querystring/query
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/gotd/contrib v0.21.0
++## explicit; go 1.22
++github.com/gotd/contrib/http_range
++# github.com/hashicorp/golang-lru/v2 v2.0.7
++## explicit; go 1.18
++github.com/hashicorp/golang-lru/v2
++github.com/hashicorp/golang-lru/v2/internal
++github.com/hashicorp/golang-lru/v2/simplelru
++# github.com/jmespath/go-jmespath v0.4.0
++## explicit; go 1.14
++github.com/jmespath/go-jmespath
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/klauspost/cpuid/v2 v2.2.9
++## explicit; go 1.20
++github.com/klauspost/cpuid/v2
++# github.com/klauspost/reedsolomon v1.12.4
++## explicit; go 1.21
++github.com/klauspost/reedsolomon
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/montanaflynn/stats v0.7.1
++## explicit; go 1.13
++github.com/montanaflynn/stats
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.50.0
++## explicit; go 1.23
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46
++## explicit
++github.com/ryszard/goskiplist/skiplist
++# github.com/shabbyrobe/gocovmerge v0.0.0-20230507112040-c3350d9342df
++## explicit; go 1.12
++github.com/shabbyrobe/gocovmerge
++# github.com/shopspring/decimal v1.4.0
++## explicit; go 1.10
++github.com/shopspring/decimal
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.3
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v3
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.12.1-0.20250306145921-362f2554d5ca
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/rhp/v4/quic
++go.sia.tech/coreutils/rhp/v4/siamux
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/gofakes3 v0.0.5
++## explicit; go 1.21
++go.sia.tech/gofakes3
++go.sia.tech/gofakes3/internal/goskipiter
++go.sia.tech/gofakes3/signature
++# go.sia.tech/hostd v1.1.3-0.20250225054618-c17f8d0bcfae
++## explicit; go 1.23.1
++go.sia.tech/hostd/alerts
++go.sia.tech/hostd/build
++go.sia.tech/hostd/host/accounts
++go.sia.tech/hostd/host/contracts
++go.sia.tech/hostd/host/metrics
++go.sia.tech/hostd/host/registry
++go.sia.tech/hostd/host/settings
++go.sia.tech/hostd/host/settings/pin
++go.sia.tech/hostd/host/storage
++go.sia.tech/hostd/index
++go.sia.tech/hostd/internal/ddns
++go.sia.tech/hostd/internal/ddns/providers/cloudflare
++go.sia.tech/hostd/internal/ddns/providers/duckdns
++go.sia.tech/hostd/internal/ddns/providers/noip
++go.sia.tech/hostd/internal/ddns/providers/route53
++go.sia.tech/hostd/internal/threadgroup
++go.sia.tech/hostd/persist/sqlite
++go.sia.tech/hostd/rhp
++go.sia.tech/hostd/rhp/v2
++go.sia.tech/hostd/rhp/v3
++go.sia.tech/hostd/webhooks
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.4.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/renterd v0.77.0
++## explicit; go 1.23.0
++go.sia.tech/web/renterd
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/zapcore
++# golang.org/x/crypto v0.35.0
++## explicit; go 1.23.0
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.22.0
++## explicit; go 1.22.0
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/html
++golang.org/x/net/html/atom
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/time v0.10.0
++## explicit; go 1.18
++golang.org/x/time/rate
++# golang.org/x/tools v0.28.0
++## explicit; go 1.22.0
++golang.org/x/tools/cover
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/modindex
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
diff --git a/net-p2p/renterd/files/renterd.conf.in b/net-p2p/renterd/files/renterd.conf.in
new file mode 100644
index 000000000000..4da9b08d3f57
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/renterd.log 600 20 * @T00 J /var/run/renterd.pid
diff --git a/net-p2p/renterd/files/renterd.in b/net-p2p/renterd/files/renterd.in
new file mode 100644
index 000000000000..40736409543f
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: renterd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# renterd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# renterd_config (path): Set to %%PREFIX%%/etc/renterd.yml
+# by default.
+
+. /etc/rc.subr
+
+name=renterd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${renterd_enable:=NO}
+: ${renterd_executable:="%%PREFIX%%/bin/renterd"}
+: ${renterd_config:="%%PREFIX%%/etc/renterd.yml"}
+
+renterd_env="RENTERD_CONFIG_FILE=${renterd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${renterd_executable}\""
+
+
+run_rc_command "$1"
diff --git a/net-p2p/renterd/files/renterd.yml.in b/net-p2p/renterd/files/renterd.yml.in
new file mode 100644
index 000000000000..a4b43581c8ca
--- /dev/null
+++ b/net-p2p/renterd/files/renterd.yml.in
@@ -0,0 +1,54 @@
+seed: rotation dream build introduce memorandum sphere trouble title pedestrian get conclusion large
+directory: /var/db/renterd
+shutdownTimeout: 5m0s
+log:
+ level: warn
+ stdout:
+ enabled: true
+ format: human
+ enableANSI: false
+ file:
+ enabled: false
+http:
+ address: localhost:9980
+ password: sia is cool
+bus:
+ announcementMaxAgeHours: 8736
+ bootstrap: true
+ gatewayAddr: :9981
+ persistInterval: 1m0s
+ usedUtxoExpiry: 24h0m0s
+ slabBufferCompleionThreshold: 4096
+worker:
+ enabled: true
+ id: worker
+ busFlushInterval: 5s
+ contractLockTimeout: 30s
+ downloadOverdriveTimeout: 3s
+ uploadOverdriveTimeout: 3s
+ downloadMaxOverdrive: 5
+ downloadMaxMemory: 1073741824
+ uploadMaxMemory: 1073741824
+ uploadMaxOverdrive: 5
+s3:
+ address: localhost:8080
+ enabled: true
+autopilot:
+ enabled: true
+ accountsRefillInterval: 10s
+ heartbeat: 30m0s
+ migrationHealthCutoff: 0.75
+ revisionBroadcastInterval: 168h0m0s
+ revisionSubmissionBuffer: 144
+ scannerInterval: 24h0m0s
+ scannerBatchSize: 1000
+ scannerNumThreads: 100
+ migratorParallelSlabsPerWorker: 1
+database:
+ log:
+ ignoreRecordNotFoundError: true
+ slowThreshold: 100ms
+ mysql:
+ user: renterd
+ database: renterd
+ metricsDatabase: renterd_metrics
diff --git a/net-p2p/renterd/pkg-descr b/net-p2p/renterd/pkg-descr
new file mode 100644
index 000000000000..89ca14935daa
--- /dev/null
+++ b/net-p2p/renterd/pkg-descr
@@ -0,0 +1,4 @@
+renterd is an advanced Sia renter engineered by the Sia
+Foundation. Designed to cater to both casual users seeking
+straightforward data storage and developers requiring a robust API for
+building apps on Sia.
diff --git a/net-p2p/renterd/pkg-message b/net-p2p/renterd/pkg-message
new file mode 100644
index 000000000000..fcc1957b94a5
--- /dev/null
+++ b/net-p2p/renterd/pkg-message
@@ -0,0 +1,9 @@
+[
+{ type: install
+ message: <<EOM
+The program renterd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc renterd_enable="YES"
+EOM
+}
+]
diff --git a/net-p2p/walletd/Makefile b/net-p2p/walletd/Makefile
new file mode 100644
index 000000000000..ddbacaedc44e
--- /dev/null
+++ b/net-p2p/walletd/Makefile
@@ -0,0 +1,79 @@
+PORTNAME= walletd
+DISTVERSIONPREFIX= v
+DISTVERSION= 2.0.0
+
+CATEGORIES= net-p2p
+
+MAINTAINER= bruno@tinkerbox.org
+COMMENT= Official Sia Wallet
+WWW= https://sia.tech/software/walletd
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS= armv6 armv7 i386 mips powerpc powerpcspe
+NOT_FOR_ARCHS_REASON= requires 64-bit architecture
+
+USES= go:1.23,modules
+USE_RC_SUBR= walletd
+
+USE_GITHUB= yes
+GH_ACCOUNT= SiaFoundation
+GO_TARGET= ./cmd/walletd
+GO_BUILDFLAGS+= -tags='netgo timetzdata'
+
+GH_TUPLE= SiaFoundation:core:v0.10.1:siafoundation_core/vendor/go.sia.tech/core \
+ SiaFoundation:coreutils:v0.11.1:siafoundation_coreutils/vendor/go.sia.tech/coreutils \
+ SiaFoundation:jape:v0.12.1:siafoundation_jape/vendor/go.sia.tech/jape \
+ SiaFoundation:mux:v1.3.0:siafoundation_mux/vendor/go.sia.tech/mux \
+ SiaFoundation:web:5611d44a533e:siafoundation_web/vendor/go.sia.tech/web \
+ SiaFoundation:web:walletd/v0.29.0:siafoundation_web_1/vendor/go.sia.tech/web/walletd \
+ etcd-io:bbolt:v1.4.0:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
+ go-task:slim-sprig:52ccab3ef572:go_task_slim_sprig/vendor/github.com/go-task/slim-sprig \
+ go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
+ golang:crypto:v0.33.0:golang_crypto/vendor/golang.org/x/crypto \
+ golang:exp:9bf2ced13842:golang_exp/vendor/golang.org/x/exp \
+ golang:mod:v0.18.0:golang_mod/vendor/golang.org/x/mod \
+ golang:net:v0.34.0:golang_net/vendor/golang.org/x/net \
+ golang:sync:v0.11.0:golang_sync/vendor/golang.org/x/sync \
+ golang:sys:v0.30.0:golang_sys/vendor/golang.org/x/sys \
+ golang:term:v0.29.0:golang_term/vendor/golang.org/x/term \
+ golang:text:v0.22.0:golang_text/vendor/golang.org/x/text \
+ golang:tools:v0.22.0:golang_tools/vendor/golang.org/x/tools \
+ google:pprof:407c9e7a662f:google_pprof/vendor/github.com/google/pprof \
+ julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
+ lukechampine:flagg:v1.1.1:lukechampine_flagg/vendor/lukechampine.com/flagg \
+ lukechampine:frand:v1.5.1:lukechampine_frand/vendor/lukechampine.com/frand \
+ lukechampine:upnp:v0.3.0:lukechampine_upnp/vendor/lukechampine.com/upnp \
+ mattn:go-sqlite3:v1.14.24:mattn_go_sqlite3/vendor/github.com/mattn/go-sqlite3 \
+ onsi:ginkgo:v2.12.0:onsi_ginkgo_v2/vendor/github.com/onsi/ginkgo/v2 \
+ quic-go:qpack:v0.5.1:quic_go_qpack/vendor/github.com/quic-go/qpack \
+ quic-go:quic-go:v0.49.0:quic_go_quic_go/vendor/github.com/quic-go/quic-go \
+ quic-go:webtransport-go:4ac2c9250e66:quic_go_webtransport_go/vendor/github.com/quic-go/webtransport-go \
+ uber-go:mock:v0.5.0:uber_go_mock/vendor/go.uber.org/mock \
+ uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr \
+ uber-go:zap:v1.27.0:uber_go_zap/vendor/go.uber.org/zap
+
+PLIST_FILES= "@dir(${USERS},${GROUPS},750) /var/db/${PORTNAME}" \
+ "@sample(${USERS},${GROUPS},600) etc/walletd.yml.sample" \
+ "@sample etc/newsyslog.conf.d/walletd.conf.sample" \
+ bin/walletd
+
+SUB_FILES= ${PORTNAME}-syslog.conf ${PORTNAME}.conf ${PORTNAME}.yml pkg-message
+
+SUB_LIST= GROUPS=${GROUPS} \
+ PREFIX=${PREFIX} \
+ USERS=${USERS}
+
+USERS= ${PORTNAME}
+GROUPS= ${PORTNAME}
+
+post-install:
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}-syslog.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d/${PORTNAME}.conf.sample
+ ${INSTALL_DATA} ${WRKDIR}/${PORTNAME}.yml ${STAGEDIR}${PREFIX}/etc/${PORTNAME}.yml.sample
+ ${INSTALL} -d ${STAGEDIR}/var/db/${PORTNAME}
+
+pre-configure:
+ ${REINPLACE_CMD} -e "s|%%BUILDTIME%%|$$(date +%s)|g" ${WRKSRC}/build/meta.go
+
+.include <bsd.port.mk>
diff --git a/net-p2p/walletd/distinfo b/net-p2p/walletd/distinfo
new file mode 100644
index 000000000000..36b2f39da2b6
--- /dev/null
+++ b/net-p2p/walletd/distinfo
@@ -0,0 +1,65 @@
+TIMESTAMP = 1741784221
+SHA256 (SiaFoundation-walletd-v2.0.0_GH0.tar.gz) = 156d225b76091ff1ca5158bcc61f54e525ac88e8a1bf8220e13636b9d2e4e22a
+SIZE (SiaFoundation-walletd-v2.0.0_GH0.tar.gz) = 98749
+SHA256 (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 5981e02ffc9533a5cf1549aef7f14639a848414e4f4ad54299b19b337bc29527
+SIZE (SiaFoundation-core-v0.10.1_GH0.tar.gz) = 150928
+SHA256 (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = f8331816cba3e36607fa96a66588acc2ed230a19ec900604dd24b33a72509d39
+SIZE (SiaFoundation-coreutils-v0.11.1_GH0.tar.gz) = 99325
+SHA256 (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = da107f48dd9ebef33c53cdcc2f136a59f42ad268758424e0e5a6e256e2b44c15
+SIZE (SiaFoundation-jape-v0.12.1_GH0.tar.gz) = 10276
+SHA256 (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = d1297bc70bad3006e1381b4ef9e824823319ef785dc211b38ab1d72f869cc94b
+SIZE (SiaFoundation-mux-v1.3.0_GH0.tar.gz) = 28529
+SHA256 (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = af0fbbedf6d271bf5a7e0fcf6ee942fd39fd39ffffbffc06ad10ae3b89e91eb6
+SIZE (SiaFoundation-web-5611d44a533e_GH0.tar.gz) = 27541708
+SHA256 (SiaFoundation-web-walletd-v0.29.0_GH0.tar.gz) = 1a0d08bdc8ad35e6aa044b5ee267f01203da4a88c3ffed9aab399ac250b7bb47
+SIZE (SiaFoundation-web-walletd-v0.29.0_GH0.tar.gz) = 27986796
+SHA256 (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 2b383501445b37801bf8431cb6efb41708f4623d37a0d0be0a3c1dbcdda66012
+SIZE (etcd-io-bbolt-v1.4.0_GH0.tar.gz) = 168787
+SHA256 (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 234ca4f44e68e77180301a1a6f3e0426769abefdcafb2ff80d3ffdb27512b173
+SIZE (go-task-slim-sprig-52ccab3ef572_GH0.tar.gz) = 39958
+SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
+SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
+SHA256 (golang-crypto-v0.33.0_GH0.tar.gz) = f226aebdbb44372844bb754cedd9d4f6d958cf4686db4489de970546c5860913
+SIZE (golang-crypto-v0.33.0_GH0.tar.gz) = 1840655
+SHA256 (golang-exp-9bf2ced13842_GH0.tar.gz) = 90fcc103b5927178af2d64b57d39de86d43a8bfa13cb71f4865a360cffe0f1b0
+SIZE (golang-exp-9bf2ced13842_GH0.tar.gz) = 1744262
+SHA256 (golang-mod-v0.18.0_GH0.tar.gz) = 247133e4ef1a5863af267a81c2d3f2b6e6b439f250db4e1d7e16df46d37e4d71
+SIZE (golang-mod-v0.18.0_GH0.tar.gz) = 123147
+SHA256 (golang-net-v0.34.0_GH0.tar.gz) = 3d5ec65e81b6f1d9530a3008f35722e9cf6d4905b20c19a7126f58aae515996c
+SIZE (golang-net-v0.34.0_GH0.tar.gz) = 1466242
+SHA256 (golang-sync-v0.11.0_GH0.tar.gz) = b695a9de85279f6c4bd19f3b6746c5808243470f158b6c5b637f64c4db889f8e
+SIZE (golang-sync-v0.11.0_GH0.tar.gz) = 18144
+SHA256 (golang-sys-v0.30.0_GH0.tar.gz) = 3e54dfe262f4f09341622679101c0f10935028cc945f78a97f898b2416edb1f0
+SIZE (golang-sys-v0.30.0_GH0.tar.gz) = 1523069
+SHA256 (golang-term-v0.29.0_GH0.tar.gz) = 7c9dd180502d91fc1a1af8710e2314cd64e64cfcda70d6cf518a386fd10b2487
+SIZE (golang-term-v0.29.0_GH0.tar.gz) = 14686
+SHA256 (golang-text-v0.22.0_GH0.tar.gz) = ac8bdce0477effd5a830345979626745e5e5bcb81d1a77c8029b0e8b3d621089
+SIZE (golang-text-v0.22.0_GH0.tar.gz) = 8970985
+SHA256 (golang-tools-v0.22.0_GH0.tar.gz) = ae80020fa6994e1e112478eb4fc3aefcf9b21500c6e2ef5c5b3bdbb3f8943f13
+SIZE (golang-tools-v0.22.0_GH0.tar.gz) = 3853706
+SHA256 (google-pprof-407c9e7a662f_GH0.tar.gz) = 6cd5d14f023e0e372f067e37d677cf7bf85385f15ff05a2f2a3dfc9dbb6cbe73
+SIZE (google-pprof-407c9e7a662f_GH0.tar.gz) = 4790769
+SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
+SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
+SHA256 (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 18be5b31baa80cef0f6ab83dc3022d1de96e3025011e4e290ff066a834913900
+SIZE (lukechampine-flagg-v1.1.1_GH0.tar.gz) = 3163
+SHA256 (lukechampine-frand-v1.5.1_GH0.tar.gz) = 4cbc9b5f5d08ba860ce7dd8689581b26f0241356e9b37ab109c8bc8c564f18f6
+SIZE (lukechampine-frand-v1.5.1_GH0.tar.gz) = 7591
+SHA256 (lukechampine-upnp-v0.3.0_GH0.tar.gz) = e0911c0bf4acf197b3d5793259b2734d01d00dea93829845ee7a7de5cdd6e517
+SIZE (lukechampine-upnp-v0.3.0_GH0.tar.gz) = 5880
+SHA256 (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 8fa3b0b66914ae2dd4ddef9a954f614c5b3eb6ac9d80ee61ae2d08e3178507ec
+SIZE (mattn-go-sqlite3-v1.14.24_GH0.tar.gz) = 2622934
+SHA256 (onsi-ginkgo-v2.12.0_GH0.tar.gz) = ff8ad0c743f3bdcb7472419a85912b78c1ccfe0350473e507de576241193f88b
+SIZE (onsi-ginkgo-v2.12.0_GH0.tar.gz) = 626352
+SHA256 (quic-go-qpack-v0.5.1_GH0.tar.gz) = 4764c488fd58d111bfb06f651f593c8beb1829b853eb56ab204f2680aca12362
+SIZE (quic-go-qpack-v0.5.1_GH0.tar.gz) = 40696
+SHA256 (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 8816ec8c7f799e553442ddb686238ddffe28f843a576757ee2e7d491ea72117b
+SIZE (quic-go-quic-go-v0.49.0_GH0.tar.gz) = 609138
+SHA256 (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 621e42ffd6612cf0338cd03628c37e75e71877ab3d4ef44f738fa9cfd5817432
+SIZE (quic-go-webtransport-go-4ac2c9250e66_GH0.tar.gz) = 37597
+SHA256 (uber-go-mock-v0.5.0_GH0.tar.gz) = 41c16668926118ccfe8606e335487c0213efbb1330061e3ab7e97650b78e7737
+SIZE (uber-go-mock-v0.5.0_GH0.tar.gz) = 103723
+SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
+SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
+SHA256 (uber-go-zap-v1.27.0_GH0.tar.gz) = 62860771a138097535da9053f75d1da1a9e57f98263ead698ce493e0c9670652
+SIZE (uber-go-zap-v1.27.0_GH0.tar.gz) = 271384
diff --git a/net-p2p/walletd/files/patch-build_meta.go b/net-p2p/walletd/files/patch-build_meta.go
new file mode 100644
index 000000000000..c2d643141ae5
--- /dev/null
+++ b/net-p2p/walletd/files/patch-build_meta.go
@@ -0,0 +1,15 @@
+--- build/meta.go.orig 2025-03-11 16:49:37 UTC
++++ build/meta.go
+@@ -1,7 +1,9 @@
++// Code generated by go generate; DO NOT EDIT.
++// This file was generated by go generate at 2025-03-11T17:25:25+01:00.
+ package build
+
+ const (
+- commit = "?"
+- version = "?"
+- buildTime = 0
++ commit = "42659f7"
++ version = "v2.0.0"
++ buildTime = %%BUILDTIME%%
+ )
diff --git a/net-p2p/walletd/files/patch-vendor_modules.txt b/net-p2p/walletd/files/patch-vendor_modules.txt
new file mode 100644
index 000000000000..d8b93e2c615f
--- /dev/null
+++ b/net-p2p/walletd/files/patch-vendor_modules.txt
@@ -0,0 +1,204 @@
+--- vendor/modules.txt.orig 2025-03-12 13:07:20 UTC
++++ vendor/modules.txt
+@@ -0,0 +1,201 @@
++# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
++## explicit; go 1.13
++github.com/go-task/slim-sprig
++# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
++## explicit; go 1.19
++github.com/google/pprof/profile
++# github.com/julienschmidt/httprouter v1.3.0
++## explicit; go 1.7
++github.com/julienschmidt/httprouter
++# github.com/mattn/go-sqlite3 v1.14.24
++## explicit; go 1.19
++github.com/mattn/go-sqlite3
++# github.com/onsi/ginkgo/v2 v2.12.0
++## explicit; go 1.18
++github.com/onsi/ginkgo/v2/config
++github.com/onsi/ginkgo/v2/formatter
++github.com/onsi/ginkgo/v2/ginkgo
++github.com/onsi/ginkgo/v2/ginkgo/build
++github.com/onsi/ginkgo/v2/ginkgo/command
++github.com/onsi/ginkgo/v2/ginkgo/generators
++github.com/onsi/ginkgo/v2/ginkgo/internal
++github.com/onsi/ginkgo/v2/ginkgo/labels
++github.com/onsi/ginkgo/v2/ginkgo/outline
++github.com/onsi/ginkgo/v2/ginkgo/run
++github.com/onsi/ginkgo/v2/ginkgo/unfocus
++github.com/onsi/ginkgo/v2/ginkgo/watch
++github.com/onsi/ginkgo/v2/internal/interrupt_handler
++github.com/onsi/ginkgo/v2/internal/parallel_support
++github.com/onsi/ginkgo/v2/reporters
++github.com/onsi/ginkgo/v2/types
++# github.com/quic-go/qpack v0.5.1
++## explicit; go 1.22
++github.com/quic-go/qpack
++# github.com/quic-go/quic-go v0.49.0
++## explicit; go 1.22
++github.com/quic-go/quic-go
++github.com/quic-go/quic-go/http3
++github.com/quic-go/quic-go/internal/ackhandler
++github.com/quic-go/quic-go/internal/congestion
++github.com/quic-go/quic-go/internal/flowcontrol
++github.com/quic-go/quic-go/internal/handshake
++github.com/quic-go/quic-go/internal/protocol
++github.com/quic-go/quic-go/internal/qerr
++github.com/quic-go/quic-go/internal/qtls
++github.com/quic-go/quic-go/internal/utils
++github.com/quic-go/quic-go/internal/utils/linkedlist
++github.com/quic-go/quic-go/internal/utils/ringbuffer
++github.com/quic-go/quic-go/internal/wire
++github.com/quic-go/quic-go/logging
++github.com/quic-go/quic-go/quicvarint
++# github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
++## explicit; go 1.22
++github.com/quic-go/webtransport-go
++# go.etcd.io/bbolt v1.4.0
++## explicit; go 1.23
++go.etcd.io/bbolt
++go.etcd.io/bbolt/errors
++go.etcd.io/bbolt/internal/common
++go.etcd.io/bbolt/internal/freelist
++# go.sia.tech/core v0.10.1
++## explicit; go 1.23.1
++go.sia.tech/core/consensus
++go.sia.tech/core/gateway
++go.sia.tech/core/internal/blake2b
++go.sia.tech/core/internal/smux
++go.sia.tech/core/rhp/v2
++go.sia.tech/core/rhp/v4
++go.sia.tech/core/types
++# go.sia.tech/coreutils v0.11.1
++## explicit; go 1.23.1
++go.sia.tech/coreutils
++go.sia.tech/coreutils/chain
++go.sia.tech/coreutils/rhp/v4
++go.sia.tech/coreutils/syncer
++go.sia.tech/coreutils/testutil
++go.sia.tech/coreutils/threadgroup
++go.sia.tech/coreutils/wallet
++# go.sia.tech/jape v0.12.1
++## explicit; go 1.21.7
++go.sia.tech/jape
++# go.sia.tech/mux v1.3.0
++## explicit; go 1.23
++go.sia.tech/mux
++go.sia.tech/mux/v1
++go.sia.tech/mux/v2
++# go.sia.tech/web v0.0.0-20240610131903-5611d44a533e
++## explicit
++go.sia.tech/web/internal/nextjs
++# go.sia.tech/web/walletd v0.29.0
++## explicit; go 1.23.0
++go.sia.tech/web/walletd
++# go.uber.org/mock v0.5.0
++## explicit; go 1.22
++go.uber.org/mock/mockgen
++go.uber.org/mock/mockgen/model
++# go.uber.org/multierr v1.11.0
++## explicit; go 1.19
++go.uber.org/multierr
++# go.uber.org/zap v1.27.0
++## explicit; go 1.19
++go.uber.org/zap
++go.uber.org/zap/buffer
++go.uber.org/zap/internal
++go.uber.org/zap/internal/bufferpool
++go.uber.org/zap/internal/color
++go.uber.org/zap/internal/exit
++go.uber.org/zap/internal/pool
++go.uber.org/zap/internal/stacktrace
++go.uber.org/zap/internal/ztest
++go.uber.org/zap/zapcore
++go.uber.org/zap/zaptest
++# golang.org/x/crypto v0.33.0
++## explicit; go 1.20
++golang.org/x/crypto/blake2b
++golang.org/x/crypto/chacha20
++golang.org/x/crypto/chacha20poly1305
++golang.org/x/crypto/curve25519
++golang.org/x/crypto/hkdf
++golang.org/x/crypto/internal/alias
++golang.org/x/crypto/internal/poly1305
++golang.org/x/crypto/poly1305
++# golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
++## explicit; go 1.20
++golang.org/x/exp/rand
++# golang.org/x/mod v0.18.0
++## explicit; go 1.18
++golang.org/x/mod/internal/lazyregexp
++golang.org/x/mod/modfile
++golang.org/x/mod/module
++golang.org/x/mod/semver
++# golang.org/x/net v0.34.0
++## explicit; go 1.18
++golang.org/x/net/bpf
++golang.org/x/net/http/httpguts
++golang.org/x/net/http2/hpack
++golang.org/x/net/idna
++golang.org/x/net/internal/iana
++golang.org/x/net/internal/socket
++golang.org/x/net/ipv4
++golang.org/x/net/ipv6
++# golang.org/x/sync v0.11.0
++## explicit; go 1.18
++golang.org/x/sync/errgroup
++# golang.org/x/sys v0.30.0
++## explicit; go 1.18
++golang.org/x/sys/cpu
++golang.org/x/sys/plan9
++golang.org/x/sys/unix
++golang.org/x/sys/windows
++# golang.org/x/term v0.29.0
++## explicit; go 1.18
++golang.org/x/term
++# golang.org/x/text v0.22.0
++## explicit; go 1.18
++golang.org/x/text/secure/bidirule
++golang.org/x/text/transform
++golang.org/x/text/unicode/bidi
++golang.org/x/text/unicode/norm
++# golang.org/x/tools v0.22.0
++## explicit; go 1.19
++golang.org/x/tools/go/analysis
++golang.org/x/tools/go/analysis/passes/ctrlflow
++golang.org/x/tools/go/analysis/passes/inspect
++golang.org/x/tools/go/ast/astutil
++golang.org/x/tools/go/ast/inspector
++golang.org/x/tools/go/cfg
++golang.org/x/tools/go/gcexportdata
++golang.org/x/tools/go/internal/packagesdriver
++golang.org/x/tools/go/packages
++golang.org/x/tools/go/types/objectpath
++golang.org/x/tools/go/types/typeutil
++golang.org/x/tools/imports
++golang.org/x/tools/internal/aliases
++golang.org/x/tools/internal/event
++golang.org/x/tools/internal/event/core
++golang.org/x/tools/internal/event/keys
++golang.org/x/tools/internal/event/label
++golang.org/x/tools/internal/gcimporter
++golang.org/x/tools/internal/gocommand
++golang.org/x/tools/internal/gopathwalk
++golang.org/x/tools/internal/imports
++golang.org/x/tools/internal/packagesinternal
++golang.org/x/tools/internal/pkgbits
++golang.org/x/tools/internal/stdlib
++golang.org/x/tools/internal/tokeninternal
++golang.org/x/tools/internal/typeparams
++golang.org/x/tools/internal/typesinternal
++golang.org/x/tools/internal/versions
++# gopkg.in/yaml.v3 v3.0.1
++## explicit
++gopkg.in/yaml.v3
++# lukechampine.com/flagg v1.1.1
++## explicit; go 1.12
++lukechampine.com/flagg
++# lukechampine.com/frand v1.5.1
++## explicit; go 1.23.1
++lukechampine.com/frand
++# lukechampine.com/upnp v0.3.0
++## explicit; go 1.17
++lukechampine.com/upnp
++lukechampine.com/upnp/internal/goupnp
diff --git a/net-p2p/walletd/files/pkg-message.in b/net-p2p/walletd/files/pkg-message.in
new file mode 100644
index 000000000000..a3d074668263
--- /dev/null
+++ b/net-p2p/walletd/files/pkg-message.in
@@ -0,0 +1,10 @@
+[
+{ type: install
+ message: <<EOM
+The program walletd has been installed. To enable it at boot time,
+add it to /etc/rc.conf with the following command:
+sysrc walletd_enable="YES"
+You must also set a password in %%PREFIX%%/etc/walletd.yml to access the UI
+EOM
+}
+]
diff --git a/net-p2p/walletd/files/walletd-syslog.conf.in b/net-p2p/walletd/files/walletd-syslog.conf.in
new file mode 100644
index 000000000000..51b1a930006f
--- /dev/null
+++ b/net-p2p/walletd/files/walletd-syslog.conf.in
@@ -0,0 +1,2 @@
+# $FreeBSD$
+/var/log/walletd.log 600 20 * @T00 J /var/run/walletd.pid
diff --git a/net-p2p/walletd/files/walletd.conf.in b/net-p2p/walletd/files/walletd.conf.in
new file mode 100644
index 000000000000..330e3cfb23c1
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.conf.in
@@ -0,0 +1 @@
+WALLETD_API_PASSWORD='some password'
diff --git a/net-p2p/walletd/files/walletd.in b/net-p2p/walletd/files/walletd.in
new file mode 100644
index 000000000000..03660950a4b3
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# PROVIDE: walletd
+# REQUIRE: LOGIN FILESYSTEMS netwait
+# KEYWORD: SHUTDOWN
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# walletd_enable (bool): Set to NO by default.
+# Set it to YES to enable doormand.
+# walletd_datadir (path): Set to /var/lib/walletd by default.
+#
+# walletd_passwordfile (filepath): set the UI password there.
+# by default located in %%PREFIX%%/etc/walletd.conf
+
+. /etc/rc.subr
+
+name=walletd
+rcvar=${name}_enable
+
+load_rc_config $name
+
+: ${walletd_enable:=NO}
+: ${walletd_executable:="%%PREFIX%%/bin/walletd"}
+: ${walletd_config:="%%PREFIX%%/etc/walletd.yml"}
+
+walletd_env="WALLETD_CONFIG_FILE=${walletd_config}"
+pidfile="/var/run/${name}.pid"
+command="/usr/sbin/daemon"
+command_args="-r -f -H \
+ -o \"/var/log/${name}.log\" \
+ -P \"${pidfile}\" \
+ -u %%USERS%% \"${walletd_executable}\"
+
+run_rc_command "$1"
diff --git a/net-p2p/walletd/files/walletd.yml.in b/net-p2p/walletd/files/walletd.yml.in
new file mode 100644
index 000000000000..b584d8376015
--- /dev/null
+++ b/net-p2p/walletd/files/walletd.yml.in
@@ -0,0 +1,30 @@
+directory: /var/db/walletd
+autoOpenWebUI: true
+http:
+ address: :9980
+ password: sia is cool
+ publicEndpoints: false # when true, auth will be disabled on endpoints that should be publicly accessible when running walletd as a service
+consensus:
+ network: mainnet
+syncer:
+ bootstrap: false
+ enableUPnP: false
+ peers: []
+ address: :9981
+keystore:
+ enabled: false
+index:
+ mode: personal # personal, full, none ("full" will index the entire blockchain, "personal" will only index addresses that are registered in the wallet, "none" will treat the database as read-only and not index any new data)
+ batchSize: 64 # max number of blocks to index at a time (increasing this will increase scan speed, but also increase memory and cpu usage)
+log:
+ level: info # global log level
+ stdout:
+ enabled: true # enable logging to stdout
+ level: info # override the global log level for stdout
+ enableANSI: false
+ format: human # human or JSON
+ file:
+ enabled: false # enable logging to a file
+ level: info # override the global log level for the file
+ path: /var/log/walletd.log
+ format: json # human or JSON
diff --git a/net-p2p/walletd/pkg-descr b/net-p2p/walletd/pkg-descr
new file mode 100644
index 000000000000..e5e3947db47a
--- /dev/null
+++ b/net-p2p/walletd/pkg-descr
@@ -0,0 +1,10 @@
+walletd is the flagship Sia wallet, suitable for miners, exchanges,
+and everyday hodlers. Its client-server architecture gives you the
+flexibility to access your funds from anywhere, on any device, without
+compromising the security of your private keys. The server is
+agnostic, so you can derive those keys from a 12-word seed phrase, a
+legacy (siad) 28-word phrase, a Ledger hardware wallet, or another
+preferred method. Like other Foundation node software, walletd ships
+with a slick embedded UI, but developers can easily build headless
+integrations leveraging its powerful JSON API. Whether you're using a
+single address or millions, walletd scales to your needs.