PAT.IO station

PAT.IO station

Ethereum Mainnet nodes as streaming infrastructure to guarantee and secure video and radio transmissions.

The problem PAT.IO station solves

We are develving a real solution for a global problem: Communication censorship by powerful groups. In an out-of-band scenario, this solution offers a clear and readily available method to guarantee and secure authenticated communication. We have invented a world-class censorship resistant communication protocol that uses the most decentralized, secure and highly available blockchain nodes infrastructure with the highest authenticity standards: Ethereum Mainnet.

Challenges we ran into

To use Ethereum Mainnet nodes for communication purposes we needed to study how the architecture of the nodes works as a whole, but as there is many different clients (software implementations) and communication "rules" between them we needed to search for the -almost non existent- documentation and test a lot using different RPCs and Mempool APIs providers.

The available bandwidth was the first point to arise, so we run tests and found out that a transaction can weight about 40 kbytes pushing the boundaries of the nodes, since if we go weighter than that our transactions broadcasting will be depleted (doesn't matter if the transaction stills valid), so we decided to work with a 25 kbytes per transaction data cap.

The critical part where the real magic happens was on the costs, we all know that the Ethereum Mainnet is not a great place for bargaining but when we think about censorship al reliability we NEEDED to make this theory work so made a formular for nonce reuse: reeplace transactions.

We explored gas optimizations discovering a gas limit + gas price + priority fee formula where we can reuse a same nonce increasing the gas for each transaction starting from an acceptable point for nodes that at the end of the day means having 'free' broadcasted information 24 times and finalizing with an empty data transaction (very cheap). This means 30 seconds for every 600 kbytes of data as our current limit, valid enough for color -non even optimized- small videos or great quality for broadcasting audio.

In the meanwhile we discovered that the Mempool has a ~200ms delay, something very acceptable for streaming and finally we got some challenges coding and decoding the binary stream -> base64 -> HEX and the HEX data 'flags' to create this "metaprotocol" in such a short time but we got it and made it happen!

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion