VeChain Docs
  • Welcome to VeChain
  • Blockchain Basics
    • Introduction to blockchain
    • Introduction to digital property
    • The evolution of the internet
  • Introduction to VeChain
    • About the VeChain blockchain
      • Consensus Deep Dive
      • Governance
    • Dual-Token Economic Model
      • VeChain (VET)
      • VeThor (VTHO)
    • Acquire VeChain Assets
    • Sustainability
  • Core Concepts
    • Networks
      • Thor Solo Node
      • Testnet
      • Mainnet
    • Nodes
      • Node Rewards Programme
    • Blocks
      • Block Model
    • Transactions
      • Transaction Model
      • Transaction Fees
      • Transaction Calculation
      • Meta Transaction Features
        • Transaction Uniqueness
        • Controllable Transaction Lifecycle
        • Clauses (Multi-Task Transaction)
        • Fee Delegation
          • Multi-Party Payment (MPP)
          • Designated Gas Payer (VIP-191)
        • Transaction Dependency
    • Block Explorers
    • Wallets
      • VeWorld
        • User Guide
          • Setup
          • Wallet
          • Signing
          • Activities
          • Settings
        • FAQ
      • Sync2
        • User Guide
          • Setup
          • Wallet
          • Signing
          • Activities
          • Settings
        • FAQ
      • Sync
        • User Guide
          • Wallet
          • Ledger Device
          • Browser dApps and web
          • Interact with dApps
          • Activities
          • Settings
          • Report an Issue
          • Contributing
        • FAQ
    • EVM Compatibility
      • VeChain Modifications
      • Methodology
      • Test Coverage
        • Gas model
        • Raw transaction
        • hardhat specific
          • Ganache failures
          • evm_increaseTime
        • Failures in constructor
        • eth_sign
        • Contract address prediction
        • BadBeacon proxy address at 0x1
      • How to Recreate
      • Additional Information
        • Using Governance Contracts
        • ERC1820/ERC777 Testnet
        • Delegate Options
    • Account Abstraction
      • UserOperation
      • Bundler
      • EntryPoint Contract
      • Account Factory Contract
      • Paymaster Contract
    • Token Bound Accounts
  • How to run a node
    • Nodes
    • How to run a Thor Solo Node
    • Custom Network
    • Connect Sync2 to a Thor Solo Node
  • Developer Resources
    • Getting Started
    • How to build on VeChain
      • Connect to the Network
      • Read Data
        • Read Blocks
        • Read Transactions
        • Read Accounts
        • States & Views
        • Events & Logs
        • VET Transfers
      • Write Data
        • Transactions
        • Fee Delegation
      • Listen to Changes
        • Events
        • VET Transfers
        • Transactions
        • Blocks
        • Beats
      • Build with Hardhat
      • Utilities
        • BigInt and Unit-Handling
        • Name Service Lookups
    • Example dApps
      • Buy me a Coffee
      • Token Bound Accounts
      • PWA with Privy and Account Abstraction
    • EVM Compatibility for Developers
      • Key Architectural Differences and Optimizations
      • Practical Implications for Developers: Key Considerations
      • RPC Methods (Detailed Breakdown)
      • Frequently Asked Questions (FAQs)
      • VeChain Blockchain Specifications
      • Key Differences Between VeChain and Ethereum (Summary)
      • Best Practices for Developing on VeChainThor
    • How to verify Address-Ownership
      • Next.js Session Verification
    • Debug Reverted Transactions
    • Account Abstraction
    • VIP-191: Designated Gas Payer
      • How to Integrate VIP-191 (I)
      • How to Integrate VIP-191 (II)
      • How to Integrate VIP-191 (III)
    • Index with Graph Node
      • Setup with Docker
      • Index with OpenZeppelin
        • Create Subgraph Project
        • Configure Contracts
        • Deploy Subgraph and start Indexing
        • Track Subgraph Indexing
        • Access Subgraph
        • Update Subgraph
    • SDKs & Providers
      • SDK
        • Architecture
        • Accounts
        • Bloom Filter
        • Certificates
        • Contracts
        • Cryptography
        • Debug
        • Encoding
        • Polls
        • Subscriptions
        • Thor Client
        • Transactions
      • Thor DevKit
        • Installation
        • Usage
          • Cryptography
          • Accounts
          • Encoding
          • Transactions
          • Certificates
          • Bloom Filter
      • DApp Kit
        • v2
          • Installation
          • React
            • Installation
            • Usage
          • Vanilla JS
            • Installation
            • Usage
          • Core
            • Installation
            • Usage
          • Theme Variables
          • i18n
        • v1
          • Installation
          • React
            • Installation
            • Usage
          • Vanilla JS
            • Installation
            • Usage
          • Core
            • Installation
            • Usage
          • Theme Variables
          • i18n
          • Node Polyfills
          • V0 to V1
        • v0
          • Installation
          • Usage
          • React
            • Installation
            • Usage
          • Vanilla (UI)
            • Installation
            • Usage
          • Styles (UI)
          • i18n
      • DevPal
      • Web3-Providers-Connex
        • Installation
        • Usage
      • Connex
        • Installation
        • API Specification
    • Frameworks & IDEs
      • Hardhat
      • Remix
    • Built-in Contracts
    • VORJ
    • Useful Links
  • How to contribute
