An improved hybrid DPOS algorithm for consensus determination

To ensure the security and orderliness of the whole block chain, a block can only be generated upon certain consensus. The consensus algorithm is one of the key elements of a block chain. In terms of the choice of the consensus algorithms, block chains face the same challenge of all distributed systems - the CAP10 principle, i.e., only two of the three following properties can be achieved at the same time: Consistency, Availability and Partition-Tolerance.

Correspondingly, all block chains can only excel two of the following three aspects: energy efficiency, decentralization and security. The commonly used consensus algorithms are POW, POS, DPOS and PBFT. Performances in terms of these three aspects are shown below:

POW: Proof of Work, generates a new block through massive hash computations which result in an appropriate random number. This is most secure mechanism, but it also comes with the highest energy cost.

POS: Proof of Stake, reduces the difficulty of block generation according to the amount and time of tokens possessed, also greatly reducing the energy cost of POW. However, its security is sacrificed and it is susceptible to bifurcation.

DPOS: Delegate Proof of Stake. A certain number of delegates are elected by voting. These delegates will generate blocks in a certain sequence, greatly reducing the number of verification nodes that are needed. In this mechanism, deal verification is greatly accelerated with no sacrifice of security. However, the system becomes more centralized.

PBFT: Practical Byzantine Fault Tolerance. No token is required in this mechanism, making it suitable for alliance chains.

After weighing all the pros and cons, Fortuna has decided to use an improved hybrid DPOS algorithm for consensus determination, establishing a secure and efficient consensus mechanism. Besides increased centralization, DPOS has another obvious problem: voting rights are controlled by users with more FOTA, marginalizing the roles of those users with less FOTA. To overcome this issue, Fortuna has introduced an active index to reflect how active a user is on the platform. This purpose of this active index is to 1) encourage the active participation of users; 2) balance their financial contribution and activity. The active index is calculated as follows.

UL = TL + AL

TL = N CoT + N PrC + N PuC + N MM

AL = N SA - N FA

UL:user activeness;

TL:trading activeness;

AL:arbitrage activeness;

N CoT:number of CoT created,the CoT has to be used for at least one deal;

N PrC:number of deals cleared under PrC contracts;

N PuC :number of deals cleared under PuC contracts;

N MM :number of times serving as a market maker;

N SA :number of times that the consensus result agrees with the arbitrage result;

N FA :number of times that the consensus result differs from the arbitrage result.

The 101 delegates elected according to DPOSA in each round will reach an agreement on the block generation sequence before the blocks are generated (2/3 of the nodes must reach agreement). Unless more than 1/3 of the delegates collaborate to sabotage the system, no bifurcation will occur.

Smart Contract

Supporting Private Contract And Public Contract Trading Mode

1. Fortuna Main Contract

The Fortuna Main Contract is the only main contract accepted by Fortuna, and the clauses are similar to the main contracts of the National Association of Financial Market Institutional Investors, the Securities Association of China, and other self-regulatory OTC derivatives organizations. Each trader on Fortuna signs the main contract before they start and agree on the makeup of contracts, their efficacy, their payment and delivery duties, and the definitions of default, default management, termination, interest, compensation, expense, arbitration and other non-transactional elements.

2. Contract Template

All Fortuna users can create their own CoT with different underlying assets (commodities, currencies, bonds, stocks, credit assets, crypto-tokens, events, etc.), deal structures (forwards, swaptions, American Options, European Options, Logarithmic Market Scoring Rules, etc.), restrictive clauses, and other core transactional elements.Any CoT can produce multiple contracts.

3. PrC

A Private Contract is a kind of derivative contract appropriate for the peer-to-peer trading mode. PrCs inherit all the clauses of the corresponding CoT and define the settlement time, delivery price, margin ratio, contract price, short/long direction, and other transactional elements. PrCs have less liquidity and match less efficiently but can be traded peer-to-peer at lower agency cost.

4. PuC

A Public Contract is a kind of derivative contract which is appropriate for the N-to-N trading mode and requires the participation of Market Makers. The creator of the corresponding CoT is the Market Maker by default, unless the creator chose another node to be the Market Maker for the PuC in the CoT. The PuC inherits all the clauses of the corresponding CoT and defines the settlement time, delivery price, margin ratio, contract price, and other transactional elements. PuCs are very similar to contracts traded in derivatives exchanges. The biggest difference is that standardized contracts traded in exchanges are designed and published by exchanges and users cannot make changes. PuC, on the other hand, are designed and created by Fortuna users. Another big difference is that the commission of standardized contracts traded in exchanges all go to the exchange, while the commission of PuCs all belong to CoT Creators. So the PuC is a new type of derivative contract with great malleability.

Decentralized Quoting Mechanisms

Quote Scheme with SVD and QC

A quoting mechanism that provides the current market price of underlying assets needs to minimize risks from malicious entities and provide adequate incentives for Quoters to post high quality quotes. Fortuna is equipped with an SVD-based decentralized quoting mechanism that effectively prevents market manipulation from a small number of malicious entities. It also introduces Quote Corporation's, which use an incentive scheme analogous to corporate governance and equity distribution, thereby motivating Quoters to continuously provide high quality quotes. The mechanism is described in detail in the following section.

