The Quest for an Internet Computer

The Quest for an Internet Computer

An internet computer would be something awesome: It will be omnipresent with an almost unlimited computing power available to whoever are willing to pay for it...

Internet Computer vs Networked Computers

We don't have an internet computer yet. We have computers that are connected to the internet. But internet connected computers are not the internet computer. They are some body else's computers. An internet computer is one that any one can access from any where, and can pay to get the services. There are cloud computer services you can purchase today, like Amazon AWS, Microsoft Azure, or Google Cloud. They are private computing services you can pay to obtain. The machines that run these services are located in locked up remote facilities called data centers. They are not the internet computer I am talking about.

Billions of computers are connected to the internet. Many of them just sit there idling or displaying a screen saver animation. Likewise spare storage capacities are unused. It would be nice the unused CPU cycles and storage space is utilized for something good. I call this collectively idling computing resource The Internet Computer. It would be much cheaper and more powerful if computations are done on this distributed internet computer, instead of done on centralized data center computers.

Scalable Digital Payment System

We do not have an Internet Computer today because we do not know how to do two things: a. How to pay for it. b. How to bring it home. Payment is important. No one wants to run software programs or store computer files for others for free, but plenty of people are willing to do it for a cost. "Bring it home" is also important. No one wants data stolen when it was sent to a third party computer to store there. Wouldn't it be nice if we can run our computer code and store computer files on a third party machine, and pay for the service, yet the third party host remains agnostic to what computation was done, and what files were stored?

Running computer code and store computer files on third party machines, with the host remain agnostic to what is computed or what is stored, but yet the host can prove that the computation and storage happened as ordered, thus can demand payment, is the enabling technology that makes an Internet Computer possible. I have been thinking about this for a very long time. I want to share some of my insights here on how to achieve that goal.

Physical Security vs Virtual Security

The biggest obstacle of an Internet Computer is data security. Traditionally data security means physical security combined with network security. You lock your computers at home or at a data center with armed security guards watching the gates. If some one breaks in to steal the computers away, data is compromised. Or if something is able to gain access through the network, data is stolen as well. So data security must be achieved through both physical security and network security.

However, an Internet Computer has neither physical security nor network security. We have to assume, in the worst case scenario, that a potential intruder owns the physical computer where our computer code runs and our data file stores. Can we still achieve data security?

We still can ensure data security even if the physical device is in the hands of an adversary. I call it virtual security, or data security without securing the physical storage. One famous example was FBI had possession of a cell phone from a dead terrorist, but neither FBI nor Apple had the key to unlock the computer file. You can store a data file encrypted on a third party machine. As long as the key is withheld from the intruder, the data is safe.

Another way of achieving data security without encryption, is data partition or scrambling. I have a data file which was complete exposed, in bits and pieces. There are one million bit 1s and roughly the same number of bit 0s. I have not exposed any secret as you do not know how the 0s and 1s should be ordered to recover the original data. Data is simply shredded.

Secure Computation

Secure computation is another story. Computer code cannot run while encrypted, nor can it operate on encrypted data. Both the code and the data must be non-encrypted in order to run. An intruder watching the code executing knows exactly what it tries to do, and what data it operates on. No secret is hidden.

But the hope of secure computation is not lost yet. There are two ways to achieve it. One way is security by obscurity. We partition computation into small chunks so that each chunk no longer makes any sense. For example a piece of code adds a 2 and 3 to produce 5. It tells you nothing who is calculating that and for what purpose. For another example one bit of a data chunk is exposed. It could be bit 0 or bit 1, but it still says nothing about the data. By partitioning data and calculation, it is obscured. Big picture is hidden in meaningless details.

Another way of achieving secure computation is using the so called secure computation environment in modern processors. For example we can use TrustZone on arm processors, or the SGX extension on Intel processors. These processor features allow a CPU core to receive a piece of code and data, do some computation, and output the result, and provide signature to prove that the particular CPU core did the computation without alternation. With trusted computing features of modern processor chips, it is possible to send a piece of code and data to a device for processing and get result, without the host knowing anything.

Heterogeneous Computation

Besides data security and an omnipresent payment system, we need one more thing for the internet computer: platform agnostic computation. Physical devices that form parts of the internet computer can be constructed from any hardware architecture and take any shape. They all need to understand the computation to be done, regardless of the hardware specs.

A traditional computer is hooked to peripheral devices like monitor, mouse and keyboard. It runs operating systems to allow applications to access all the various peripheral devices. The applications are then developed to meet the specifics of operations systems and hardware architectures. Tremendous efforts are spent to make the pieces fit: The processor, chip sets, the operation system, device drivers and applications. All needs to work together seamlessly to ensure the keyboard, mouse and monitor and everything else works, before we have written a single line of code to do the actual computation. Why are we wasting efforts on such trivial things? A computer should just compute, meaning crunch numbers, right?

Fortunately an internet computer is much simpler. It does not have a keyboard or a mouse or a monitor or other peripheral devices to manage. It is invisible, with no physical form. It is just a virtual machine exist in the cypher space to do some computation that hopefully can solve some practical problems. It does not need to worry about how data is formatted or how the computation result is rendered for a human being. It only needs to worry about taking a recipe of computation, and deliver the computation result. All participants of the internet computer should produce exactly the same result when given the same computation task.

A Universal Computer Language

How about defining a universal compute language which is completely agnostic of specifics of hardware limitation? The language can have a text form which allows easy reading by human programmers, and a binary form which is highly condense and easily understood by all hardware platforms. There will be an exact and non-ambiguous one-to-one mapping between the text form and the binary form so the two can be converted on the fly. The language will be defined by mathematical rules. It will be a purely functional language. There will be no such concept as concurrency. This will be great news to programmers, as mistakes with concurrency issues account for more than 90% of all software bugs.