Powered by GitBook
On this page
  • Summary Table (OZ v4)
  • Summary Table (OZ v5)
  • Detailed Table (OZ v4)
  • Detailed Table (OZ v5)

Was this helpful?

  1. Core Concepts
  2. EVM Compatibility

Test Coverage

The tables below provides a summary and detailed information in relation to the number of tests performed, the count of passing tests and the count of failing tests.

To summarize, VeChain achieves a pass rate of 99%, when taking into consideration that 1346 of the 1355 failing tests are classified as being either justifiable or passable, given some modifications to the tests.

You can find detailed analysis of the coverage categories in the pages to follow.

Summary Table (OZ v4)

Category
Short Description
Failures

Justifiable

Failures that result from the inherent design differences between VeChain and Ethereum.

73

Contract Address Prediction

14

Failures in Constructor

Contract fails in constructor resulting in failure to be deployed.

7

Full, with eth_sign implementation

4

Full, with test changes

Some test modifications had to be added for the tests to pass.

3

BadBeaconProxy Address 0x1

1

Summary Table (OZ v5)

Category
Short Description
Failures

Custom Error

Failures due to custom errors specific to the implementation.

928

Hardhat Specific

Issues specific to Hardhat Network.

335

Justifiable

Failures that result from the inherent design differences between VeChain and Ethereum.

83

Max code size limit

Failures due to exceeding the maximum contract code size limit.

4

eth_sign

4

BadBeaconProxy Address 0x1

1

Detailed Table (OZ v4)

Contract Name
Pass
Fail
Total

Total

2324

102

2426

ERC1967Proxy

25

3

28

TransparentUpgradeableProxy

58

3

61

BeaconProxy

7

2

9

GovernorTimelockCompound

7

12

19

GovernorCompatibilityBravo

7

2

9

TimelockController

27

15

42

CrossChainEnabled

4

9

13

GovernorTimelockControl

12

9

21

AccessControl

50

4

54

MinimalForwarder

12

4

16

TokenTimelock

3

4

7

VestingWallet

2

4

6

ERC721Enumerable

233

3

236

DoubleEndedQueue

7

2

9

ERC2771Context

5

2

7

ERC721

211

2

213

Governor

42

2

44

Checkpoints

22

1

23

ERC1155

83

1

84

ERC1155Holder

4

1

5

ERC1155PresetMinterPauser

16

1

17

ERC165

2

1

3

ERC165Storage

4

1

5

ERC20Votes

28

1

29

ERC20VotesComp

27

1

28

ERC721PresetMinterPauserAutoId

15

1

16

ERC721Royalty

13

1

14

GovernorWithParams

3

1

4

MerkleProof

8

1

9

TimersTimestamp

4

1

5

ECDSA

14

3

17

SignatureChecker (ERC1271)

1

1

1

ERC1820Implementer

1

1

1

ERC777

1

1

1

ERC777PresetFixedSupply

1

1

1

Address

29

0

29

Arrays

15

0

15

BitMap

10

0

10

Clones

30

0

30

ConditionalEscrow

11

0

11

Context

4

0

4

Counters

8

0

8

Create2

8

0

8

EIP712

2

0

2

EnumerableMap

70

0

70

EnumerableSet

20

0

24

ERC1155Burnable

6

0

6

ERC1155Pausable

11

0

11

ERC1155Supply

10

0

10

ERC1155URIStorage

4

0

4

ERC165Checker

40

0

40

ERC20

118

0

118

ERC20Burnable

13

0

13

ERC20Capped

5

0

5

ERC20FlashMint

12

0

12

ERC20Pausable

12

0

12

ERC20Permit

6

0

6

ERC20PresetFixedSupply

4

0

