Skip to main content

The Essence of Blockchain

A blockchain is a chronicle of signatures. Everyone can see the signatures but no one can afford to alter them. As a new block of signatures joins in as time passes the blockchain security as a whole becomes stronger. Blockchain is protected by public cryptography with no need of a central supervision. By design, altering any of the signature will be a very expensive undertaking. So expensive as comparable to the cost of breaking a vault of gold, which act of breaking in is much more expensive than the gold itself. All signatures are well-verified prior to being kept secured into a blockchain. Hence, all signatures in a blockchain can be trusted without requiring any third party verification.

The principle of blockchain was made popular through the Bitcoin whitepaper by an illusive Satoshi Nakamoto. Even though the two words block and chain were never mentioned as one word in the whitepaper the essence of blockchain was described through out the document.

The Bitcoin blockchain was designed to keep the cryptocurrency spending signatures. A spending is a simple statement saying that A spent his Bitcoins to B. From all spending statements the ownership of all Bitcoins can be summed up. The distributed consensus of Bitcoin prevents A from double spending which means A cannot spend or duplicate the same Bitcoins to both B and C. i.e. If A has only 10 Bitcoins he cannot make two statements saying that he spent 10 Bitcoins to B and also spent 10 Bitcoins to C. Double spending problem is only inherent in decentralized cryptocurrency. The so-called 51% attack will unfortunately enable double spending. The attack is not about altering existing signatures but creating new double-spending signatures. Altering an existing signature is still very expensive for a 51% attacker.

A blockchain can securely keep any type of signatures not just cryptocurrency spending signatures. If it does not involve cryptocurrency than it does not need distributed consensus because the issue of the so-called 51% attack does not arise. Hence, a private non-consensus blockchain is viable.

In an ordinary information system a blockchain can be applied as a chronicle of usage signatures. Each time an information system is used a signature of the usage can be kept in the blockchain so that no one can dispute that the usage had indeed occurred. An information system usage can be in the form of creating a new record or viewing or updating an existing one. All signatures of authorized uses or alteration of the information system can be kept in the blockchain. Hence, any attempt to alter the information system through backdoor can easily be detected and corrected. Implementing a blockchain is equivalent to closing all backdoors. An information system with no backdoor is the most secured system. It can prevent the system from being brought down by internal or external malicious actors. A blockchain can make any ordinary information system temper-proof as it had made Bitcoin temper-proof.

The chronicle of signatures is the solution to the backdoor problem of all existing information systems including the ones used in the banking and financial industries. All central banks hate cryptocurrency but they are eager to seize the blockchain.



Comments

Popular posts from this blog

Setting Up PyScripter for Quantum GIS

PyScripter is a general purpose Python Integrated Development Environment (IDE). Quantum GIS (QGIS) is a desktop GIS application that can be extended with Python plugins. Both are open source softwares. We intend to use PyScripter as an IDE to build QGIS Python plugin. We are using PyScripter 2.4.1.0 and QGIS 1.6.0 in Windows. PyScripter does not come with Python. On the other hand, QGIS is built in with Python. Thus, we will setup up PyScripter to use the build in Python in QGIS. We assume both PyScripter and QGIS are already installed. Preparing PyScripter batch file We assume that QGIS is installed in C:\OSGeo4W\ folder and PyScripter is installed in C:\Program Files\PyScripter\ . 1. Copy qgis.bat in C:\OSGeo4W\ bin to pyscripter.bat 2. Edit pyscripter.bat to remove the last line that read something like this start "Quantum GIS" /B "%OSGEO4W_ROOT%"\apps\qgis\bin\qgis.exe %* and replace it with this in one line Start "PyScripter" /B "C:\Progr...

Using React in Foundation for Sites

This post was the precursor to the Foundation-React Template . React and Foundation are two different web UI frameworks addressing different needs. They evolve differently. Both of them are powerful on their own accord. Fusing them together may create superpower. We will walk through the process of adding React into Foundation. We will start by installing both Foundation and React through command line interface (CLI). Then we will create a simple Todo web app. Along the way we will highlight the development process. But before all that, let us summarize React and Foundation. The details can be found at their respective websites. Both of them are well documented. React is a run-time UI rendering engine. It renders dynamic UI elements in its own fast virtual DOM, and only update necessary changes to the slow browser DOM. This behaves like a  double buffering DOM which makes any UI update feels fast. React wraps a UI rendering script in a component. A React component can ...

Debugging PHP using Apache Error Log

PHP runs on the server side and behaves like a function that return a value against the given arguments. A remote client may call this function and expect a specified return value and nothing else. So how do we debug this function ? It must not return debugging messages since the client is never designed to handle them. We must never burden any client to handle debugging messages. If we run PHP through Apache server then we can use the error log to keep our debugging messages. It may not be the best way to do it. But we only want to talk about this approach now. Error Logs The Apache error log files generally can be found in the following directory: var/log/apache2 We issue the following command from within the directory to read the latest error messages: # tail error.log The tail command reads the last few lines from the error.log file and prints them on the terminal. If we need to read a specific number of lines from the end of the file then we can specify the -n opti...