Subnet Management - 4zbus (Application)

This topic is intended to capture Subnet Management activities over time for the 4zbus subnet, providing a place to ask questions and make observations about the management of this subnet.

At the time of creating this topic the current subnet configuration is as follows:

Expand
{
  "version": 44581,
  "records": [
    {
      "key": "subnet_record_4zbus-z2bmt-ilreg-xakz4-6tyre-hsqj4-slb4g-zjwqo-snjcc-iqphi-3qe",
      "version": 44581,
      "value": {
        "membership": [
          "najnj-to3ju-pl6pl-5yjlc-6vdqi-f7tht-qd7tt-fenyr-f3tjc-tfj37-uae",
          "oiso5-hxkkc-elqlo-iyoqg-7oux4-5mscl-zkvoh-b2432-ohrir-b5fcm-gae",
          "75run-c7fya-7uoor-jzgtx-pwjc4-lfhyp-62p2w-2pnyv-amqh6-tdhji-rae",
          "ozim4-dez5l-gk24c-m7phw-e6i32-c7vxe-m6you-mkprj-moxq2-fhtyw-uae",
          "cvic3-6mmjj-2zszr-mr727-im4l5-skwod-gzrg2-avd4i-bahw3-xyx3l-2ae",
          "5zqhj-66qn7-he3p5-76gnj-hlsvl-ajlt5-k356i-fgm4m-5it4c-6m5ag-7qe",
          "7ak5q-ev3ur-nmmup-rocyw-z2kxo-bqppk-vkj22-gicfw-6h37b-cpvmc-uae",
          "v7xli-jnnol-am5py-5stvp-ucmul-5y4kn-yy4tu-34xee-mgfnu-y3hfg-xae",
          "c2vrr-ynjrh-xturt-s77ah-a5efo-b726x-dgq4a-m7zdc-wvsa5-7ogz5-mqe",
          "nxayg-zna42-zpngn-tg6hw-heplm-xvfsb-bxyov-3qiix-aaavl-5pdev-uqe",
          "uvyny-tt2f2-rb743-fk6ia-qn6ut-c3qyb-ob3aw-6qcvm-qbktr-pco7n-2ae",
          "jvqnq-6jnty-tr3ml-izvma-e5w6e-s3rfx-w4wir-mwcsf-x5yok-nc4uz-6ae",
          "7agd5-pfc4g-rdozn-zajij-aax72-7jft2-rzw36-y3flc-xwt77-pjg5w-7qe"
        ],
        "nodes": {},
        "max_ingress_bytes_per_message": 2097152,
        "max_ingress_messages_per_block": 1000,
        "max_block_payload_size": 4194304,
        "unit_delay_millis": 1000,
        "initial_notary_delay_millis": 600,
        "replica_version_id": "3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d",
        "dkg_interval_length": 499,
        "start_as_nns": false,
        "subnet_type": "verified_application",
        "features": {
          "canister_sandboxing": false,
          "http_requests": false,
          "sev_enabled": false
        },
        "max_number_of_canisters": 120000,
        "ssh_readonly_access": [],
        "ssh_backup_access": [],
        "ecdsa_config": null,
        "chain_key_config": null
      }
    }
  ]
}
1 Like

Thereā€™s an open proposal for changing subnet membership - https://dashboard.internetcomputer.org/proposal/131705. This information is presented below:

  • red marker represents a removed node (transparent center for overlap visibility)
  • green marker represents an added node
  • blue marker represents an unchanged node
  • highlighted patches represent the country a node sits within (red if the country is removed, green if added, otherwise grey)

Table
Country Data Center Owner Node Provider Node Status
--- Japan Tokyo 3 (ty3) Equinix Starbase nxayg-zna42-zpngn-tg6hw-heplm-xvfsb-bxyov-3qiix-aaavl-5pdev-uqe DOWN
--- United States of America (the) Jacksonville (jv1) Tierpoint 9Yards Capital 7ak5q-ev3ur-nmmup-rocyw-z2kxo-bqppk-vkj22-gicfw-6h37b-cpvmc-uae UP
+++ Germany Munich (mu1) q.beyond Staking Facilities yeark-e7nqu-ovf7r-vrjm3-zh7yz-kg6f6-6rlhc-o5kgs-lkriq-5d2hi-zqe UNASSIGNED
+++ Japan Tokyo 2 (ty2) Equinix Starbase krwx5-u5srm-kqbyx-szogs-gaseq-qzef4-txjmy-ql5em-k6q5n-h3ono-bae UNASSIGNED
Belgium Brussels 2 (br2) AtlasEdge Allusion najnj-to3ju-pl6pl-5yjlc-6vdqi-f7tht-qd7tt-fenyr-f3tjc-tfj37-uae UP
Switzerland Geneva 2 (ge2) SafeHost Archery Blockchain SCSp uvyny-tt2f2-rb743-fk6ia-qn6ut-c3qyb-ob3aw-6qcvm-qbktr-pco7n-2ae UP
Switzerland Zurich 5 (zh5) Green.ch Sygnum Bank c2vrr-ynjrh-xturt-s77ah-a5efo-b726x-dgq4a-m7zdc-wvsa5-7ogz5-mqe UP
Spain Madrid 3 (ma3) IPCore Vladyslav Popov oiso5-hxkkc-elqlo-iyoqg-7oux4-5mscl-zkvoh-b2432-ohrir-b5fcm-gae UP
Romania Bucharest (bu1) M247 Iancu Aurel 7agd5-pfc4g-rdozn-zajij-aax72-7jft2-rzw36-y3flc-xwt77-pjg5w-7qe UP
Singapore Singapore (sg1) Telin OneSixtyTwo Digital Capital jvqnq-6jnty-tr3ml-izvma-e5w6e-s3rfx-w4wir-mwcsf-x5yok-nc4uz-6ae UP
Slovenia Ljubljana 2 (lj2) Anonstake Anonstake 5zqhj-66qn7-he3p5-76gnj-hlsvl-ajlt5-k356i-fgm4m-5it4c-6m5ag-7qe UP
Sweden Stockholm 1 (sh1) Digital Realty DFINITY Operations SA ozim4-dez5l-gk24c-m7phw-e6i32-c7vxe-m6you-mkprj-moxq2-fhtyw-uae UP
United States of America (the) Atlanta 2 (at2) Datasite BLP22, LLC cvic3-6mmjj-2zszr-mr727-im4l5-skwod-gzrg2-avd4i-bahw3-xyx3l-2ae UP
United States of America (the) Fremont (fm1) Hurricane Electric Mostly Wholesome, Inc. 75run-c7fya-7uoor-jzgtx-pwjc4-lfhyp-62p2w-2pnyv-amqh6-tdhji-rae UP
United States of America (the) Portland (pl1) Flexential 87m Neuron, LLC v7xli-jnnol-am5py-5stvp-ucmul-5y4kn-yy4tu-34xee-mgfnu-y3hfg-xae UP

The proposal summary states:

Motivation: replacing 1 unhealthy node; replacing 1 node to improve subnet decentralization

The unhealthy node refers to nxayg-zna42-zpngn-tg6hw-heplm-xvfsb-bxyov-3qiix-aaavl-5pdev-uqe which is down. Itā€™s replaced by another node (krwx5-u5srm-kqbyx-szogs-gaseq-qzef4-txjmy-ql5em-k6q5n-h3ono-bae) in the same data center (currently unassigned). :+1:

The other node thatā€™s being replaced appears healthy, and the described rationale is to improve subnet decentralisation. I donā€™t think itā€™s clear how this is achieved by the proposed node change. There are currently 4 nodes located in the US, and 6 nodes in Europe. This proposal removes one of the US nodes and replaces it with a node located in Germany (granted this is a new country for the subnet, but itā€™s yet another European nodeā€¦:person_shrugging:).

@andrea or @bitdivine are you the guys to ask for this? Are you able to offer any clarity regarding the ā€˜improve subnet decentralisationā€™ element of this proposal?

2 Likes

