KIP-0012 explained (k: accounts)
Simplified explanation of the new account protocol and why you should use it.
Kadena Accounts and Public keys
Kadena “accounts” do not have the same meaning as your “address” on most other chains. You have a “public key” and you have an “account”. For simplicity, most people use the public key as their account because it’s easier. BUT, they can be different, here is an example. My account is “thanos” and my public key is “b57208af”
The important thing to note here is accounts CAN be different from the public key. This allows for a multitude of concepts like vanity accounts. You can read more about accounts and keyset here and here.
The issue
Some bad actors figured out they could grab the accounts of other people before them. Most users have their public key as account name and assumed that account would be valid for all 20 chains. Those bad actors searched for account names that were only used on one chain, and “squatted” them on other chains with their own key controlling it. Here is an example of a squatted account. They key controlling chain 1 and 2 isn't the same controlling chain 0. If this person were to send coins to those chains carelessly, they would lose the coins as they are controlled by someone else.
Solution
Use k: accounts, that new protocol is used to guarantee you own your accounts. Here’s how it works, you add k: at the beginning of the account name. The protocol enforces that whatever is after k: has to be the same as the public key. This might sounds confusing but here’s some examples.
If your public key is “8ff29d…”, your protected k: account would be “k:8ff29d…”.
See how the account name starts with k:, I didn't create chain 1 on purpose to show what would happen if someone tried to create that account name with another key. In this screenshot I try to squat the account with another key, and the k: protocol makes the transaction fail.
Execution
Once your k: account is created and you sent some funds back out of it to make sure you control the account, you should migrate your funds to that new account. It is unclear yet if exchanges and pools support this format. It might be better to use the old one when interacting with centralized services. Dexes and smart contracts should have no problem with them.
Conclusion
Multi-chain networks are new and some bad actors may find some “loopholes”, but the Kadena team is proving once again they have the answer for it. If any funds are lost to “squatting”, it should be blamed on the exchanges ineptitude to detect the key was strange, and wallets for not warning users. The Kadena team has made a flow chart describing how those systems should handle transfers a long time ago.
Useful Links:
- Website: https://www.kadena.io/
- Pact Tutorials: https://pactlang.org/
- Pact Docs: https://pact-language.readthedocs.io/en/stable/
- Github: https://github.com/kadena-io/
- Twitter: https://twitter.com/kadena_io?lang=en
- Discord: https://discord.gg/RBdEFNA
- Telegram: https://t.me/kadena_io