4

ERC20PresetMinterPauser

12

0

12

ERC20Snapshot

14

0

14

ERC4626

25

0

25

ERC721Burnable

4

0

4

ERC721Consecutive

13

0

13

ERC721Holder

1

0

1

ERC721Pausable

10

0

10

ERC721URIStorage

10

0

10

ERC721Votes

26

0

26

Escrow

10

0

10

GovernorComp

2

0

2

GovernorERC721Mock

2

0

2

GovernorPreventLateQuorum

5

0

5

GovernorVotesQuorumFraction

6

0

6

Initializable

29

0

29

Math

25

0

25

MulticallToken

4

0

4

Ownable

6

0

6

Ownable2Step

5

0

5

Pausable

11

0

11

PaymentSplitter

20

0

20

ProxyAdmin

12

0

12

PullPayment

4

0

4

ReentrancyGuard

6

0

6

RefundEscrow

17

0

17

SafeCast

444

0

444

SafeERC20

35

0

35

SafeMath

48

0

48

SignedMath

12

0

12

SignedSafeMath

17

0

17

StorageSlot

12

0

12

Strings

31

0

31

TimersBlockNumber

5

0

5

UpgradeableBeacon

5

0

5

UUPSUpgradeable

6

0

6

Votes

23

0

23

Detailed Table (OZ v5)

Contract Name
Pass
Fail
Total

Total

7063

1351

5057

AccessControl

30

9

39

Ownable

8

4

12

Ownable2Step

6

2

8

AccessControlDefaultAdminRules

94

67

161

AccessControlEnumerable

37

11

48

AccessManaged

11

6

17

AccessManager

160

185

345

AuthorityUtils

4

0

4

VestingWallet

6

5

11

Governor

202

143

345

TimelockController

53

38

91

GovernorERC721

4

2

6

GovernorPreventLateQuorum

10

7

17

GovernorTimelockCompound

38

36

74

GovernorTimelockControl

42

37

79

GovernorVotesQuorumFraction

12

10

22

GovernorWithParams

14

11

25

Votes

46

14

60

ERC2771Context

11

0

11

ERC2771Forwarder

37

19

56

Clones

30

1

31

ERC1967Proxy

26

12

38

BeaconProxy

10

8

18

UpgradeableBeacon

6

3

9

ProxyAdmin

7

4

11

TransparentUpgradeableProxy

26

12

38

Initializable

29

8

37

UUPSUpgradeable

11

10

21

ERC1155

89

29

118

ERC1155Burnable

6

2

8

ERC1155Pausable

11

8

19

ERC1155Supply

11

0

11

ERC1155URIStorage

4

0

4

ERC1155Holder

7

2

9

ERC20

122

34

156

ERC20Burnable

13

3

16

ERC20Capped

5

3

8

ERC20FlashMint

12

4

16

ERC20Pausable

12

4

16

ERC20Permit

6

3

9

ERC20Votes

92

30

122

ERC20Wrapper

44

12

56

ERC4626

71

11

82

SafeERC20

35

12

47

ERC721

378

71

449

ERC721Enumerable

400

80

480

ERC721Burnable

5

4

9

ERC721Consecutive

34

22

56

ERC721Pausable

9

5

14

ERC721Royalty

16

4

20

ERC721URIStorage

17

6

23

ERC721Votes

25

7

32

ERC721Wrapper

384

72

456

ERC721Holder

1

0

1

Address

29

14

43

Arrays

15

0

15

Base64

5

0

5

Context

4

0

4

Create2

8

2

10

Multicall

4

2

6

Nonces

6

1

7

Pausable

11

5

16

ReentrancyGuard

6

3

9

ShortStrings

14

6

20

StorageSlot

24

0

24

Strings

71

1

72

ECDSA

15

11

26

EIP712

13

0

13

MerkleProof

10

3

13

MessageHashUtils

4

0

4

ERC165

5

2

7

ERC165Checker

40

0

40

Math

44

1

45

SafeCast

444

190

634

SignedMath

12

0

12

BitMap

10

0

10

Checkpoints

33

3

36

DoubleEndedQueue

9

2

11

EnumerableMap

60

5

65

EnumerableSet

24

0

24

Time

7

0

7

GovernorStorage

0

2

2

GovernorTimelockAccess

0

2

2

ERC1967Utils

0

3

3

SignatureChecker

0

1

1

PreviousMethodologyNextGas model

Last updated 9 months ago

Was this helpful?

See .

See .

See .

See .

See

here
here
here
here
here