June 27, 2024

IronFish QuickScan, Why and How

fishguy

Ironfish View Keys

"In IronFish, every wallet comes with a private key, public key, and a view key. View keys allow a user to reveal information about their transactions in a controlled manner."

How to get my balance in IronFish

To check balance of an account in privacy chain like IronFish, we have to,

  • scanning all necessary transactions (since the account's birth block)
  • decrypting all transactions
  • indexing decrypted notes on merkle tree

Why quickscan

Obviously, since we have more and more transactions, it will take longer time to check balance for a new imported account, or an account to be rescanned. Currently, the Cli wallet, the Node App and even third party wallet all relies on IronFish node to scan and rescan account. However, the scanning speed is really limited for Javascript nature. Therefore, to provide better user experience, OreoWallet develops the quickscan system, with which it takes less than 5 mins to scan the whole chain since genesis.

How quickscan works

  • quickscan service receives a scan request with address and in/out viewkey
  • quickscan service loads transactions from localdb and IronFish rpc node
  • quickscan service generates decryption tasks with in/out viewkey and transactions
  • quickscan service sends tasks to connected decrypt-worker
  • drcrypt-worker tries to decrypt the transactions with provided in/out viewkey and sends result back to quickscan service
  • quickscan service collects all responses and sends it back to OreoWallet server when all tasks completed
  • OreoWallet server imports decrypted transactions to IronFish node for indexing and update local status

Can I use quickscan for my own service

Yes! You can do everything you want since the source code is fully public to everyone. You can read all related source code here.

Since OreoWallet is still in development, we recommend users to create a new wallet to test first!!! Do read the agreement in oreowallet website and keep your fund safely.