You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updated 2026-08-20. Re-checked against main at 3c7172c8. Everything below still
reproduces. The crates/compute-provider section changed shape rather than being fixed: #1821
deleted the API it described, so the README now documents parameters and signatures that no
longer exist.
Separate from the journal-layout drift, several documents in this area describe interfaces that have
moved. These are copy-and-run examples, so each fails at the point where someone tries to use it.
Two of them share the same two dead field names, threshold and e3ProgramParams, which suggests
both were written against the same earlier request API and neither was revisited.
crates/support/README.md
The request example does not match E3RequestParams. It passes threshold: [M, N] and e3ProgramParams (:150-164). Neither field exists. The struct
(packages/interfold-contracts/contracts/interfaces/IInterfold.sol:567-577) takes committeeSize, which is a CommitteeSize enum rather than an [M, N] pair, and paramSet
instead of encoded program params. The example also omits paramSet, expectedFeeToken, expectedCryptoConfigId, and maxFee.
The Boundless "defaults shown" are not the defaults, and every value differs:
Key
README :101-107
Runtime host/src/lib.rs:121-171
min_price_eth
0.001
0.00005
max_price_eth
0.03
0.002
timeout_secs
1200
600
lock_timeout_secs
600
300
ramp_up_secs
120
60
lock_collateral_zkc
5.0
2.0
The README's own later table (:222-233) matches the runtime values, so the document contradicts
itself. Someone who copies the first block offers twenty times the intended minimum price.
The journal description lists seven bound items and omits the parameter hash and the input root
(:202-212: "the chain, Interfold contract, E3, encryption scheme, committee key, output, and SAFE
commitment"). The journal has nine (crates/support/types/src/lib.rs:68-104), and both verifier
layers check the two that are missing from the description.
:247-257 names .github/workflows/support-docker.yml, which does not exist. The jobs are .github/workflows/ci.yml:284 and releases.yml:109. (Also noted in the build issue.)
The /run_compute example sends the wrong committee-key field. Already fixed in open PR feat: add chunked C2 proving [skip-line-limit] #1772,
which changes "committee_public_key" to "committee_public_key_hash". Listed only so it is not
reported twice.
docs/pages/building-with-interfold.mdx
getE3Quote is shown taking six positional parameters (:107-115). It takes a single E3RequestParams struct (contracts/Interfold.sol:1051-1053), as does request (:281-283).
The JavaScript request object uses threshold: [3, 5] and e3ProgramParams (:271-289), the same
two removed fields as the support README, and omits the four newer ones.
The event is shown as E3Requested(uint256 e3Id, E3 e3, IE3Program indexed e3Program) (:239).
The third parameter is now bytes32 indexed cryptoConfigId
(contracts/interfaces/IInterfold.sol:137). Code that filters or decodes on the old shape does not
match.
crates/compute-provider
The crate README documents an API that fix: crisp security issues [skip-line-limit] #1821 deleted. Readme.md:82-88 lists use_parallel and batch_size as ComputeManager::new() parameters. The constructor now takes three arguments
(src/compute_manager.rs:25-27), and use_parallel, batch_size, and the .chunks() path are
gone from the crate along with its rayon dependency.
The two examples call provider.start() with no argument and read one return value
(Readme.md:40, :72). start now takes an InputPolicy and returns Result<(P::Output, Vec<u8>), ComputeError> (src/compute_manager.rs:57).
The Risc0Provider example implements fn prove(&self, input: &ComputeInput) (Readme.md:65),
which no longer satisfies the trait: prove gained a second parameter, policy: InputPolicy
(src/ciphertext_output.rs:21).
Happy to open a PR for any of this if it is useful.
Separate from the journal-layout drift, several documents in this area describe interfaces that have
moved. These are copy-and-run examples, so each fails at the point where someone tries to use it.
Two of them share the same two dead field names,
thresholdande3ProgramParams, which suggestsboth were written against the same earlier
requestAPI and neither was revisited.crates/support/README.mdThe request example does not match
E3RequestParams. It passesthreshold: [M, N]ande3ProgramParams(:150-164). Neither field exists. The struct(
packages/interfold-contracts/contracts/interfaces/IInterfold.sol:567-577) takescommitteeSize, which is aCommitteeSizeenum rather than an[M, N]pair, andparamSetinstead of encoded program params. The example also omits
paramSet,expectedFeeToken,expectedCryptoConfigId, andmaxFee.The Boundless "defaults shown" are not the defaults, and every value differs:
:101-107host/src/lib.rs:121-171min_price_ethmax_price_ethtimeout_secslock_timeout_secsramp_up_secslock_collateral_zkcThe README's own later table (
:222-233) matches the runtime values, so the document contradictsitself. Someone who copies the first block offers twenty times the intended minimum price.
The journal description lists seven bound items and omits the parameter hash and the input root
(
:202-212: "the chain, Interfold contract, E3, encryption scheme, committee key, output, and SAFEcommitment"). The journal has nine (
crates/support/types/src/lib.rs:68-104), and both verifierlayers check the two that are missing from the description.
:247-257names.github/workflows/support-docker.yml, which does not exist. The jobs are.github/workflows/ci.yml:284andreleases.yml:109. (Also noted in the build issue.)TheAlready fixed in open PR feat: add chunked C2 proving [skip-line-limit] #1772,/run_computeexample sends the wrong committee-key field.which changes
"committee_public_key"to"committee_public_key_hash". Listed only so it is notreported twice.
docs/pages/building-with-interfold.mdxgetE3Quoteis shown taking six positional parameters (:107-115). It takes a singleE3RequestParamsstruct (contracts/Interfold.sol:1051-1053), as doesrequest(:281-283).threshold: [3, 5]ande3ProgramParams(:271-289), the sametwo removed fields as the support README, and omits the four newer ones.
E3Requested(uint256 e3Id, E3 e3, IE3Program indexed e3Program)(:239).The third parameter is now
bytes32 indexed cryptoConfigId(
contracts/interfaces/IInterfold.sol:137). Code that filters or decodes on the old shape does notmatch.
crates/compute-providerReadme.md:82-88listsuse_parallelandbatch_sizeasComputeManager::new()parameters. The constructor now takes three arguments(
src/compute_manager.rs:25-27), anduse_parallel,batch_size, and the.chunks()path aregone from the crate along with its
rayondependency.provider.start()with no argument and read one return value(
Readme.md:40,:72).startnow takes anInputPolicyand returnsResult<(P::Output, Vec<u8>), ComputeError>(src/compute_manager.rs:57).Risc0Providerexample implementsfn prove(&self, input: &ComputeInput)(Readme.md:65),which no longer satisfies the trait:
provegained a second parameter,policy: InputPolicy(
src/ciphertext_output.rs:21).Happy to open a PR for any of this if it is useful.