Smart contracts

Our approach to creating smart contracts allows avoiding a huge amount of potential mistakes made by developers as early as at the validation stage.

Simplified syntaxis makes them more user-friendly and accessbile to new users ot the platform

How they could be used

Decentralized certification centers

ENCRY technology enables users to create decentralized certification centers. Verification centers issue certificates for each other unmediated. Afterwards, certificates are encrypted and transmitted electronically to prevent any kind of tampering with information or its unsanctioned reading.

Anonymous distributed messenger

The product provides users with access to secured message exchange via a distributed node network with multilevel message encryption, leaving the third party with no chance to intercept or decrypt messages.

Optimized supply chain processes

Implementation of supply chain certification via distributed ledger technology substantially decreases the cost of product identification and registration.

Reliable voting

During our collaborative work with SEZ "Lipetsk" within the framework of Digital Economic Zone Project, we have implemented blockchain technology into the voting process for the expert council at the SEZ. The voting results are backed by distributed ledger technology and confirmed with all the required documentation.

Implementation options

Atomic swaps

An atomic swap enables users to swap assets without using exchanges. In an atomic swap, approval from both participants of the transaction is required within a specified time frame.

If at least one of the participants fails to approve the transaction within the specified time frame, the transaction is cancelled and funds are not exchanged.

Crowdsale English Auction

In an English auction crowdsale model, buyers place bids, competing with each other to set the highest price.

Every higher bid displaces an earlier bid. If no competing bidder challenges the current bid within a given time frame, the bidder who placed it becomes the winner.

In a variation of this, the seller sets a minimum price for an item. If no buyer places a higher bid than this minimum price, the item remains unsold.

Crowdsale Dutch Auction

In a Dutch auction, an item is initially offered at a price exceeding the amount the buyer expects to pay. Then the price is gradually lowered until a bidder accepts the current price.

In this example, we use the same tools as in the previous one, also adding a delta for a step price. The account’s script checks if a participant has actually placed the first bid for the current price.

A public key and the sender’s signature will have to be added to the transaction proofs. Otherwise, the blockchain doesn’t accept the DataTransaction.

Taxation

Smart contracts are also applicable in a situation when every transaction for several types of asset needs to be taxed. Each time a smart contract triggers a transaction, a fee is associated with that transaction.

Since the administrative fees for smart contracts are paid in cryptocurrencies, there may be income tax implications. The recipient of the fee associated with the transaction, oftentimes cryptocurrency miners, may need to report this income.  To the extent that the transactions may span international markets, they may raise transfer pricing considerations and the possibility of income-reporting requirements to multiple international tax authorities.

Insurance Tokens

Let’s consider a situation where we need to protect users’ assets from financial loss.

For instance, a user may want to ensure that they will be able to recover the entire amount paid for tokens in case of the token’s devaluation, and are prepared to pay a reasonable insurance premium.

For that purpose, “insurance tokens” will be issued. A script to the insured’s account is applied, allowing only ExchangeTransactions that meet certain conditions.

Cashback and loyalty systems

Cashback is a type of a customer loyalty scheme in which a percentage of funds spent on goods or services is paid back to the customer.

In the implementation of this case with a smart account, we need to check proofs in the same way as in the insurance use case. To prevent double spending, before collecting a cashback, a user has to send a transaction data with purchaseTransactionId and cashbackTransactionId.