I think the situation is even more confusing with this similar proposal for lhg73 ā†’ Subnet Management - lhg73 (Application) - Developers - Internet Computer Developer Forum (dfinity.org)

1 Like

I think when nodes are replaced, the proposals aims to improve on various decentralization metrics for the subnet, e.g. number of node providers, continents, jurisdictions, etc. Sometimes replacing multiple nodes makes it easier to improve some metrics, than replacing a single node. I donā€™t actually know for this specific case, let me ping somebody that could share more details.

3 Likes

Thanks @andrea, @SvenF gave a further explanation here (posting for reference) ā†’ New Node Provider Proposals - Roadmap - Internet Computer Developer Forum (dfinity.org)

2 Likes

I find that diagram much easier to look at. Thanks for the blue! (Maybe Iā€™m just getting old and fuzzy-eyed but it helps :sweat_smile: )

2 Likes

I think youā€™re right, it was a great suggestion! This particular proposal was also interesting because a removed node was in the same location as an added node. Hopefully the other changes I made make this sort of situation clear (let me know if you have any other suggestions :slight_smile: )

1 Like

I just merged a change that should add more information to this type of proposals:

4 Likes

Awesome! Thanks @sat, Iā€™m looking forward to seeing this in action

1 Like

^ This proposal was rejected (DFINITY noticed that one of the proposed nodes was due to be decommissioned - the proposal for that decommissioning is now out ā†’ Proposal: 131758).


Thereā€™s now a revised open proposal for this subnet ā†’ Proposal 131789. Thanks again @sat, the proposal summary is now super informative! :raised_hands:

Iā€™ve independently verified the proposal claims below. As before, one node is down and is replaced by an up node by the same node provider in Japan. The other node change is intended to optimise subnet decentralisation coefficients. This optimisation appears to be mostly positive.

Subnet node distance stats (distance between any 2 nodes in the subnet) ā†’

Smallest Distance Average Distance Largest Distance
EXISTING 71.122 km 6513.222 km 16469.974 km
PROPOSED 71.122 km 6215.817 km (-4.6%) 16469.974 km

This proposal slightly reduces decentralisation considered purely in terms of geographic distance (and therefore thereā€™s a slight theoretical reduction in localised disaster resilience). :-1:

Subnet characteristic counts ā†’

Continents Countries Data Centers Owners Node Providers
EXISTING 3 9 13 13 13
PROPOSED 3 10 (+10%) 13 13 13

This proposal slightly increases the number of countries that constitute this subnet, improving decentralisation in terms of jurisdiction diversity. :+1:

Largest number of nodes with the same characteristic (e.g. continent, country, data center, etc.) ā†’

Continent Country Data Center Owner Node Provider
EXISTING 7 4 1 1 1
PROPOSED 7 3 (-25%) 1 1 1

See here for acceptable limits ā†’ Motion 125549 (note that these are due for a slight revision)

As far as I gather, this subnet is already in violation of the predefined maximum number of nodes within the same country, which is supposed to be 2 for a 13 node subnet.

This proposal brings this number closer to the acceptable limit :+1: (though I believe the outcome will still be in violation of the acceptable limit, 3 instead of 2).

The above subnet information is illustrated below, followed by a node reference table:

Map Description
  • Red marker represents a removed node (transparent center for overlap visibility)
  • Green marker represents an added node
  • Blue marker represents an unchanged node
  • Highlighted patches represent the country the above nodes sit within (red if the country is removed, green if added, otherwise grey)
  • Light grey markers with yellow borders are examples of unassigned nodes that would be viable candidates for joining the subnet according to formal decentralisation coefficients (so this proposal can be viewed in the context of alternative solutions that are not being used)

