...by Daniel Szego
"Simplicity is the ultimate sophistication."
Leonardo da Vinci

Thursday, November 30, 2017

Blockchain FAQ - Turing Completeness

Question: Is solidity or Ethereum EVM Turing complete ?

Answer: Theoretically yes, so you can implement loops infinite loops and everything that can be theoretically implemented. However from a practical point of view it is not. If you consider the live Ethereum network, there is a block gas limit that can be fine tuned by the miners but only on a long run. The sum of all gas consumption of all transactions in a block has to be smaller than this gas limit, otherwise a "gas limit exceeded" exception is thrown.  It is basically a mechanism to prevent DoDS attacks. So in the practical implementation of Ethereum, it is not possible to implement infinite loops or computation without limit, even if someone could finance the gas forever. 

Tuesday, November 28, 2017

On the simplicity of solidity and other Ethereum programming languages

One of the design principle behind solidity was that it can be used easily by any software developer. That is the reason that the language is a relative simple javascript like programming language. However the facts that in most use-cases one writes immutable smart contracts to the live Ethereum blockchain and the easy programming language makes the feeling that everyone can write blockchain applications lead to catastrophes. Even if the programming language is easy to implement an immutable smart-contract requires actually hard-core engineering: like unit testing, penetration testing and formal verification. It is quite the opposite of the everyone can implement now blockchain solution idea. Instead of an easy programming language, Ethereum programming should be actually something that is made artificial difficult, not because it is necessary, but just to give the message to everyone: if you want to develop for Ethereum, immutable smart-contracts storing a couple of millions of dollars, you need hard-core engineering.

Blockchain FAQ - immutability

As there are usually some interesting questions regarding blockchain, I thought it is a good idea to start a blockhain FAQ session.

Question 1: I used the state-of-the art development techniques like, Agile, Scrum, DevOps Lean and I deployed the first release of my smart contract to the Ethereum live Blockchain, so how can I deploy the next release ?

Answer 1: You can't ! Immutable means you can't change. Actually nobody can change. It is the basic characteristic of a truly decentralized global trust protocol. Certainly, in very special circumstances there might some workarounds, like you might prepare some elements at the beginning to be dynamic, or Buterin might do a hard-fork for you, or you completely destroy the contract and create a brand new one. But generally if you want to change an immutable smart-contract, you fucked up !

Question 2: Is it possible then to write smart contracts at all ?

Answer 2: Voyager 1 probe was launched in 1977, it left the solar system in 2012, it is still working and it has code running on it. Probably it was designed less with the above mentioned fashionable software development techniques and much more with old fashioned engineering, but it is possible. 

Notes on hash turing machines

Hash functions are basic building blocks of every blockchain or distributed ledger solutions. The blockchain itself is nothing more than a linked list of blocks that store transactions and the links are made photographically more secure with hash functions. There are other hash structures as well, like hash trees, called merkle trees to efficiently store the transaction in the blocks or hash tree algorithms to create a consensus mechanism from a different point of view. 

However, hash pointers should not only be considered only at data structures. Hash might be efficiently considered as a result or internal state of a computation. As an example, let we consider a Turing machine: each state change can be extended by a hash computation that computes a hash value based on the input and output states making sure that the given computation is highly secure and hacking resistance. In this sense, a result of a whole computation can be guaranteed by a hash value that is computed either by the inputs or outputs of the whole computation or by the hashes of the individual computational elements. Certainly, it is a little bit questionable what happens if a given algorithm can be implemented many different ways, implying that there might be several valid hash at the end of the computation.   

The end of banks - from a game theoretical perspective

We will probably see the end of banks and I am not arguing from a cryptoanarchist perspective here, but from a purely market - game theoretical perspective. On the one hand the financial crisis in 2008 caused a massive erode of the trust of the banks and increased the regulatory attention and administration. On the other hand due to fintech and decentralized technologies new and competing segments appearing that cannibalize directly the business of the financial institutes. On a long run, it means that due to the increased competition the banks will have to provide services cheaper and cheaper meaning probably cost cut for the first run the personal. However that also mean that they can offer less and less quality services, that is pretty much dramatic as it will very stark further erode the trust and provide the competitive benefit to the competitor fintech - decentralized segment. 

The situation implies on a long run a new equilibrium on the market without the existing banking institutes. Probably the banking institutes will be replaced by decentralized infrastructures for value transfer. 

Monday, November 27, 2017

Radical change in business education ?

