Skip to content

Edison-Watch/GPU-EVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,317 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GPU-EVM

🚀💨 Fastest EVM in the west 💨🚀

License

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).

Requirements

  • 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 nvcc version is >= 12.4 (CUDA version 12.4 and above)
    • For instructions for installing CUDA toolkit, look at CUDA_install.md
  • Ensure rapidjson, libgmp3-dev and libtclap-dev are installed (sudo apt-get install rapidjson-dev libtclap-dev libgmp3-dev)
  • Ensure gcc version is >= 12, and similar for g++ for version >= 12

CMake build (WIP)

  1. (IMPORTANT) This repo uses submodules. Install using git clone --recursive git@github.com:Edison-Watch/GPU-EVM.git
  2. Navigate to the repo (cd GPU-EVM)
  3. mkdir build
  4. cd build
  5. cmake .. to generate build configs
  6. cmake --build . --parallel

Ethereum Execution Tests (EVM)

GPU EVM only focus on the state tests on EVM (/GeneralStateTests) and skip protocol tests.

State Transition

  • 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:

About

♨️ Fastest EVM in the West ♨️

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors