Ninki Wallet: Transaction Verification
Ninki Wallet performs a number of steps in the background during the process of creating and counter-signing a transaction.
The philosophy behind Ninki is that everything is created on the client and verified on the server. This means that the client need not trust the server, yet the server can refuse to assist the client if the client engages in unverifiable behavior.
The user always retains complete control over their funds.
Verify receive Address creation
Ninki uses multi-signature BIP32 chains for addresses generation. The server holds a copy of the master public keys and so can verify that any address generated by the client is correct. (Note: if anyone has any ideas on how this could be done without the server knowing the public keys- let me know!)
This means that even if your client has a bug or exploit resulting in an incorrect addresses being generated, the server will verify and the client will refuse to display the address: the user will be alerted.
Verify change address
The same applies for each change address generated. This is arguably more important, as change address amounts can be arbitrarily large and do not contribute to your sending limits.
Verify To Address
When sending to another Ninki user, the server also verifies the address of the user you are sending to. This adds another level of security to the Air-Gapped Address Exchange system discussed previously.
Verify transaction limits
Before the server counter-signs a transaction it verifies that none of your preset account limits will be breached. If they will, a Two-Factor Authentication code is requested.
Verify Two-Factor code
A two-factor code is required for any transaction unless over-ridden with the configurable transfer limits:
- Single transaction amount
- Daily amount
- Velocity limits / hour and day
These limits also apply when you pair your phone with the desktop application.