Surprising that all of the best business schools around the world start to offer technology oriented courses, like strategy making for artificial intelligence, supporting sales with big data and machine learning, blockchain for business. It seems these technologies are the disruptive technologies that are thought to change radically both the business life and the management practices. 
It is important to emphasize again that the initiative does not come from tech geeks, not even from technical universities but actually from business universities, like Oxford and Blockchain, Harvard and AI. It seems that the "crazy" ideas that were previously communicated only by tech geeks and futurists start to reach mainstream adaptation.
Certainly, one interpretation might be that the management practices are pretty much lacking of creating something new, but I actually do not really thing that it is the case. It is about the best business schools throughout the world: If they teach technology, they thing technology will be the most important thing in business making. 

Thursday, November 23, 2017

on ICO price and media news

Considering the whole ICO wild west, the appearance and spread of the news or false news are much more critical than in the traditional industry. The whole ICO and token concept based on the idea that the products are actually not ready, they only exist as a whitepaper at the beginning, and perhaps something will be realized perhaps nothing. For this reason the appearance of the different news can influence the price in a enormous way. Surprisingly, informative news, like a new milestone has been successfully reached are usually too technical to really make a huge influence. However such a news that a given company made a successful partnership with a big company or a potential customer make the prices sky-rocketing. The situation can be even worse if the news are actually fake and are created only to manipulate prices. As the whole area pretty much a wild-west, it is questionable what can be done against such a negative manipulation.    

Ethereum Blockchain Business Networks

Solidity programming is actually not a simple task. I mean it is certainly not complicated to use the language itself, however to develop programs on an industrial scale, including both performance and hacking resistance is certainly an issue. An approach might be in certain situations not to use the whole language, only a certain set of it or certain abstractions as building blocks. 

On idea might be to use something similar to the model specific languages of hyperledger to develop a so called consortium blockchain network. In such examples not everything is programmed from scratch, instead high level concepts are defined like participants, assets and transactions. They function as building blocks to deliver a lot of different possible applications. If we suppose that the building blocks have a high quality, than the whole application will have a good general quality and the whole development process will be less risky. 

Certainly, it is an open question if the same or similar conceptional model that is working in a consortium blockchain context can be useful in a public blockchain use-case. 

Wednesday, November 15, 2017

Notes on agile methodologies at Blockchain development

Agile, Scrum, DevOps, Lean development. These technologies are cool and they certainly offer advantages in a lot of different circumstances. However as soon as it is about Blockchain development these methodologies should be used with extreme caution, or rather not used at all. The problem is that public Blockchains has got a special characteristic, they work rather as trustware, in which practically different cryptographical and collaboration protocols are implemented. On the top, both smart contracts and classical protocols are immutable, meaning that change usually means hard-fork. However to realize a hard fork is actually not so easy, practically it requires the support from the whole community and all the miners, so it is an option only in a very few exceptional situation. As a consequence, developing on a public blockchain requires rather the conservative methodologies, like waterfall or V model, with a lot of unit testing, penetration testing code and formal verification.

Sunday, November 12, 2017

Microsoft, abandoning the ship

Microsoft used to be a pretty ambitions company that tried to compete with the whole IT world almost in every possibly segment. The strategy was actually, simple they produced a lot of different products and services that were sometimes probably not best in the world but with two simple strategies it was despite possible to compete with the rest of the world:

1. Technology synergy: the products were pretty much compatible with each other and mostly incompatible with the rest of the world. It implied that at selling one state of the art service, a couple of related perhaps not so state of the art products were automatically sold as well. 

2. Community: there was a relative big and convinced community, that helped both at bootstrapping the new products and knowledge based and at pushing the sales further even with products that were perhaps not the best on the world. 

However, this strategy has been pretty strongly changing for 3-4 years; the new strategy seems to have the following properties:

1. instead of a one big closed technology block, in which services are compatible with each other and incompatible with the rest of the world, the direction seems to achieve maximum compatibility with each service with the rest of the world, including competitors products. 

