Practical notes on Enterprise software systems and the economics of software.
...by Daniel Szego
![]() | |
"On a long enough timeline we will all become Satoshi Nakamoto.."
|
|
Daniel Szego
|
Friday, September 15, 2017
Useful links regarding to ICO quality
Some useful initiatives to evaluate a quality of an ICO:
general evaluation points:
https://blockchainhub.net/blog/infographics/how-to-evaluate-an-ico/?utm_content=buffer03d19&utm_medium=social&utm_source=linkedin.com&utm_campaign=buffer
https://cryptorated.com/about-us/ico-ratings-calculator/
security law framework for Blockchain tokens:
https://www.coinbase.com/legal/securities-law-framework.pdf
https://docs.google.com/spreadsheets/d/1QxOV2dgxO3C_TyVE0-41ZwLlzPmB-EE1NNshJGuedCU/edit#gid=0
code reviews:
https://blog.neufund.org/announcing-neufunds-ico-transparency-monitor-an-analytical-toolkit-for-the-crypto-investment-9abfa72fe62e
formal verification of smart contracts:
https://securify.ch
https://oyente.melonport.com/#version=soljson-v0.4.19+commit.c4cbbb05.js
Tuesday, August 8, 2017
Forks in Blockchains, forks in cryptocurrencies
Introduction
Last week, we encountered one of the most important and surprising events of Bitcoin's cryptocurrency: The currency was hard-forked, meaning it was finally separated into two different competing crytopocurrency, Bitcoin Cash was born out of Bitcoin. In the following article we briefly summarize what exactly means if a Blockchain system is forking and what are the consequences in a short and long term.
Forks in a Blockchain
From a technical point of view a Blockchain based system has got two important building blocks: the P2P network, containing a huge amount of independent nodes and the distributed ledger itself in which e summarize the valid transactions of the system in blocks (Picture 1). One important feature of the system is that the nodes independently store the entire block chain and each block is chained together by a special cryptographic pointer (u.n hash pointer). One of the most important elements of the algorithm is the decentralized consensus, which is a mechanism for summing up new transactions into a block and attaching this block into the chain. There are several algorithms for consensus, but perhaps the most important is the so called Proof of Work where some special mining nodes solve an algorithmically difficult cryptographic puzzle. The node that first solves the puzzle and attaches the new block into the chain takes a reward for it.
Picture 1, Standard forks in a Blockchain
Given that nodes are geographically distributed across the globe, there may be two separate independent blocks in the network that solves the puzzle and attached a new block, for example, a miners in China will pick "Block 4" and a miners in Canada will use the "Blokk 4 * ", so the nodes in Canada consider another Blockchain valid than the nodes in China (Picture 1). This situation is called the Blockchain fork. It is important to note that it is normal to have such a forks only on short-term, because an important property of consensus algorithm, that always the most longest Blockchain should be considered as a valid Blockchain. If, for example, Chinese miners find a "Block 5" Five and spread over the network, Canadian nodes will automatically detect that the longest chain is "Block 4" - "Block 5" and it will be considered as a valid one. "Block 4 *" will be ineffective (Orphaned Blocks) and the transactions in it will be processed in a new block based on "Block 5".
Although it may seem a bit odd for the first run that forking occurs in the Blockchain during normal operation, however they rarely take long and rarely longer than one or two blocks. In order to create a a forking situation, mining nodes in two different parts of the world needs to find a valid block roughly at the same time. In order for a fork to survive, it is necessary to find the next blocks "Blocks 5" and "Blocks 5" at roughly again at the same time. With the number of blocks, this chance decreases exponentially; the probability that a 6 long fork is created microscopically small. That is the reason for example that as a rule of thumb one has to wait 6 validations for a Bitcoin transaction, meaning that the transaction is part of a block that has already been followed by 5 further mined blocks, so the chance of forking is minimal.
Hard fork versus soft fork
Certainly, the situation can be more complicated. The problem is that the software on each node is not static one but it is constantly being developed. New versions and updates of software often affect what we consider to be valid transactions or valid blocks. In addition, since it is a massively distributed public network, each node operator can freely decide whether or not to run the new version of the software. If half of the nodes work with an old software and consider the transactions as valid under the old rules, whilst the other half already take the new rules into account, it can cause long running forks in the Blockchain (Picture 2).
Picture 2, forks at software update
Practically speaking, there are two kinds of different forks. At the so called soft-fork, the new software is compatible with the old one in a sense that the new software only narrows the range of possible valid transactions or blocks. With other words, if an updated node finds a transaction or block valid, than the old nodes will find it valid as well. For soft-forks, if the updated software is running for most of the nodes, only short-term forks will be created in the block chain. On the contrary, at hard-fork the new software is not compatible with the old one (Picture 2). If not all of the nodes are updated to the new software version, it causes that the Blockchain will eventually branch out into two competing ones: old nodes will build blocks with old rules and only these blocks will be stored, new nodes will count with the new rules and only blocks are stored that are validated by them. Virtually the system is split into two parallel subsystems.
Picture 3, soft fork versus hard fork
Value of a cryptocurrency
Of course, it is an interesting question is how good or bad is when a block chain-based system finally forks. The value of most cryptocurrency and Blockchain based services are relative complex concept that depends on the following major independent actors and groups:
- Developers: The more developers support the system, the faster you can implement new services, fixing existing errors and more.
- Operators - Miners: The more independent nodes are in the world, the more robust and stable the whole system works. The more miners working with more sophisticated tools the harder it is to break the system.
- Traders: Traders have the interest of a more stable and reliable operation and that a huge amount of users can buy with the given cryptocurrency.
- Customers: For them the major motivation is to have the possibility to buy as many shops as possible and that the the whole system operates smoothly.
- Investors and Speculators: This category usually uses the given cryptocurrency only to realize short or long-term profit on exchange rate changes.
Generally speaking the more stakeholder or the bigger community is to be found the more stable is the system and basically it the interest of almost everyone that the system behaves stable. Overall, it is overall interest that the more people use the system and the more stable it runs, so a hard-core is fundamentally no long-term advantage, but finding a common solution with such a large number of independent actors is relatively difficult. In addition, it is worth mentioning that if a block chain system hard-fork-ol then existing cryptovaluta can be used in both new systems, of course another question is what happens to the exchange rates after block chain branching.
Bitcoin fork: Bitcoin and Bitcoin Cash
The Bitcoin protocol has long been suffering from a pretty serious scalability problem: the 10-minute block validation time and 1 MB block sizes allow the entire network to handle approximately 7 transactions per second, compared to Visa with the few thousands or even PayPal's hundreds of transactions per second. There have been a number of technical solutions to solve the problem that usually work with increasing block size, however these software updates risks a hard-forks. As mentioned above, hard-fork can be avoided if all participants agree hundred percent and all operators and miners will install the new software version roughly at the same time.
To avoid this risk for a hard fork, an alternative possibility has been proposed that is backwards compatible and might make only a soft-fork. it operates with a special extra block complementing the original blocks of the chain (SegWit), so the transaction number per second can be doubled. In the Bitcoin community, a long-term discussion was carried out which version is more practical: the main criticism of the SegWit system argued that this is just a temporary solution that needs to be upgraded on a long run. The debate escalated on August 1 as a group of operators miners and programmers rolled out a version that uses an 8 MB block size and that is incompatible with the old software version. This caused a permanent fork in the Bitcoin Blockchain and a new cryptocurrency called the Bitcoin Cash was borne. At the end of the hard-fork, nodes and miners who updated their software processed the blocks and transactions of the new Bitcoin Cash system, operators and miners running the old version stayed with the old system.
Of course, it is an interesting question what happens on a long run with Bitcoin Cash. It is important to note that community support for the new cryptocurrency is pretty low even if it is technically more advanced than the classic Bitcoin. With other words, only a small number of operators support the new system and fewer customers and merchants are available. As a consequence, the chance that a stable and long-running cryptocurrency has been borne seems to be little at the moment.
Thursday, July 6, 2017
Notes on digital identity and big data
Considering current trends and algorithms in data mining and machine learning, the concept digital identity is actually not so simple. Virtual identity is not just a set of parameters that are published somehow to the web, instead it is all the digital traces that are left behind by someone. It includes digital traces on google, Netflix, on different dating or music apps and so on. Currently data of such an application remains in the context of the application, however will not necessarily remain the same on a long run. As a consequence, serious data and identity leaks might occur, causing for instance that general browsing characteristic of an individual is considered at a credit or insurance evaluation.
In this sense, the privacy of an or leak of an identity will be an always increasing problem. There might be two possible answers for this problem:
1. To get the online traces of an individual independent of the identity, like with the help of private browsers, private search and other privacy tools.
2. Simulate online behavior to match an expected one with the help of online algorithmic tools, for instance with the help of bots.
Monday, July 3, 2017
Governance issues of self service IT
PowerApps, PowerBI and Flow. These are awesome self service IT tools from Microsoft, meaning that creating reports, mobile Apps small workflows or business logic can be created without real coding knowledge just by clicking the applications together by power users. However this direction of self service application development raises serious questions regarding governance. The situation might be similar that happend with Excel and at the early stages of SharePoint as well, where a huge number of unregulated island solution have borne, without the possibility to integrate or scale them up.
Such self service solutions clearly have the advantage that a simple power user without developer or coder exercise is able to deliver a solution. Another advantage is that these solutions can usually be developed at a rocket speed, meaning both the first delivery of the application and the possibility to modify as well. What is missing however is the general governance concept:
- Well defined thumb of rules for authorization: like roles, peoples, groups, the possibility for general authorization guidelines.
- Rights and visibility in the information flow of data: as an example at a simple report of containing average salary of several employees it makes sense to define access rights on the data side defining who is allowed to see the individual salaries and the total sum.
- Scaling the application: most rapid application development environments have architecture limits, manifesting in point in the application delivery where further uses-cases can not be delivered with the same methodology. It is a question that point is reached if there is some integrated solution to implement the further use-cases, like extending exchanging self-service development style with classic programming.
- Migrating between applications: The primary idea of self service IT is to give the possibility for the power-users to "click together" applications. Supposing that we already have some legacy application that we want to more or less automatically migrate to the new platform is usually not supported.
As a consequence, self-service frameworks provide a solution for certain business requirements but several new challenges regarding governance are raised up as well.
Monday, June 12, 2017
Bittcoin - Ethereum and the cryptoderivatives
Although current Blockchain systems like Bitcoin or Ethereum clearly represent breakthrough technologies for realizing financial services without the need of central trust, they suffer with a basic problem to realize a wide range of financial services: They focus on instant payments and money sending. Most financial products however are not build on the instant payment but rather on a promise of a future payment. In this sense instead of the basic services, like a certain M amount of money, Bitcoin or Ether is transferred, the basic protocol should focus somehow on the fact that a certain amount of M money will be transferred in a future t time point. As a consequence atomic transactions should be rather build up with the help of <M,t> tuples. Certainly it is a very good question if the Blockchain can help somehow that the certain amount of M money is really or with a high probability will be really transferred at the t time point.
Notes on social networks and digital identity
From a general semantical perspective there is not much different between the different social networks, like Facebook, LinkedIn, Xing or Yammer. They provide more or less the same services; they are actually different based on two fundamental differences:
1. the target market: as for instance LinkedIn attempts to aim the whole world as professional network, Xing aims only the DACH market, Yammer rather concentrated only on the internal corporate fields.
2. they work with different digital identities: as for example Facebook works with a rather personal identity, LinkedIn clearly aims only professional networking.
On a long run it can be predicted that multi-identity social networks will appear: on which I can reveal one part of the data of my identity to one group of people and make connections with a total different data set to another group of people. It is certainly a good question how it can work from a practical side, one option is having totally separated identities, like "digital avatars" for public professional networking - private professional networking - personal connections - family connections and so on. Another option is to make the possibility to configure everything on the individual property basis, like a certain property is available only for my professional connections but not for my personal ones.
It is an open question as well how such a multy-identity service can be implemented in a hacking resistance way, clearly in such a scenario an identity theft would be fatal.
Tuesday, May 16, 2017
Comparing enterprise Blockchain frameworks: Hyperledger vs Azure Blockchain as a Service
Current trends of the Blockchain revolution reached from the Blockchain 1.0 version to the 3.0 with rocket speed. As Blockchain 1.0 systems concentrated mostly on the different versions of Bitcoin, like LiteCoin, Dogcoin, Blockchain 2.0 systems tried to extend the original concept to a general programming paradigm. Most prominent examples are Ethereum, Counterparty or RKS.
Blockchain 3.0 systems try to extend or further develop the different versions of smart contract systems in a way that they are applicable for typical enterprise scenarios as consortium Blokchain solutions. Two major examples are Azure Blockchain as a Service and Hyperledger. Both frameworks starts with the basic problem statement that in a real enterprise scenario a pure Smart Contract based system is simply not efficient enough. It does not scale enough for the different enterprise use cases and putting everything from data to business logic into a smart contract is not necessarily a suitable scenario. Despite of the same problem statement they use two fundamentally different approaches.
At Azure Blockchain as a Service (Figure 1) basically a third party SmartContract system has been integrated. Typically Ethereum or different versions of Ethereum, but some other solutions are also possible out of the box at the moment, like Chain or Emercoin. To extend the business functionality an Off-Chain highly secure system is proposed, the so called cryptlets, that are cryptographically secured small programs that are running in dedicated hardware containers, called Enclaves. Crpytlets are planned to realize secure business logic and communication with the Blockchain in two directions: on the hand external input data via Oracles can be securely integrated by Cryptlets, on the other hand Business logic that requires a higher performance but should not necessarily run on the Blockchain can be efficiently implemented. On top, Azure Blockchain as a Service provides some additional elements, like key vault for securely storing keys, or Azure Active Directory integration for identity management.
Figure 1. Azure Blockchain as a Service Architecture
Hyperledger on the other hand redefines the whole Blockchain concept with different building blocks (Figure 2). The consensus mechanism and transaction validation are split into different parts, like Consensus manager, Distributed Ledger or Ledger Storage that provides the possibility to implement different kind of Blockchain or Blockchain style protocols. They usually provide a state based representation that is pretty far from the original UTXO based concept, so probably it is better to speak about a rather Blockchain style protocol. SmartContracts and business logic can be implemented by the so called Chaincode services. They are practically secure nodes, virtual machines, containing a secure container and executing a certain program at each of the chaincode node. They can be implemented in different languages (at the moment is Golem, but other programming languages will be available as well). The framework is extended with additional services as well, like identity management.
Figure 2. Hyperledger Architecture.
The following table tries to summarize the major ideas of the two architectures:
From a conceptional point of view the two frameworks represent two different directions. Hyperledger moves into the direction of defining a general framework and building blocks for implementing different kind of a consortium Blockchain protocols, Azure Blockchain as a Service integrates exiting Blockchain solutions and extends them with a crypto framework to realize any kind of highly secure on-chain - off-chain protocol. In this sense they should not necessarily regarded as competitor technologies to each other, as an example Cryptlet technology can have the realistic use-case for instance to extend a Hyperledger based Blockchain system.
Friday, May 12, 2017
Notes on corporate Blockchain solutions
Corporate Blockchain solutions provide exciting ways of building up new solutions for existing business use-cases and they provide the way for implementing brand new use-cases as well. Some companies and frameworks concentrate strong on the corporate Blockchain direction, like Hyperledger from Linux foundation or Azure Blockchain as a Service from Microsoft.
However getting technology alive with some of the classical multinational enterprises will be much more difficult than it is expected. Most of these companies and decision makers are still struggling with the cloud technology and regard to Blockchain as something suspicions alien thing. They have the very traditional, "If it is working do not modify" mindset. Even if corporate Blockchain solutions are being experimented they are used in reimplementing some old-fashioned use-cases one by one, usually in which Blockchain is not the best technology choice at all, instead of brainstorming on brand-new services that are only available with a Blockchain technology. The result of such experiments will show that Blockchain is a nice technology, but it is actually not really necessary, it can be replaced for instance by a classical distributed database. They will start to take the situation seriously as really competitors appear that provide the same service cheaper and much better just because they started the whole Business already on Blochchain ... but then it will be too late.
Monday, April 24, 2017
Philosophical and practialy considerations of working with artificial intelligence
An ongoing philosophical discussion should be renewed as tool supported by artificial intelligence slowly appear on the market, namely by whom was a certain product / art / service created. The original discussion if for instance a certain painting was painted by the painter or by the brush seems to be a little bit too hypothetical for the first run, however considering paintings that are painted by artificial intelligence algorithm, like by DeepDream, the question seems to be less theoretical. Supposing that I am a painter creating paintings with the help of DeepDream or sculptures with the help of DeepMind, who is the creator of the art ? Me ? The AI algorithm or somehow both of us ?
The question can be much less philosophical if we consider for instance products that were designed and created with the help of AI algorithms. Who can we call as creator, who should have actually the rights for that product ? Similarly if an online service is provided almost 100% by an AI algorithms, then it is an interesting question who should be responsible for the service quality ? The AI algorithm ? The one who hosts the algorithm ? The one who trained the algorithm ? I think these questions will provide a lot of legal and society discussions on a long run.
Notes on Turing Test
Turing test :"The Turing test, developed by Alan Turing in 1950, is a test of a machine's ability to exhibit intelligent behaviour equivalent to, or indistinguishable from, that of a human" - Wikipedia.
But how about on sub domains where the Machine intelligence actually beats the human ones, like playing chess ? Does the definition make sense ? Supposing that the machine intelligence is better, is there actually a chance to evaluate from humans? As the definition was perfectly working 50 years ago, it is getting to seem to be a little paradox.
Subscribe to:
Posts (Atom)