Skip to content

feat: fan-out-proxy work in progress (WIP) #2122

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 82 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
a1952f2
wip
wbbradley May 22, 2025
729ccf2
updates
wbbradley May 22, 2025
754bf35
updates
wbbradley May 22, 2025
59cd852
updates
wbbradley May 22, 2025
996d6de
updates
wbbradley May 22, 2025
4dbec58
wip
wbbradley May 23, 2025
108f231
updates
wbbradley May 23, 2025
e0e1b09
updates
wbbradley May 23, 2025
2f483b9
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley May 23, 2025
a623b1e
updates
wbbradley May 23, 2025
7ebf386
updates
wbbradley May 23, 2025
fc4f90c
updates
wbbradley May 23, 2025
da5f9d0
updates
wbbradley May 23, 2025
58edc76
updates
wbbradley May 23, 2025
d90f251
Merge remote-tracking branch 'origin/main' into fan-out-dep
giac-mysten May 27, 2025
6266d7c
feat: add function to execute transaction from bytes
giac-mysten May 27, 2025
ecbd0a2
feat(fanout): add logic to check tips and registrations
giac-mysten May 27, 2025
9a24087
fix(fanout): remove unneded deps
giac-mysten May 27, 2025
53c0ad8
fix(fanout): nit
giac-mysten May 27, 2025
8acbf44
fix(fanout): minimize context for checker
giac-mysten May 27, 2025
98bbeba
fix(fanout): add checker to controller, use encoding config directly
giac-mysten May 27, 2025
460ebdb
feat(fanout): integrate the checker, add tx data params
giac-mysten May 27, 2025
7f1ba7a
feat(fanout): add testing of query parameters parsing
giac-mysten May 27, 2025
aa78610
feat(fanout): use urlencoded b64 bytes in params
giac-mysten May 27, 2025
1eedcb9
updates
wbbradley May 27, 2025
b699433
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley May 27, 2025
6c9f19f
wip
wbbradley May 27, 2025
241da25
wip
wbbradley May 27, 2025
e541892
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley May 27, 2025
1b1d96d
updates
wbbradley May 27, 2025
e913fb5
updates
wbbradley May 27, 2025
7091e4e
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley May 27, 2025
11db4e2
updates
wbbradley May 27, 2025
1c97e7c
updates
wbbradley May 27, 2025
bd78b3c
updates
wbbradley May 27, 2025
0438b3f
fix(fanout): reuse the encoding config in the client
giac-mysten May 28, 2025
1fa014e
chore(fanout): move the controller to own module
giac-mysten May 28, 2025
347d273
feat(fanout): add endpoint to get tip configuration
giac-mysten May 28, 2025
58d39d9
feat(fanout): add test client
giac-mysten May 28, 2025
14d7606
update some feature dependency stuff and fix clippy issues
wbbradley May 28, 2025
1aa68e2
add api docs
wbbradley May 28, 2025
fd600c6
Merge remote-tracking branch 'origin/main' into fan-out-dep
giac-mysten May 29, 2025
05206cb
feat(fanout): add binary version
giac-mysten May 29, 2025
bff11c2
feat(fanout): start improving the openapi spec
giac-mysten May 29, 2025
7f0300e
feat(fanout): add cors allow any
giac-mysten May 29, 2025
be9920e
feat(fanout): start adding tracing
giac-mysten May 29, 2025
4f6c370
chore: add Dockerfile for fan-out-proxy build
wbbradley May 29, 2025
6f7d350
updates
wbbradley May 29, 2025
e205731
feat(fanout): try out the client side submission DIRTY
giac-mysten May 30, 2025
d55669b
wip: adding metrics to fan-out
wbbradley May 29, 2025
363443d
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley May 30, 2025
37f7dba
fix doc ref
wbbradley May 30, 2025
c56b657
add 402 response code for tip errors
wbbradley May 30, 2025
f2d991d
Merge branch 'fan-out-dep' into gg/fanout/try-with-hash
wbbradley May 30, 2025
3da7c4c
wip: lots of plumbing
wbbradley Jun 2, 2025
134a108
compiling
wbbradley Jun 3, 2025
e817c09
wip
wbbradley Jun 3, 2025
01935b1
Merge remote-tracking branch 'origin/main' into fan-out-dep
wbbradley Jun 3, 2025
7b6e81b
fix some errors
wbbradley Jun 3, 2025
6079f05
almost there, query serialization is borked
wbbradley Jun 4, 2025
fa8e356
fix(fanout): change post to put
giac-mysten Jun 4, 2025
7205809
fix(fanout): parsing of the put query
giac-mysten Jun 4, 2025
9a236a2
track sui client metrics
wbbradley Jun 4, 2025
97f928d
lint
wbbradley Jun 4, 2025
e6a17ed
fix(fanout): only require the tip, not the registration
giac-mysten Jun 4, 2025
2b8deed
Merge branch 'main' into fan-out-dep
wbbradley Jun 9, 2025
18ed8cf
fix typo
wbbradley Jun 9, 2025
4651f83
updates
wbbradley Jun 10, 2025
eed1c87
Merge branch 'main' into fan-out-dep
wbbradley Jun 10, 2025
f7b7944
updates
wbbradley Jun 10, 2025
1f62ec8
fix(fanout): only keep the blob digest in the auth package
giac-mysten Jun 11, 2025
d2fa9e1
feat(fanout): check the freshness of the transaction
giac-mysten Jun 11, 2025
925f5d6
feat(fanout): add encoding type to the params
giac-mysten Jun 11, 2025
e468080
fix(fanout): revert back to post
giac-mysten Jun 11, 2025
fe4aed2
feat(fanout): add script to merge coins in wallet (for the tips)
giac-mysten Jun 11, 2025
d08c3a7
feat(fanout): improve and simplify API
giac-mysten Jun 11, 2025
2fa95a0
fix(fanout): remove unneeded features
giac-mysten Jun 11, 2025
6d83848
feat(fanout): add configuration and config example
giac-mysten Jun 11, 2025
2b42e44
feat(fanout): authentication changes, add nonce and length
giac-mysten Jun 12, 2025
66635de
feat(fanout): small tests
giac-mysten Jun 12, 2025
2e34daa
chore: add various metrics tracking possible errors
wbbradley Jun 12, 2025
22bf080
chore: add fan_out_config_example.yaml to .yamlfmt.yml
wbbradley Jun 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .yamlfmt.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
exclude:
- "crates/fan-out-proxy/fan_out_config_example.yaml" # autogenerated file
- "crates/walrus-sdk/client_config_example.yaml" # autogenerated file
- "crates/walrus-service/storage_openapi.yaml" # autogenerated file
- "crates/walrus-service/daemon_openapi.yaml" # autogenerated file
- "crates/walrus-service/aggregator_openapi.yaml" # autogenerated file
- "crates/walrus-service/daemon_openapi.yaml" # autogenerated file
- "crates/walrus-service/publisher_openapi.yaml" # autogenerated file
- "crates/walrus-service/storage_openapi.yaml" # autogenerated file
formatter:
type: basic
retain_line_breaks_single: true
Expand Down
38 changes: 38 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[workspace]
default-members = [
"crates/checkpoint-downloader",
"crates/fan-out-proxy",
"crates/typed-store",
"crates/walrus-core",
"crates/walrus-e2e-tests",
Expand Down Expand Up @@ -100,6 +101,7 @@ scoped-futures = "0.1.4"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
serde_test = "1.0.177"
serde_urlencoded = { version = "0.7.1" }
serde_with = { version = "3.12", features = ["base64"] }
serde_yaml = "0.9"
sha2 = "0.10.9"
Expand Down
1 change: 1 addition & 0 deletions crates/fan-out-proxy/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/target
49 changes: 49 additions & 0 deletions crates/fan-out-proxy/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
[package]
name = "fan-out-proxy"
publish = false
authors.workspace = true
version.workspace = true
edition.workspace = true
license.workspace = true

[dependencies]
anyhow.workspace = true
axum.workspace = true
axum-server.workspace = true
base64.workspace = true
bcs.workspace = true
clap.workspace = true
clap_complete.workspace = true
fastcrypto.workspace = true
futures.workspace = true
git-version.workspace = true
mysten-metrics.workspace = true
prometheus.workspace = true
rand.workspace = true
reqwest.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_urlencoded.workspace = true
serde_with = { workspace = true, features = ["hex"] }
serde_yaml.workspace = true
sui-sdk.workspace = true
# TODO: expose sui-types via walrus_sdk.
sui-types.workspace = true
telemetry-subscribers.workspace = true
thiserror.workspace = true
tokio.workspace = true
tower-http.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
utoipa.workspace = true
utoipa-redoc.workspace = true
# walrus-core.workspace = true
# walrus-proc-macros.workspace = true
walrus-sdk.workspace = true
walrus-test-utils.workspace = true
# walrus-storage-node-client.workspace = true
# walrus-sui.workspace = true

[features]
default = ["test-client"] # TODO: Remove this eventually.
test-client = []
9 changes: 9 additions & 0 deletions crates/fan-out-proxy/fan_out_config_example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
tip_config: !send_tip
address: 0x2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
kind: !const 42
tx_freshness_threshold:
secs: 36000
nanos: 0
tx_max_future_threshold:
secs: 30
nanos: 0
Loading