And compilers will be a thing of the past. A compiler is a translator. When all computing devices and all programmers speak the same language of mathematics, there is no need of a compiler to translate for us. Modern processor chips have billions of logical gates. They can easily understand the universal compute language, and carry out the prescribed computation using the best resources available on the chip. Actually this will liberate chip designers as well. When the processor chip does not have to adhere to fixed length RISC instructions, it does not have to non-necessarily limit itself to what it can do. For example, the only reason that an ARM processor only has 16 general purpose registers is because the instruction set encoding rule only allows 16 different registers to be specified, not because the chip can only accommodate 16 registers. By eliminate the RISC instruction set altogether, a processor can easily have thousands of registers and can use as many as it wishes, to resolve any given computation tasks.

By having a universal compute language which is not bounded by word length or instruction set size, and forcing computer chips to understand it, not only we eliminated compilers, we also eliminated two artificial bottlenecks: The bottleneck of trying to interpret high level programming languages in terms of arbitrary machine instructions, and the bottleneck of processor chips of having to translate and execute these machine instructions one at a time, leaving the vast majority of billions of logical gates on the chip unused most of the time.

Programming Made Easy

A universal compute language will be a great thing. It is close to human language used to describe mathematics so it does not take one very long time to learn. The code written does not have to go thorough a lengthy process of build, test, validation and deployment. Code written can immediately feed to any processor for validation. If it works on one processor it works on any processor in the world. If it does not work, it is also knowing immediately.

As such, productivity of software development will be boosted by thousands of times faster. More over, since the new universal compute language is agnostic of concurrency, it will be impossible to create concurrency related software bugs. There will be concurrency of course to boost computing performance. But concurrency will be done by the processor chip itself. The processor chip will read kilobytes or megabytes of compute code at a time, analyze the code to figure out best way to parallelize different parts of the computing task without error.

Defining a New Internet Economy

The current internet economy model is dismay. By leveraging information technology to extract value from data, great IT companies have grown up, like Google, Facebook and numerous smaller internet companies. The internet is a free for all place, and all these big IT companies try to sell advertisement to earn money, and in doing so, eat each other's lunch. The competition is fierce. Squeezing the last bits of nickels and dimes of profits is hard.

Does the entire internet economy have to be supported by advertisement money? It does not have to. Advertisement money is easy to handle as it is easy to tally click through counts, and when you trust Google or Facebook will do no evil, you will write a check with no questions asked when you receive the invoices. There might be frauds, but not advertising online pretty means your business becomes invisible and cannot survive. It's not a perfect system. But we really do not have an alternative way of supporting the cost of internet.

The situation will change. People browse internet and exchange information because there are values in it. The values are not even small. If I am willing to spend 5 minutes of my time reading a news article or otherwise surfing the web for content, that means the value of the content is at least worth 5 minutes of my time. My employer probably have to pay me $6 or $7 or $8 for 5 minutes of my time. Would I be willing to pay $8 to read a news article that already costs 5 minutes of my time? Probably not. But I think I am willing to pay a nickel or a quarter for that content. Likewise I think I am perfectly happy to pay a a nickel or a dime so that I do not have to waste my 5 minutes on watching useless advertisement spams, as long as there is an easy and non-intrusive way for that transaction to happen.

An omnipresent micro payment system enabled by data security technology which at the same time allows under-used computing and storage capabilities to be shared, will change the internet economy completely. It will be the next big invention after the internet itself. I believe blockchain and cryptocurrencies will be a part of the solution but there are still many unsolved technical challenges ahead of us. Would you want to be a part of that revolution?

要查看或添加评论,请登录

Anthony Mai的更多文章

  • Invention of the Genesis Codes

    Invention of the Genesis Codes

    The Genesis Codes have been invented by me. The invention is going through the patent process now.

  • My Another Trillion Dollar Gift

    My Another Trillion Dollar Gift

    Shortly after I published my article "Gift for a Trillion Dollar Problem" I am making rapid progress. It turns out to…

  • Gift for a Trillion Dollar Problem

    Gift for a Trillion Dollar Problem

    On one fine day in Tokyo, Masayoshi Son greeted the Saudi Crown Prince with a big smile: "I have a one trillion dollar…

  • How an Amazon Engineer Made Multiple $M in One Day

    How an Amazon Engineer Made Multiple $M in One Day

    How much value does a software engineer, like an Amazon Lab126 engineer like me, produce in one day, for Amazon? A…

  • The Universe is a 128 Bits Blockchain Quantum Computer

    The Universe is a 128 Bits Blockchain Quantum Computer

    I am not the only one who speculated that our universe is a quantum computer. Professor Seth Lloyd of MIT had published…

  • Bitcoin Bubble Explained In Numbers

    Bitcoin Bubble Explained In Numbers

    Recent explosive growth of bitcoin price caught my attention. So I want to write a little bit about it, in layman's…

  • The Quest For Efficient Computing

    The Quest For Efficient Computing

    Some recent technical news shocked me. We know Google developed its own processor, TPU, dedicated to run TensorFlow…

  • Road Ahead for AI and Self-Driving Cars

    Road Ahead for AI and Self-Driving Cars

    Artificial Intelligence is fantastic. Recent progress in deep learning neural networks convinced every one that we are…

  • Human Mind is a Terrible Thing to Waste

    Human Mind is a Terrible Thing to Waste

    Human mind is a precious thing. Very precious.

    15 条评论
  • How to Write Correct Computer Code

    How to Write Correct Computer Code

    Any business has to care about product quality, without quality a product does not have a market and then you do not…

社区洞察

其他会员也浏览了