A.The Overall Scheme

1. Joining a Quote Corporation

Each node in the network can become a Quoter once they get QNS verification. A Quoter must join one or more QC's before it can post quotes. A Quoter can query the Fortuna Quote Corporation (FQCT) catalogue to find and join QCs that match the category of quoting services it provides. If no such QC exists, a QC of the new category will be created automatically.

2. Quote Corporations provide quoting services

During a cycle, when multiple smart contracts using the same QC's quoting service mature, the Quoters in that QC provide independent quotes. The QC compiles a quote matrix using all the quotes provided for each underlying asset by all the Quoters and obtains a consensus price using the SVD consensus algorithm. This consensus price is used for contract fulfillment.

3. Dynamic redistribution of Quote Corporation equity

After each cycle, the consensus algorithm determines the consensus quote as well as every Quoter's weighted impact during the cycle, which is used as an indicator of the quality of their quotes. Then the QC sets aside a certain amount of equity to distribute among all Quoters according to their weighted impact. This motivates them to actively provide high-quality quotes.

B.SVD-Based Consensus Algorithm

In each cycle, for a quote corporation that has n Quoters and m underlying assets, an n by m quote matrix is constructed by collecting all the quotes posted by every Quoter for every underlying asset. The quote matrix is illustrated below:

In the quote matrix above, each row corresponds to the quotes provided by a Quoter of the m underlying assets, and each column corresponds to the quotes received by the n Quoters for an underlying asset. An SVD algorithm is applied on the quote matrix Qnxm to determine the consensus quotes and the weighted impact of each Quoter:

Assume that there are k eigenvalues of Qnxm , λk represents the k-th eigenvalues ,xk represents the k-th column of Qnxm :

Then we can have:

Then we can calculate the eigen decomposition of Qnxm:

Assume there is a group of orthogonal basis {v1,v2,v3...vn} :

Which means v iT.v j = v i . v j = 0


So we can have



We can have

dmx1 = U ,1 we take the first row of U

Centralize Qnxm which means calculate the mean value of each column of Qnxm

After normalization, each item of Cnx1 is positive and the weighed sum equals 1.

Finally we can get Nx which is the weight of the current result of Qx .

Based on this, we get the consensus quotes of Quote Matrix Qnxm for the settlement of transactions.

C.QC Equity Governance and Redistribution

QC equity can be bought by a Quoter upon joining a QC. It can also be sold upon exiting a QC. However, in order to ensure its integrity as an incentive for providing high-quality quotes, QC equity cannot be traded between Quoters. The only channel for it to flow between Quoters is through dynamic distribution after each cycle, which is based on the quality and frequency of quotes provided by each Quoter—a Quoter with better performance will be rewarded with more equity. Below are the detailed rules for distribution:

The following is a case to help illustrate the rules described above:

Suppose M = 1000FOT and Φ=20%

1. Quoter A paid 1000 FOTA to set up a new QC for a certain category of underlying assets. And it owns 100% of the QC's equity shares.

2. Quoter B paid 1000 FOTA to join the QC. Quoters A and B now each own 50% of total equity shares.

3. Quoter C paid 1000 FOTA to join and Quoters A, B, and C each own one third of the total shares.

4. Quoter D also paid 1000 FOTA to join. Now A, B, C, and D each own 25% of the total shares.

5. Suppose at the end of cycle, Quoters A, B, C, and D end up with impact weights of 40%, 30%, 20% and 10%, respectively. After the distribution, their equity share percentages become 25%×(1-20%)+20%×40%=28%, 25%×(1-20%)+20%×30%=26%, 25%×(1-20%)+20%×20%=24% and 25%×(1-20%)+20%×10%=22%.

6. Quoter A exits the QC. Upon exit, all of their equity shares are bought back by the QC. Because the QC had a total fund of 4000 FOTA (paid by A, B, C, and D upon entry), the shares of A are sold for 4000×28% = 1120 FOTA. These shares are released to Quoters B, C, and D proportionally. In the end, the fraction of equity shares owned by B, C, and D is 36%, 33%, and 31%.

D.Continuous Quoting and Close-Out Alerts

There are two types of quotes that a Quoter can provide based on the contract trading structure: discrete and continuous. Under certain trading structures, the trading contract requires continuous quoting services in order to monitor the deposit accounts of both parties in real time and issue alerts when they need close-out. Fortuna rigorously scrutinizes Quoters who provide quoting services to make sure their services is robust:

A Quoter who provides continuous quoting/close-out/alert services needs to closely monitor whether there is any active contract that requires alert/close-out. Let us call such a Quoter QX. Below is how QX functions:

1. QX provides various types of continuous, real-time services, including registration, notification, real-time inquiry, close-out check, etc;

2. QX checks if the current block contains deals that need to be alerted for close-out and write them into the local contract list;

3. QX inquires about third-party prices in real-time and compares them with the alerted close-out prices in the local contracts. If the alert/close-out condition applies, the alert/close-out is executed immediately;

4. The deposit requirement dramatically increases the cost of malicious activities and potentially minimizes them.