TL;DR This is the first blog of the Trusted WebAssembly Runtime on the IPFS series. I explained how this idea comes during my recent few years of research. It actually covers most content of the whole series.
Started 6 Years Ago Back to 6 years ago, I joined a Silicon Valley-based health care IoT company as CTO. The company produces many kinds of wearable health monitoring devices and collected tons of medical data from millions of users.
WebAssembly (WASM) can run in almost all OS and architect, including Raspberry Pi. However, at the time of my test (Mar 1, 2020), only the wasmer claim and successfully run on my Pi 4. Other runtimes are either in planned mode or WIP.
I would like to share some of my experiences running WASM in Raspberry PI4 and some mistakes I made during the test. I hope it can help you if you want to try the same thing on your Pi.
How Badge DB protect data at rest This is how Badge DB protect client’s data at rest, I copied from Dgraph blog https://blog.dgraph.io/post/releasing-badger-v2/
With a key focus on security, Badger now provides an option to encrypt its data! To use encryption, you need to provide Badger an encryption key using the Options.WithEncryptionKey API. Badger uses a different key to encrypt the data, these are called data keys, and they are auto-generated.
I did not update my blog for a month. Where did I go? I just had my longest vacation since my first job. I went to Florida and Bamahas Islands cruise vacation with my family. After that, I went to the Arizona desert for a camping trip with my RV group members. It took me about a month in total. I never had such an extended vacation in my whole life because I have never been laid off.
Today’s cloud computing cannot handle tomorrow’s use cases Computation involves data being processed by an algorithm.
Today, cloud computing makes a compelling environment for data processing, in which we will typically deploy our code to a service provider’s data center and also upload our data to servers of the same data center.
There are cases that the above common practice won’t work.
National data residency requirements prohibit sending the data to another country where the cloud computing node resides.
What a wonderful decentralized storage world IPFS (and other similar projects on the decentralized storage market) provides us a new way of thinking on storage. Instead of storing everything in a centralized location, why do not we make multiple copies and distributed to millions of nodes all over the world? The user can get one copy from any of them based on the network distance or bandwidth. This could become the largest CDN system in the world under the economic incentive model to IPFS miners.
Do not expect dApp is ready today, there are missing pieces TCP/IP was invented around the 1970s, Database 1980, but web app and mobile internet become popular around 2000. It takes about 30 years. Bitcoin was invented in 2009 which is so far the most popular blockchain application, There is no way for us to expect decentralized apps to get popular within 10 years? It will take some time to get all the pieces in the tech stack to get invented.
I listed several principles in my previous post. Let’s discuss them one by one.
How blockchain solve this kind of issue? BTC and other Blockchain projects gave us a good example of using randomness. BTC uses the PoW (Proof of Work) consensus to generate the randomness. No one can predict which miner will win the next block in the hash power competition. An attacker has to own more than 51% hash power to attack the BTC network, which means the attack cost is super high.
Although we generally do not trust a machine in the middle of nowhere, in most cases we still use them, every day, every minute, every second. Cloud computing is one example. Nowadays most of the computing is happening in the data center of cloud computing providers, such as Amazon, Google, Microsoft, and others. We trust them because they are big names, and we trust them because we know they spend tons of resources to keep our data secure.
When we talking about secure our data, we actually mean three different stages of a data’s life.
Data at rest: When data is sleeping in someone’s hard drive. Data in transit: Data is transferred between two trusted domains. eg. from a database server to compute node, or from your browser to a server. Data in use: Data is calculated inside a machine (RAM and CPU) Data in transit problem has been resolved by cryptography, such as https have been widely used.