Getting started with Universa
Well, today you are going to get acquainted with Universa. Maybe you know some other blockchain technologies, like Bitcoin; maybe you are proficient with other “smart contract” technologies like Ethereum. Anyway, Universa is very different from them. And at the same time, some of the differences may make it easier to use than others.
This page should be the starting point for any new Universa user, giving an overview of it in general and the directions for future learning. There should be little to none non-essential stuff in it, and it is heavily cross-linked to other pages and articles, including the Universa knowledge base.
So what is Universa? What it is not?
Universa is a platform for smart contracts, running as a distributed ledger (DLT; sometimes it is called “blockchain” for simplicity) over multiple nodes. This distributed ledger usually stores some records; e.g., in Bitcoin, it stores the currency (BTC) transfers between various owners; in Universa, it stores the validity records of some smart contracts.
Many of the Universa nodes are not owned by Universa Foundation, but by some third parties instead; so besides the real smart contract owner, there is no single entity that could override/falsify the records – Universa is decentralized.
Universa is not:
- A new cryptocoin or cryptocurrency (though you may issue your own tokens, easily; and there are some tokens already preconfigured in Universa);
- A financial organisation providing any investments/private banking activities or even consulting/recommendation;
- A virtual machine for Dapps running in blockchain;
- A yet another Bitcoin fork, or even anything resembling its architecture any closely.
Smart contracts are smart documents
But what are the smart contracts we are speaking about?
The people accustomed to platforms like Ethereum, often think that “the smart contracts are some mini-applications/distributed applications/Dapps running on Blockchain”. Well, that’s how it usually happens in Ethereum (and the platforms which use its approach). Because Ethereum is actually, mostly a “Dapp running platform”, a virtual machine for some apps written on specially limited programming language; so when they write some Dapp in some special way, they call it “a smart contract”. When you have a hammer, every problem looks like a nail.
In the world outside of these blockchain practices, the contract is usually a document. A legally significant document; often containing some details about the contract parties; probably their signatures or other confirmations that these parties enter some mutual agreement. So, a loan agreement is some kind of a contract; a cheque is a contract; the shares or stock options are some contracts too.
For the Dapp-running platforms (like Ethereum), it is more usual that the Dapp acts as a bookkeeper/accountant/central registry of multiple unique “documents”/records, or even coin/currency balances. In Ethereum, you say “The Smart Contract/Token at address 0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7 is the UTNP Token”; but actually at this address, it is not a single Token being stored, and not even a single balance of someone, but the whole bookkeeping infrastructure for all UTNP tokens in the world.
In Universa, smart contracts are not Dapps. Smart contracts are documents, just like for the rest of the world. Just they are smart.
Each smart contract registered by Universa is a unique independent document; or maybe a new version of an existing one; or maybe a revocation request of one.
Smart contracts by Universa
A smart contract is the primary element, whose validity can be stored in the Universa distributed ledger. It is a structured document (and can be represented in XML/YAML/JSON formats):
- with a very specific structure, but also sufficient flexibility to store various data of many kinds;
- which contents that can be restricted by various rules imposed by the original author of the contract (like, “only the current owner of the contract can transfer the ownership to somebody else”);
- which is not stored by the Universa network itself (and it is often an end user duty to store it somehow);
- … but if it is valid, the Universa network can store the fact that it is valid, in a secure and non-falsifiable way;
- any new revision of which may be registered only if the previous revision is fully valid, and the new revision is derived from it using some legitimate operation (not contradicting the rules/permissions already defined in the contract).
Note: alternative smart contract platforms may use a different definition for a smart contract, like, “a smart contract is an distributed app which code is stored in the distributed ledger and is executed by every node”. Universa is not a “Dapp sandbox runtime mimicking as a smart contract platform”, Universa is a true smart contract platform where the smartness of the contracts doesn’t require you to code any apps.
If you want to learn the smart contract creation better, you can go to the Smart Contract Designer Central in the knowledge base.
Tokens in Universa
A popular case of smart contract usage is creating the tokens/coins/cryptocurrencies (during various ICO/TGE events) and distributing them among the purchasers.
In Universa, the restrictions imposed by the contract authors can be controlled by contract permissions. One of the permissions is a “split-join” permission, meaning that a derived contract may have some “amount” field containing some number; several multiple revisions can be legitimately derived (“split”) from any revision only if their total amount is the same as the amount of the base revision; and several multiple revisions can be legitimately “joined” only if the result amount is the same as the sum of amounts in the base revisions.
Creating a contract and specifying such a permission properly, will make the contract revisions fungible and will basically create a token-style smart contract.
Besides being able to create any tokens with ease, some tokens are pre-created for you already, and may have some special meaning for Universa functionality.
The core Universa token is UTN. It is a pre-built token to be used in Universa network for paying its operational fees. At the moment (June 2018) it is being prepared to be launched soon.
To assist with integrating the Universa with existing platforms (like, exchanges) and make it possible for you to purchase the tokens to pay for the network functioning, the counterpart UTNP token has been created as ERC20 token over the Ethereum network. Historically, it is the token that appeared earlier, as a placeholder token (hence UTNP). Both tokens are convertable to each other at 1:1 fixed rate (the network fees are still to be paid though); and you can use either of them to “feed” the network and pay the transaction costs.
The total supply of each of these tokens is 4 997 891 952 (which is the amount calculated after the token sale finish). Though for every amount of UTN token in circulation, the appropriate amount of UTNP tokens are locked by Universa, and vice versa. Hence 4 997 891 952 is also the total maximum circulating supply of both UTN+UTNP; while the circulating supply of each of them can freely vary within this limit.
You can find more details on how to purchase them on our dedicated Get Universa page.
Another kind of pre-created Universa tokens, are so-called Hypertokens, namely UltraBTC and UltraETH at the moment. They exist to provide a direct mapping of external currencies/assets into the Universa smart contracts; and, inside the Universa, they are 1:1 swappable with the resource they are based upon (UltraBTC is based on running on Bitcoin Core blockchain; UltraETH is based on Ether running on Ethereum blockchain).
Note: the withdraw procedures to convert the hypertokens back to the originating assets are temporarily disabled.
Other hypertokens may be created in the future, to provide the Universa counterparts of the assets on other blockchains (including not just the native “coins/currencies” of the blockchains, but the tokens over those blockchains, like, hypertokens for Ethereum ERC20 tokens).
Authentication in Universa (private keys)
The core of Universa authentication and access control is the asymmetric cryptography (see Wikipedia for details). This means that for Universa, every user must create their own key pair, containing of a private key and a public key(which are mathematically correlated), and use them to sign the operations.
The private key (as clear from the “private” word) is the most-secret part of your key pair. You should never, never give it out, or provide any access to it, to any third parties. If somebody gets your private key, they can perform any actions on your behalf. Storing your private key securely is your duty; all of the Universa functions assume that if some operation is signed by your private key, then it was you who performed it. Think of the private key as your unique personal stamp or signature that nobody besides you can use, and which allows you to sign any document for any other parties.
The public key is, well, public. It can and will be publicly available to various parties you communicate with. It may be stored in various places in the contract, for example, in the
owner fields. Think of the public key as the unique name by which you are known to everybody, and which anybody can use to refer to yourself.
How this can be used? Short example: a typical token-style smart contract has an
owner field, which may contain your public key; this means, that only you, using the matching private key, can sign any operation to utilize the tokens stored in this smart contract.
The address is a short alternative representation of your public key, convenient to be used when you need to enter it in some forms. For your convenience, you can alternatively use a short address (around 51 symbols long) or a long address (around 72 symbols long), both referring to the same public key, with the long address providing the ultimate level of security and the short address still sufficient for most usage scenarios.
The addresses are case sensitive and contain Base58 set of symbols.
Wallets in Universa & Universa client
Some people may ask if is there “a Universa wallet” or some other similar software/applications. Please note that the Universa is not “a cryptocurrency” or “a coin” to have one. Instead, it is a platform for smart contracts; and many various tokens (or “coins”/“currencies”) can be easily created over it.
The “wallet” is not a separate application, it is just a feature already available in the Universa clients. E.g., if you have any token contracts, in the web client interface they automatically get collected into the Wallets. If you get the UTN tokens in your web client, they will be shown in a separate wallet. If, during any other ICO/TGE executed over the Universa platform, you receive some other tokens, they will automatically be merged into an independent wallet, too, just using the existing client interface.
Multiple clients for Universa network are available.
Most users can start with the Web Client, which you can find at https://access.mainnetwork.io/contracts.
Advanced users who need to integrate Universa with their system, can use the Uniclient (see the Uniclient User Manual for more details). Mobile clients will be available later. For information on how to store UTN-P placeholder tokens, please refer to our Wallet page.
Mainnet & Testnet
The primary that stores the Universa distributed ledger is the Mainnet. It is a decentralized network running on top of multiple nodes, some of which are provided by the Universa Foundation and some are run by third parties (which take a share of all the fees for smart contract registrations in the network). (See the status of the network if you are curious).
In other projects, there are often separate Mainnet and Testnet networks, with the Testnet being the network cheap to operate and ready for various development/experimental works, but sometimes being not fully compatible with the Mainnet, or being different in some settings. In Universa, even the Mainnet costs are rather tiny (being around $0.01 for a basic smart contract registration).
But there is the Testnet in Universa as well. It is not a separate network, but it is a storage mode of the contract validity; registering the contract in the Testnet is way cheaper than in Mainnet, but it will be heavily time-limited; also, the Testnet-stored data may be occasionally wiped, while the Mainnet data is stored as long as it is needed.
U & Transaction Units
If you want to utilize the Universa network, you need to have some UTN/UTNP tokens to pay for the network operations. Normally, all the read operations are free and all the “submit contract to Universa” operations are paid. The internal unit of Universa network, representing how much resources the Universa network should spend to deal with your operation, is called U.
So, to work with Universa, you often need to fill your U balance, like, “reserve more U” in the Web Client interface. You will do that by purchasing some “Universa package”, normally reserves some amount of U (to pay for the Mainnet registrations), and a very generous amount of “test U” (to pay for the Testnet registrations). You can do that using either UTN or UTNP tokens, depending on which ones you have already. A basic transaction registration will deplete just 1 U; more complex combinations of contracts may deplete more Us from your balance.
(Internally, both “U” and “test U” are just some special Universa smart contracts).
Current transaction price is $0.01 which is automatically converted to the amount of UTNs/UTNPs.
Blocks & nodes in Universa
When we speak about “Proof of State” concept at Universa, it is not a talk about the node consensus algorithms, like Proof-of-Work or Proof-of-State, for different blockchain/DLT technologies. (Sidenote: the consensus algorithm in Universa it is more close to POA, “Proof-of-Authority” as it is sometimes named for different systems which also try to prevent the anarchical 51% takeovers).
Proof of State is about how our contracts stay valid, even though the Universa doesn’t keep their bodies. With Proof-of-Work, when creating a block, a node has to prove it has done some substantial (though mostly useless) work to obtain the right of block aggregation from the pool of pending transactions it has. But this is applicable for the situation when the block has to aggregate multiple transactions. In Universa, the “blocks” are not something where multiple unrelated transactions are aggregated. Each “block” in the distributed ledger of Universa is actually the revision of contract.
The significant difference between Universa and the blockchains like Bitcoin, is that in Bitcoin, each block is published forever. But in Universa, it doesn’t store (publicly) the information of every block and it doesn’t store non-final blocks at all; thus saving a lot of space and improving performance. And also increasing the anonymity.
If you want to run your own node, visit our Developers page for more information.
Crypto Cloud or Decentralized Storage
Crypto Cloud is an extra platform, provided to you by the Universa team, highly integrated with the Universa Web client, but actually orthogonal (optional) to Universa network.
As you know, the Universa network stores the validity of smart contracts, but not the contracts themselves. So you have to keep your contracts somewhere, be it your disk drive, or maybe some external hardware wallet. But for some people, it would be more convenient to store the contracts themselves as well, and being able to easily transfer them to other parties.
It is an integrated part of Web Client; and when you “Log In or Sign Up” in the Web Client, you actually log in or sign up to the Crypto Cloud.Universa network
Crypto Cloud uses the end-user encryption, so everything what is stored in it, is accessible only via your credentials. Neither Universa personnel nor even the CEO/CTO can access your data stored in the cloud, without having your Private key (or other credentials you use to access the Crypto Cloud).
With the Crypto Cloud, you normally don’t need to store the contracts as they are being created, altered, changing owners, new revisions created. Your Crypto Cloud credentials are the only what you need, to access the Universa smart contracts available to you – if every operation was done through the Web Client while being logged in to your Crypto Cloud account.
You must have non-zero “U balance” to use the crypto cloud fully; though the U balance is reduced only by the regular Universa network registration operations.
Ideally, when you access the Crypto Cloud, you should use the same Private Key / key pair as for the Universa (they are fully compatible). To avoid storing this private key in some file (which can be copied and stolen), you can access the Crypto Cloud differently: using your nick (or any of your multiple nicks), and a password you generate.
In this case, your private key will be stored in the Crypto Cloud; but you will get a convenience of needing only the password (and one of the nicks) to log in to the Crypto Cloud.
But note it is a Crypto-Cloud-Only feature, and you still need the private keys if you want to perform any Universa operations, without the convenience of Web Client integrated with Crypto Cloud.
Nicks & Chats
Any user of the Crypto Cloud may have one or even multiple unique nicks (or aliasses).
In regular chat/messaging platforms, a user usually has a unique ID or nick, by which they can be found; like, John Doe can use
johndoe nickname in some messenger.
In the Crypto Cloud, the very same John Doe could use
john_franklin_doe and even probably
[email protected]Я nicks, simultaneously but for various purposes. Really, do the people who call him
john_franklin_doeneed to know he is also a
[email protected]Я sometimes? – or do the person who know him as a
[email protected]Я, should know his real name is
But note: to find a user in Crypto Cloud (and start a dialog with them), you must know their nick fully; searching for the nick will find a “full match” only. Due to the encryption mechanisms, there is no even a centralized list of all the registered nicks! But if you search for some nick, you can find if it is available or not.
One feature of the Crypto Cloud is the “Chats” capability. You can create a dialog with any other user of Crypto Cloud, send the messages to each other, and even exchange some smart contracts or tokens. This feature uses end-user encryption as well, but in a more advanced manner: only the participants of the chat can decrypt the information, and it is stored on the cloud in the encrypted form.