Skip to content

Commit 3df9a93

Browse files
authored
Merge branch 'master' into shuo/bump_state_size_2TiB
2 parents 59f2640 + 0f10881 commit 3df9a93

File tree

12 files changed

+228
-21
lines changed

12 files changed

+228
-21
lines changed

docs/defi/rosetta/icp_rosetta/construction_api/staking.mdx

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,60 @@ curl --location '0.0.0.0:8081/construction/payloads'  --header 'Content-Type: a
245245
}'
246246
```
247247

248+
## Disburse maturity
249+
250+
|                      |        |
251+
|----------------------|--------|
252+
| Since version        | 2.1.7  |
253+
| Idempotent?          | No    |
254+
| Minimal access level | controller |
255+
256+
Disburses a neuron's maturity to the neuron's controller or a specified recipient.
257+
258+
### Preconditions
259+
260+
* `account.address` is the ledger address of the neuron controller.
261+
* `metadata.percentage_to_disburse` is the percentage of the neuron's maturity that is going to be disbursed.
262+
* `metadata.recipient` contains an account_identifier that should receive the ICP disbursed from the maturity. If not specified, the maturity will be disbursed to `account.address`.
263+
*  The disbursed amount (disburse percentage * total neuron's maturity), needs to be at least 1 ICP plus the worst-case maturity modulation (`500` `e8s`), i.e., at least `100_000_500` `e8s`.
264+
265+
### Postconditions
266+
267+
* The neuron's maturity was reduced by the percentage specified in the request.
268+
* `metadata.recipient` or `account.address` (if recipient was not specified) received the specified percentage of maturity after seven days.
269+
270+
```json
271+
curl --location '0.0.0.0:8081/construction/payloads'  --header 'Content-Type: application/json' --data '{
272+
  "network_identifier": {
273+
    "blockchain": "Internet Computer",
274+
    "network": "00000000000000020101"
275+
  },
276+
  "public_keys": [
277+
    {
278+
      "hex_bytes": "047a83e378053f87b49aeae53b3ed274c8b2ffbe59d9a51e3c4d850ca8ac1684f7131b778317c0db04de661c7d08321d60c0507868af41fe3150d21b3c6c757367",
279+
      "curve_type": "secp256k1"
280+
    }
281+
  ],
282+
  "operations": [
283+
    {
284+
      "operation_identifier": {
285+
        "index": 0
286+
      },
287+
      "type": "DISBURSE_MATURITY",
288+
      "account": {
289+
        "address": "8b84c3a3529d02a9decb5b1a27e7c8d886e17e07ea0a538269697ef09c2a27b4"
290+
      },
291+
      "metadata": {
292+
        "neuron_index": 2,
293+
        "percentage_to_disburse": 60
294+
        "recipient": "47e0ae0de8af04a961c4b3225cd77b9652777286ce142c2a07fab98da5263100"
295+
      }
296+
    }
297+
  ],
298+
  "metadata": null
