What is verifiable computation?
Huddle01 is making the future of communication systems by aiming to replace the current infrastructure with a better and more efficient tech stack keeping the decentralized aspect in mind. Today we’ll talk briefly about Verifiable computation and exactly the buzz around this. Why is there a race around this?
Okay, wear your thinking caps, as we are going to discuss some concepts that are a bit difficult to understand! These are things that we are going to discuss in this blog,
What is computation? 🤔
Need to outsource this computation? 🤧
Okay, that’s great but what’s the problem? 😦
Zero Knowledge Proof, what’s that? 😔
Can we combine both? Zero-knowledge Proof and outsourcing computation! 🤯
What is Huddle01 doing? 😎
What is computation? 🤔
According to Oxford Dictionary and the first google search, Computation means “the action of mathematical calculation”. But, when we discuss the word computation, it primarily refers to a computer performing some heavy tasks. It can be anything from loading a game screen to mining bitcoins.
Depending on the configuration of the hardware, we can predict how many tasks or ‘computations’ a computer can perform in a certain given time. We measure most of this called processing power. The unit is usually in GHz. The higher this number, the faster the machine!
With time, we developed complex programs and software that require faster processors or machines to complete a task in the shortest time possible.
Need to outsource this computation? 🤧
The hardware of the computer has significantly shrunk over time. But, the programs that are run on this hardware have also become complex. After a certain point, offloading heavy computations from Personal computers, Tablets, and mobiles was a solution that was accepted! The best reasons can be listed as,
- Size 💪
As the devices got shorter, and the programs got complex there was innovation with processors and graphic cards. But, only a certain amount of storage and size can be offered to smaller devices. The Apps got bigger, more complex, and overall ‘Computationally heavy’ this would tamper with the health of the device and limit the applications that can be run on the device.
- Speed 🚘
Processing heavy data would eventually take more time on a smaller chip than on a server. Also, this would slow down the device, so taking the major processing away from the device would enable the device to be faster and free to perform tasks that are not heavy.
- Cost 💰
It is cheap to rent a server than to get actual hardware to process it, also it helps to scale any early-stage product!
If you are still here and don’t get a word of what you just read, stay with me. Let’s take a simple example.
You are a farmer who doesn’t have a tractor to plow the field. You are a lucky chad and have lots and lots of land! But, the problem is, to plow this huge land you need a tractor, but you can’t afford one as of now. Also, the rainy season is just around the corner for plantations. The best thing you do is rent a tractor and kick-start your farming journey. Here,
The Farm is the computation 🌽
Farmer is the product/service 🧑🏼🌾
The tractor is the computation outsourced 🚜
Okay, that’s great but what’s the problem 🙄
So, you offload your computation to an external server and the server sends you the processed output, and it’s the end of the story. Right?No! Let’s see the problems with this!
- Security 🔒
When you send your data to offload computation, how do you verify it is not being recorded and monitored? Also, how do you ensure that this data isn’t stored after it is processed? Going back to our farm example, how do you verify that the tractor you used to plow the field isn’t stealing soil samples from your farm?
- Verification ✅
Okay, security is something that can always be figured out, but how do you verify that the data you received is correct? You can verify by processing it locally, but then what is the point of offloading it to an external source? To solve this, there are multiple solutions, but for now, we would stick to the security aspect of the problem. There is a concept called zero-knowledge Proof that comes into play here!
Zero Knowledge Proof, what’s that 🤔
Let’s ask Google, what zero-knowledge means, google responded, “In cryptography, a zero-knowledge proof or zero-knowledge protocol is a method by which one party can prove to another party that a given statement is true while the prover avoids conveying any additional information apart from the fact that the statement is indeed true.”
Don’t worry, it’s not as complicated as it looks! So let me tell you in an easy way. Zero-knowledge means asking someone to do something without telling what it is and why is it being done. This also means that the work done by them is proven to be correct.
Still fuzzy? 😞
Okay, let’s take an example.
I have a superpower, I can count leaves on any tree with just one look 🍃Pretty awesome, right?
You don’t have the same powers as me so how do you make sure I am not making this up? Easy, we do something that can verify and prove that I am not making this up. I’ll close my eyes, and I’ll tell you to pluck some leaves from a tree.
It’s entirely your choice to either pluck some leaves or not pluck any leaves at all. Then you’ll ask me how many leaves you plucked, and if I give a correct answer, you have your zero-knowledge proof! 🤯
Credits to Rahil Arora for the leaf example!
Combining Zero Knowledge Proof and Computation 🤯
Let’s take it a step further, we want to make a system where computation can have a ZKP. This is essentially called verifiable computation and there are two ways to do it. Unfortunately, both of them require some crazy mathematical skills to understand. Either way, let’s see the two types.
- Proof-based Protocol:
Proof-based Protocols use back-and-forth communication with the client(farmer) to process and give ZKP. This is not efficient and is not preferred in many scenarios.
- Argument-based Protocol:
Argument-based Protocol just communicates once with the client(sometimes it can be interactive) and you can have your computation offloaded.
This is something we will explore in future blogs but for today enough computation for you.
What is Huddle01 doing? 😎
You are probably wondering what Huddle01 has to do with all of this. Well, to give an early alpha, we are working to change the way current RTC communications are done. So, this is something closely related to what we are aiming to achieve. That is the best we can share for now.
If you have any questions, suggestions, or team-ups in mind. Hit us on Twitter and be friends with us on our Discord. That would be it for today.
Subscribe to my newsletter
Read articles from Huddle01 directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Huddle01
Huddle01
Building the 1st decentralized real-time communication network. Leverage our current suite of developer-friendly SDKs to enable live audio/video experiences on your web or mobile app with just a quick plug in.