-
Notifications
You must be signed in to change notification settings - Fork 4
feat: EVM payment integration for client chunk storage #14
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
Merged
Merged
Changes from all commits
Commits
Show all changes
27 commits
Select commit
Hold shift + click to select a range
9345f92
feat: payments with placeholders
grumbach 4eeae3f
feat: payments in client
grumbach 574903e
fix: various review issues
grumbach 626298d
feat: reworked payment integration
grumbach 29cad8b
refactor: payments refactored and various fixes
grumbach 0f6eeaf
fix: address PR review feedback (round 1)
grumbach d2c56b3
feat: implement fullness-based pricing algorithm
grumbach 23cfb71
fix: payment proof issue
grumbach 0b43d47
fix: derive max_records from 5GB storage limit, track payment count, …
grumbach 785d744
fix: address PR review feedback (round 2)
grumbach b81ef96
feat: CLI file upload/download, devnet EVM integration, E2E payment t…
grumbach fa22c87
fix: add security attack test scenarios and fix payment reuse attack
grumbach 5abaf67
fix: client hang without wallet, CI test reliability
grumbach 9637e6a
fix: improve resilience test with DHT re-warmup after node failures
grumbach df4500d
fix: address PR review signing issues, fix 3 remaining CI test failures
grumbach b20a6fe
docs: update verification docs, add pricing rationale, add proof size…
grumbach 57c2743
fix: address cross-agent review findings in payment module
grumbach 3d949e2
refactor: merge saorsa-client into saorsa-cli
grumbach 5c0a30d
fix: increase DHT stabilization time in resilience test for CI
grumbach 7689093
fix: add retries and DHT stabilization to all flaky payment E2E tests
grumbach fd54580
fix: double DHT stabilization timing in resilience test for Windows CI
grumbach dc35197
fix: add DHT warmup and retries to payment_with_node_failures test
grumbach 9e7c096
fix: add retries to store_chunk_with_payment and all payment E2E tests
grumbach 04cb607
fix: add DHT retries to security attack tests for CI stability
grumbach 565bf3b
fix: address all PR #14 review blockers and harden payment verification
grumbach 1b4531a
chore: skip failing claude review ci task due to outdated creds
grumbach c04c8c2
fix: bind ML-DSA identity to P2PNode so peer ID matches quote pub_key
grumbach File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| # Production Configuration for saorsa-node | ||
| # | ||
| # This file matches the NodeConfig struct schema. | ||
| # See src/config.rs for all available fields and defaults. | ||
|
|
||
| # Root directory for node data | ||
| root_dir = "/var/lib/saorsa-node" | ||
|
|
||
| # Listening port (10000-10999 for production) | ||
| port = 10000 | ||
|
|
||
| # IP version: "ipv4", "ipv6", or "dual" | ||
| ip_version = "dual" | ||
|
|
||
| # Bootstrap peer addresses (socket addrs) | ||
| bootstrap = [] | ||
|
|
||
| # Network mode: "production", "testnet", or "development" | ||
| network_mode = "production" | ||
|
|
||
| # Log level: "trace", "debug", "info", "warn", "error" | ||
| log_level = "info" | ||
|
|
||
| # Maximum application-layer message size in bytes (default: 5 MiB) | ||
| # max_message_size = 5242880 | ||
|
|
||
| # --- Payment verification --- | ||
| # Production nodes require payment by default. | ||
| [payment] | ||
| # DO NOT set enabled = false in production | ||
| enabled = true | ||
|
|
||
| # Cache capacity for verified content addresses | ||
| cache_capacity = 100000 | ||
|
|
||
| # REQUIRED: Set to your Arbitrum wallet address before running in production. | ||
| # rewards_address = "0xYourAddressHere" | ||
|
|
||
| # EVM network: "arbitrum-one" or "arbitrum-sepolia" | ||
| evm_network = "arbitrum-one" | ||
|
|
||
| # Prometheus metrics port (0 to disable) | ||
| metrics_port = 9100 | ||
|
|
||
| # --- Storage --- | ||
| [storage] | ||
| enabled = true | ||
|
|
||
| # Maximum number of chunks to store (0 = unlimited) | ||
| max_chunks = 0 | ||
|
|
||
| # Verify content hash on read | ||
| verify_on_read = true | ||
|
|
||
| # Maximum LMDB database size in GiB (0 = default 32 GiB) | ||
| db_size_gb = 0 | ||
|
|
||
| # --- Upgrade --- | ||
| [upgrade] | ||
| enabled = false | ||
| channel = "stable" | ||
| check_interval_hours = 1 | ||
| github_repo = "dirvine/saorsa-node" | ||
| staged_rollout_hours = 1 | ||
|
|
||
| # --- Bootstrap cache --- | ||
| [bootstrap_cache] | ||
| enabled = true | ||
| max_contacts = 10000 | ||
| stale_threshold_days = 7 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In
config/production.toml, therewards_addressline is commented out (# rewards_address = "0xYourAddressHere"). The node startup validation insrc/node.rs(lines 76-93) only checks the rewards address inNetworkMode::Production. The default EVM network isarbitrum-one, so production nodes launched with this config file as-is will fail to start with "CRITICAL: Rewards address is not configured." This is good — but the comment should indicate this more clearly as a required field:# REQUIRED: Uncomment and set this before running.