Repository navigation
Conversation
This branch has not been deployed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Audit items L39, L40, L41, L43, L47, L67, I01. Open against
dev.Replay after restart (L39). Signed requests are valid for ±300 seconds and their nonces are kept only in memory. After a restart the cache was empty, so a request captured shortly before could be sent again. A signed request stamped before the node started is now rejected. A client that signed just before a restart gets a 401 and signs again.
CORS (L40). A malformed origin or header silently widened the policy to
*.CORS_ALLOW_CREDENTIALS=truewith an empty or*origin or header list made tower-http panic when the router was built. Both are now startup errors that name the setting. A literal*origin means any origin instead of panicking inAllowOrigin::list. An empty origin list still means any origin, as before.Proof-desc proxy (L41). The unauthenticated proxy put
GOAT_PROOF_BUILD_URLand the upstream error in its response, and retried every request up to 6 times. It now answersproof builder unavailableand logs the details. The RPC HTTP client, used only by this proxy, makes one attempt.Health endpoint (L67).
/v1/healthreturned the last backend error text, which can contain an RPC URL with an API key.last_errornow names the failed operation, e.g.get_block_height failed. The full error is still logged.Node list (L43).
GET /v1/nodes,/v1/nodes/overviewand/v1/nodes/{peer_id}wrote this node's timestamp on every request. The heartbeat tick (every 5 minutes) now refreshes it, so the node still counts as online. Thestatusfilter ignores case.Graph list (L47).
/v1/graphsnow uses the same pagination limits as the other list endpoints: limit 1–100, default 10, offset at most 10000. The query builder no longer emitsOFFSETwithoutLIMIT, which SQLite rejects.Config debug output (I01).
GoatInitConfig'sDebugprinted the private key. It now prints<redacted>.Tests: a request stamped before the node start is rejected; bad CORS settings are errors and valid ones still build; the health snapshot names the operation and hides the error text;
OFFSETwithoutLIMITgives valid SQL;/v1/graphsrejectslimit=1000and accepts an offset alone; the config'sDebugoutput hides the key. Node, store and client tests, clippy with-D warningsand fmt pass.The test coverage and validation notes above are from the zkm PR notes. Branch scope and diff formatting were checked locally; builds and tests were not rerun during publication.