🚀💨 Fastest EVM in the west 💨🚀
Source Available under the Business Source License 1.1 (BUSL-1.1).
Free for development, testing, evaluation, and other non-production use. Commercial / Production use (including offering a hosted/managed service) requires a commercial license from GPU-EVM LTD.
Contact: hello@gatlingx.com
After the Change Date, the code becomes available under Apache 2.0 (see LICENSE).
- Ensure you're running on Ubuntu 22.04 or above
- Ensure CUDA drivers & toolkit & development headers are installed, with a NVIDIA GPU-compatible device. GPU-EVM only works on post-Volta series GPUs, though ideally with post-Turing series GPUs
- Ensure
nvccversion is >= 12.4 (CUDA version12.4and above)- For instructions for installing CUDA toolkit, look at
CUDA_install.md
- For instructions for installing CUDA toolkit, look at
- Ensure
rapidjson,libgmp3-devandlibtclap-devare installed (sudo apt-get install rapidjson-dev libtclap-dev libgmp3-dev) - Ensure
gccversion is >= 12, and similar forg++for version >= 12
- (IMPORTANT) This repo uses submodules. Install using
git clone --recursive git@github.com:Edison-Watch/GPU-EVM.git - Navigate to the repo (
cd GPU-EVM) mkdir buildcd buildcmake ..to generate build configscmake --build . --parallel
GPU EVM only focus on the state tests on EVM (/GeneralStateTests) and skip protocol tests.
-
Path: /GeneralStateTests)
-
Scope: Contains transactions that are to be executed on a state pre given the environment env and must end up with post results post
-
Expected Values: The expected values contain state changes in EVM, such as balance, nonce, storage, gas. Dumped at https://github.com/Edison-Watch/eth-tests/tree/gatlingx
-
Skip when the input transaction (1) contains an access list; or (2) is a creation transaction where receiver address is empty.
| Test Suite | Total | Passed | Failed | Skipped |
|---|---|---|---|---|
| Cancun | 174 | 158 | 0 | 16 |
| Pyspecs | 66 | 32 | 0 | 34 |
| Shanghai | 27 | 25 | 0 | 2 |
| VMTests | 651 | 628 | 0 | 23 |
| stArgsZeroOneBalance | 96 | 96 | 0 | 0 |
| stAttackTest | 2 | 0 | 0 | 2 |
| stBadOpcode | 4134 | 4134 | 0 | 0 |
| stBugs | 8 | 8 | 0 | 0 |
| stCallCodes | 86 | 86 | 0 | 0 |
| stCallCreateCallCodeTest | 56 | 49 | 0 | 7 |
| stCallDelegateCodesCallCodeHomestead | 58 | 58 | 0 | 0 |
| stCallDelegateCodesHomestead | 58 | 58 | 0 | 0 |
| stChainId | 2 | 2 | 0 | 0 |
| stCodeCopyTest | 2 | 2 | 0 | 0 |
| stCodeSizeLimit | 9 | 4 | 0 | 5 |
| stCreate2 | 191 | 129 | 0 | 62 |
| stCreateTest | 209 | 152 | 0 | 57 |
| stDelegatecallTestHomestead | 33 | 33 | 0 | 0 |
| stEIP150Specific | 25 | 25 | 0 | 0 |
| stEIP150singleCodeGasPrices | 450 | 450 | 0 | 0 |
| stEIP158Specific | 8 | 7 | 0 | 1 |
| stEIP2930 | 140 | 0 | 0 | 140 |
| stEIP3607 | 12 | 3 | 0 | 9 |
| stExample | 39 | 34 | 0 | 5 |
| stExtCodeHash | 69 | 67 | 0 | 2 |
| stHomesteadSpecific | 5 | 3 | 0 | 2 |
| stInitCodeTest | 22 | 10 | 0 | 12 |
| stLogTests | 46 | 46 | 0 | 0 |
| stMemExpandingEIP150Calls | 14 | 14 | 0 | 0 |
| stMemoryStressTest | 82 | 82 | 0 | 0 |
| stMemoryTest | 578 | 578 | 0 | 0 |
| stNonZeroCallsTest | 24 | 24 | 0 | 0 |
| stPreCompiledContracts | 1208 | 1208 | 0 | 0 |
| stPreCompiledContracts2 | 248 | 248 | 0 | 0 |
| stQuadraticComplexityTest | 34 | 34 | 0 | 0 |
| stRandom | 531 | 530 | 0 | 1 |
| stRandom2 | 221 | 220 | 0 | 1 |
| stRecursiveCreate | 2 | 2 | 0 | 0 |
| stRefundTest | 26 | 23 | 0 | 3 |
| stReturnDataTest | 273 | 273 | 0 | 0 |
| stRevertTest | 271 | 266 | 0 | 5 |
| stSLoadTest | 1 | 1 | 0 | 0 |
| stSStoreTest | 475 | 2 | 0 | 473 |
| stSelfBalance | 42 | 42 | 0 | 0 |
| stShift | 42 | 42 | 0 | 0 |
| stSolidityTest | 23 | 19 | 0 | 4 |
| stSpecialTest | 22 | 19 | 0 | 3 |
| stStackTests | 375 | 166 | 0 | 209 |
| stStaticCall | 478 | 463 | 0 | 15 |
| stStaticFlagEnabled | 34 | 34 | 0 | 0 |
| stSystemOperationsTest | 83 | 83 | 0 | 0 |
| stTimeConsuming | 5187 | 5187 | 0 | 0 |
| stTransactionTest | 260 | 27 | 0 | 233 |
| stTransitionTest | 6 | 3 | 0 | 3 |
| stWalletTest | 46 | 33 | 0 | 13 |
| stZeroCallsRevert | 16 | 16 | 0 | 0 |
| stZeroCallsTest | 24 | 24 | 0 | 0 |
| stZeroKnowledge | 1463 | 1463 | 0 | 0 |
| stZeroKnowledge2 | 519 | 519 | 0 | 0 |
Skipp tests that don't belong to GeneralStateTests/
| Tests | Path | Scope |
|---|---|---|
| Blockchain | /BlockchainTests | Blockchain tests include multiple blocks and each of those blocks can include multiple transactions. |
| EOF | /EOFTests | Tests for Ethereum Object Format. |
| ABI | /ABITests/basic_abi_tests.json | A number of test cases for the application binary interface. |
| Difficulty | /DifficultyTests | check the difficulty formula of a block |
| RLP | /RLPTests | Describes an RLP encoding using the .json file. |
| Transaction | /TransactionTests | Describes a complete transaction and its RLP representation using the .json file. Check transaction format. No Execution. |
| Trie | /TrieTests/ | Test Merkel Tree Trie |
| Cryptographic | /BasicTests/crypto.json | Cryptographic Tests |
| Encoding | /BasicTests/hexencodetest.json /BasicTests/keyaddrtest.json /BasicTests/txtest.json | Tests for the encoding of various data types such as hexencodetest.json keyaddrtest.json txtest.json |
| Genesis Block | /BasicTests/blockgenesistest.json /BasicTests/genesishashestest.json /GenesisTests/basic_genesis_tests.json | Tests related to the genesis block at the beginning of a block chain: |