This is a modified version of the code provided by the EOS Mechanics team. The original code can be found here.
Please visit us on Telegram for any feedback or questions.
This contract is built using the AntelopeIO CDT v3.1.0. Before proceding, make sure you have the cdt
install in your machine.
To build the contract, run the following command:
./build.sh
This command will create (if it doesn't exist) a new folder in the root path called build
and will contain the compiled contract. This also will print out the sha256 hash of the wasm file corresponding to the current code version. You can find the .abi
and .wasm
at build/contracts/eosmechanics/
.
The benchmarks below are EOS contracts which are set on the eosmechanics
account on Mainnet, CryptoKylin Testnet, and Jungle Testnet. They are executed during each block producers' schedule, and the timings recorded on-chain using the standard cpu_usage_us
transaction field. The data is freely available to view and analyze, and we encourage doing so to help identify issues and improve block producer performance.
Example tools that utilize this data:
This benchmark targets the CPU by calculating Mersenne prime numbers. Calculating primes is an industry standard for measuring CPU performance and it uses code operations that are common in software development.
This benchmark targets EOS RAM by rapidly writing to and reading from a RAM table. Due to inefficiencies within the EOSIO software this benchmark is currently CPU heavy and thus we consider it experimental and very similar to the CPU benchmark. As the software performance is improved we expect the results of this benchmark to become more meaningful.
--
EOS Token holders should not rely on EOS Mechanics benchmark results as an absolute indication of block producers’ performance. Results are mainly intended for operators of the EOS infrastructure to have additional metrics that can aid them in testing different infrastructures, configurations and features while identifying performance differences and potential bottlenecks. These statistics are not subject to verification by other nodes on the network; therefore it is possible for block producers to manipulate them. Furthermore, running custom software or configurations may impact the measurement of these metrics.