Commit 07e4357
feat!: track the rollups-node JSON-RPC API changes
Mirror the JSON-RPC API changes of the Cartesi node in @cartesi/rpc, and
bubble them down to @cartesi/client and @cartesi/react.
Derived from cartesi/rollups-node#793, which has since merged into
next/2.0 as 7558af6, so this is no longer a forward-looking port. It was
verified against the merged jsonrpc-discover.json rather than the pull
request diff: @cartesi/rpc declares exactly the 28 methods the merged
specification defines, and every schema and parameter change between the
pre-793 base (9bdd988) and merged next/2.0 is reflected here.
Cross-checked against internal/jsonrpc/api/params.go,
internal/jsonrpc/jsonrpc.go and internal/model/models.go.
New methods:
- cartesi_getEpochByVirtualIndex, fetching an epoch by its dense
insertion rank (getEpochByVirtualIndex / useEpochByVirtualIndex)
- cartesi_getExecutedOutputCount and
cartesi_getPendingExecutableOutputCount (getExecutedOutputCount /
useExecutedOutputCount, getPendingExecutableOutputCount /
usePendingExecutableOutputCount). The executed count is monotone and
meant to be polled for change detection; the pending count is a gauge
and is not.
- cartesi_getNodeInfo, returning the chain id, the node version and the
node's default block tag in one call (getNodeInfo / useNodeInfo). It
replaces cartesi_getChainId and cartesi_getNodeVersion, which the node
deprecated and which are now marked @deprecated here too.
New listing filters:
- from/to inclusive index ranges on listEpochs, listInputs, listOutputs
and listReports
- a list of statuses on listEpochs, and a list of output types plus the
new executed flag on listOutputs
The node rejects an empty status or output_type list with invalid
params, so the list-valued filters are typed as NonEmptyArray<T> rather
than T[]: `status: []` and `outputType: []` are compile errors instead
of failed requests. listOutputs maps the output types to selectors
through the head of the list separately, so the result stays non-empty
for the type checker, which Array.prototype.map would widen back to
Hex[]. The constraint is guarded by a *.test-d.ts suite in
@cartesi/client, which needed vitest type testing enabled there — CI
runs `pnpm test` but no `tsc --noEmit` over the test files, so without
it the constraint would go unchecked.
Input completion changes, which landed on next/2.0 alongside but not as
part of #793:
- InputStatus loses its resource-limit members. The node collapsed
OUTPUTS_LIMIT_EXCEEDED, REPORTS_LIMIT_EXCEEDED, CYCLE_LIMIT_EXCEEDED,
TIME_LIMIT_EXCEEDED and PAYLOAD_LENGTH_LIMIT_EXCEEDED into the
remaining outcomes, leaving NONE, ACCEPTED, REJECTED, EXCEPTION and
MACHINE_HALTED. waitForInput listed four of them under rejectErrors;
it now aborts on EXCEPTION, MACHINE_HALTED and REJECTED, which is
every terminal status other than ACCEPTED — and no longer omits a
failure status the way the old list omitted REPORTS_LIMIT_EXCEEDED.
- Input gains exception_data / exceptionData, the raw guest-provided
CMIO exception payload, non-null only when the status is EXCEPTION and
empty-encoded as 0x. The bytes are passed through undecoded, matching
how raw_data is handled.
Breaking changes:
- cartesi_getMatchAdvanced is now cartesi_getMatchAdvance, so the
getMatchAdvanced action is getMatchAdvance, the useMatchAdvanced hook
is useMatchAdvance and the GetMatchAdvanced* types are GetMatchAdvance*
- the node's application-level error codes moved out of the JSON-RPC
reserved range (-31001/-31002 instead of -32001/-32002); they are now
exported from @cartesi/rpc as errorCodes, along with the new batch
(-32040), timeout (-32070), response-size-limit (-31003) and
batch-list-work (-31004) codes, plus the maxBatchSize (100),
maxBatchListWork (10000) and defaultListLimit (50) constants that
bound a batch
- InputStatus shrank, as described above
Batch requests needed no transport change — the underlying json-rpc-2.0
client already batches — so they are documented rather than implemented,
including the two budgets that apply beyond the entry count: the
response-size budget closes once exhausted, so every later entry gets
-31003 even if its response would still have fit, and the list-work
budget rejects the whole batch with a single -31004 before dispatching
anything. Neither meters the COUNT queries behind pagination nor offset
traversal, so a deep offset over a broad filter can still make the
database scan and discard rows before the requested page.
Two OpenRPC typing fixes needed no code change: prev_randao and voucher
value are now UnsignedInteger256 in the specification, and both were
already 256-bit-safe here.
Also reformats four @cartesi/react hooks that biome was already
reporting as unformatted.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UJpa3KXxvUarBGpHvW8Qdb1 parent 7771392 commit 07e4357
70 files changed
Lines changed: 1662 additions & 173 deletions
File tree
- .changeset
- apps/docs
- pages
- client
- react
- rpc
- packages
- client
- __tests__
- src
- actions
- decorators
- types
- react
- __tests__
- src/publicL2
- rpc/src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
Lines changed: 5 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
39 | | - | |
| 38 | + | |
| 39 | + | |
40 | 40 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
Lines changed: 40 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
28 | 30 | | |
29 | 31 | | |
30 | 32 | | |
| |||
40 | 42 | | |
41 | 43 | | |
42 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
31 | 34 | | |
32 | 35 | | |
33 | 36 | | |
34 | 37 | | |
35 | 38 | | |
36 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
37 | 68 | | |
38 | 69 | | |
39 | 70 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
0 commit comments