DEV Community

Cover image for How to Reach 1 000 000 TPS on Blockchain Platform
Andrey_A
Andrey_A

Posted on • Edited on

How to Reach 1 000 000 TPS on Blockchain Platform

Intro

The blockchain technology has been gaining a lot of traction and popularity nowadays. It’s not news that each blockchain is unique, yet most of them experience similar technical issues. The main reason why blockchain hasn’t been on top of its game is due to its scalability issue.

Yet why can the CREDITS blockchain process hundreds and thousands of times more transactions per second than other popular systems like EOS, Tron, Ethereum? In order to answer this question, a few important aspects such as CREDITS Consensus, reduction of data packet size and ledger structure are going to be further discussed.

CREDITS Consensus

In order to provide high transaction capacity, Credits implemented its unique Consensus Protocol - PoA (Proof-of-Agreement) which is a decision-making algorithm based on multiple validation and data processing with secure implementation solution. The algorithm based on dPoS (Delegated-Proof-of-Stake) and BFT (Byzantine Fault Tolerance) protocol. This algorithm goes as following:

1) All nodes receive round information.

2) Next, the collected transactions are sent to trusted nodes for verification.

3) Trusted nodes check the transactions and choose the writing node, which forms a block and sends it to all nodes.

4) After a block is generated and recorded in the blockchain, nodes send a participation request to the TNs for the next round to include them in the list of candidates for becoming a TN. The request is sent in the form of a hash-block, embedded in the blockchain.

The nodes involved in pool processing do not participate in building the next round.

Reduction of data packet size

Another component that causes high transaction capacity is the optimization of transaction sizes. Any transaction has a dynamically varying size depending on balance, address size, transaction currency, the use of digital signature, and other factors . If a transaction or a pool of transactions has large data volumes, a transmission packet is broken down into smaller (65,535 bytes) datagrams used by the UDP protocol subject to the upper limit size, which allows reaching high transaction capacity.

CREDITS ledger structure

Last but not least, the use of the transaction ledger in the CREDITS system increases the transaction processing capacity. Each entry consists of a hash code of the transaction block which is added to the list of candidates in addition to the ledger. Also, the entry has the node identifier and the timestamp when it was generated. The ledger entry contains:

  • the transaction direction
  • its initial and final accounts
  • the type of write-off
  • the number of write-off units
  • the type of depositing
  • the number of depositing units.

This principle increases the transaction capacity and excludes possible changes in the ledger entry with hindsight. Transaction capacity is also raised through a computing algorithm optimization, core memory access, and data redistribution.

Conclusion

For the time being, there is increased activity in the blockchain ecosystem working on solutions and methods to overcome scalability issues. There are not so many blockchain platforms which are capable of processing at least 3000 transactions per second. However, our platform has come up with its unique solutions by introducing its own CREDITS consensus mechanism, that not only increases transaction processing speed but also transaction processing time. Also, the single technological decentralized platform is capable of safe and quick executions of all transactions using the principles of a distributed ledger and UDP protocol. Thus, the CREDITS blockchain platform with a throughput of up to 1 million transactions per second, has the title of the fastest blockchain platform on the market.

Top comments (6)

Collapse
 
mattauckland profile image
Mat

Why have a 50k min to be a staker?Having a 50k credit minimum to be a staker seems like a thinly veiled way to lock up supply (which increases scarcity and increases the price).

What you fail to detail in any of your posts are some of the most important things: is there a max supply? If so how does the chain plan to pay stakers after that? What is the max blocksize? Because any blockchain can "scale" if you just use a big blocksize (as Dylan said below)

Collapse
 
_aandrey profile image
Andrey_A

Staking, in terms of Credits protocol, means setting the minimum amount of coins, required for a node to participate in consensus mechanism and get rewards. The amount of stake won’t affect the frequency of node participation in consensus protocol. Rewards are formed on the base of fees, collected in the result of the following operations:

  • Payment for the transfer of Credits (CS) cryptocurrency between the platform participants;
  • Payment for the deploy and execute of smart contract;
  • Fee for the transfer of tokens created on the Credits platform;
  • Purchase of information from third-party sources for services within the system.

Except the increasing of Credits (CS) coin value the implementation of Staking has a good impact on the whole platform security. Staking diminishes the threat of a 51% attack, as it is resource intensive way to take control over the most nodes of the total. Moreover, staking prevents the threat of forks as the common amount of valid chain stake will exceed the amount of fork chain stake, which automatically excludes the fork from the network.

Subsequently, the amount of stake, equivalent to fiat, will be decreased. However, developers, who are willing to use Desktop Wallet with the purpose to send a transaction, deploy smart contract or connect their decentralized application with Credits network, will be able to run a node for free.

Collapse
 
mattauckland profile image
Mat

By run a "node for free" do you mean a staking node or a full node?

I know how staking works from a security POV, I worked with a POS coin for 2 years helping development. What I want to know is why there is a minimum requirement for staking? It seems like an arbritrary barrier to entry

Thread Thread
 
_aandrey profile image
Andrey_A

By running "node for free" I mean that the node won't participate in consensus mechanism and get rewards. However, developers are able to run such nodes for their dapps and services (wallets, explorers, browser wallet extensions and etc.) to send transactions into network. Staking is a requirement for nodes which want to participate in consensus and get rewards from the transaction fees.

The reason is that Staking has a good impact on the whole platform security. Staking diminishes the threat of a 51% attack, as it is a resource intensive way to take control over the most nodes of the total. Moreover, staking prevents the threat of forks as I said earlier. If you have more questions, please ask. I am always glad to help

Collapse
 
_aandrey profile image
Andrey_A

Regarding the supply, Credits platform has a limited total supply of 249 471 071 CS. New coins are not generated. The size of the block is dynamic and depends on the number of transactions. Credits platform is generating 3-5 blocks per second. So if there are 1000 transactions/sec, each transaction is 96 byte (simple transfer of CS coins between wallets), so 1000 transaction ~ 100Kbytes which will be distributed between 3-5 blocks, so the block will have the size of ~ 100Kbytes/3-5. And if there are 10 000 transactions/sec and each one is 96 byte (simple transfer of CS coins between wallets), so 10 000 transactions ~ 1Mb, which will be distributed between 3-5 blocks and each block will have the size of 1Mb/3-5.

Collapse
 
dylankilkenny profile image
Dylan Kilkenny • Edited

If bitcoin had 4gb blocks it would also manage 1 million transactions per second. The issue with this is some miners are not able to download 4gb blocks fast enough and the next block might arrive before they have the current one downloaded and validated. Though with technologies such as xthinner and graphene you can use bloom filters to reduce the amount of data which is propagated, with up 98+% compression. That would mean that blocks only require around 80mb to be propagated between miners.