When you post a transaction to Irys, you are instantly given back a signed receipt from the node you upload to. While it takes over 100 minutes to achieve transaction finality on Arweave, we optimistically consider the transaction final at upload time as our nodes have internal safeguards that ensure transaction finality on Arweave.
Internally, all data submitted to Irys is collected by a bundler. Roughly every 2 minutes, the bundler groups transactions, merges them into a single bundle, and submits them to Arweave.
Since we’re submitting data to Arweave, it’s important to understand what happens over there too.
Arweave currently uses its 2.x transaction format, which includes an id, a signature, a public key, meta tags, and the amount of money you’re sending. While the 1.0 format included your data, the 2.0 format notably does not include your data. The reason they moved away from including the data in the transaction was to accommodate larger uploads. With a block time of roughly 2 minutes, the maximum upload to Arweave was limited by network transmission speeds. The laws of physics and the current state of network hardware created an upper limit on data size which constrained Arweave’s ability to scale.
There are no limits restricting the amount of data that can be uploaded to Arweave via Irys.
In the current 2.6 Arweave version, miners submit the smaller header information first, and then they seed the actual data to their peers afterward. To incentivize miners to store as much data as possible, Arweave operates under a protocol called Succinct Proof of Random Access (SPoRA) (opens in a new tab) where miners need to prove they have access to a random piece of historical data. The more data a miner stores, the greater the number of mining rewards they can earn. Miners have the option of how much data to store, and while there are storage costs associated with storing the full dataset, storing data is also the path to earning more mining rewards.
After submitting your transaction header to Arweave, Irys continually monitors the submission, if finality is not achieved, the transaction is automatically resubmitted.
In addition to submitting the transaction header, Irys also submits your data to a network of miners. In general, your data is submitted to a minimum of 10 miners and is guaranteed to be seeded to a minimum of 3 miners.
Irys decides which miners to seed your data to based on our internal reliability score. We constantly scan Arweave, starting first at a known miner, then recursively scanning all of its peers, all of those peer’s peers, and so on. Each miner is given a reliability score that while initially based on the scores of its peers, is continually updated based on that miner’s behavior. Miners are praised for good behavior and punished for bad behavior. As any one instance of bad behavior can be detrimental to the network, we use a logarithmic scoring system. The higher a miner’s score, the harder it becomes to increase that score. However, any instance of bad behavior causes an immediate and linear decrease in a miner’s score. Miners are extra careful to avoid bad behavior as a single instance will cause their score to drop significantly and due to the logarithmic scoring system, it will then take time to rebuild a previous reliability score.
Our praise and punish reputation system has an additional added benefit of helping responsible miners earn greater rewards. Responsible behavior leads to a higher reputation score, a higher score means we seed data directly to them, which means they’re able to supply the recall block quicker, which in turn means they’re able to complete the block quicker and earn greater rewards.