A deep dive into Iron Fish network — the universal privacy layer for crypto
If you visit a coffee shop, have a coffee and pay the bill, would you like the barista to have the ability to see all your bank statements and transactions? Obviously no. However, that is how crypto world currently is. For the uninitiated, for Bitcoin, Ethereum and most other blockchains, transparency and traceability are the default, all the transactions are broadcasted to the rest of the network, which anyone can view using explorer tools like Etherscan or Blockstream. It is akin to publishing all your bank statements permanently on the web.
This is where privacy coins come into picture which can mask such details and divulge only the required information based on the context. There have been many privacy coins such as Monero, Zcash etc., however they are hard to use and hence not seeing broader user adoption.
Ironfish is solving this problem by building a L1 blockchain which is decentralized, proof-of-work (PoW) based, censorship-resistant, and publicly accessible, but also one that provides the strongest privacy guarantees on every transaction. It does this by leveraging the zero knowledge proof technology. It stands out being very simple to use and easy to adopt.
Ironfish aims to be the universal privacy layer for crypto, enabling users to bridge their crypto assets between other chains and iron fish for fully private transactions. That is, to build a true SSL layer for blockchains. Sounds interesting!
Network
At the network layer, iron fish supports WebRTC with WebSocket for the transport layer — any user can make a true p2p connection with no other set up requirements than a PC with internet. A full node works right out of the box. In the future iterations, they plan to enable a full node to be run on browsers. When a node is first launched, it connects to at least one peer node, which will introduce it to other nodes. The initial connection occurs over WebSocket, all subsequent connections will be over WebRTC.
A new node randomly selects a bootstrap node, and opens a WebSocket to it. The bootstrap node broadcasts the peer list to the new node, which in turn connects to up to 50 peers. The nodes then communicate by passing different types of messages. The messages are routed using gossip, fire and forget, direct RPC or global RPC methods depending upon the type. Iron fish team has made optimizations for the gossip protocol to make it more efficient.
Blocks creation
Blocks are created through mining, with an average block time of 60 seconds. The block timing is adjusted by using difficulty and target calculations. Difficulty is calculated from how much difference the previous block time from the desired 55–65 seconds. Difficulty increases when block time gets shorter and vice versa. Target, a number the block hash must fall below is calculated from difficulty. Target is inversely proportional to difficulty, which means the target adjusts according to the difficulty.
Transactions and privacy
The innovation in privacy is around the accounts used for transactions. Every account has a secret private key, set of keys for spending the funds, viewing keys to grant read only access to any third party, and a public address to receive funds from others. Key point is that the spending power is separated from the viewing keys, the keys responsible for spending is not the same as the one used to decrypt transaction information.
All transactions are shielded meaning they do not reveal any information to an onlooker who doesn’t have explicit access through the view keys. This is achieved using zero-knowledge proofs — transaction details are encrypted with an accompanied zk proof attesting its validity.
Privacy does not mean non-compliance. The view keys enable any regulatory authority or organizations like an exchange to see a full audit of required accounts and comply with all AML requirements.
Iron Fish is aimed to support multi chain assets, it will support ERC 20 functionalities like transfer tokens from one account to another, get the current token balance, total supply of the token available on the network, approve whether an amount of token can be spent by a third party account etc. Iron fish does not have support for smart contracts. Most of the aforementioned capabilities are implemented in the core protocol itself, which means one can add these operations in the form of transactions, without any programming. For example, one can issue a new token type by adding a new transaction called mint and track its total supply.
This minimal approach will help the Iron fish blockchain to be lean, truly decentralized by more participation and does well what it is intended to do — which is to be a universal privacy layer to crypto.
For more information about iron fish, refer to https://ironfish.network/. Iron fish incentivized testnet phase 2 is starting tomorrow. You can sign up from the website. Installing a node and running a miner is simple and easy and can be done from your laptop. Detailed instructions are available at https://ironfish.network/docs/onboarding/iron-fish-tutorial.