Skip to content

Releases: dfinity/pocketic

Version 11.0.0

05 Dec 09:01
c18ce95

Choose a tag to compare

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>.
    The state_label and op_id are returned by ApiResponse::Started {state_label, op_id}.
  • New ICP features bitcoin, dogecoin, and canister_migration can be specified in the optional field icp_features in the argument of the endpoint /instances/.
  • Support for Dogecoin: PocketIC server interacts with a dogecoind process listening at an address and port specified in a new optional field dogecoind_addr of the endpoint /instances/.
  • The endpoint /instances/<instance_id>/update/canister_snapshot_download to download a canister snapshot to a given snapshot directory.
  • The endpoint /instances/<instance_id>/update/canister_snapshot_upload to upload a canister snapshot from a given snapshot directory.
  • New CLI option --mainnet-routing-table to 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-table to 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

12 Sep 11:33
10458c5

Choose a tag to compare

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/tick and /instances/<instance_id>/read/ingress_status in a loop.
  • The argument of the endpoint /instances/ takes an additional optional field icp_features specifying 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 field incomplete_state specifying 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 field initial_time specifying 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 field icp_config specifying which features not available on the ICP mainnet should be available
    in the newly created PocketIC instance (the field used to be called nonmainnet_features and be of a simple Boolean type before).
  • The argument of the endpoint /instances/ takes an additional optional field http_gateway_config specifying 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

06 Jun 08:57
e780686

Choose a tag to compare

9.0.3 - 2025-06-06

Changed

  • The endpoint /instances/<instance_id>/auto_progress sets 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/tick and /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

27 May 08:32
4b61f08

Choose a tag to compare

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

02 May 08:12
46d3b83

Choose a tag to compare

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

24 Apr 10:20
b6e0ba5

Choose a tag to compare

9.0.0 - 2025-04-23

Added

  • The GET endpoint /instances/<instance_id>/auto_progress that 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

27 Feb 13:47
fdd2a53

Choose a tag to compare

8.0.0 - 2025-02-26

Added

  • New endpoint /instances/<instance_id>/read/ingress_status to 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_time to set the current certified time on all subnets of the PocketIC instance.
  • The endpoint /instances/<instance_id>/update/tick takes an argument optionally containing the blockmaker and failed blockmakers
    for every subnet used by the endpoint node_metrics_history of the management canister.

Fixed

  • Canisters created via provisional_create_canister_with_cycles with the management canister ID as the effective canister ID
    are created on an arbitrary subnet.

Changed

  • The response type RawSubmitIngressResult is replaced by Result<RawMessageId, RejectResponse>.
  • The response types RawWasmResult and UserError in RawCanisterResult are replaced by Vec<u8> and RejectResponse.

Removed

  • The endpoint /instances/<instance_id>/update/execute_ingress_message:
    use the two endpoints /instances/<instance_id>/update/submit_ingress_message and /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

14 Nov 14:38
2d76acb

Choose a tag to compare

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 ID g4xu7-jiaaa-aaaan-aaaaq-cai) on the bitcoin subnet and configured with Network::Regtest
    and a bitcoind process 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>/_/topology returning the topology of the PocketIC instance.
  • New CLI option --log-levels to specify the log levels for PocketIC server logs (defaults to pocket_ic_server=info,tower_http=info,axum::rejection=trace).
  • New endpoint /instances/<instance_id/read/get_controllers to get the controllers of a canister.

Fixed

  • Renamed dfx_test_key1 tECDSA and tSchnorr keys to dfx_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 /_/dashboard independently
    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 1ns if the time of the corresponding PocketIC instance did not increase since the last round.
  • The endpoint /instances/<instance_id>/update/set_time returns 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-file instead.

Full changelog: CHANGELOG.md
Commit hash: 172f8c78653c93ad101af75b94251439b4ccf098

Version 6.0.0

13 Sep 09:25
26667a7

Choose a tag to compare

6.0.0 - 2024-09-12

Added

  • New CLI option --ip_addr to specify the IP address at which the PocketIC server should listen (defaults to 127.0.0.1).
  • New argument ip_addr of the endpoint /http_gateway to specify the IP address at which the HTTP gateway should listen (defaults to 127.0.0.1).
  • New GET endpoint /http_gateway listing all HTTP gateways and their details.
  • Support for query statistics in the management canister.
  • The argument of the endpoint /instances/<instance_id>/auto_progress becomes a struct with an optional field artificial_delay_ms specifying the minimum delay between consecutive rounds in auto progress mode.
  • Support for verified application subnets: the record types SubnetConfigSet and ExtendedSubnetConfigSet contain a new field verified_application specifying verified application subnets;
    the enumeration type SubnetKind has a new variant VerifiedApplication.
  • New endpoint /instances/<instance_id>/api/v2/subnet/... supporting the IC HTTP subnet read state requests.
  • New endpoint /api/v2/subnet of the PocketIC HTTP gateway supporting the IC HTTP subnet read state requests.
  • The argument of the endpoint /instances/ takes an additional optional field log_level specifying 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, and key_1 on the II and fiduciary subnet.
  • tSchnorr support (IC mainnet-like): there are three Schnorr keys with names dfx_test_key1, test_key_1, and key_1 and algorithm BIP340 as well as three Schnorr keys with names dfx_test_key1, test_key_1, and key_1 and algorithm Ed25519 on the II and fiduciary subnet. The messages to sign with tSchnorr must be of length 32 bytes.
  • New endpoint /_/dashboard of 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_response takes an additional field additional_responses to 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_at of the endpoint /http_gateway has been renamed to port.
  • The endpoint /instances/<instance_id>/auto_progress returns 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 --pid or --port-file) contains a line terminated by a newline character.

Full changelog: CHANGELOG.md
Commit hash: 5aa7ad88dfd29ba9b6e166552d1e84f48001acb3

Version 5.0.0

23 Jul 15:54
18f47f4

Choose a tag to compare

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_gateway takes an additional optional field domains specifying the domains at which the HTTP gateway is listening (default to localhost).
  • The argument of the endpoint /http_gateway takes an additional optional field https_config specifying the TLS certificate and key. If provided, then an HTTPS gateway is started using that TLS certificate.
  • A new endpoint /instances/<instance_id>/read/topology to 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-file to specify a file which is created by the PocketIC server once it is ready to accept HTTP connections.
  • A new endpoint /instances/<instance_id>/_/dashboard serving a PocketIC dashboard.
  • ECDSA support (IC mainnet-like): there are three ECDSA keys with names dfx_test_key1, test_key_1, and key_1 on 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 field subnet_config_set, the new optional field state_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 as state_dir for the very first time), and the new optional field nonmainnet_features
    specifies if non-mainnet features (e.g., best-effort responses) should be enabled for the PocketIC instance.
    The topology contains a new field subnet_seed which is equal to the directory name of the directory in the state_dir
    storing the state of the corresponding subnet.
    The state directory (if specified) also contains a file registry.proto containing the current snapshot of the registry.
  • Support for canister HTTP outcalls: endpoint /instances/<instance_id>/get_canister_http to retrieve pending canister HTTP outcalls
    and endpoint /instances/<instance_id>/mock_canister_http_response to 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>/call supporting 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