Table
Continent Country Data Center Owner Node Provider Node Status
--- Asia Japan Tokyo 3 (ty3) Equinix Starbase nxayg-zna42-zpngn-tg6hw-heplm-xvfsb-bxyov-3qiix-aaavl-5pdev-uqe DOWN
--- Americas United States of America (the) Fremont (fm1) Hurricane Electric Mostly Wholesome, Inc. 75run-c7fya-7uoor-jzgtx-pwjc4-lfhyp-62p2w-2pnyv-amqh6-tdhji-rae UP
+++ Americas Canada Toronto 2 (to2) Cyxtera Blockchain Development Labs 2h6dm-k5h3n-nmqek-m5gty-yy3xq-a3atf-54its-biy25-ijh3c-xvit4-mae UNASSIGNED
+++ Asia Japan Tokyo (ty1) Equinix Starbase ktqjk-r6yho-cqgxd-qaqqn-yhxvl-ez6ax-jk3n4-bfa2f-vprkh-eigf5-5qe UNASSIGNED
Europe Belgium Brussels 2 (br2) AtlasEdge Allusion najnj-to3ju-pl6pl-5yjlc-6vdqi-f7tht-qd7tt-fenyr-f3tjc-tfj37-uae UP
Europe Switzerland Geneva 2 (ge2) SafeHost Archery Blockchain SCSp uvyny-tt2f2-rb743-fk6ia-qn6ut-c3qyb-ob3aw-6qcvm-qbktr-pco7n-2ae UP
Europe Switzerland Zurich 5 (zh5) Green.ch Sygnum Bank c2vrr-ynjrh-xturt-s77ah-a5efo-b726x-dgq4a-m7zdc-wvsa5-7ogz5-mqe UP
Europe Spain Madrid 3 (ma3) IPCore Vladyslav Popov oiso5-hxkkc-elqlo-iyoqg-7oux4-5mscl-zkvoh-b2432-ohrir-b5fcm-gae UP
Europe Romania Bucharest (bu1) M247 Iancu Aurel 7agd5-pfc4g-rdozn-zajij-aax72-7jft2-rzw36-y3flc-xwt77-pjg5w-7qe UP
Asia Singapore Singapore (sg1) Telin OneSixtyTwo Digital Capital jvqnq-6jnty-tr3ml-izvma-e5w6e-s3rfx-w4wir-mwcsf-x5yok-nc4uz-6ae UP
Europe Slovenia Ljubljana 2 (lj2) Anonstake Anonstake 5zqhj-66qn7-he3p5-76gnj-hlsvl-ajlt5-k356i-fgm4m-5it4c-6m5ag-7qe UP
Europe Sweden Stockholm 1 (sh1) Digital Realty DFINITY Operations SA ozim4-dez5l-gk24c-m7phw-e6i32-c7vxe-m6you-mkprj-moxq2-fhtyw-uae UP
Americas United States of America (the) Atlanta 2 (at2) Datasite BLP22, LLC cvic3-6mmjj-2zszr-mr727-im4l5-skwod-gzrg2-avd4i-bahw3-xyx3l-2ae UP
Americas United States of America (the) Jacksonville (jv1) Tierpoint 9Yards Capital 7ak5q-ev3ur-nmmup-rocyw-z2kxo-bqppk-vkj22-gicfw-6h37b-cpvmc-uae UP
Americas United States of America (the) Portland (pl1) Flexential 87m Neuron, LLC v7xli-jnnol-am5py-5stvp-ucmul-5y4kn-yy4tu-34xee-mgfnu-y3hfg-xae UP

Iā€™m planning to adopt this proposal as the improvements to subnet decentralisation (in terms of jurisdiction diversity) are more important than the slight increase in average node proximity. I do have some questions though. @SvenF would you be able to answer any of these? :pray:

  • Am I correct in observing that the subnet is currently in violation of the predefined decentralisation coefficient relating to the maximum number of nodes that should belong to the same country? (and that the subnet will still be in violation of this even once this proposal passes, though it will be in a better position than it is now) :face_with_monocle:

  • There are plenty of viable nodes located in South Africa and Australia (illustrated on the map). Any of these would have improved the country coefficient, as well as increasing the average geographic distance between subnet nodes, as well as increasing the number of continents that the subnet is composed of. Am I missing something, or would one of these have potentially been a better choice of node to add to the subnet? :thinking:

  • When selecting nodes to add to a subnet to optimise decentralisation, is this done in a greedy fashion (considering just the subnet in question), or are redundancy requirements for other subnets also taken into account? :nerd_face:

