0.0.5
(Unreleased)
- Utility Functions
Math
: Refactor theis_negative
function into a propersign
function that returns the indication of the sign of a 32-byte signed integer. (#187)Math
: Rename the recently addedsign
function tosignum
to avoid any ambiguity with cryptographic signing utility functions. (#188)Math
: Optimise the zero point threshold inwad_exp
. (#189)
0.0.4
(13-10-2023)
- Utility Functions
0.0.3
(12-10-2023)
- Extensions
- Tokens
- Utility Functions
- Vyper Contract Deployer
VyperDeployer
: If you want to leverage 🐍 snekmate'sVyperDeployer
contract for your own testing, ensure that you compile the Vyper contracts with the same EVM version as configured in yourfoundry.toml
file. TheVyperDeployer
contract offers two overloadeddeployContract
functions that allow the configuration of the target EVM version. Please note that since Vyper version0.3.8
the default EVM version is set toshanghai
. (#161)
- Utility Functions
MerkleProofVerificationTest
: Add an additional test for a possiblemulti_proof_verify
invariant violation. (#137)
- All 🐍 snekmate contracts now target the Vyper version
0.3.10
(#164). It is strongly recommended to upgrade accordingly your local Vyper version prior to using the 🐍 snekmate contracts. Important: The default EVM version since Vyper version0.3.8
is set toshanghai
(i.e. the EVM includes thePUSH0
instruction). If you intend to deploy on an EVM chain with noPUSH0
support, you must compile the 🐍 snekmate contracts with the--evm-version paris
option; e.g.vyper --evm-version paris utils/Math.vy
, or add the# pragma evm-version paris
directive to the 🐍 snekmate contracts:
# pragma version ^0.3.10
# pragma evm-version paris
# pragma optimize gas
"""
@title Modern and Gas-Efficient ERC-20 + EIP-2612 Implementation
...
"""
# @dev We import and implement the `ERC20` interface,
# which is a built-in interface of the Vyper compiler.
from vyper.interfaces import ERC20
implements: ERC20
...
The
# pragma optimize
directive has also been added in Vyper version0.3.10
(see PR #3493). Please refer to here to learn more about the different optionsnone
,codesize
, andgas
(default).
0.0.2
(07-06-2023)
- General
- All 🐍 snekmate contracts now contain an Ethereum Natural Language Specification Format (NatSpec)
custom
field@custom:contract-name
. The underlying rationale is that the block explorers plan to use@custom:contract-name
as contract name and@title
as fallback. (#124)
- All 🐍 snekmate contracts now contain an Ethereum Natural Language Specification Format (NatSpec)
- Extensions
- Tokens
- Utility Functions
EIP712DomainSeparator
: Implement additionally the interfaceIERC5267
. (#129)Math
: Addwad_ln
andwad_exp
to the standard mathematical utility functions. (#91)
- General
- All 🐍 snekmate contracts are now guaranteed to compile with the Vyper CLI flags
userdoc
anddevdoc
, and, if using the Ape framework, withape compile
. (#126)
- All 🐍 snekmate contracts are now guaranteed to compile with the Vyper CLI flags
- Extensions
- Tokens
- Utility Functions
Base64
: Use the shift operators>>
and<<
introduced in Vyper0.3.8
instead of theshift
instruction. (#127)ECDSA
: Use the shift operators>>
and<<
introduced in Vyper0.3.8
instead of theshift
instruction. (#127)SignatureChecker
: Use the shift operators>>
and<<
introduced in Vyper0.3.8
instead of theshift
instruction. (#127)Math
:- Use directly 🐍 snekmate's
log_2
function in the internal calculation ofwad_cbrt
. (#91) - Use the shift operators
>>
and<<
introduced in Vyper0.3.8
instead of theshift
instruction. (#127) - Use of the ternary operator introduced in Vyper
0.3.8
in the functionceil_div
instead of anif-else
statement. (#128)
- Use directly 🐍 snekmate's
- All 🐍 snekmate contracts now target the Vyper version
0.3.9
. It is strongly recommended to upgrade accordingly your local Vyper version prior to using the 🐍 snekmate contracts. Important: The default EVM version since Vyper version0.3.8
is set toshanghai
(i.e. the EVM includes thePUSH0
instruction). If you intend to deploy on an EVM chain with noPUSH0
support, you must compile the 🐍 snekmate contracts with the--evm-version paris
option; e.g.vyper --evm-version paris utils/Math.vy
. (#122)
0.0.1
(06-03-2023)
- Authentication
Ownable
: Owner-based access control functions.Ownable2Step
: 2-step ownership transfer functions.AccessControl
: Multi-role-based access control functions.
- Extensions
- Tokens
- Utility Functions
Base64
: Base64 encoding and decoding functions. (#47)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.Math
: Standard mathematical utility functions. (#74, #77, #86)MerkleProofVerification
: Merkle tree proof verification functions. (#30)Multicall
: Multicall functions.