Skip to content

State-of-the-art, highly opinionated, hyper-optimised, and secure 🐍Vyper smart contract building blocks.

License

Notifications You must be signed in to change notification settings

bout3fiddy/snekmate

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐍 snekmate

Test smart contracts License: AGPL v3

State-of-the-art, highly opinionated, hyper-optimised, and secure 🐍Vyper smart contract building blocks.

This is experimental software and is provided on an "as is" and "as available" basis. We do not give any warranties and will not be liable for any losses incurred through any use of this code base.

πŸ“œ Contracts

src
β”œβ”€ auth
β”‚  β”œβ”€ Ownable β€” "Owner-Based Access Control Functions"
β”‚  β”œβ”€ Ownable2Step β€” "2-Step Ownership Transfer Functions"
β”‚  β”œβ”€ AccessControl β€” "Multi-Role-Based Access Control Functions"
β”œβ”€ extensions
β”‚  β”œβ”€ ERC4626 β€” "ERC-4626 Tokenised Vault Implementation (TBD)"
β”œβ”€ tokens
β”‚  β”œβ”€ ERC20 β€” "Modern and Gas-Efficient ERC-20 + EIP-2612 Implementation"
β”‚  β”œβ”€ ERC721 β€” "Modern and Gas-Efficient ERC-721 + EIP-4494 Implementation"
β”‚  β”œβ”€ ERC1155 β€” "Modern and Gas-Efficient ERC-1155 Implementation"
β”œβ”€ utils
   β”œβ”€ Base64 β€” "Base64 Encoding and Decoding Functions"
   β”œβ”€ BatchDistributor β€” "Batch Sending Both Native and ERC-20 Tokens"
   β”œβ”€ CreateAddress β€” "`CREATE` EVM Opcode Utility Function for Address Calculation"
   β”œβ”€ Create2Address β€” "`CREATE2` EVM Opcode Utility Functions for Address Calculations"
   β”œβ”€ ECDSA β€” "Elliptic Curve Digital Signature Algorithm (ECDSA) Functions"
   β”œβ”€ SignatureChecker β€” "ECDSA and EIP-1271 Signature Verification Functions"
   β”œβ”€ EIP712DomainSeparator β€” "EIP-712 Domain Separator"
   β”œβ”€ MerkleProofVerification β€” "Merkle Tree Proof Verification Functions"
   β”œβ”€ Multicall β€” "Multicall Functions"

πŸ‘©πŸΌβ€βš–οΈ Tests

This repository contains Foundry-based unit tests, property-based tests (i.e. fuzzing), and invariant tests for all contracts, if applicable. All tests are run as part of the CI pipeline test-contracts.

Note: An invariant is a property of a program that should always hold true. Fuzzing is a way of checking whether the invariant is falsifiable.

Contract Unit Tests Property-Based Tests Invariant Tests
Ownable βœ… βœ… βœ…
Ownable2Step βœ… βœ… βœ…
AccessControl βœ… βœ… βœ…
ERC20 βœ… βœ… βœ…
ERC721 βœ… βœ… βœ…
ERC1155 βœ… βœ… βœ…
Base64 βœ… ❌ ❌
BatchDistributor βœ… βœ… βœ…
CreateAddress βœ… βœ… ❌
Create2Address βœ… βœ… ❌
ECDSA βœ… βœ… ❌
SignatureChecker βœ… βœ… ❌
EIP712DomainSeparator βœ… βœ… ❌
MerkleProofVerification βœ… βœ… ❌
Multicall βœ… ❌ ❌

βœ… Test Type Implemented   ❌ Test Type Not Implemented

πŸ™πŸΌ Acknowledgements

This repository is inspired by or directly modified from many sources, primarily:

🫑 Contributing

🐍 snekmate only exists thanks to its contributors. There are many ways to get involved and contribute to our high-quality and secure smart contracts. Check out our Contribution Guidelines!

πŸ’Έ Donation

I am a strong advocate of the open-source and free software paradigm. However, if you feel my work deserves a donation, you can send it to this address: 0x07bF3CDA34aA78d92949bbDce31520714AB5b228. I can pledge that I will use this money to help fix more existing challenges in the Ethereum ecosystem 🀝.

πŸ’’ Disclaimer

About

State-of-the-art, highly opinionated, hyper-optimised, and secure 🐍Vyper smart contract building blocks.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Solidity 67.8%
  • Vyper 31.3%
  • JavaScript 0.9%