299+
}'
300+
```
301+
248302
## Start or stop dissolving
249303

250304
|                      |            |

docs/references/_attachments/interface-spec-changelog.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
## Changelog {#changelog}
22

3-
### 0.45.0 (2025-08-25) {$0_45_0}
3+
### 0.46.0 (2025-08-25) {$0_46_0}
44
* The management canister method `canister_status` returns two new fields: `version` indicating the canister version, and `ready_for_migration` indicating whether a canister's queues are empty and its streams flushed. The value only makes sense when the canister status is `stopped`.
55
* Canister history provides the source of a snapshot in the entry for loading the snapshot.
66

7+
### 0.45.0 (2025-08-18) {$0_45_0}
8+
* Canister ranges of every subnet are now available at a dedicated prefix `/canister_ranges` in the state tree,
9+
facilitating fragmentation due to canister migration.
10+
711
### 0.44.0 (2025-08-11) {$0_44_0}
812
* The management canister method `subnet_info` returns a new field `registry_version` providing the registry version of the corresponding subnet.
913

docs/references/ic-interface-spec.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,24 @@ The state tree contains information about all API boundary nodes (the source of
474474
Public IPv6 address of a node in the hexadecimal notation with colons.
475475
Example: `3002:0bd6:0000:0000:0000:ee00:0033:6778`.
476476
477+
### Canister ranges {#state-tree-canister-ranges}
478+
479+
The state tree contains information about the canister ranges of subnets on the Internet Computer.
480+
481+
- `/canister_ranges/<subnet_id>/<canister_id>` (blob)
482+
483+
A non-empty set of canister ids assigned to the provided subnet, starting with the provided canister id and
484+
ending with a canister id that is smaller than `<next_canister_id>` for the next canister id
485+
in a path of the form `/canister_ranges/<subnet_id>/<next_canister_id>`
486+
(in other words, the lexicographically sorted list of all canister ids assigned to the provided subnet is split into chunks starting at the provided `<canister_id>`).
487+
The set of canister ids is represented as a list of closed intervals of canister ids, ordered lexicographically, and encoded as CBOR (see [CBOR](#cbor)) according to this CDDL (see [CDDL](#cddl)):
488+
```
489+
canister_ranges = tagged<[*canister_range]>
490+
canister_range = [principal principal]
491+
principal = bytes .size (0..29)
492+
tagged<t> = #6.55799(t) ; the CBOR tag
493+
```
494+
477495
### Subnet information {#state-tree-subnet}
478496
479497
The state tree contains information about the topology of the Internet Computer.
@@ -773,13 +791,13 @@ The functionality exposed via the [The IC management canister](#ic-management-ca
773791

774792
:::note
775793

776-
Requesting paths with the prefix `/subnet` at `/api/v2/canister/<effective_canister_id>/read_state` might be deprecated in the future. Hence, users might want to point their requests for paths with the prefix `/subnet` to `/api/v2/subnet/<subnet_id>/read_state`.
794+
Requesting paths with the prefix `/canister_ranges` and `/subnet` at `/api/v2/canister/<effective_canister_id>/read_state` might be deprecated in the future. Hence, users might want to point their requests for paths with the prefix `/canister_ranges` and `/subnet` to `/api/v2/subnet/<subnet_id>/read_state`.
777795

778796
On the IC mainnet, the root subnet ID `tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe` can be used to retrieve the list of all IC mainnet's subnets by requesting the prefix `/subnet` at `/api/v2/subnet/tdb26-jop6k-aogll-7ltgs-eruif-6kk7m-qpktf-gdiqx-mxtrf-vb5e6-eqe/read_state`.
779797

780798
:::
781799

782-
In order to read parts of the [The system state tree](#state-tree), the user makes a POST request to `/api/v2/canister/<effective_canister_id>/read_state` or `/api/v2/subnet/<subnet_id>/read_state`. The subnet form should be used when the information to be retrieved is subnet specific, i.e., when requesting paths with the prefix `/time` or `/subnet`, and the subnet form must be used when requesting paths of the form `/subnet/<subnet_id>/metrics`. The request body consists of an authentication envelope with a `content` map with the following fields:
800+
In order to read parts of the [The system state tree](#state-tree), the user makes a POST request to `/api/v2/canister/<effective_canister_id>/read_state` or `/api/v2/subnet/<subnet_id>/read_state`. The subnet form should be used when the information to be retrieved is subnet specific, i.e., when requesting paths with the prefix `/time`, `/canister_ranges`, or `/subnet`, and the subnet form must be used when requesting paths of the form `/subnet/<subnet_id>/metrics`. The request body consists of an authentication envelope with a `content` map with the following fields:
783801

784802
- `request_type` (`text`): Always `read_state`
785803

@@ -828,6 +846,8 @@ All requested paths must have the following form:
828846

829847
- `/api_boundary_nodes`, `/api_boundary_nodes/<node_id>`, `/api_boundary_nodes/<node_id>/domain`, `/api_boundary_nodes/<node_id>/ipv4_address`, `/api_boundary_nodes/<node_id>/ipv6_address`. Can always be requested.
830848

849+
- `/canister_ranges/<subnet_id>`. Can always be requested.
850+
831851
- `/subnet`, `/subnet/<subnet_id>`, `/subnet/<subnet_id>/public_key`, `/subnet/<subnet_id>/canister_ranges`, `/subnet/<subnet_id>/node`, `/subnet/<subnet_id>/node/<node_id>`, `/subnet/<subnet_id>/node/<node_id>/public_key`. Can always be requested.
832852

833853
- `/subnet/<subnet_id>/metrics`. Can be requested at `/api/v2/subnet/<subnet_id>/read_state` (i.e., if the `<subnet_id>` in the URL matches the `<subnet_id>` in the paths). Cannot be requested at `/api/v2/canister/<effective_canister_id>/read_state`.
@@ -6948,6 +6968,7 @@ A record with
69486968
The predicate `may_read_path_for_canister` is defined as follows, implementing the access control outlined in [Request: Read state](#http-read-state):
69496969
```
69506970
may_read_path_for_canister(S, _, ["time"]) = True
6971+
may_read_path_for_canister(S, _, ["canister_ranges", sid]) = True
69516972
may_read_path_for_canister(S, _, ["subnet"]) = True
69526973
may_read_path_for_canister(S, _, ["subnet", sid]) = True
69536974
may_read_path_for_canister(S, _, ["subnet", sid, "public_key"]) = True
@@ -7000,6 +7021,7 @@ A record with
70007021
The predicate `may_read_path_for_subnet` is defined as follows, implementing the access control outlined in [Request: Read state](#http-read-state):
70017022
```
70027023
may_read_path_for_subnet(S, _, ["time"]) = True
7024+
may_read_path_for_subnet(S, _, ["canister_ranges", sid]) = True
70037025
may_read_path_for_subnet(S, _, ["subnet"]) = True
70047026
may_read_path_for_subnet(S, _, ["subnet", sid]) = True
70057027
may_read_path_for_subnet(S, _, ["subnet", sid, "public_key"]) = True
@@ -7018,6 +7040,7 @@ where `state_tree` constructs a labeled tree from the IC state `S` and the (so f
70187040
```
70197041
state_tree(S) = {
70207042
"time": S.system_time;
7043+
"canister_ranges": { subnet_id : { canister_id : ranges | the lexicographically sorted list of ranges in subnet_ranges is split into chunks starting at canister_id } | (subnet_id, _, subnet_ranges, _) ∈ subnets };
70217044
"subnet": { subnet_id : { "public_key" : subnet_pk; "canister_ranges" : subnet_ranges; "metrics" : <implementation-specific>; "node": { node_id : { "public_key" : node_pk } | (node_id, node_pk) ∈ subnet_nodes } } | (subnet_id, subnet_pk, subnet_ranges, subnet_nodes) ∈ subnets };
70227045
"request_status": { request_id(R): request_status_tree(T) | (R ↦ (T, _)) ∈ S.requests };
70237046
"canister":

docusaurus.config.js

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ const config = {
826826
},
827827
{
828828
label: "Medium",
829-
to: "https://medium.com/dfinity-network-blog",
829+
to: "https://medium.com/dfinity",
830830
icon: "data:image/svg+xml,%3Csvg width='24px' height='24px' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='m24 24h-24v-24h24zm-8.986-15.006v7.326c0 .198 0 .234-.127.362l-1.302 1.264v.27h6.32v-.27l-1.257-1.234c-.091-.07-.148-.178-.148-.3 0-.022.002-.043.005-.064v.002-9.07c-.003-.019-.005-.04-.005-.062 0-.121.058-.229.148-.298l.001-.001 1.286-1.234v-.27h-4.456l-3.176 7.924-3.609-7.924h-4.675v.271l1.502 1.813c.127.115.207.281.207.466 0 .022-.001.043-.003.064v-.003 7.126c.007.041.011.088.011.136 0 .222-.088.423-.231.571l-1.69 2.054v.27h4.8v-.27l-1.691-2.054c-.149-.154-.241-.363-.241-.595 0-.04.003-.079.008-.117v.004-6.16l4.215 9.195h.49z'/%3E%3C/svg%3E",
831831
iconLight: getImageDataUrl(
832832
"./static/img/svgIcons/purple/medium.svg"
@@ -856,14 +856,6 @@ const config = {
856856
"./static/img/svgIcons/purple/coinmarketcap.svg"
857857
),
858858
},
859-
{
860-
label: "DSCVR",
861-
to: "https://dscvr.one/p/internet-computer",
862-
icon: "data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_4579_44749)'%3E%3Cpath d='M15.5569 1.39645C14.4968 1.02636 13.3839 0.817527 12.2604 0.783161C12.1388 0.780518 12.0172 0.780518 11.8983 0.780518C11.1766 0.780518 10.4576 0.859822 9.75439 1.01579C9.74144 1.02293 9.72901 1.03006 9.71606 1.0372C9.72796 1.03006 9.73959 1.02293 9.75175 1.01579C6.75138 1.69252 4.52555 3.79675 3.4285 6.9055C2.38961 10.1438 3.2276 13.694 5.6041 16.1287C8.60183 19.1978 13.6403 20.0675 16.8654 16.8398C16.8659 16.8382 16.8667 16.8366 16.8673 16.835C19.6041 14.0934 19.6025 9.65051 16.8628 6.90815C14.1558 4.2012 11.0444 4.41004 7.84314 6.06751L7.64488 6.17061L7.81142 11.2831C7.82305 11.2485 7.83548 11.2157 7.84843 11.184C7.8368 11.217 7.82517 11.2498 7.81406 11.2831L7.91452 14.3787L8.01761 14.4765C8.8556 15.288 9.75439 15.563 10.5897 15.7427L10.4681 8.04485C10.4465 8.05542 10.4253 8.06653 10.4039 8.07763C10.425 8.0652 10.4465 8.05331 10.4681 8.04221C12.2974 7.44742 14.2087 7.82808 15.4115 9.43533C15.4136 9.43691 15.4154 9.4385 15.4176 9.44009C16.4295 10.7957 16.5736 12.6144 15.7869 14.1117C14.1214 17.2997 9.34201 17.1226 7.02101 14.7488C5.8896 13.5909 5.18114 12.0815 5.0146 10.4689C4.69209 7.41305 6.34164 4.48934 9.12524 3.18874L9.53234 3.06979C10.3042 2.86095 11.0999 2.75785 11.8983 2.75785C16.9341 2.75521 21.0157 6.83413 21.021 11.8673C21.021 13.3794 20.6456 14.8677 19.9292 16.1974C19.9168 16.222 19.9041 16.246 19.8917 16.2706C19.4777 17.0243 18.9577 17.7134 18.3484 18.3228C15.4009 21.2676 10.8329 21.7699 7.18227 19.8798C2.66982 17.5456 0.938326 12.285 2.46891 7.55845C2.56672 7.25709 2.41604 6.93194 2.12261 6.81034L2.03538 6.77333L1.89263 7.07469C1.73402 7.40777 1.58863 7.74878 1.46438 8.09772C-0.621338 13.8685 2.36582 20.234 8.13657 22.3197C8.17094 22.333 8.2053 22.3435 8.24231 22.3567C8.34303 22.3758 8.44348 22.3935 8.54393 22.4107C8.44216 22.3938 8.33986 22.376 8.23702 22.3567C14.0263 24.3764 20.3548 21.3231 22.3771 15.5365C24.3967 9.74726 21.3435 3.41873 15.5569 1.39645Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_4579_44749'%3E%3Crect width='22.2001' height='22.199' fill='white' transform='translate(0.799805 0.780518)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A",
863-
iconLight: getImageDataUrl(
864-
"./static/img/svgIcons/purple/dscvr.svg"
865-
),
866-
},
867859
{
868860
label: "Discord",
869861
to: "https://discord.internetcomputer.org",

showcase.json

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@
238238
"DAO"
239239
],
240240
"description": "The Gold DAO represents a groundbreaking fusion of traditional gold and modern blockchain technology, allowing anyone in the world to access physical gold instantaneously, without depending on banks.",
241-
"logo": "/img/showcase/golddao_logo.png"
241+
"logo": "/img/showcase/GLDGov.svg"
242242
},
243243
{
244244
"id": "omnity_ree",
@@ -3105,7 +3105,9 @@
31053105
"name": "AppIC DAO",
31063106
"display": "Normal",
31073107
"website": "https://app.appic.solutions/",
3108+
"twitter": "https://x.com/Appic_ICP",
31083109
"github": "https://github.com/Appic-Solutions",
3110+
"youtube": "https://www.youtube.com/@AppIC-DAO",
31093111
"submittableId": 44626035,
31103112
"tags": [
31113113
"Tools / Infrastructure",
@@ -5907,7 +5909,6 @@
59075909
"DeFi",
59085910
"Chain Fusion"
59095911
],
5910-
"stats": "We are not open for public use yet, but we are proud of our MVP",
59115912
"description": "Rumi Protocol lets users mint icUSD by locking ICP, ckBTC, or ckETH—bringing decentralized, collateral-backed stablecoins to the ICP ecosystem.",
59125913
"usesInternetIdentity": false,
59135914
"logo": "/img/showcase/Rumi_protocol.jpg",
@@ -5951,6 +5952,38 @@
59515952
"/img/showcase/Rhino_spider_screenshot.png"
59525953
],
59535954
"oneLiner": "RhinoSpider: Get rewarded for sharing your internet bandwidth!"
5955+
},
5956+
{
5957+
"id": "cordial_treasury",
5958+
"name": "Cordial Treasury",
5959+
"display": "Normal",
5960+
"website": "https://cordialsystems.com/",
5961+
"twitter": "https://x.com/cordialsys",
5962+
"submittableId": 50738612,
5963+
"tags": [
5964+
"Wallet",
5965+
"Tools / Infrastructure",
5966+
"Enterprise"
5967+
],
5968+
"description": "Cordial Treasury is the MPC wallet platform built by Cordial Systems, used by institutions such as Jump Trading Group, Figure.com, and SwissBorg. ",
5969+
"usesInternetIdentity": false,
5970+
"logo": "/img/showcase/cordial_treasury_logo.svg",
5971+
"oneLiner": "Adding ICP native coin and tokens to our MPC wallet."
5972+
},
5973+
{
5974+
"id": "one_million_pixel",
5975+
"name": "One Million Pixel Billboard",
5976+
"display": "Normal",
5977+
"website": "https://fnavb-oqaaa-aaaai-q3jvq-cai.icp0.io/",
5978+
"tags": [
5979+
"Creator Economy",
5980+
"Enterprise",
5981+
"NFT"
5982+
],
5983+
"description": "The ONE MILLION PIXEL BILLBOARD on ICP is a decentralised, permanent, community-owned canvas—part ad space, part art, part history.",
5984+
"usesInternetIdentity": true,
5985+
"logo": "/img/showcase/one_million_pixel_logo.png",
5986+
"oneLiner": "A decentralised, community-owned canvas."
59545987
}
59555988

59565989
]

