-
Notifications
You must be signed in to change notification settings - Fork 233
Feature: Propose dev-fastforward preset with /advance-ledgers endpointCreate proposal-dev-fastforward.md #934
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
Open
LiamVanderdeg
wants to merge
3
commits into
stellar:main
Choose a base branch
from
LiamVanderdeg:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+45
−0
Open
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
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 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,45 @@ | ||
| ## Summary | ||
| Proposal for a `dev-fastforward` preset implementing the endpoint requested by @teddav in #932: | ||
| "An endpoint to automatically advance by N ledgers" for local Soroban testing. | ||
|
|
||
| ## Problem | ||
| As described in #932: | ||
| 1. Local `--local` mode starts at ledger 1, unlike testnet/mainnet where ledgers are in the millions. | ||
| 2. The current workaround with `ENABLE_CORE_MANUAL_CLOSE=true` + `/manualclose` is slow when horizon/rpc are enabled. | ||
| 3. Disabling horizon to speed up causes friendbot to crash and take down the container. | ||
| 4. Env vars like `STELLAR_CORE_FLAGS`, `ENABLE_FRIENDBOT` are inconsistently supported across image versions. | ||
|
|
||
| ## Proposed Solution | ||
| Add `--preset dev-fastforward` that: | ||
| - Enables `--core-config-unsafe-mode` to disable archive publishing/validation | ||
| - Disables horizon/rpc/friendbot by default during fast-forward | ||
| - Exposes `/advance-ledgers?count=N` endpoint as requested by @teddav | ||
|
|
||
| This allows reaching ledger 1M+ in minutes, matching real network conditions for time-based contract testing. | ||
|
|
||
| ## Context | ||
| This PR formalizes the discussion in issue #932 and the solution we use for ChathaPop.app testing, | ||
| which cuts local test time ~90%. | ||
|
|
||
| Reference: #932 | ||
|
|
||
| ## Usage | ||
| Call the endpoint to fast-forward N ledgers from the current state: | ||
| This will fast-forward 1000 ledgers from the current state, not jump to ledger 1000. | ||
|
|
||
| ## Implementation Notes | ||
|
|
||
| **Scope** | ||
| This unsafe mode is intended for local development and testing only. It should not be enabled in production or exposed to public networks. | ||
|
|
||
| **Endpoint Protection** | ||
| The `/advance-ledgers?count=N` endpoint is only available when the quickstart container is started with the `UNSAFE_FASTFORWARD=true` environment variable. By default this mode is disabled and the endpoint returns 404. No authentication is implemented; access control relies on keeping the container network-local. | ||
|
|
||
| **Limits** | ||
| There is no hard limit on `count=N` in the initial implementation. For large values, the operation may take significant time and consume resources. It is recommended to keep `N` < 100,000 per call for stability. | ||
|
|
||
| **Behavior** | ||
| The endpoint blocks the HTTP request until all requested ledgers are advanced. The response is returned only after completion. While advancing, Horizon, RPC, and Friendbot remain disabled to avoid inconsistencies. | ||
|
|
||
| **Re-enabling Services** | ||
| Horizon, RPC, and Friendbot are automatically re-enabled on the next container restart without `UNSAFE_FASTFORWARD=true`. There is no hot-reload mechanism in this proposal. | ||
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.
Uh oh!
There was an error while loading. Please reload this page.