ICP Ledger Anonymous Principal Changes

Overview

The ICP ledger currently restricts the anonymous principal from performing transactions. In the upcoming ICP ledger suite release, DFINITY proposes removing these restrictions to allow the anonymous principal to execute transactions. As the anonymous principal’s default account currently holds a small amount of funds, we also propose burning these funds in the post_upgrade method when installing the ledger upgrade.

Rationale

Enabling anonymous principal transactions will significantly improve the development experience by facilitating testing workflows. For example, developers working in local development and testing environments will be able to set large initial balances for accounts belonging to the anonymous principal and subsequently transfer tokens to other accounts for testing purposes.

Additionally, removing these restrictions aligns the ICP ledger implementation more closely with the ICRC ledger implementation, promoting consistency across the ecosystem.

Implementation Plan

The implementation involves merging two pull requests and creating a new ledger suite release:

  • PR 5473: Remove restrictions from the anonymous principal, enabling it to perform transfers and create allowances on the ICP ledger.
  • PR 5496: Burn the funds in the default subaccount of the anonymous principal during the ICP ledger post-upgrade process.

Timeline

  • Merge PRs and create GitHub ledger suite release: By Thursday, August 14th
  • Create upgrade proposals: By Friday, August 15th
  • Proposal approval and upgrade execution: Week of August 18th

Community Feedback

We welcome community input on this proposed action plan. Please share your thoughts, questions, or concerns in the discussion below!

4 Likes

TV gif. Omar Gooding as Anthony on Family Time looks perplexed, furrowing his brow as his eyes shift left and right

This seems like a maybe it will go poorly? Speaking as someone who accidentally minted all the tokens of a poorly secured contract, I’m thinking that maybe we should be adding a block for anon on the ICRC ledger just so someone DOESN’T do this.

Note: I realize this is just for ICP and wouldn’t maybe be used for other tokens, but then again the OGY token was based on the ICP ledger for a couple years…I’d imagine most are using ICRC at this point, but maybe not? Anyway…it seems like an anti-pattern to enable it even for fun.

2 Likes

Thanks for the feedback, @skilesare! We did discuss this internally back and forth for a while before eventually settling on proposing this approach, which also got the blessing from product security. In an attempt to streamline development and maintenance, we’re in general trying to get rid of the various discrepancies between the ICP and ICRC ledger implementations, and this is a step in that direction. Since, as you mentioned, this change is just for ICP, and there’s just the single production instance, the reasoning was that this is low risk.

1 Like