2. an implication of giving up the technology synergy that only world class services and products can survive, and well actually it seems Microsoft tries to cancel 80% of its technology portfolio. There seem to be 2 main focus of the strategy Azure and SQL server, and perhaps 2-3 elements that will somehow further exist like Windows but only at some client applications, Office in an online form and so on. I seems all the other products are actively being cancelled, like classical development directions (.NET, C#, classical Visual Studio or TFS), Windows as a server solution or the whole mobile direction.       

3. with the aggressive and fast cancelling of the existing product lines both the community and the existing customer base seem to vanish. And I think this advantage can not really be reached back again, even with slogans like Microsoft loves Linux, there is not much chance that the old fashioned Linux customers or community members change to Microsoft. 

4. the new and innovative direction seem to be pretty much questionable:
- The future of quantum computing is pretty questionable, on the one hand it is not sure how fast an industry scale quantum computing can be reached. On the other hand, companies like IBM have got ten years of first movers advantage in the field, like having put onto the market online collaboration platform for quantum computing. 
- Virtual reality and augmented reality will have the first big success in two fields: gaming and porno. Due to market success, both the hardware will be cheaper and a big developer community will appear. As a consequence, Microsoft will have an over-prized hardware with a developer platform, that is used only by a couple of developers. 
-  For artificial intelligence there is a pretty strong competition on the market, like IBM Watson, or Google Deepmind. I think the field has got again a high competition and it is highly technical, so Microsoft surely needs to produce more than some fancy chatbots. 

5. on the top, there are some signs that are rather annoying:
- focusing and communicating too much about the internal reorganization is always a sign that the company did not really succeeded to do anything powerful with the products or markets. 
- having over-positive communication and a lot of emotional elements in the communication, like story telling is usually a good way to put the stock price high (and sell before the price collapse).

As a result, the question is raised naturally: Will Microsoft go down ?  


Saturday, November 11, 2017

On the legalization of the cryptomarket

Continues efforts for putting the whole crypto market into the existing legal framework is doomed to fail. The reason is pretty simple they are just simply scratching the surface of the whole phenomena, instead of trying to understand the fundamental building blocks of the crypoeconomics and adapt the whole legal system accordingly. Actually the legal system is about hundred years old, having no chance to deal with the changed digital environment, As a result the legal definition still struggles defining what is exactly a cryptocurrency or Bitcoin and in the meantime totally new phenomena, like ICO has reached a billion dollar market share. However the real question is what is appearing on the horizon of the Blockchain innovations. It is something for that is not payed attention at all, implying that regulators will be again one or two steps behind as soon as the new phenomena scales up.    

Questions on DAI (Decentralized Artificial Intelligence)

Considering the hype around blockchain and the different decentralized technologies and decentralized business models, the question raises slowly if there is a way to create artificial intelligence on a decentralized way. Certainly, it is a question how exactly an artificial intelligence algorithm can be made to decentralized. 
- Should it be somehow similar to the autunomous agents ? 
- Is it possible to capitalize the blockchain or the distributes storage as well ?
- What should be the communication interface around the nodes ?
- Which functionality should be realized by the nodes themself ?
- Is it possible to create a real decentralized algorithm ?
- It it possible to create a model somehow the same way as with decentralized storage or computation ?
- Like with SWARM, or GOLEM ?

Friday, November 10, 2017

The new de facto reserve crypto-currency is Bitcoin

Perhaps, it funny to put this thing in this way, but actually the new reserve currency of the crypto world is the Bitcoin. Certainly, it does not really work the same way as a classical reserve currency like the US Dollar, mostly because of the reason that the cryptowold has got a different logic, as an example independent from the nation state by default. However, if someone wants to exchange between fiat and crypto than the first interface money is actually Bitcoin. On the other hand Bitcoin has got actually the biggest mainstream adaptation on the world, implying the most liquidity and probably price stability (not necessarily in comparing with fiat currencies but comparing with other cryptocurrencies). 

Notes on the economics of online education

Considering the current trends of inline education and the different competing platform, that do not only compete in the IT technology but with the content as well, we can basically conclude that the education will become free of charge. It is a pretty good question which impact does it have to the existing classical and centralized educational institutes, like universities or high schools. Which are the topics or know-how that still can be delivered by these institute, and for which topics is it possible to get higher prize as free of charge.   

Thursday, November 9, 2017

Tokenization and gamification

Surprisingly, Blockchain or tokenization and gamification do not seem to be two totally different concepts. The major idea of gamification is on the other hand the "game" itself, on the other hand some economic reward that is usually manifested in community points, badges, new roles and so on. The next logical step is to realize this economic reward directly with trade-able tokens that can not only collected or gained for some community activities but actually traded or perhaps even sold for real or crypto money.   

The idea might work well in fields where the gamification is strong by design. As gamification tokens might mean a special area in the whole cryptoeconomic and probably they do not carry such a huge burden of legislation risk, it might be a good idea not just to try out gamification-tokenization areas one by one, but to create general token-as-a-service platforms.  

Notes on general coin services - token as a service

Considering the current gold rush for ICO-s and different tokens, there are a couple of services that do not necessarily provide services on their own, but rather concentrate on giving general services for other ICO-s. It is generally the question which are these services. The mostly needed service is not just general consulting but the token creation itself and something that is a "trusted" communication for the cryptocurrency economy to convince everybody that the project is "kosher". Let we call such services as token-as-a-service.

However exactly providing these functionalities has some negative effects. A successfully project is usually much more than simply a token sale. They focus instead on creating fully decentralized platforms on which programming the token itself is usually just the first and easiest step. So, if a company or team can not succeed in even the easiest step, than they will probably fail to deliver anything at all at the end of the development plan. It means indirectly, that such a general coin services will attract all the scammers from the market. 

On the other hand, providing token as a service can attract multiplicative legal risk, as the company providing different tokens can be made responsible for each tokens. As the general token sale is basically a wild west at the moment, meaning different legislation at each country that is changing day by day, providing a token-as-a-service can a legal nightmare.

It is a general further question if such a services should be provided in a centralized way, or there is a possibility to do it completely decentralized. 

Monday, November 6, 2017

On the money multiplication of a cryptocurrencies

Cryptocurrencies are usually heavily criticized that they are not heaving the same characteristic of the traditional monetary systems, namely the money supply multiplication of the bank system. However, that should not necessarily be always that way. 

Let we suppose the following idea: considering an ICO, some tokens will probably reach the necessary success, implying the necessary network effect, price stability and liquidity. That means that these tokens will be probably part of the monetary supply. In this sense a successfully executed  ICO might extend the total monetary crypto supply, as a consequence it works as a crypto multiplication. Actually, in some sense, the system works similarly as the traditional banking system, the money is not multiplicated just for fun, it is used to be given for financing new companies, or new projects. 

The real question if the multiplication can be controlled in centralized or decentralized way based on the token supply and ignoring the such concepts as interest rates for the first run. Let we imagine that the issuance of the new tokens are controlled by some incentives, like with taxes. In this way there is a possibility to control the whole economy, like:

1. In case the economy is overheated, the ICO-s can be made more difficult or highly taxed, decreasing the general demand for new ICO-s and making the increase of the monetary supply less intensive. 

2. In case of depression, the ICO-s can be made more easy to do, like with less taxed, meaning that the demand for new ICO-s will increase among with the general monetary supply. 

Certainly, there are some elements of the model that might be fine-tuned. 
- It is a little bit misleading that the general monetary supply is not only represented by one token but with a several ones. It is a general question if there is a model that assumes only one token. 
- As the general monetary supply can be easily increased, it is more difficult to actually decrease the supply. 
- The model still does not capture the time perspective of a payment, like giving a loan and paying back in a later timepoint. It is actually an open question if it is actually a general problem.    

CBDC (Central Bank Digital Currency) is on the rise

Surprisingly, CBDC (Central Bank Digital Currency) is being taken very seriously by Central Banks. Even if we are probably pretty far from the first working models and they will be probably pretty far from the original concept of decentralized cryptocurrencies, the model is pretty intensively studied. 

It is actually funny that in a conference overwhelmed by people from Central Banks, the usage of words and concepts are a little bit different: 
- Instead of Blockchain, Distributed Ledger Technologies
- Instead of Cryptocurrency, Digital Currency.
- The Satoshi Nakamoto is certainly forbidden. 

Notes on the definition of Fintech

Sometimes the concept called Fintech is a little bit misleading. Certainly, it is pretty difficult to define the concept precisely, it can be however pretty well described:

- Fintech is PSD2, fancy banking Apps, innovative Big Data banking applications, or Blockchain and cryptocurrency solutions. The concept means innovative and disruptive solutions that are related to the financial technology and not necessarily to the banking technology. 

- Fintech is definitely not anything that has anything to do with banks and IT. It is certainly not related to the fine-tuning of some old fashioned legacy backbone technologies, even if they are still used transferring money.  

Sunday, November 5, 2017

On the corporate communication of Microsoft

The general corporate communication from Microsoft is pretty interesting nowadays. They have two major messages: 

1. The incredibly effort that was taken as an internal transformation of the company. However, my experience is that internal emphasizing transformation actually means that nothing has happen with the markets or products that worth mentioning, so the only thing that remains is internal reorganization.  

2. Massively over-positive psychological communication overall, emphasizing always "awesome" and story-telling. However, such a communication usually means in practice pushing the price high, before selling it (and probably before the price collapses again).

If I consider on top that one of the Microsoft founders, Bill Gates, sold his stocks of the company, I am not sure in which direction is the journey leading.