As a side note, there are two nodes (in Switzerland) in this subnet that are very close to one another, roughly an hours drive apart :red_car: (but of course these belong to different node providers and data centre owners, otherwise this would also be a violation of the decentralisation coefficients).

2 Likes

e[2m node_provider: 5.00 ā†’ 5.00 (+0%)e[0m
e[2m data_center: 5.00 ā†’ 5.00 (+0%)e[0m
e[2mdata_center_owner: 5.00 ā†’ 5.00 (+0%)e[0m
e[2m city: 5.00 ā†’ 5.00 (+0%)e[0m
e[2m country: 2.00 ā†’ 2.00 (+0%) e[0m
e[2m continent: 1.00 ā†’ 1.00 (+0%)e[0m
.
e[1;2m Total: 3.83 ā†’ 3.83 (+0%) e[0m

@sat shouldnā€™t these coefficients be influenced by this proposal (as described in my post above), or have I misunderstood something? Are you able to share some pseudo code for the formula that generates these coefficients? Iā€™m a little confused by the outcome of the country one.

1 Like

The algorithm actually focuses on the Nakamoto coefficients across different features/dimensions. Here is what ChatGPT just generated when given the following prompt:

Can you please write pseudo code for calculating Nakamoto coefficients across 5 features/dimensions: "NodeProvider", "DataCenter", "DataCenterOwner", "City", "Country", "Continent"? This is for an Internet Computer subnet, and subnets on the IC have 3*f + 1 nodes, where f is the failure domain.

Generated code:

function calculate_nakamoto_coefficients(nodes):
    # Dimensions to consider
    dimensions = ["NodeProvider", "DataCenter", "DataCenterOwner", "City", "Country", "Continent"]
    
    # Dictionary to store Nakamoto coefficient for each dimension
    nakamoto_coefficients = {}

    for dimension in dimensions:
        # Step 1: Group nodes by the current dimension
        groups = group_nodes_by_dimension(nodes, dimension)

        # Step 2: Calculate the number of nodes in each group
        group_sizes = []
        for group in groups:
            group_sizes.append(count_nodes_in_group(group))
        
        # Step 3: Sort groups by size in descending order
        group_sizes.sort(descending=True)

        # Step 4: Determine the minimum number of groups needed to control more than f nodes
        cumulative_nodes = 0
        f = (total_nodes(nodes) - 1) // 3
        for i in range(len(group_sizes)):
            cumulative_nodes += group_sizes[i]
            if cumulative_nodes > f:
                nakamoto_coefficients[dimension] = i + 1
                break

    return nakamoto_coefficients

function group_nodes_by_dimension(nodes, dimension):
    # Create a dictionary to group nodes by the specified dimension
    groups = {}
    for node in nodes:
        key = node[dimension]
        if key not in groups:
            groups[key] = []
        groups[key].append(node)
    return groups.values()

function count_nodes_in_group(group):
    # Return the number of nodes in the group
    return len(group)

function total_nodes(nodes):
    # Return the total number of nodes
    return len(nodes)

# Main function to calculate Nakamoto Coefficients across multiple dimensions
function main():
    nakamoto_coefficients = calculate_nakamoto_coefficient(nodes)

    # Return or print the Nakamoto coefficients
    return nakamoto_coefficients

# Example structure of a node in the nodes list
# node = {
#    "Continent": "Europe",
#    "Country": "Germany",
#    "City": "Berlin",
#    "Data Center": "DC1",
#    "Node Provider": "ProviderA",
#    "power": 100  # Power could be hash rate, stake, voting power, etc.
# }

# Example usage
nodes = [...]  # List of node dictionaries with the above structure
nakamoto_coefficients = main()
print(nakamoto_coefficients)

The actual code we use is at:

And I also asked ChatGPT to compare the code it generated with the one in our code base, and check for bugs etc, and it answered the following:

Based on that, Iā€™d say the implementation is (relatively) okay.

Am I correct in observing that the subnet is currently in violation of the predefined decentralisation coefficient relating to the maximum number of nodes that should belong to the same country? (and that the subnet will still be in violation of this even once this proposal passes, though it will be in a better position than it is now) :face_with_monocle:

@Lorimer The Nakamoto coefficient is calculated in a slightly different way. You need to sort countries based on the number of nodes in that country, and then keep summing up the countries until you get over 4 nodes. So in this case the calculation in the code is correct. The NC is 2 for the country, both before and after the replacement. You seem to have an off-by-one error in your analysis. But we are improving the node distribution with this proposal.

There are plenty of viable nodes located in South Africa and Australia (illustrated on the map). Any of these would have improved the country coefficient, as well as increasing the average geographic distance between subnet nodes, as well as increasing the number of continents that the subnet is composed of. Am I missing something, or would one of these have potentially been a better choice of node to add to the subnet? :thinking:

These nodes would likely make some other coefficients / dimensions worse.

When selecting nodes to add to a subnet to optimise decentralisation, is this done in a greedy fashion (considering just the subnet in question), or are redundancy requirements for other subnets also taken into account? :nerd_face:

We are doing in greedy fashion, but only 1 node at a time. What does that mean? Letā€™s say that we need to add 2 nodes to a subnet. For each of the 2 nodes, we do:

  • calculate the Nakamoto coefficients we would get for each of the ~500 nodes
  • sort the candidates based on their Nakamoto
  • pick the best Nakamoto
  • find all candidates that have the best Nakamoto (may be 10-20 nodes with the same result)
  • pick one of the best candidates - since this PR we try to keep the same nodes if there is no improvement

HTH

1 Like

Thanks @sat, my last comment was a bit of a brain fart (and certainly was caused by an off-by-one error, in my head). I expected the country coefficient update to look like this,

  • e[2m country: 1.00 ā†’ 2.00 (+0%) e[0m, rather than this,
  • e[2m country: 2.00 ā†’ 2.00 (+0%) e[0m,

because I was considering 4 malicious nodes to be needed to take down a subnet (such as the 4 in the US prior to this proposal executing), whereas 4 is of course the max number that can be tolerated (not the min number that cannot be tolerated).


That being said, I stand by the points that I raised in my main post. In order to comply with formal subnet limits, the Nakamato coefficient for the country characteristic needs to be 3. Hence 2 is too small (requiring the nodes of only 2 countries to collude in order to theoretically attack the subnet). This is documented in more detail here ā†’

^ Given this, I would reiterate my point.

I believe an additional proposal is needed to get this subnet back within the acceptable limit according to the current and revised target IC topology (a limit of 2 nodes per country, meaning a minimum country Nakamoto coefficient of 3).

I wouldnā€™t be surprised if other subnets have similar issues (Iā€™ll run some analysis when I get a chance, maybe tomorrow).


Regarding the unassigned South Africa and Australia nodes, I was already filtering out nodes using the strictest of constraints (only returning unassigned nodes that did not share a single characteristic with the existing subnet nodes i.e. continent, country, node provider, data centre, owner).

These nodes could therefore only have had no effect or a positive impact on the Nakamoto coefficients of the subnet (not a negative impact). Here are a handful of example candidates:

This approach is problematic. For example, none of the unassigned nodes illustrated on the map that I rendered above would result in an improved Nakamoto coefficient by themself (for anything other than continent). This doesnā€™t mean that they wouldnā€™t improve decentralisation (essentially making it easier to improve the other Nakamoto coefficients with subsequent node swaps in the future).

I think the crux of the issue is that the Nakamoto coefficients are throwing away information because theyā€™re discretised. This is demonstrated by the fact that they werenā€™t even affected by this proposal. I think it would probably make more sense to optimise for subnet limits directly, and therefore indirectly optimise for the Nakamoto coefficients (so that all information is available and considered during the optimisation procedure).

1 Like

An empirical observation: we very rarely have enough nodes decentralized nodes to have a Nakamoto of 3 for country.

We show the Nakamoto at the end, but we sort the candidates based on other values. So your suggestion (if I understood it correctly) is already done. If not, please send a PR :innocent:

2 Likes

Thanks @sat, sounds good. Iā€™ve not had much time to look at the code, but will plan to make some time to dive into it properly on the weekend.

This sounds concerning given that a Nakamoto of 3 is the minimum permissible by the IC target topology, as I understand it.

Iā€™m a little confused about how this scarcity can be the case though. Here are the current unassigned replica nodes. I count,

  • 804 unassigned nodes in total
  • 82 data centres with unassigned nodes in total
  • 84 node providers with unassigned nodes in total
  • 53 owners with unassigned nodes in total
  • 29 countries with unassigned nodes in total
  • 5 continents with unassigned nodes in total

Am I missing something? I also count 31 nodes that donā€™t share any of these characteristics with this subnet (I shared 4 of these in my previous message).


If I were to raise a ChangeSubnetMembership proposal myself to resolve this nonconformance, assuming that it achieves the desired Nakamoto coefficient across all dimensions for this subnet, would this be a proposal that DFINITY would be happy to accept?

Hi @Lorimer I think your observation is correct that there should be enough nodes to Nakamoto coefficient of 3 per country (since country limit is 2 for most subnets, which would mean 5 nodes need to collude to take over a 13 node subnet, which would be 2 in same country + another 2 in same country + any other node, which means Nakamoto coefficient is 3). Otherwise the IC target topology would not have been reached.

But to support the statement of @sat, country is the most limiting factor in decentralization (there is much more variety in Node Providers, cities, data centers, and data center operators than countries), and spare nodes are not taken into account in the optimization tool, so suboptimization by seeking the maximum decentralization for one subnet needs to be avoided.

In the example above, swapping two nodes (for example adding one node from a Node Provider in South Africa, next to replacing the unhealthy node) is indeed interesting but does not change the nakamoto coefficient, as Sasa also indicated. With 3 (instead of 4) US nodes, and 2 nodes in Switzerland you still only need to have control over these two countries in order to take over the subnet. What is more interesting is the add another - third - node that replaces one American or Swiss node, then the country limit would bump of from 2 to 3. The current dre-tool can be run multiple times so that you can continuously improve each subnet, but for the two reasons above (country limit, and need for enough spare nodes) itā€™s better to only do this increased optimization for the larger (i.e. high priority) subnets such as NNS, SNS, II and Fiduciary subnets.

Please have a look at the dre-tooling and happy to hear your throughts.

2 Likes

Thanks for your response @SvenF

Do I understand correctly that youā€™re saying thereā€™s an intentional plan to allow the smaller subnets to deviate from the formally proposed and voted in target IC topology, in order to give the larger subnets a better chance of meeting those same targets?

Doesnā€™t this imply that the picture thatā€™s been painted for the current IC Target Topology proposal is inaccurate and misleading, as this will lead to a scenario where the smaller subnets are even less likely to be able to meet their formally voted in topology target? (unless more node providers in more countries are onboarded)

I get the impression that the tool has issues when used in this way (given the payload problems that have occurred with these four recently submitted ā€˜Change Subnet Membershipā€™ proposals - 5kdm2, mpubz, tdb26, uzr34).

Iā€™m quite interested in writing an alternative tool from the ground up using a different optimisation approach (non-greedy, non-linear, stochastically optimised using something like a simulated annealing algorithm - or whatever does a better job of avoiding local minima). Iā€™m also interested in optimising for the fewest number of swaps required to meet arbitrary targets.

Does this sound like something that would be useful (Iā€™d open source it of course)?

Yes, absolutely. With this in mind, last week Iā€™ve created a what-if subcommand in the DRE tool, which should allow you to easily play around and see what kind of an effect on decentralization would some replacements make.

My suggestion would be to make sure you run this before submitting a proposal. Otherwise, you might get a rejection for something that seemed like a good action.

1 Like

DFINITY will submit a proposal in three days on Monday to reduce the notarization delay on subnet 4zbus, similar to what has happened on other subnets in recent weeks (you can find all details in this forum thread).

3 Likes