src/pages/capabilities.tsx

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -364,18 +364,17 @@ function FeaturesPage() {
364364
variants={transitions.item}
365365
className="tw-heading-4 md:tw-heading-3 mb-4 "
366366
>
367-
Internet Identity — Web3 auth using WebAuthn
367+
Internet Identity — Secure and Convenient Authentication
368368
</motion.h3>
369369
<motion.p
370370
className="tw-paragraph md:tw-lead-sm mb-6 text-white-80"
371371
variants={transitions.item}
372372
>
373-
The Internet Computer blockchain has replaced the username and
374-
password model with a more advanced and much more secure method
375-
of cryptographic authentication that is more convenient, works
376-
across all of a user's devices, and helps protect user privacy.
377-
Based on W3C's Web Authentication (WebAuthn) Web standard. Using
378-
hardware-based user key protection.
373+
Internet Identity is the modern successor to the username and
374+
password model, using a more advanced and secure method powered
375+
by passkeys and WebAuthn. Passkeys allow you to sign in with a
376+
convenient method, like your device's screen lock. For ease of
377+
use, you can also sign in with your Google Account.
379378
</motion.p>
380379
<motion.p className="mb-0" variants={transitions.item}>
381380
<Link

src/pages/icp-tokens.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,12 @@ function TokenHolders(): JSX.Element {
657657
link="https://www.taurushq.com/"
658658
icon="/img/showcase/taurus_logo.png"
659659
/>
660+
<WalletCard
661+
title="Cobo"
662+
description="Institutional custody infrastructure with strong footprint in Asia and bitcoin ecosystem"
663+
link="https://www.cobo.com/"
664+
icon="/img/showcase/cobo_logo.webp"
665+
/>
660666
</div>
661667
</motion.div>
662668
</AnimateSpawn>
-71.4 MB
Binary file not shown.

0 commit comments

Comments
 (0)