Motion Proposal to Enable Canister Smart Contracts to Transfer ICP Tokens Adopted by Community

DFINITY
The Internet Computer Review
4 min readSep 17, 2021

The proposal adopts the design and plan for enabling smart contract canisters to transfer ICP utility tokens.

The Internet Computer community is actively shaping the blockchain’s feature and upgrade roadmap, with robust discussion taking place within the Developer Forum. The DFINITY Foundation is committing R&D resources to the Internet Computer ecosystem in the form of technical contributions. Technical upgrades are subject to community discussion, voting, and adoption via motion proposals to the Network Nervous System (NNS).

A proposal (#20588) to initiate work to “Enable All Principals, Including Canisters, to Transfer ICP Utility Tokens” was submitted to the NNS on September 15, 2021 at 15:00 UTC. Voting by neuron holders ended 48 hours later on September 17, with 99.99% logged Yes votes at a voting power of 312,545,490.

The DFINITY Foundation and Internet Computer Association, and by extension their corresponding neuron followers, abstained from early voting until the broader community of ICP neuron holders had a chance to vote on the proposal.

At each stage of a proposal’s lifecycle, neuron holders will have the ability to direct the Foundation’s effort in making the Internet Computer more efficient, faster, and easier to use for developers. The community decides what upgrades are initiated and what code is adopted, allowing the Internet Computer to evolve in real time. The proposal for starting work on enabling canisters to transfer ICP tokens was recently initiated by popular consensus.

There are many types of NNS proposals. This one is a Motion proposal that does not actively change the code of the Internet Computer, but it does provide an on-chain mechanism for the community to vote on the direction. This particular proposal, for example, was to adopt the design and plan for enabling smart contract canisters to transfer ICP. Over the next few weeks, there will be a few more NNS proposals to update the code with the changes the community voted on.

Summary

This proposal would expand support for all canister types to be able to hold and transfer ICP tokens. Currently, canisters can receive ICP tokens, since you can send ICP tokens to any address. An address is derived from a principal and an optional subaccount, so each canister automatically has many addresses associated with it, just like any other principals.

Canisters are blocked from transferring ICP tokens, however. This block is implemented by a check in the ledger that allows only self-authenticating principals and specific whitelisted canisters to transfer ICP tokens. Canisters do not have self-authenticating principals, and therefore cannot transfer ICP tokens.

If passed, the proposed upgrade will remove the restriction such that any principal is allowed to transfer ICP tokens, with the exception of the anonymous principal. It is also backwards compatible: All self-authenticating and whitelisted canisters can continue to transfer ICP. This proposal just permits other principals to transfer ICP tokens as well.

You can find details, updates, and ask questions on the proposal’s Developer Forum thread.

Documentation

Draft plan for feature.

Timeline

  • Draft plan for feature posted on the forum for review: September 10, 2021, 15:00 UTC
  • NNS Proposal (#20588) submission: September 15, 2021, 15:00 UTC
  • NNS Proposal (#20588) expiration: September 17, 2021, 15:00 UTC
  • If this NNS proposal passes, then subsequent NNS proposals will follow the proposed design along with code updates.

Next Steps

Now that the motion has passed, the research team behind the design will continue to update the community on the project process and timeline. The implementation will take months, so constant communication and updates will be important.

Though the motion has passed, there is substantial community feedback to take into account, such as concerns about replica process sandboxing as a security requirement for Bitcoin integration. As dev forum user lasmtjs wrote in the Developer Forum:

“I think the most important thing for me to understand is how involved and especially how long [the] process sandboxing of canisters will take.”

Because of similar feedback, the research team will soon put forth to the community a project on sandboxing (led by Helge Bahmann, senior researcher for operating system security) where the usual “open design” iterative process will occur.

Updates

09/16/21 — With approximately 35 hours remaining within the voting period, Yes votes have logged voting power amounting to 2,027,350 and 0.65%, with 0.00% and a voting power of 8,118 voting No.

09/17/21 — With approximately 12 hours remaining within the voting period, Yes votes have logged voting power amounting to 3,635,916 and 1.16%, with 0.01% and a voting power of 29,655 voting No.

09/17/21 — With less than 2 hours remaining within the voting period, Yes votes logged voting power amounting to 41,151,275 and 13.16%, with 0.01% and a voting power of 29,830 voting No.

09/17/21 — At the close of voting, Yes votes logged voting power amounting to 312,545,490 and 99.99%, with 0.01% and a voting power of 29,830 voting No.

_____

Start building at smartcontracts.org and join our developer community at forum.dfinity.org.

--

--

DFINITY
The Internet Computer Review

The Internet Computer is a revolutionary blockchain that hosts unlimited data and computation on-chain. Build scalable Web3 dapps, DeFi, games, and more.