Hello Secret Agents! Citadel.one team is here.
Our work on SNIP-20s and Secret Bridge is in full swing. We already showed some sneak peek designs of Secret Bridge and Secret Tokens for Mobile App, Tablet and Web versions.
Now it’s time to introduce you the technical side of these developments and our approach to creating and managing viewing keys.
As you may know, to appropriately interact with SNIP-20 contracts, users need to create a viewing key for each token by signing an on-chain transaction. Viewing key transactions have a set of parameters that include a specific SNIP-20 token contract and entropy (entropy quantifies the amount of uncertainty involved in the value of a random variable or the random process outcome). Secret Network documentation recommends using base-64 encoded random bytes and not predictable inputs as entropy for the viewing key. That means that each time a user will generate a viewing key, it will be different. So, users have to either write it down on paper (which is a chore) or copy it and save as some kind of text file for future use during viewing key creation. In both options, users have to ensure secure storage of the key.
Potential limitations of this approach become apparent while using multiple devices or browsers. Let's take interaction with sETH via Keplr as an example:
To be able to see sETH balance, the user has to create a viewing key first. With Keplr installed, the user creates a viewing key for sETH, signs the transaction, and can now fully interact with the ETH secret contract.
Then, let's say a user wants to use another browser (or device).
Keplr is installed, and the private key is imported. However, to view sETH balance, each has to create a new viewing key or import the old one. To do so, a user has to sign a new on-chain transaction and spend commission fees again. Though it is possible to create as many viewing keys for one contract as the user wishes and overwrite old ones, it can lead to some future complications.
For interactions with secret contracts, we will offer our users three scenarios:
Generation of the viewing key from a hash of a private key and secret contract. Viewing keys will be generated and stored in the browser's local storage, so that the user doesn't have to worry about the key storage. We can restore and check the viewing key for each address if it was added via Citadel.one (works for both imported and one-seed addresses). After successfully signing a transaction, the key will be shown once, and the user will be able to see their token balance.
This option's significant advantage will come from the cross-platform feature that will check if the user has already created or imported a viewing key in Citadel via another browser or platform. If viewing keys were already generated, they will be automatically imported into a new browser or device.
In other words, if you already interacted with Secret Bridges via Citadel.one on PC, you will be able to see all your balances in the mobile app.
2) Random generation
There will be an option for security-focused users to generate viewing keys with random bytes, but with all the inconveniences in the form of mandatory key storage for future import or recovery.
3) Import existing viewing key
Instead of creating a transaction, the user can enter the viewing key, which was previously generated for this pair of the address and the contract in another service or the scenario of random viewing key generation. If the added viewing key has not passed the verification, the user will remain on the viewing key input screen.
1) All SNIP-20 tokens supported by the Secret bridge will be displayed, not just the ones that the user has added, unlike ERC-20s. The tokens' balances will be displayed only if the user has created or imported viewing keys and will correspond to the specific secret address.
2) There will be no SNIP-20 token panel for added view-only addresses because this info is private and cannot be seen without a viewing key.
3) Users will be able to look up their created or imported viewing keys on the settings screen.
Get more from your staking!
Citadel.one is a non-custodial Proof-of-Stake platform for the management and storage of crypto assets. Users can create public addresses for all supported networks with one seed phrase, connect their Ledger or Trezor device, or import an address generated by another wallet.
The analytical dashboard provides relevant information on wallets’ balances and networks’ main metrics. In Citadel.one, we are standardizing the semantics, making interactions with the platform as easy as possible. The same goes for network metrics. By using universal terms, we are making it easier for users to understand and compare networks.
One of the main functions of the Citadel.one platform is participation in the PoS consensus — users can stake and delegate their assets, claim rewards, and follow the latest network proposals in the voting tab.
Citadel.one offers its users instant cryptocurrency exchange services that allow fast and secure crypto assets swap, and it is also possible to buy and sell crypto with a credit or debit card. Citadel.one users can track rewards, withdrawals, transfers and deposits across all supported networks and add comments to these transactions.
Among PoS platforms Citadel.one supports Secret Network ($SCRT), Cosmos ($ATOM), Band, Kava, ICON ($ICX), IOST, Orbs, and Tezos ($XTZ). For our user’s convenience we also support Ethereum, major ERC-20 tokens and Bitcoin. Mobile and desktop versions, new networks, including Polkadot and Ontology, are scheduled for the upcoming updates. Furthermore, delving into the idea of true decentralization we envision Citadel.one a decentralized autonomous organization and a truly community owned platform in the nearest future.