Skip to main content

July 4th 2022

Summary

This test was done to measure the SC ERC20 token transfers, SC ERC721 token minting and EOA to EOA transactions functionality with heavy loads and speed of the transactions on the nodes with higher hardware resources.

The goal was to check if everything is working as expected during heavy loads. That was also the reason we’ve introduced gas metrics in the loadbot output, which show us if the blocks are filled with transactions properly.

All transactions were sent to the single node via GRPC API, and the receipts were received via JSON-RPC API. After all transactions were done, gas information was read from each block, using the eth_getBlockByNumber JSON-RPC method.

Our aim was to strive to reach a maximum possible TPS on the hardware resources available. To acheive this, we've modified the block gas limit and block time parameters, to give us the best possible tps results and keep the system integrity and stability.

Production Environments

When configuring a production environment, you need to be carefull if you're trying to acheive high performance of the chain. If block gas limit parameter is set to a high value, block time is set to 1s, and there is a high transaction load on a single node, that node will consume a lot ( if not all available ) RAM and can cause server crash. Use the loadbot to test everything thoroughly, monitor the system resource utilization and set your configuration parameters accordingly.

Results of EOA to EOA transfers

MetricValue
Transaction typeEOA to EOA
Transactions per second1428
Transactions failed0
Transactions succeeded30000
Total blocks used15
Total run time21.374620s

Results of ERC20 token transfers

MetricValue
Transaction typeERC20
Transactions per second1111
Transactions failed0
Transactions succeeded50000
Total blocks used38
ERC20 transaction run time45.906450s
SC Deploy time2.006580s

Results of ERC721 token minting

MetricValue
Transaction typeERC721
Transactions per second714
Transactions failed0
Transactions succeeded30000
Total blocks used39
ERC721 transaction run time42.864140s
SC Deploy time2.005500s

Environment EOA to EOA

Host Configuration
Cloud providerAWS EC2
Instance sizec6a.48xlarge
Networkingprivate subnet
Operating systemLinux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit65535
Max user processes65535

Blockchain Configuration
Polygon Edge versionRelease v0.4.1
Validator nodes4
Non-validator nodes0
ConsensusIBFT PoA
Block time1s
Block gas limit70778880
Max slots276480
Average block utilization59.34%

Loadbot Configuration
Total Transactions30000
Transactions sent per second1428
Type of transactionsEOA to EOA transfers

Loadbot log
[COUNT DATA]
Transactions submitted = 30000
Transactions failed = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 1428

[TURN AROUND DATA]
Average transaction turn around = 4.394900s
Fastest transaction turn around = 1.133980s
Slowest transaction turn around = 7.258690s
Total loadbot execution time = 21.374620s

[BLOCK DATA]
Blocks required = 15

Block #110 = 1268 txns (26628000 gasUsed / 70778880 gasLimit) utilization = 37.62%
Block #111 = 2744 txns (57624000 gasUsed / 70778880 gasLimit) utilization = 81.41%
Block #112 = 2333 txns (48993000 gasUsed / 70778880 gasLimit) utilization = 69.22%
Block #113 = 1326 txns (27846000 gasUsed / 70778880 gasLimit) utilization = 39.34%
Block #114 = 1852 txns (38892000 gasUsed / 70778880 gasLimit) utilization = 54.95%
Block #115 = 2270 txns (47670000 gasUsed / 70778880 gasLimit) utilization = 67.35%
Block #116 = 559 txns (11739000 gasUsed / 70778880 gasLimit) utilization = 16.59%
Block #117 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
Block #118 = 910 txns (19110000 gasUsed / 70778880 gasLimit) utilization = 27.00%
Block #119 = 3132 txns (65772000 gasUsed / 70778880 gasLimit) utilization = 92.93%
Block #120 = 1207 txns (25347000 gasUsed / 70778880 gasLimit) utilization = 35.81%
Block #121 = 3370 txns (70770000 gasUsed / 70778880 gasLimit) utilization = 99.99%
Block #122 = 2734 txns (57414000 gasUsed / 70778880 gasLimit) utilization = 81.12%
Block #123 = 2737 txns (57477000 gasUsed / 70778880 gasLimit) utilization = 81.21%
Block #124 = 188 txns (3948000 gasUsed / 70778880 gasLimit) utilization = 5.58%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 59.34%

Environment ERC20

Host Configuration
Cloud providerAWS EC2
Instance sizec6a.48xlarge
Networkingprivate subnet
Operating systemLinux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit65535
Max user processes65535

Blockchain Configuration
Polygon Edge versionRelease v0.4.1
Validator nodes4
Non-validator nodes0
ConsensusIBFT PoA
Block time1s
Block gas limit47185920
Max slots184320
Average block utilization81.29%

