The Internet Computer Community has adopted the threshold ECDSA signatures Motion proposal.
All Bitcoin keys and signatures are being generated by using ECDSA. An ECDSA signature allows us to share a public key and create a signature of certain data using their private key. This process allows us to verify that the signature was actually created by the real owner of the public key.
As mentioned in an update from DFINITY, work will begin to “integrate threshold ECDSA signatures into the Internet Computer so that canister smart contracts can hold BTC and ETH.”
The Internet Computer community is focused on shaping the blockchain’s feature and upgrade roadmap, with “robust discussion taking place within the Developer Forum.” The announcement also mentioned that the DFINITY Foundation is committing research and development (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).”
As stated in a blog post:
“A proposal (#21340) to ‘Integrate Threshold ECDSA Signatures Into the Internet Computer’ was submitted to the NNS on Sept. 20, 2021 at 15:00 UTC. Voting by neuron holders ended 48 hours later on Sept. 22, with 100% logged Yes votes at a voting power of 313,336,901.”
Due to community engagement and questions on the Developer Forum, voting on the proposal was “postponed from the original Sept. 15 date for five days of additional vetting and reviews,” the blog post confirmed. It further noted that 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 every stage of a proposal’s life cycle, 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 announcement further noted that 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 integrating threshold ECDSA signatures into the Internet Computer in order for canister smart contracts to hold Bitcoin (BTC) and Ethereum (ETH).
As explained in the blog post, 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 instance, was to “adopt the design and plan of the integration of ECDSA signatures with the Internet Computer.” It will “take months and multiple NNS proposals to update the code,” the announcement noted.
ECDSA signatures are being widely used in the blockchain or distributed ledger tech (DLT) sector. This feature will “enable canister smart contracts to have an ECDSA public key and to sign with regard to it,” the update noted. The corresponding secret key “is threshold-shared among the nodes of the subnet holding the canister” and this is a prerequisite for “the integration of the Internet Computer with Bitcoin and Ethereum.”
The announcement also mentioned:
“Since those networks use ECDSA, canisters must be able to create ECDSA signatures in order for them to hold BTC and ETH as well as create Bitcoin and Ethereum transactions. Rather than the corresponding secret key being part of the replicated canister state, instead the secret key will be shared among the replicas of the subnet, which must be able to collaboratively create threshold ECDSA signatures whenever a canister makes a signature request.”
The blog post pointed out that this is a “highly” security-critical feature of the Internet Computer, as “considerable value in terms of BTC and ETH will be ‘secured with it in the future.” That’s why the implementation of the feature needs to be “covered by accordingly stringent automated testing.” As confirmed in the update, unit tests and integration tests will be used to “assure the correctness of individual methods and components, respectively.”
To learn more about this update, check here.