Skip to main content

ECDSA for Polkadot JS

  • Proposer: @akru
  • Payment Address: bc1qccvrcny62epea360w0dvy2ynv90vz5luansmg9

Project Description 📄​

Currently Polkadot/Substrate support three kinds of cryptographic primitives as MultiSignature data type:

  • Ed25519
  • Sr25519
  • ECDSA

Unfortunately, right now Polkadot JS support first two only (enhancement issue: https://github.com/polkadot-js/common/issues/506). It's limiting using ECDSA keys for subkey CLI utility only, which makes user experience pipeline a bit difficult.

Main aim of this project is providing comfortable environment for ECDSA key owners (Ethereum/Bitcoin holders) as same as for Sr/Ed25519 keys.

Supporting wide range of cryptographic primitives is powerful side of substrate/polkadot ecosystem. This projects makes this side user-friendly introducing cryptographic primitives support on UI side.

This project planned to be directly integrated into Polkadot JS which is part of Polkadot ecosystem.

Plasm Network(https://plasmnet.io) is a scaling Dapps platform on Substrate. Plasm Network is planned to be a parachain in Polkadot ecosystem. Plasm token distribution model involves the use of a lockdrop approach in Ethereum and Bitcoin networks where Secp256k1 cryptography is a de facto standard. Plasm team is highly interested in making lockdrop participation process smoothly as much as it possible. ECDSA integration into Polkadot ecosystem is one of steps to makes it real.

Team 👥​

Development Roadmap 🔩​

  • Total Estimated Duration: 2 weeks
  • Total Costs: 0.6 BTC

Milestone 1​

  • Estimated Duration: 2 weeks
  • Costs: 0.6 BTC

Main aim of this is providing compatability layer for secp256k1 keypair into Polkadot JS key management system.

NumberDeliverableSpecification
1.Polkadot JS ECDSA sign/verify supportIntroducing secp256k1 keypair into Polkadot-js/common repository as same as sr25519 type: https://github.com/polkadot-js/common/blob/master/packages/util-crypto/src/types.ts, implementing Sing/Verify interfaces.
2.Polkadot JS sign/verify testsIntegration tests for secp256k1 keypair.
3.Polkadot JS Apps ECDSA supportIntroducing secp256k1 key types for Apps account management widget. ECDSA account should be possible to send extrinsics as same as Sr25519 or Ed25519 account.
4.Improve documentationAdd ECDSA description paragraph into Polkadot-js documentation.
5.Polkadot JS Apps demo videoProvide demonstration how Polkadot Apps works with Ethereum (secp256k1) private keys.