Loadbot Configuration
Total Transactions50000
Transactions sent per second1111
Type of transactionsERC20 to ERC20 transfers

Loadbot log
[COUNT DATA]
Transactions submitted = 50000
Transactions failed = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 1111

[CONTRACT DEPLOYMENT INFO]
Contract address = 0x33123b7a4420798b1D208ABBac657B7b103edbD9
Total execution time = 2.006580s

[CONTRACT DEPLOYMENT BLOCK DATA]
Blocks required = 1
Block #174 = 1 txns (1055757 gasUsed / 47185920 gasLimit) utilization = 2.24%

[TURN AROUND DATA]
Average transaction turn around = 8.856780s
Fastest transaction turn around = 2.006200s
Slowest transaction turn around = 15.977210s
Total loadbot execution time = 45.906450s

[BLOCK DATA]
Blocks required = 38

Block #176 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #177 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #178 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #179 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #180 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #181 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #182 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #183 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #184 = 688 txns (20055200 gasUsed / 47185920 gasLimit) utilization = 42.50%
Block #185 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #186 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #187 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #188 = 317 txns (9240550 gasUsed / 47185920 gasLimit) utilization = 19.58%
Block #189 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #190 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #191 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #192 = 89 txns (2594350 gasUsed / 47185920 gasLimit) utilization = 5.50%
Block #193 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #194 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #195 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #196 = 795 txns (23174250 gasUsed / 47185920 gasLimit) utilization = 49.11%
Block #197 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #198 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #199 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #200 = 594 txns (17315100 gasUsed / 47185920 gasLimit) utilization = 36.70%
Block #201 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #202 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #203 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #204 = 208 txns (6063200 gasUsed / 47185920 gasLimit) utilization = 12.85%
Block #205 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #206 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #207 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #208 = 30 txns (874500 gasUsed / 47185920 gasLimit) utilization = 1.85%
Block #209 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #210 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #211 = 1618 txns (47164700 gasUsed / 47185920 gasLimit) utilization = 99.96%
Block #212 = 177 txns (5159550 gasUsed / 47185920 gasLimit) utilization = 10.93%
Block #213 = 180 txns (5247000 gasUsed / 47185920 gasLimit) utilization = 11.12%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 81.29%

Environment ERC721

Host Configuration
Cloud providerAWS EC2
Instance sizec6a.48xlarge
Networkingprivate subnet
Operating systemLinux Ubuntu 20.04 LTS - Focal Fossa
File descriptor limit65535
Max user processes65535

Blockchain Configuration
Polygon Edge versionRelease v0.4.1
Validator nodes4
Non-validator nodes0
ConsensusIBFT PoA
Block time1s
Block gas limit94371840
Max slots1000000
Average block utilization93.88%

Loadbot Configuration
Total Transactions30000
Transactions sent per second714
Type of transactionsERC721 token mint

Loadbot log
[COUNT DATA]
Transactions submitted = 30000
Transactions failed = 0

[APPROXIMATE TPS]
Approximate number of transactions per second = 714

[CONTRACT DEPLOYMENT INFO]
Contract address = 0x4Ceff7F2f9fC9f150a42AfcabceEDABeB723E56f
Total execution time = 2.005500s

[CONTRACT DEPLOYMENT BLOCK DATA]
Blocks required = 1
Block #59 = 1 txns (2528772 gasUsed / 94371840 gasLimit) utilization = 2.68%

[TURN AROUND DATA]
Average transaction turn around = 13.191620s
Fastest transaction turn around = 2.034710s
Slowest transaction turn around = 23.686180s
Total loadbot execution time = 42.864140s

[BLOCK DATA]
Blocks required = 39

Block #61 = 818 txns (94237644 gasUsed / 94371840 gasLimit) utilization = 99.86%
Block #62 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #63 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #64 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #65 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #66 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #67 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #68 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #69 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #70 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #71 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #72 = 510 txns (58738980 gasUsed / 94371840 gasLimit) utilization = 62.24%
Block #73 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #74 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #75 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #76 = 674 txns (77624892 gasUsed / 94371840 gasLimit) utilization = 82.25%
Block #77 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #78 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #79 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #80 = 179 txns (20621682 gasUsed / 94371840 gasLimit) utilization = 21.85%
Block #81 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #82 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #83 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #84 = 231 txns (26609898 gasUsed / 94371840 gasLimit) utilization = 28.20%
Block #85 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #86 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #87 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #88 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #89 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #90 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #91 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #92 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #93 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #94 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #95 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #96 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #97 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #98 = 819 txns (94322802 gasUsed / 94371840 gasLimit) utilization = 99.95%
Block #99 = 561 txns (64612038 gasUsed / 94371840 gasLimit) utilization = 68.47%

[AVERAGE BLOCK UTILIZATION]
Average utilization across all blocks = 93.88%