There are a lot of wierd words used in Cardano as placeholders for different parts of the system. Of course, the world of blockchain is complicated, so some would say that using hard to remember and hard to spell words as well can make things a little confusing. Well, we're here to help. This is a short list of all the most commonly used words and phrases and a quick reminder of what they mean, with links where applicable. A great way to see an overview of the original plan is Charles' whiteboard from Oct 2017 - he says a lot of words in it.
In the Byron phase the Cardano protocol is created and is supported by servers run by IOHK. At this point the only coin is ADA, and it runs a UTXO protocol. While new transactions are created by centralised servers anybody can install a Daedalus wallet which downloads and verifies the full blockchain. During this phase a lot of polishing goes into the way the blockchain is stored and the asthetics and speed of the experience. Little known fact: Lord Byron was the father of Ada Lovelace.
In Shelley the new blocks are created by anyone who wants to create a staking pool and keep a server running 24/7. People who run pools advertise themselves in a master list and people who want to earn staking rewards delegate their staking option to the pool of their choice. The maths is worked out so that there is a good level of decentralisation.
Here smart contracts are made available in the main net using a Universal Language Framework called IELE. This allows for flexibility when defining the rules in a smart contract in Cardano. There have been too many examples of hacked contracts allowing funds to be lost in other crypto-currencies, but there also needs to be enough power in the language to build complex contracts. The solution is to provide multiple contract definition languages which all compile to a base language using a Universal Language Framework. The base language is Plutus, and is itself based on Haskell. Haskell is a good choice because it is a purely functional language and so can be mapped to a formal specification of intent. Compilers are then be developed that convert other languages into Plutus. Marlowe is the first example, which is a simplified language to define financial rules. Other languages, most notably Solidity will also be built.
In this phase the team will tackle the scalability problem which is a key area of concern in all blockchain projects. There is always a trade-off between speed, decentralisation and security. In highly decentalised systems it takes time for a transaction to propagate around the network, so reducing the block time or increasing the block size reduces security unless you cut the number of nodes. A new version of Ouroboros called Ouroboros Praos will be introduced, which will support multiple paralell blockchains, eventually allowing unlimited scalability.
In this phase the problem of governence and funding will be solved. One of the weak points of all crypto-currencies is the organisation that control it. These are the guys that write the software, and so decide how it will work, and also go out and market it, choose logos, set parameters, choose what the money will be spent on, etc. If power is concentrated in the hands of a few they can become lazy, or greedy. They can also disagree on the way forward, which leads to confusion or even a split in the whole community. If no power is given to anyone the system stagnates, nothing gets done. In this final phase an automated, self-regulating, indestructible mechanism is created which allows a governing body to be elected and funded. It then allows that body to choose the direction of the system and scale according to need. It doesn't rely on individuals and has no single point of failure. It is built into the protocol.
Yoroi is an ADA only light wallet that runs as a Google Chrome extension, so it works with any browser which supports Chrome Extensions, such as Chrome or Firefox. The main things about it are that it is very easy to install, easy to use, and it supports Hardware Wallets like the Ledger Nano S. This is a very well known and commonly used hardware wallet, and its generally accepted that hardware wallets are the most secure way to hold your private keys. You can install Yoroi here
Infinito is a fairly popular wallet for Android or Apple phones which supports a reasonable range of currencies including Cardano. There's no hardware wallet support, but the private keys are held in encrypted format on the local device so you are in control. You can also create friendly addresses in your address book, and they have a gateway to fiat (which I haven't tried). You can install Infinito from the Play store, or App store. The website is here
Atomic advertises itself as a Universal Cryptocurrency Wallet and it supports lots of currencies. Apart from a long list of the major currencies you can also add any ERC20 token, so there is a good choice. You can choose the ones you want to show and hide the rest. You can also buy with fiat using a credit or debit card. Also atomic swaps from one currency to another work easily and quickly with a 2% fee. Its pretty good. It also works on a wide range of operating systems including Windows, Mac, Ubuntu, Debian, and Fedora. The website is here
IOHK is an achronym standing for Input Output Hong Kong. It is a company that was created at the start of everything by Charles Hoskinson and Jeremy Wood in 2015 after Charles left the Ethereum project and decided to create a new third generation technology which was launched as Cardano in September 2017. It may not sound like a great name for the power behind Cardano, since it is no longer based in Hong Kong, and its clearly about a lot more than IO, but Charles says it has far too much brand recognition now to change it, and he's in charge. IOHK is the organisation which controls the research and develpment of the software that supports the whole Cardano ecosystem. They don't neccessarily write all the software, since they might work in pertnership with other organisations, but they co-ordinate the specification and development of all the technology, provide the roadmap, and verify the quality.
Emurgo are the organisation which help businesses to adopt Cardano as a solution. Some of this work is about marketing, so they would hope to help drive adoption, but its very hands on. They build solutions and give advice to organisations who have projects that need blockchain. They also manage training and eduction for people or organisations who want to learn. They have been going since June 2017. Find out more on their website.
The job of the Cardano Foundation is to spread the word. Some people would say this is the most important bit, because Cardano hasn't been going as long as a lot of the other currencies so its critical that the news gets out. There's a bit more to it than just advertising. There is a community of users who just want to talk but also legislation being passed by governments all over the world, and commercial partnerships to build with companies that want to build their own projects. The Foundation help bring people together to agree commercial and legal standards and hold the technical people accountable for their decisions. They don't actually build the software that commercial organisations would use, but they attract the attention and find use cases.
Atala is a framework, a bit like IBM's Hyperledger Fabric. A framework is a toolset, a list of utilities which have been created to do all the clever stuff and which are well tested. This makes it much easier for developers to build a new system because they just have to plug in the bits they need and they are off. Developers don't normally write all the code to do things. For example if you had a date field on the screen and wanted to offer a calendar to help enter it you wouldn't write all the code to render months and allow all the clicking and moving. That's been done, you just plug in a utility and use it. Atala is a set of tools that are interoperable across blockchains to support a range of key functions needed by the builders of infrastructure that will link to blockchain technology. Key areas addressed are Identity, Payments and Supplychain. This will allow large projects to be built with complex data and rules managed off-chain, but hooked in for processing payments or running critical smart contracts which need to be trusted. There is a focus on tools which would allow governments to build systems for use in their infrastructure such as registrations, deeds, licences, and local currencies. The first case is planned to be currency for Ethiopia, but pharmaceutricals in Mongolia is also rolling.
Seiza is a new blockchain explorer for Cardano. Blockchain explorers tend to be quite utilitarian in their approach, but this one is promised to be a bit more user friendly. Better looking and more accessible to people who maybe don't want to be faced with huge lists of digits and letters. At the time of writing its not here yet, so we have to wait.
Polymesh is a collaboration between Cardano and Polymath, creating a bridge between the decentralised smart contracts in Cardano and the established regulatory framework offered by Polymath. Polymath specialise in Security Token Offerings. The rules could be built into Cardano, but they are wide and varied because they depend on the laws of the countries of the world. It is faster, and more futureproof, to build a bridge to an established and well supported protocol which already has credibility and focus on the current legal frameworks than it is to start from fresh. Charles Hoskinson has the title of Co-architect at Polymesh.
Plutus is the base language of Cardano smart contracts. It is unique to Cardano and has been developed as the minimum set of commands required to allow the rules of a smart contract to be defined precisely. It is based on a purely functional programming language called Haskell. Using a functional rather than procedural approach allows the rules of the contract to be defined and understood in a formally verifiable way, based on mathematical proofs. This remains possible while also supporting other languages and compiling them into Plutus.
Marlowe is a language for writing smart contracts. It runs inside Plutus, but is streamlined and simplified. As a result its a GREAT place to start if you really want to learn about how smart contracts are built, and why Cardano is better than the competition. To help you out, I have created a step by step tutorial about Marlowe, so you can get a good look at it. The idea is to give you all the tools you need to build a financial contract in a form that you can learn, rather than a complete programming language which has hidden traps.
There are two pieces of software developed as clients to support the Ouroborus protocol once Shelley is released. One is written in Rust, the other in Haskell. Jormungandr is the Rust client. The two programs were developed in parallel because this allows them to be compared both with each other and with the specification at the same time. Differences are then discussed to ensure the right decision is made where it is open to opinion. Jormungandr was finished a little more quickly, so it is the one used in the first Testnet. The word Jormungandr comes from the Midgard Serpent in Norse mythology, chosen to complement Ouroborus, which is an Egyptian snake. Here is a good video explaining how to install it.
Tangata Manu is a codebase library for use by developers who want to develop wallets and explorers which link to the Cardano blockchain. It allows programmers to quickly upload the blockchain into a local database via an API, then keep it up to date. This allows projects to be developed which use a copy of the blockchain kept locally and serve it within an application. Tangata Manu is open source, download it on git.
Ouroboros is the much hailed and well researched Delegated Proof Of Stake model used by Cardano to mine transactions. The problem faced by all currencies is that everybody wants some, and many are willing to lie and cheat to get them. The currency has to find a way to verify that the funds are real and the total amount can't increase. Governments do this by having a central bank, which prints the new money and checks up on everybody. Bitcoin does it using a Proof Of Work system. Here is my simplified Bitcoin walkthough.
Ouroboros Praos is part of the Basho phase (Phase 4 of 5) in which the scalability problem that is inevitable in a blockchain is resolved. If a currency is going to be used predominantly across the world, and all transactions ever made are held by everyone, there are clearly going to be bottlenecks. These come in the network download speed on nodes, and in the blockchain size. There are several weapons in the Ouroboros arsenal which will be brought into play, step by step, to allow capacity to match demand. Clearly we have a bit of time here, but we are prepared. The use of a delegated POS model is a good start, so only the stakepools need to be high resiliance, rather than every wallet. Keeping the number of pools from being too high also helps. After that we can use sidechains which run quickly and settle on the main chain from time to time, like the lightning network. Also RINA (Recursive Internetwork Architecture) which is a form of sharding, and pruning to allow data which is not needed to validate transactions to be cleaned. Here's Charles' quick summary, and this is more technical. Finally, try the whitepaper
In Ouroboros the transactions are created during a slot by a slot leader. The slot lasts 20 seconds, so that means if your staking pool has been elected as slot leader it only has 20 seconds to create a block or it has missed its turn. The slot leader creates the block then randomly elects the next slot leader. After 21,600 slots (which is 5 days) the performance of all the staking pools is evaluated to make sure they were there when they were needed. The rewards are given out, with the fees automatically given to the pools and the rest given to the stakeholders. If some slots were missed those funds go to the treasury. This is important because we don't want successful slot leaders to benefit from failed ones since it might give them a reason to find ways to make it hard for each other. Then a new epoch begins.
ADA is the name of the coins. Most people who have got to here already know this, but its unusual for a protocol to have a different name for the coin as for the project itself. The word comes from the famous English mathematician from the 19th century called Ada Lovelace who is known for her work on Charles Babbage's proposal for the first computer. Little known fact: 0.000001 ADA is one Lovelace.
Marlowe (see above) has been developed as a way to create financial contracts, but we need to be sure it can do the job. It turns out that there is a group called the ACTUS Financial Research Foundation who make it their business to research financial contracts and define them with technical specifications. Legal jargon tries to be precise, but ACTUS go an extra step, using contractual terms and formal methods. They have created a definition of all the known standard financial contracts. Marlowe can be checked against these definitions to make sure it has the features it needs.
The Cardano blockchain is built using two layers, the first one is the Settlement Layer. This is where the blocks of transactions are formed which move ADA from one address to another. It uses the Ouroborus Protocol to allow stakepools to validate and update the chain. Inside this layer are all the rules around creation of blocks and the UTXO model for moving ADA between addresses are validated. It also defines the rules for sidechains to allow value transfer on and off the main chain. Tokens created by smart contracts running on the Computation Layer would also be processed and validated here.
The computation layer is where the rules for smart contracts are interpreted and executed. This layer runs on top of the Settlement Layer, in that when a contract calls for transfer of value it would make a request to it. But the computation layer supports the language of the smart contract by interpreting it. It would expect to be able to access an Oracle to gather world data, a clock to find a date and time, the blockchain to see past transactions and address balances, and data attached to those transactions. In Cardano smart contracts can be written in lots of languages, and they are defined using a strict set of rules called the K framework.
The K framework is the definition of the available base level commands available to smart contracts in Cardano. This framework is a scientific definition based on the idea that a mathematical proof should be possible to show that the software does what is intended. This means allowing the contract specification to be written in a formal language, and then offering a range of different languages into which it can be transposed. Each language is fit for purpose, in that the syntax is designed to be understood clearly, but also is provably going to execute as expected. This requires a very careful mapping of the higher level language to the lower level one. The base language is called Plutus.
IELE is the Cardano blockchain virtual machine. Its pronounced Yelleh, and its the word for nymphs in Roman mythology. Don't ask me why they thought they should have nymphs running the blockchain, I assumed it would be an achronym. Maybe its an achronym as well. Anyway, its the thing that all the contract definition languages like Plutus and Marlowe run on. There is a good description of it here and another here. Basicly smart contracts are stored immutably on the blockchain, and they have to be executed by a virtual machine that uses data such as the current time, the blockchain transactions and any data stored in them, or perhaps an oracle. The results are stored back onto the blockchain, again ummutably. It has to interpret the language the smart contract is written in so there is a base language (like assembly code on normal computers) that it uses natively and which the contract language compiles down to. IELE is where Cardano really shines. It uses semantics based compilation to allow formal checks to be made that the contract really does what is intended, making many types of error impossible. This is possible by way of the K framework. The fact that this is used at the bottom layer gives confidence that contracts can be relied on to do what they are meant to do without leaving openings for attack. This solid base can be built on by providing a range of different contract languages which are fit for purpose, so that tools can be built that are tailored for the user.
This is the EVM - or the Ethereum Virtual Machine - running under the K framework on Cardano. Solidity is the standard Ethereum smart contract language, and KEVM is a virtual machine that runs Solidity contracts on IELE, which is the name for the Cardano Virtual Machine. So thats easy.
Hydra is sharding for Cardano. It is called Hydra after the mythical creature from ancient Greek mythology which had lots of heads, all snakes. Whenever a snake was chopped off two more would grow in its place. Snakes are part of the Cardano image so the idea fits. To achieve infinite scaling you need to be able to split into multiple blockchains as demand increases, with each chain building independantly, while at the same time validating all transactions on the whole. This can be done if the players on each chain can be trusted and the validity of a chain can be easily checked without rescanning. See KMZ sidechains for more on the technology.
UTXO is an achronym standing for Unspent Transaction Output. The idea is quite commonly understood in blockchains because its used in Bitcoin. In this model any address containing a bit of ADA must be fully used when it is consumed in a transaction. Since the transaction has to balance to zero, and you have specified how much goes to the destination address and transaction fee, there will be some change left over. The change goes back to the spender and the source transactions get marked as spent. The alternative is called the Account Balance model, which is used by Ethereum. Here you just take what you need and leave the rest. So UTXO is a bit like cash; you can't tear a note in half so you give the whole note away and get change back. The Account Balance model is like a bank account, deducting from the balance. There can be advantages in the Account Balance model when writing smart contracts, since it is simpler, but UTXO is considered better because the Account Balance model can be subject to double spend attacks unless measures are taken to prevent them. With UTXO the blockchain is easier to validate since every movement of funds clears the address balance leaving no possibility of a second spend. Here is a good article explaining it in full.
KMZ stands for Kiayias, Miller and Zindros. These were the three people who wrote the witepaper defining how to generate transactions which are defined outside the Settlement Layer but carried out on it. The paper was written around the Bitcoin protocol as a "proof of proofs of work" concept, but it can be re-engineered around the Ouroborus protocol for use in Cardano. Funds can be moved according to the rules of a smart contract, or according to any compatible rules, and might be reflected in transactions on a different blockchain. An important feature here is that a transaction can be validated without having a full copy of the remote blockchain, since that wouldn't scale. This provides a degree of separation, so that validation of each layer can be carried out separately. It also allows for the whole project to scale, and allows smart contracts are built on a different layer. This means that rules can be invented to control tokens which live separately from ADA, similar to an ERC20 token in Ethereum. Here is the whitepaper.
Recursive Internetwork Architecture. This is the proposed mechanism by which Cardano will eventually scale beyond what is possible on a single blockchain. The Cardano protocol is fast, because it optimises the number of nodes which will mine new blocks, and does not need Proof Of Work. Nevertheless it cannot scale enough to suport all the transactions of the world on a single chain. For that it needs to run multiple parallel chains and have the ability to recursively spawn new capacity when it is needed, growing according to throughput. This will be the job of RINA, and it will be implemented only when it is fully developed, tested, and needed.
Assurance levels are not special to Cardano; all blockchains have them. When your transaction is added to the block on the end of the chain it means a miner has validated it. However, from the point of view of the receiver, things can still go wrong. Maybe the miner is dishonest, or maybe a different chain might be adopted by the world because it is longer. The transaction becomes gradually safer as blocks are built on top of the block it is in, since re-organisations rarely happen which affect more than a couple of blocks. When the block containing your transaction has less than 3 following blocks it has "low assurance", up to 8 blocks is medium, and 9 or more is high. The last 9 blocks would never get completely rewritten in a good decentralised blockchain. If blockchains confuse you, my page explaining how they work might help.
Psi calculus is a branch of mathematics which allows the sense-compute-act cycle used in programming languages to be generalised and defined in a mathematically rigorous way. The process involves defining a space, objects in the space, and definitions of the interactions between them in an algebraic style, so that the properties of the whole can be formally understood. It can be used to develop specifications in a form that can be transposed into software while guaranteeing that the original purpose is not lost in translation. Psi calculus is the basis of Plutus.
Everything in a blockchain seems complicated at first glance, but in fact its quite simple. When a miner is building a block out of transactions there might be quite a lot of data in the block, maybe a megabyte. The trouble is that working out a SHA256 hash of a million byte string is slow work, so he wants to break it up into bite sized chunks. The miner finds the hash of each transaction one at a time. The hashes are short, so now he can then take pairs of hashes and hash each of them. Then take pairs of those hashes to produce another set with half as many values. Then again, until he only has one hash. The last one is the root. If any of the data in the block changes it will be easy to spot, since it will invalidate the calculations of dependant hashes, which always includes the root. In software terms this is a tree, because it has a root with branches below it, then branches on those branches, etc. Merkle trees got their name from Ralph Merkle because he invented them and got a patent in 1979. In my explanation each hash is created from two hashes from the level below, making it a binary merkle tree. This is the most common type, since it is the fastest, but you can create a tree with more branches coming from each node if you like, and if your blockchain rules allow it.
This website was created by Kevmate. Its all my own work. Contact me by emailing me at email@example.com