Introducing Kadena Account Protocols (KIP-0012)

Introducing Kadena Account Protocols (KIP-0012)


September 27, 2021

Learn how new account protocols on the Kadena blockchain make multi-chain operation safer and easier!

Blockchain custody is hard. At Kadena we set out to solve this hard problem with Pact, by making it easy to do things like key rotation, multi-sig, and autonomous guards, so that the average user can benefit from institutional-level security best practices. Toward this end, in June we rolled out a new protocol in our public blockchain to specifically target a particular hard part: how do you secure accounts on multiple chains? While this isn’t fundamentally the hardest problem, it is made harder by the way wallets force users to manage their keys in a one-to-one relationship to an account ID. To solve this we have introduced the single-key account protocol to ensure a single key is reserved on any chain. This protocol is already active for KDA, and is now standardized in KIP-0012 as account-protocols-v1 with KDA as the reference implementation.

Custody in a Multi-Chain, Multi-Sig World

Accounts on Kadena are already living in the future, because Kadena is the only native, seamless multi-chain platform on the market. It’s why Kadena can scale to meet any demand while still maintaining the unbeatable security of Proof-of-Work. However, this means we are hitting issues that other chains haven’t even begun to consider.

Owning crypto on Kadena chains isn’t hard, and moving coins around from chain to chain is easily accomplished with any wallet or our online tools. Accounts can have any name regardless of the key or keys backing it, which is important for multi-sig and other advanced techniques.

Indeed, at Kadena we see a future where users will use multi-sig as easily as they use their bank account app today, with different keys on your phone, your computer, and your watch all being able to sign transactions for the same account in a manner similar to Two-Factor Authentication on websites.

Nonetheless, single-key is the dominant model for users today. Our account flexibility is useful here too, to have multiple accounts under a single key. You can even be like Bitcoin and do every transaction with a new account while using the same key.

Wallets are still in a single-chain, single-sig world.

Kadena’s flexibility is still beyond what wallets and dapps present to users today. The “old way” (really the Ethereum way, since Bitcoin HD wallets have long mastered multiple keys and multiple accounts) links a key irrevocably to a single account. On Kadena this manifests as an account where the public key acts also as the name of the account, or where the account name is a hash of the public key. Most wallets aren’t designed for multi-account or multi-chain so they expect/demand that the key match the account name in some deterministic way.

In this world, multi-account flexibility creates a problem on multi-chain: accounts named after a given key can be “hijacked” on other chains. While we would prefer that wallets simply grok a multi-chain world, they still don’t, which means somebody could think they’re sending you money on a different chain, since it’s the same account ID, but somebody else “squatted” on the account name.

Kadena Account Protocols

Kadena account protocols are a newly-introduced feature that reserves all account names starting with a single character and a colon. Thus, you cannot create an account a:blahblahblah on Kadena because it starts with a:, etc. This reserves these type of names for the creation of a rich family of account naming protocols that will eventually allow for multi-sig and other innovative account protocols.

Single-Key Accounts

The first protocol we have introduced is the Single-Key Account Protocol, which reserves k: for accounts that are named the same as the public key. Thus, if you have key 7e5bb6365ddbbef620a39b7e4d1445b6fdf49d21a74c9dff6051ab690f893d6b, you know that you are the only person who can ever create an account named k:7e5bb6365ddbbef620a39b7e4d1445b6fdf49d21a74c9dff6051ab690f893d6bon any chain, as the KDA coin contract will check the public key guarding the account and make sure it matches the name after the k:. With this, you can transact with today’s wallets safely across multiple chains, secure in the knowledge that your account cannot be “squatted”.

Note that this is only enforced on account creation. After you create the account, you are allowed to rotate the account keyset to include more than one key. This lets the reserved k: account name work for multi-sig while still guaranteeing that it was originally controlled by the expected key.

Support for Single-Key Accounts is coming to wallets soon, but there is nothing stopping you from using this approach in our wallet Chainweaver where you can simply prepend k: to your public key when creating an account, or do the same in our online wallet tools.

We’re excited to introduce this useful feature, and more Kadena Account Protocols as we bring things like effortless multi-sig to wallets. This is how we are building the bridge to the future on Kadena!