This will be the first of a series of Smilo Explained medium posts. In these series we will explain the technology and choices that define the Smilo Platform in an accessible way.
In this first article of Smilo Explained we introduce Smilo Transactions.
Smilo will provide its users with three types of transactions: Public, Swift and Private.
A public transaction is just like any other blockchain transaction. Public, identified and easily verified. It allows you to send a specified number of identified coins from one public Smilo address to another. The public Smilo address will expose all publicly received transactions.
The swift transactions allow a user to send a specified number of known coins from one Smilo address to another private Smilo address. To transform the known public coins to new private coins (not necessarily a Smilo coin) Smilo uses a cryptographic commitment scheme. This commitment specifies the new coin’s value, owner’s address and serial number.
A way to visualize a cryptographic commitment scheme is to think of a sender who puts a message in a locked box, and giving the box to a receiver. The message in the box is invisible for the receiver, who cannot unlock it himself. As the receiver is now in possession of the box, the message inside cannot be changed so is safe — It can however only be revealed to the receiver if the sender releases the key at some point.
For this particular commitment, Smilo uses the Secure Hash Algorithm (SHA) function, and hides both the coin’s value and owner’s address. The SHA function is basically calculating a seemingly random number of characters of a certain length, which could be interpreted as a unique summary of the enclosed message. If you would change one character in the message, the whole SHA number changes. If the message is exactly the same, the SHA number will remain the same. With this relatively short SHA number you can quickly check if the message is the correct one.
A private transaction allows a user to initiate a fully anonymous transaction between Smilo wallets. In order to create a fully anonymous transaction a specific number of coins needs to be consumed in order to generate an equal number of ‘new’ coins in another private address, without figuratively sending the coins between the wallets.
This way the ‘consumed coins’ do not reveal any details about the coins. They will however, reveal their unique serial number in the process, though this number holds no information for anyone besides the owner.
This shows that the coins need to have a unique serial number to make private transactions possible, hence the need for swift transaction.
This process can also be used to transform private coins into public coins.
Verifying Swift transactions
For a swift transaction, the commitment contained is constructed in such a way that anyone can verify the claimed value of the committed coin.
Verifying Private transactions
For a private transaction, anyone can verify that the zero-knowledge proof contained therein is valid.
The Zero-knowledge proofs are methods by which one party (the prover) can prove to the other party (the verifier) that he knows the specific statement is true, without revealing any details except for the proof itself.
To optimise our efficiency however, Smilo does not use just “any” zero-knowledge proof, it uses leverages zero-knowledge Succinct Non-interactive Arguments of Knowledge (zk-SNARK) systems, which are zero-knowledge proofs that are particularly short and easy to verify, which results in much faster transactions.
Be a part of the Smilo blockchain revolution!
Our resource partners,