Releases: dfinity/pocketic
Version 11.0.0
11.0.0 - 2025-12-05
Added
- New DELETE endpoint
/prune_graph/<state_label>/<op_id>for pruning the result of a long-running operation.
This endpoint should be called after successfully reading the result using the GET endpoint/read_graph/<state_label>/<op_id>.
Thestate_labelandop_idare returned byApiResponse::Started {state_label, op_id}. - New ICP features
bitcoin,dogecoin, andcanister_migrationcan be specified in the optional fieldicp_featuresin the argument of the endpoint/instances/. - Support for Dogecoin: PocketIC server interacts with a
dogecoindprocess listening at an address and port specified in a new optional fielddogecoind_addrof the endpoint/instances/. - The endpoint
/instances/<instance_id>/update/canister_snapshot_downloadto download a canister snapshot to a given snapshot directory. - The endpoint
/instances/<instance_id>/update/canister_snapshot_uploadto upload a canister snapshot from a given snapshot directory. - New CLI option
--mainnet-routing-tableto specify a path to a JSON file containing the mainnet routing table (used to create canisters with mainnet canister IDs).
The PocketIC server contains a hard-coded mainnet routing table used if this option is not provided. - New CLI option
--fetch-mainnet-routing-tableto specify that the mainnet routing table should be fetched from the mainnet registry
and written to the file path specified as--mainnet-routing-table.
Full changelog: CHANGELOG.md
Commit hash: d13be5a27b3331c4dc8831593eed0e3ec08b260f
Version 10.0.0
10.0.0 - 2025-09-12
Added
- The endpoint
/instances/<instance_id>/update/await_ingress_message(execute rounds on the PocketIc instance until the message is executed):
to fix a performance regression when using the two endpoints/instances/<instance_id>/update/tickand/instances/<instance_id>/read/ingress_statusin a loop. - The argument of the endpoint
/instances/takes an additional optional fieldicp_featuresspecifying ICP features (implemented by system canisters) to be enabled in the newly created PocketIC instance. - The argument of the endpoint
/instances/takes an additional optional fieldincomplete_statespecifying if incomplete state (e.g., resulting from not deleting a PocketIC instance gracefully) is allowed. - The argument of the endpoint
/instances/takes an additional optional fieldinitial_timespecifying the initial timestamp of the newly created instance or
if the new instance should make progress automatically, i.e., if PocketIC should periodically update the time of the instance to the real time and execute rounds on the subnets. - The argument of the endpoint
/instances/takes an optional fieldicp_configspecifying which features not available on the ICP mainnet should be available
in the newly created PocketIC instance (the field used to be callednonmainnet_featuresand be of a simple Boolean type before). - The argument of the endpoint
/instances/takes an additional optional fieldhttp_gateway_configspecifying that an HTTP gateway with the given configuration
should be created for the newly created instance.
Full changelog: CHANGELOG.md
Commit hash: a299620cd5e73ed21b415f2ebe3da0bb43a3649d
Version 9.0.3
9.0.3 - 2025-06-06
Changed
- The endpoint
/instances/<instance_id>/auto_progresssets the (certified) time of the PocketIC instance
to the current system time before starting to execute rounds automatically.
Removed
- The endpoint
/instances/<instance_id>/update/await_ingress_message:
use the two endpoints/instances/<instance_id>/update/tickand/instances/<instance_id>/read/ingress_status
to execute a round and fetch the status of the update call instead.
Full changelog: CHANGELOG.md
Commit hash: 8f1ef8ce78361adbc09aea4c2f0bce701c9ddb4d
Version 9.0.2
9.0.2 - 2025-05-27
Fixed
- Crash when creating a canister with a specified id on a PocketIC instance created from an existing PocketIC state.
Full changelog: CHANGELOG.md
Commit hash: 16825c5cbff83a51983d849b60c9d26b3268bbb6
Version 9.0.1
9.0.1 - 2025-04-30
Fixed
- Crash when creating multiple instances with the same subnet state directory simultaneously.
Full changelog: CHANGELOG.md
Commit hash: f195ba756bc3bf170a2888699e5e74101fdac6ba
Version 9.0.0
9.0.0 - 2025-04-23
Added
- The
GETendpoint/instances/<instance_id>/auto_progressthat returns whether the automatic progress was enabled for the PocketIC instance. - Support for VetKd if nonmainnet features are enabled on a PocketIC instance.
Changed
- The II canister always belongs to the dedicated II subnet (the II canister used to belong to the NNS subnet if no II subnet was specified).
- The II subnet size to be 34 nodes as on the ICP mainnet.
Full changelog: CHANGELOG.md
Commit hash: f90ff0b1433b110911aca96cf874b86073e5183c
Version 8.0.0
8.0.0 - 2025-02-26
Added
- New endpoint
/instances/<instance_id>/read/ingress_statusto fetch the status of an update call submitted through an ingress message.
If an optional caller is provided, the status of the update call is known, but the update call was submitted by a different caller, then an error is returned. - New endpoint
/instances/<instance_id>/update/set_certified_timeto set the current certified time on all subnets of the PocketIC instance. - The endpoint
/instances/<instance_id>/update/ticktakes an argument optionally containing the blockmaker and failed blockmakers
for every subnet used by the endpointnode_metrics_historyof the management canister.
Fixed
- Canisters created via
provisional_create_canister_with_cycleswith the management canister ID as the effective canister ID
are created on an arbitrary subnet.
Changed
- The response type
RawSubmitIngressResultis replaced byResult<RawMessageId, RejectResponse>. - The response types
RawWasmResultandUserErrorinRawCanisterResultare replaced byVec<u8>andRejectResponse.
Removed
- The endpoint
/instances/<instance_id>/update/execute_ingress_message:
use the two endpoints/instances/<instance_id>/update/submit_ingress_messageand/instances/<instance_id>/update/await_ingress_message
to submit and then await an ingress message instead.
Full changelog: CHANGELOG.md
Commit hash: 6e64281a8e0b4faa1d859f115fc138eee6e136f8
Version 7.0.0
7.0.0 - 2024-11-13
Added
- Support for IC Bitcoin API via the management canister if the bitcoin canister is installed as the bitcoin testnet canister
(canister IDg4xu7-jiaaa-aaaan-aaaaq-cai) on the bitcoin subnet and configured withNetwork::Regtest
and abitcoindprocess is listening at an address and port specified in an additional argument
of the endpoint/instances/to create a new PocketIC instance. - New endpoint
/instances/<instance_id>/_/topologyreturning the topology of the PocketIC instance. - New CLI option
--log-levelsto specify the log levels for PocketIC server logs (defaults topocket_ic_server=info,tower_http=info,axum::rejection=trace). - New endpoint
/instances/<instance_id/read/get_controllersto get the controllers of a canister.
Fixed
- Renamed
dfx_test_key1tECDSA and tSchnorr keys todfx_test_key.
Changed
- The PocketIC HTTP gateway routes requests whose paths start with
/_/and for which no canister ID can be found
directly to the PocketIC instance/replica (this only used to apply to requests for/_/dashboardindependently
of whether a canister ID could be found). - Subnet ids can be specified in
SubnetSpecs for all subnet kinds. - The certified time of a round is only bumped by
1nsif the time of the corresponding PocketIC instance did not increase since the last round. - The endpoint
/instances/<instance_id>/update/set_timereturns an error if the time of a PocketIC instance is set into the past. - Subnet sizes to match the subnet sizes on the ICP mainnet: II from 28 to 31 nodes, Fiduciary from 28 to 34 nodes.
Removed
- The CLI option
--pid: use the CLI option--port-fileinstead.
Full changelog: CHANGELOG.md
Commit hash: 172f8c78653c93ad101af75b94251439b4ccf098
Version 6.0.0
6.0.0 - 2024-09-12
Added
- New CLI option
--ip_addrto specify the IP address at which the PocketIC server should listen (defaults to127.0.0.1). - New argument
ip_addrof the endpoint/http_gatewayto specify the IP address at which the HTTP gateway should listen (defaults to127.0.0.1). - New GET endpoint
/http_gatewaylisting all HTTP gateways and their details. - Support for query statistics in the management canister.
- The argument of the endpoint
/instances/<instance_id>/auto_progressbecomes a struct with an optional fieldartificial_delay_msspecifying the minimum delay between consecutive rounds in auto progress mode. - Support for verified application subnets: the record types
SubnetConfigSetandExtendedSubnetConfigSetcontain a new fieldverified_applicationspecifying verified application subnets;
the enumeration typeSubnetKindhas a new variantVerifiedApplication. - New endpoint
/instances/<instance_id>/api/v2/subnet/...supporting the IC HTTP subnet read state requests. - New endpoint
/api/v2/subnetof the PocketIC HTTP gateway supporting the IC HTTP subnet read state requests. - The argument of the endpoint
/instances/takes an additional optional fieldlog_levelspecifying the replica log level of the PocketIC instance. - ECDSA support (IC mainnet-like): there are three ECDSA keys with names
dfx_test_key1,test_key_1, andkey_1on the II and fiduciary subnet. - tSchnorr support (IC mainnet-like): there are three Schnorr keys with names
dfx_test_key1,test_key_1, andkey_1and algorithm BIP340 as well as three Schnorr keys with namesdfx_test_key1,test_key_1, andkey_1and algorithm Ed25519 on the II and fiduciary subnet. The messages to sign with tSchnorr must be of length 32 bytes. - New endpoint
/_/dashboardof the PocketIC HTTP gateway returning the dashboard of the underlying PocketIC instance or replica. - The argument of the endpoint
/instances/<instance_id>/mock_canister_http_responsetakes an additional fieldadditional_responsesto mock additional responses for a pending canister HTTP outcall;
if non-empty, the total number of responses (one plus the number of additional responses) must be equal to the size of the subnet on which the canister making the HTTP outcall is deployed.
Changed
- The argument
listen_atof the endpoint/http_gatewayhas been renamed toport. - The endpoint
/instances/<instance_id>/auto_progressreturns an error if the corresponding PocketIC instance is already in auto progress mode.
Removed
- The option
--ready-file: the PocketIC server is ready to accept HTTP connections once the port file (specified via--pidor--port-file) contains a line terminated by a newline character.
Full changelog: CHANGELOG.md
Commit hash: 5aa7ad88dfd29ba9b6e166552d1e84f48001acb3
Version 5.0.0
5.0.0 - 2024-07-22
Added
- A new subnet is created on an existing PocketIC instance if a new canister is created with a specified mainnet canister ID that does not belong to any existing subnet's canister range.
- The argument of the endpoint
/http_gatewaytakes an additional optional fielddomainsspecifying the domains at which the HTTP gateway is listening (default tolocalhost). - The argument of the endpoint
/http_gatewaytakes an additional optional fieldhttps_configspecifying the TLS certificate and key. If provided, then an HTTPS gateway is started using that TLS certificate. - A new endpoint
/instances/<instance_id>/read/topologyto retrieve the topology of the PocketIC instance. The topology contains a list of node IDs instead of subnet size which can be derived from the number of node IDs. - New CLI option
--ready-fileto specify a file which is created by the PocketIC server once it is ready to accept HTTP connections. - A new endpoint
/instances/<instance_id>/_/dashboardserving a PocketIC dashboard. - ECDSA support (IC mainnet-like): there are three ECDSA keys with names
dfx_test_key1,test_key_1, andkey_1on the II subnet. - The argument of the endpoint
/instances/to create a new PocketIC instance becomes a struct with three fields:
the original argument of that endpoint is the fieldsubnet_config_set, the new optional fieldstate_dir
specifies a directory in which the state of the PocketIC instance can be preserved across the PocketIC instance lifetime
(that directory should be empty when specified asstate_dirfor the very first time), and the new optional fieldnonmainnet_features
specifies if non-mainnet features (e.g., best-effort responses) should be enabled for the PocketIC instance.
The topology contains a new fieldsubnet_seedwhich is equal to the directory name of the directory in thestate_dir
storing the state of the corresponding subnet.
The state directory (if specified) also contains a fileregistry.protocontaining the current snapshot of the registry. - Support for canister HTTP outcalls: endpoint
/instances/<instance_id>/get_canister_httpto retrieve pending canister HTTP outcalls
and endpoint/instances/<instance_id>/mock_canister_http_responseto mock a response for a pending canister HTTP outcall,
the server produces responses for pending canister HTTP outcalls automatically in the auto-progress mode (started by calling the endpoint/instances/<instance_id>/auto_progress). - New endpoint
/instance/<instance_id>/api/v3/canister/<effective_canister_id>/callsupporting a synchronous HTTP interface of the IC for update calls.
Note that this endpoint might non-deterministically return a response with status code 202 and empty body (in this case, the status of the call
must be polled at the endpoint/instance/<instance_id>/api/v3/canister/<effective_canister_id>/read_state).
Fixed
- Executing a query call on a new PocketIC instance crashed the PocketIC server.
Full changelog: CHANGELOG.md
Commit hash: cec100d1607eb2258441ff292a144ba88564458e