From ceb76b55fcdee1f95fe44f9cb1e53e30c5d92a38 Mon Sep 17 00:00:00 2001 From: sudo rm -rf --no-preserve-root / Date: Mon, 7 Oct 2024 15:44:23 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Use=20Keyword=20Arguments?= =?UTF-8?q?=20for=20Event=20Instantiation=20(#280)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### 🕓 Changelog Vyper changed event instantiation from taking positional arguments to taking keyword arguments (see PR [#4257](https://github.com/vyperlang/vyper/pull/4257)). This PR refactors all 🐍 snekmate event instantiations accordingly (resolves #277). Furthermore, we configure the tests to use the latest commit from the `master` branch of Vyper going forward, ensuring we are always testing against the most up-to-date version of the compiler. --------- Signed-off-by: Pascal Marco Caversaccio --- .gas-snapshot | 206 +++++++++--------- .github/workflows/halmos.yml | 2 +- .github/workflows/test-contracts.yml | 12 +- CHANGELOG.md | 21 +- src/snekmate/auth/access_control.vy | 8 +- .../auth/interfaces/IAccessControl.vyi | 2 +- .../auth/mocks/access_control_mock.vy | 2 +- src/snekmate/auth/mocks/ownable_2step_mock.vy | 2 +- src/snekmate/auth/mocks/ownable_mock.vy | 2 +- src/snekmate/auth/ownable.vy | 4 +- src/snekmate/auth/ownable_2step.vy | 4 +- src/snekmate/extensions/erc2981.vy | 2 +- src/snekmate/extensions/erc4626.vy | 6 +- .../extensions/interfaces/IERC2981.vyi | 2 +- src/snekmate/extensions/mocks/erc2981_mock.vy | 2 +- src/snekmate/extensions/mocks/erc4626_mock.vy | 2 +- .../mocks/timelock_controller_mock.vy | 2 +- .../governance/timelock_controller.vy | 20 +- src/snekmate/tokens/erc1155.vy | 28 +-- src/snekmate/tokens/erc20.vy | 20 +- src/snekmate/tokens/erc721.vy | 29 +-- src/snekmate/tokens/interfaces/IERC1155.vyi | 2 +- .../tokens/interfaces/IERC1155MetadataURI.vyi | 2 +- .../tokens/interfaces/IERC1155Receiver.vyi | 2 +- .../tokens/interfaces/IERC20Permit.vyi | 2 +- src/snekmate/tokens/interfaces/IERC4906.vyi | 2 +- .../tokens/interfaces/IERC721Enumerable.vyi | 2 +- .../tokens/interfaces/IERC721Metadata.vyi | 2 +- .../tokens/interfaces/IERC721Permit.vyi | 2 +- .../tokens/interfaces/IERC721Receiver.vyi | 2 +- src/snekmate/tokens/mocks/erc1155_mock.vy | 4 +- src/snekmate/tokens/mocks/erc20_mock.vy | 2 +- src/snekmate/tokens/mocks/erc721_mock.vy | 2 +- src/snekmate/utils/base64.vy | 2 +- src/snekmate/utils/batch_distributor.vy | 2 +- src/snekmate/utils/create2_address.vy | 2 +- src/snekmate/utils/create_address.vy | 2 +- src/snekmate/utils/ecdsa.vy | 2 +- src/snekmate/utils/eip712_domain_separator.vy | 2 +- src/snekmate/utils/interfaces/IERC1271.vyi | 2 +- src/snekmate/utils/interfaces/IERC5267.vyi | 2 +- src/snekmate/utils/math.vy | 2 +- .../utils/merkle_proof_verification.vy | 2 +- src/snekmate/utils/message_hash_utils.vy | 2 +- src/snekmate/utils/mocks/base64_mock.vy | 2 +- .../utils/mocks/batch_distributor_mock.vy | 2 +- .../utils/mocks/create2_address_mock.vy | 2 +- .../utils/mocks/create_address_mock.vy | 2 +- src/snekmate/utils/mocks/ecdsa_mock.vy | 2 +- .../mocks/eip712_domain_separator_mock.vy | 2 +- src/snekmate/utils/mocks/math_mock.vy | 2 +- .../mocks/merkle_proof_verification_mock.vy | 2 +- .../utils/mocks/message_hash_utils_mock.vy | 2 +- src/snekmate/utils/mocks/multicall_mock.vy | 2 +- src/snekmate/utils/mocks/p256_mock.vy | 2 +- .../utils/mocks/signature_checker_mock.vy | 2 +- src/snekmate/utils/multicall.vy | 2 +- src/snekmate/utils/p256.vy | 2 +- src/snekmate/utils/signature_checker.vy | 2 +- 59 files changed, 235 insertions(+), 221 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 0238b7a8..2302fce1 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -9,7 +9,7 @@ AccessControlTest:testFuzzRenounceRoleNonMsgSender(address) (runs: 256, μ: 9474 AccessControlTest:testFuzzRenounceRoleSuccess(address) (runs: 256, μ: 41996, ~: 41981) AccessControlTest:testFuzzRevokeRoleMultipleTimesSuccess(address) (runs: 256, μ: 41708, ~: 41693) AccessControlTest:testFuzzRevokeRoleNonAdmin(address,address) (runs: 256, μ: 16390, ~: 16390) -AccessControlTest:testFuzzRevokeRoleSuccess(address) (runs: 256, μ: 40524, ~: 40510) +AccessControlTest:testFuzzRevokeRoleSuccess(address) (runs: 256, μ: 40525, ~: 40510) AccessControlTest:testFuzzSetRoleAdminPreviousAdminCallsGrantRole(address,address) (runs: 256, μ: 75962, ~: 75962) AccessControlTest:testFuzzSetRoleAdminPreviousAdminCallsRevokeRole(address,address) (runs: 256, μ: 101503, ~: 101503) AccessControlTest:testFuzzSetRoleAdminSuccess(address,address) (runs: 256, μ: 91053, ~: 91053) @@ -17,7 +17,7 @@ AccessControlTest:testGrantRoleAdminRoleSuccess() (gas: 44805) AccessControlTest:testGrantRoleMultipleTimesSuccess() (gas: 50832) AccessControlTest:testGrantRoleNonAdmin() (gas: 14689) AccessControlTest:testGrantRoleSuccess() (gas: 45015) -AccessControlTest:testInitialSetup() (gas: 479221) +AccessControlTest:testInitialSetup() (gas: 479236) AccessControlTest:testRenounceRoleAdminRoleSuccess() (gas: 20892) AccessControlTest:testRenounceRoleMultipleTimesSuccess() (gas: 46584) AccessControlTest:testRenounceRoleNonMsgSender() (gas: 10335) @@ -61,8 +61,8 @@ BatchDistributorTest:testDistributeTokenMultipleAddressesSuccess() (gas: 617057) BatchDistributorTest:testDistributeTokenOneAddressSuccess() (gas: 579047) BatchDistributorTest:testDistributeTokenRevertWithInsufficientAllowance() (gas: 573557) BatchDistributorTest:testDistributeTokenRevertWithInsufficientBalance() (gas: 574210) -BatchDistributorTest:testFuzzDistributeEtherMultipleAddressesSuccess(((address,uint256)[]),uint256) (runs: 256, μ: 1749651, ~: 1784036) -BatchDistributorTest:testFuzzDistributeTokenMultipleAddressesSuccess(((address,uint256)[]),address,uint256) (runs: 256, μ: 1325426, ~: 1251024) +BatchDistributorTest:testFuzzDistributeEtherMultipleAddressesSuccess(((address,uint256)[]),uint256) (runs: 256, μ: 1753753, ~: 1784036) +BatchDistributorTest:testFuzzDistributeTokenMultipleAddressesSuccess(((address,uint256)[]),address,uint256) (runs: 256, μ: 1325439, ~: 1251024) Create2AddressTest:testComputeAddress() (gas: 532144) Create2AddressTest:testComputeAddressSelf() (gas: 540803) Create2AddressTest:testFuzzComputeAddress(bytes32,address) (runs: 256, μ: 532738, ~: 532738) @@ -88,26 +88,26 @@ CreateAddressTest:testComputeAddressSelfNonceUint56() (gas: 534900) CreateAddressTest:testComputeAddressSelfNonceUint64() (gas: 534981) CreateAddressTest:testComputeAddressSelfNonceUint8() (gas: 534627) CreateAddressTest:testComputeAddressSelfRevertTooHighNonce() (gas: 8874) -CreateAddressTest:testFuzzComputeAddressNonce0x7f(uint64,address) (runs: 256, μ: 533146, ~: 533224) -CreateAddressTest:testFuzzComputeAddressNonceUint16(uint64,address) (runs: 256, μ: 532581, ~: 532831) -CreateAddressTest:testFuzzComputeAddressNonceUint24(uint64,address) (runs: 256, μ: 532706, ~: 532789) -CreateAddressTest:testFuzzComputeAddressNonceUint32(uint64,address) (runs: 256, μ: 532697, ~: 532818) -CreateAddressTest:testFuzzComputeAddressNonceUint40(uint64,address) (runs: 256, μ: 532821, ~: 532888) -CreateAddressTest:testFuzzComputeAddressNonceUint48(uint64,address) (runs: 256, μ: 532794, ~: 532894) -CreateAddressTest:testFuzzComputeAddressNonceUint56(uint64,address) (runs: 256, μ: 532858, ~: 532942) -CreateAddressTest:testFuzzComputeAddressNonceUint64(uint64,address) (runs: 256, μ: 532894, ~: 532992) -CreateAddressTest:testFuzzComputeAddressNonceUint8(uint64,address) (runs: 256, μ: 532603, ~: 532663) -CreateAddressTest:testFuzzComputeAddressRevertTooHighNonce(uint256,address) (runs: 256, μ: 12841, ~: 13144) -CreateAddressTest:testFuzzComputeAddressSelfNonce0x7f(uint64) (runs: 256, μ: 539385, ~: 539445) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint16(uint64) (runs: 256, μ: 538623, ~: 538903) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint24(uint64) (runs: 256, μ: 538962, ~: 539043) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint32(uint64) (runs: 256, μ: 538952, ~: 539051) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint40(uint64) (runs: 256, μ: 539046, ~: 539122) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint48(uint64) (runs: 256, μ: 539044, ~: 539109) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint56(uint64) (runs: 256, μ: 539115, ~: 539175) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint64(uint64) (runs: 256, μ: 539210, ~: 539296) -CreateAddressTest:testFuzzComputeAddressSelfNonceUint8(uint64) (runs: 256, μ: 538716, ~: 538769) -CreateAddressTest:testFuzzComputeAddressSelfRevertTooHighNonce(uint256) (runs: 256, μ: 12680, ~: 12998) +CreateAddressTest:testFuzzComputeAddressNonce0x7f(uint64,address) (runs: 256, μ: 533138, ~: 533224) +CreateAddressTest:testFuzzComputeAddressNonceUint16(uint64,address) (runs: 256, μ: 532577, ~: 532829) +CreateAddressTest:testFuzzComputeAddressNonceUint24(uint64,address) (runs: 256, μ: 532704, ~: 532789) +CreateAddressTest:testFuzzComputeAddressNonceUint32(uint64,address) (runs: 256, μ: 532698, ~: 532818) +CreateAddressTest:testFuzzComputeAddressNonceUint40(uint64,address) (runs: 256, μ: 532822, ~: 532888) +CreateAddressTest:testFuzzComputeAddressNonceUint48(uint64,address) (runs: 256, μ: 532793, ~: 532894) +CreateAddressTest:testFuzzComputeAddressNonceUint56(uint64,address) (runs: 256, μ: 532857, ~: 532942) +CreateAddressTest:testFuzzComputeAddressNonceUint64(uint64,address) (runs: 256, μ: 532895, ~: 532992) +CreateAddressTest:testFuzzComputeAddressNonceUint8(uint64,address) (runs: 256, μ: 532605, ~: 532663) +CreateAddressTest:testFuzzComputeAddressRevertTooHighNonce(uint256,address) (runs: 256, μ: 12839, ~: 13144) +CreateAddressTest:testFuzzComputeAddressSelfNonce0x7f(uint64) (runs: 256, μ: 539386, ~: 539445) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint16(uint64) (runs: 256, μ: 538613, ~: 538903) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint24(uint64) (runs: 256, μ: 538963, ~: 539043) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint32(uint64) (runs: 256, μ: 538955, ~: 539051) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint40(uint64) (runs: 256, μ: 539047, ~: 539122) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint48(uint64) (runs: 256, μ: 539045, ~: 539109) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint56(uint64) (runs: 256, μ: 539116, ~: 539175) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint64(uint64) (runs: 256, μ: 539214, ~: 539296) +CreateAddressTest:testFuzzComputeAddressSelfNonceUint8(uint64) (runs: 256, μ: 538722, ~: 538769) +CreateAddressTest:testFuzzComputeAddressSelfRevertTooHighNonce(uint256) (runs: 256, μ: 12677, ~: 12998) ECDSATest:testFuzzRecoverWithInvalidSignature(bytes,string) (runs: 256, μ: 15336, ~: 15339) ECDSATest:testFuzzRecoverWithTooLongSignature(bytes,string) (runs: 256, μ: 13772, ~: 13775) ECDSATest:testFuzzRecoverWithValidSignature(string,string) (runs: 256, μ: 21662, ~: 21660) @@ -155,25 +155,25 @@ ERC1155Test:testExistsAfterSingleBurn() (gas: 120522) ERC1155Test:testExistsAfterSingleMint() (gas: 107182) ERC1155Test:testExistsBeforeMint() (gas: 10456) ERC1155Test:testFuzzBurnBatchSuccess(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 114412, ~: 114399) -ERC1155Test:testFuzzBurnSuccess(address,address,uint256) (runs: 256, μ: 123484, ~: 123484) +ERC1155Test:testFuzzBurnSuccess(address,address,uint256) (runs: 256, μ: 123474, ~: 123484) ERC1155Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13928, ~: 13928) ERC1155Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48706, ~: 48692) ERC1155Test:testFuzzSafeBatchTransferFromByApprovedOperator(address,address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 195985, ~: 195984) ERC1155Test:testFuzzSafeBatchTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 160563, ~: 160542) ERC1155Test:testFuzzSafeBatchTransferFromNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 528669, ~: 528669) ERC1155Test:testFuzzSafeBatchTransferFromWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 529064, ~: 529361) -ERC1155Test:testFuzzSafeMintBatchEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 138108, ~: 138102) +ERC1155Test:testFuzzSafeMintBatchEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 138107, ~: 138102) ERC1155Test:testFuzzSafeMintBatchNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 500117, ~: 500117) ERC1155Test:testFuzzSafeMintBatchNonMinter(address) (runs: 256, μ: 26517, ~: 26517) ERC1155Test:testFuzzSafeMintBatchWithData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 500495, ~: 500656) ERC1155Test:testFuzzSafeMintEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 140555, ~: 140537) ERC1155Test:testFuzzSafeMintNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 503459, ~: 503459) ERC1155Test:testFuzzSafeMintNonMinter(address) (runs: 256, μ: 26112, ~: 26112) -ERC1155Test:testFuzzSafeMintWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 504599, ~: 504229) +ERC1155Test:testFuzzSafeMintWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 504589, ~: 504229) ERC1155Test:testFuzzSafeTransferFromByApprovedOperator(address,address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 187660, ~: 187648) -ERC1155Test:testFuzzSafeTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 152325, ~: 152293) +ERC1155Test:testFuzzSafeTransferFromEOAReceiver(address,address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 152324, ~: 152293) ERC1155Test:testFuzzSafeTransferFromNoData(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 578642, ~: 578642) -ERC1155Test:testFuzzSafeTransferFromWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 580737, ~: 580010) +ERC1155Test:testFuzzSafeTransferFromWithData(address,uint256,uint256,uint256,uint256,bytes) (runs: 256, μ: 580727, ~: 580010) ERC1155Test:testFuzzSetApprovalForAllRevoke(address,address) (runs: 256, μ: 31947, ~: 31915) ERC1155Test:testFuzzSetApprovalForAllSuccess(address,address) (runs: 256, μ: 45319, ~: 45319) ERC1155Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15489, ~: 15490) @@ -182,11 +182,11 @@ ERC1155Test:testFuzzSetUriNonMinter(address) (runs: 256, μ: 14413, ~: 14413) ERC1155Test:testFuzzTotalSupplyAfterBatchBurn(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 108010, ~: 107998) ERC1155Test:testFuzzTotalSupplyAfterBatchMint(address,uint256,uint256,uint256,uint256) (runs: 256, μ: 126253, ~: 126284) ERC1155Test:testFuzzTotalSupplyAfterSingleBurn(address,uint256,bytes) (runs: 256, μ: 120543, ~: 120509) -ERC1155Test:testFuzzTotalSupplyAfterSingleMint(uint256,uint256,bytes) (runs: 256, μ: 81288, ~: 107841) +ERC1155Test:testFuzzTotalSupplyAfterSingleMint(uint256,uint256,bytes) (runs: 256, μ: 79189, ~: 107838) ERC1155Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14036, ~: 14036) ERC1155Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 75645, ~: 75613) ERC1155Test:testHasOwner() (gas: 12677) -ERC1155Test:testInitialSetup() (gas: 2892404) +ERC1155Test:testInitialSetup() (gas: 2892439) ERC1155Test:testRenounceOwnershipNonOwner() (gas: 10875) ERC1155Test:testRenounceOwnershipSuccess() (gas: 22882) ERC1155Test:testSafeBatchTransferFromByApprovedOperator() (gas: 309595) @@ -253,12 +253,12 @@ ERC1155Test:testTotalSupplyBeforeMint() (gas: 10457) ERC1155Test:testTransferOwnershipNonOwner() (gas: 12426) ERC1155Test:testTransferOwnershipSuccess() (gas: 53809) ERC1155Test:testTransferOwnershipToZeroAddress() (gas: 15604) -ERC1155Test:testUriBaseAndTokenUriNotSet() (gas: 2851412) +ERC1155Test:testUriBaseAndTokenUriNotSet() (gas: 2851447) ERC1155Test:testUriBaseAndTokenUriSet() (gas: 64187) -ERC1155Test:testUriNoBaseURI() (gas: 2900815) +ERC1155Test:testUriNoBaseURI() (gas: 2900850) ERC1155Test:testUriNoTokenUri() (gas: 18805) -ERC20Invariants:statefulFuzzOwner() (runs: 256, calls: 3840, reverts: 3444) -ERC20Invariants:statefulFuzzTotalSupply() (runs: 256, calls: 3840, reverts: 3444) +ERC20Invariants:statefulFuzzOwner() (runs: 256, calls: 3840, reverts: 3442) +ERC20Invariants:statefulFuzzTotalSupply() (runs: 256, calls: 3840, reverts: 3442) ERC20Test:testApproveExceedingBalanceCase1() (gas: 40802) ERC20Test:testApproveExceedingBalanceCase2() (gas: 47789) ERC20Test:testApproveFromZeroAddress() (gas: 12962) @@ -281,28 +281,28 @@ ERC20Test:testCachedDomainSeparator() (gas: 10598) ERC20Test:testDomainSeparator() (gas: 11819) ERC20Test:testEIP712Domain() (gas: 18200) ERC20Test:testFuzzApproveSuccess(address,uint256) (runs: 256, μ: 41115, ~: 41193) -ERC20Test:testFuzzBurnFromInsufficientAllowance(address,uint256,uint8) (runs: 256, μ: 205964, ~: 205979) +ERC20Test:testFuzzBurnFromInsufficientAllowance(address,uint256,uint8) (runs: 256, μ: 205962, ~: 205979) ERC20Test:testFuzzBurnFromSuccess(address,uint256) (runs: 256, μ: 339788, ~: 339651) ERC20Test:testFuzzBurnInvalidAmount(address,uint256) (runs: 256, μ: 16394, ~: 16394) -ERC20Test:testFuzzBurnSuccessCase(uint256) (runs: 256, μ: 314363, ~: 314151) +ERC20Test:testFuzzBurnSuccessCase(uint256) (runs: 256, μ: 314363, ~: 314150) ERC20Test:testFuzzDomainSeparator(uint8) (runs: 256, μ: 12027, ~: 12055) ERC20Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 21697, ~: 21747) ERC20Test:testFuzzMintNonMinter(string,uint256) (runs: 256, μ: 12921, ~: 12914) -ERC20Test:testFuzzMintSuccess(string,uint256) (runs: 256, μ: 55411, ~: 56122) +ERC20Test:testFuzzMintSuccess(string,uint256) (runs: 256, μ: 55408, ~: 56074) ERC20Test:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 44560, ~: 44554) ERC20Test:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 70553, ~: 70554) ERC20Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13929, ~: 13929) -ERC20Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48634, ~: 48620) +ERC20Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48635, ~: 48620) ERC20Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15520, ~: 15521) ERC20Test:testFuzzSetMinterSuccess(string) (runs: 256, μ: 33569, ~: 33576) -ERC20Test:testFuzzTransferFromInsufficientAllowance(address,address,uint256,uint8) (runs: 256, μ: 204606, ~: 204593) -ERC20Test:testFuzzTransferFromSuccess(address,address,uint256) (runs: 256, μ: 233560, ~: 234137) +ERC20Test:testFuzzTransferFromInsufficientAllowance(address,address,uint256,uint8) (runs: 256, μ: 204605, ~: 204593) +ERC20Test:testFuzzTransferFromSuccess(address,address,uint256) (runs: 256, μ: 233564, ~: 234140) ERC20Test:testFuzzTransferInvalidAmount(address,address,uint256) (runs: 256, μ: 16752, ~: 16752) ERC20Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14040, ~: 14040) ERC20Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 75609, ~: 75577) ERC20Test:testFuzzTransferSuccess(address,uint256) (runs: 256, μ: 205509, ~: 205569) ERC20Test:testHasOwner() (gas: 12655) -ERC20Test:testInitialSetup() (gas: 1566549) +ERC20Test:testInitialSetup() (gas: 1566577) ERC20Test:testMintNonMinter() (gas: 12460) ERC20Test:testMintOverflow() (gas: 16783) ERC20Test:testMintSuccess() (gas: 51789) @@ -340,22 +340,22 @@ ERC2981Test:testDeleteDefaultRoyaltyNonOwner() (gas: 10668) ERC2981Test:testFuzzDeleteDefaultRoyaltyNonOwner(address) (runs: 256, μ: 13332, ~: 13332) ERC2981Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13901, ~: 13901) ERC2981Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 25199, ~: 25199) -ERC2981Test:testFuzzResetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 97467, ~: 97736) +ERC2981Test:testFuzzResetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 97455, ~: 97729) ERC2981Test:testFuzzResetTokenRoyaltyNonOwner(address) (runs: 256, μ: 13306, ~: 13306) -ERC2981Test:testFuzzRoyaltyInfoDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 80644, ~: 81179) -ERC2981Test:testFuzzRoyaltyInfoDeleteDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 65546, ~: 65921) -ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 122287, ~: 122718) -ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyaltyUpdate(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 168707, ~: 169293) -ERC2981Test:testFuzzRoyaltyInfoUpdateDefaultRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 88656, ~: 88931) +ERC2981Test:testFuzzRoyaltyInfoDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 80642, ~: 81179) +ERC2981Test:testFuzzRoyaltyInfoDeleteDefaultRoyalty(address,uint256,uint256,uint96,uint256) (runs: 256, μ: 65545, ~: 65918) +ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 122271, ~: 122718) +ERC2981Test:testFuzzRoyaltyInfoSetTokenRoyaltyUpdate(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 168691, ~: 169293) +ERC2981Test:testFuzzRoyaltyInfoUpdateDefaultRoyalty(address,address,uint256,uint256,uint96,uint256) (runs: 256, μ: 88640, ~: 88931) ERC2981Test:testFuzzSetDefaultRoyaltyNonOwner(address) (runs: 256, μ: 15608, ~: 15608) -ERC2981Test:testFuzzSetDefaultRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21077, ~: 20869) +ERC2981Test:testFuzzSetDefaultRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21083, ~: 20869) ERC2981Test:testFuzzSetTokenRoyaltyInvalidReceiver(address) (runs: 256, μ: 18664, ~: 18664) ERC2981Test:testFuzzSetTokenRoyaltyNonOwner(address) (runs: 256, μ: 15625, ~: 15625) -ERC2981Test:testFuzzSetTokenRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21095, ~: 20887) +ERC2981Test:testFuzzSetTokenRoyaltyTooHighFeeNumerator(uint96) (runs: 256, μ: 21101, ~: 20887) ERC2981Test:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14053, ~: 14053) ERC2981Test:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 30234, ~: 30234) ERC2981Test:testHasOwner() (gas: 12590) -ERC2981Test:testInitialSetup() (gas: 494325) +ERC2981Test:testInitialSetup() (gas: 494340) ERC2981Test:testRenounceOwnershipNonOwner() (gas: 10806) ERC2981Test:testRenounceOwnershipSuccess() (gas: 17989) ERC2981Test:testResetTokenRoyalty() (gas: 94236) @@ -391,13 +391,13 @@ ERC4626VaultTest:testEmptyVaultDeposit() (gas: 567200) ERC4626VaultTest:testEmptyVaultMint() (gas: 568085) ERC4626VaultTest:testEmptyVaultRedeem() (gas: 202461) ERC4626VaultTest:testEmptyVaultwithdraw() (gas: 215305) -ERC4626VaultTest:testFail_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 553396, ~: 556438) -ERC4626VaultTest:testFail_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 555199, ~: 557997) +ERC4626VaultTest:testFail_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 553512, ~: 556295) +ERC4626VaultTest:testFail_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 555345, ~: 557997) ERC4626VaultTest:testFuzzDomainSeparator(uint8) (runs: 256, μ: 11916, ~: 11944) ERC4626VaultTest:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 21719, ~: 21769) ERC4626VaultTest:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 44525, ~: 44519) ERC4626VaultTest:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 70460, ~: 70461) -ERC4626VaultTest:testInitialSetup() (gas: 5968117) +ERC4626VaultTest:testInitialSetup() (gas: 5968263) ERC4626VaultTest:testMintWithNoApproval() (gas: 24354) ERC4626VaultTest:testMintZero() (gas: 41192) ERC4626VaultTest:testMultipleMintDepositRedeemWithdraw() (gas: 376784) @@ -415,30 +415,30 @@ ERC4626VaultTest:testVaultInteractionsForSomeoneElse() (gas: 224104) ERC4626VaultTest:testWithdrawInsufficientAllowance() (gas: 122383) ERC4626VaultTest:testWithdrawInsufficientAssets() (gas: 117788) ERC4626VaultTest:testWithdrawWithNoAssets() (gas: 21277) -ERC4626VaultTest:test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472416, ~: 473172) -ERC4626VaultTest:test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474219, ~: 474400) -ERC4626VaultTest:test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472132, ~: 473262) -ERC4626VaultTest:test_RT_mint_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474048, ~: 474469) -ERC4626VaultTest:test_RT_redeem_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472576, ~: 473239) -ERC4626VaultTest:test_RT_redeem_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472679, ~: 473324) -ERC4626VaultTest:test_RT_withdraw_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473768, ~: 474423) -ERC4626VaultTest:test_RT_withdraw_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473853, ~: 474587) -ERC4626VaultTest:test_asset((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424201, ~: 426303) -ERC4626VaultTest:test_convertToAssets((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 428871, ~: 430540) -ERC4626VaultTest:test_convertToShares((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 428872, ~: 430554) -ERC4626VaultTest:test_deposit((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469792, ~: 471116) -ERC4626VaultTest:test_maxDeposit((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424195, ~: 426297) -ERC4626VaultTest:test_maxMint((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424238, ~: 426340) -ERC4626VaultTest:test_maxRedeem((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424335, ~: 426437) -ERC4626VaultTest:test_maxWithdraw((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 425785, ~: 427682) -ERC4626VaultTest:test_mint((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469826, ~: 471132) -ERC4626VaultTest:test_previewDeposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 464890, ~: 465772) -ERC4626VaultTest:test_previewMint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 464637, ~: 465952) -ERC4626VaultTest:test_previewRedeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 467005, ~: 467215) -ERC4626VaultTest:test_previewWithdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 467901, ~: 468540) -ERC4626VaultTest:test_redeem((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 472993, ~: 473825) -ERC4626VaultTest:test_totalAssets((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424784, ~: 426886) -ERC4626VaultTest:test_withdraw((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 474608, ~: 475018) +ERC4626VaultTest:test_RT_deposit_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472353, ~: 473172) +ERC4626VaultTest:test_RT_deposit_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 474151, ~: 474400) +ERC4626VaultTest:test_RT_mint_redeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 471768, ~: 473262) +ERC4626VaultTest:test_RT_mint_withdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473687, ~: 474472) +ERC4626VaultTest:test_RT_redeem_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472581, ~: 473262) +ERC4626VaultTest:test_RT_redeem_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 472685, ~: 473347) +ERC4626VaultTest:test_RT_withdraw_deposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473768, ~: 474420) +ERC4626VaultTest:test_RT_withdraw_mint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 473905, ~: 474544) +ERC4626VaultTest:test_asset((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424192, ~: 426300) +ERC4626VaultTest:test_convertToAssets((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 429062, ~: 430536) +ERC4626VaultTest:test_convertToShares((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 429073, ~: 430552) +ERC4626VaultTest:test_deposit((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469785, ~: 471113) +ERC4626VaultTest:test_maxDeposit((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424186, ~: 426295) +ERC4626VaultTest:test_maxMint((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424229, ~: 426337) +ERC4626VaultTest:test_maxRedeem((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424326, ~: 426435) +ERC4626VaultTest:test_maxWithdraw((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 425774, ~: 427682) +ERC4626VaultTest:test_mint((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 469844, ~: 471132) +ERC4626VaultTest:test_previewDeposit((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 464825, ~: 465772) +ERC4626VaultTest:test_previewMint((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 464335, ~: 465952) +ERC4626VaultTest:test_previewRedeem((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 467225, ~: 467214) +ERC4626VaultTest:test_previewWithdraw((address[4],uint256[4],uint256[4],int256),uint256) (runs: 256, μ: 468344, ~: 468540) +ERC4626VaultTest:test_redeem((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 472955, ~: 473823) +ERC4626VaultTest:test_totalAssets((address[4],uint256[4],uint256[4],int256)) (runs: 256, μ: 424775, ~: 426884) +ERC4626VaultTest:test_withdraw((address[4],uint256[4],uint256[4],int256),uint256,uint256) (runs: 256, μ: 474745, ~: 475016) ERC721Invariants:statefulFuzzOwner() (runs: 256, calls: 3840, reverts: 3483) ERC721Invariants:statefulFuzzTotalSupply() (runs: 256, calls: 3840, reverts: 3483) ERC721Test:testApproveClearingApprovalWithNoPriorApproval() (gas: 177097) @@ -468,14 +468,14 @@ ERC721Test:testFuzzApproveWithNoPriorApproval(address,address) (runs: 256, μ: 1 ERC721Test:testFuzzApproveWithPriorApproval(address,address) (runs: 256, μ: 204296, ~: 204306) ERC721Test:testFuzzBurnSuccess(address) (runs: 256, μ: 305341, ~: 305335) ERC721Test:testFuzzDomainSeparator(uint8) (runs: 256, μ: 12029, ~: 12056) -ERC721Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 21782, ~: 21834) +ERC721Test:testFuzzEIP712Domain(bytes1,uint8,bytes32,uint256[]) (runs: 256, μ: 21782, ~: 21820) ERC721Test:testFuzzGetApprovedApprovedTokenId(address,address) (runs: 256, μ: 194337, ~: 194347) ERC721Test:testFuzzPermitInvalid(string,string,uint16) (runs: 256, μ: 200560, ~: 200554) ERC721Test:testFuzzPermitSuccess(string,string,uint16) (runs: 256, μ: 227008, ~: 227009) ERC721Test:testFuzzRenounceOwnershipNonOwner(address) (runs: 256, μ: 13974, ~: 13974) ERC721Test:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 48629, ~: 48615) ERC721Test:testFuzzSafeMintNonMinter(address) (runs: 256, μ: 15677, ~: 15677) -ERC721Test:testFuzzSafeMintSuccess(address[]) (runs: 256, μ: 21205447, ~: 20959660) +ERC721Test:testFuzzSafeMintSuccess(address[]) (runs: 256, μ: 21747604, ~: 21481569) ERC721Test:testFuzzSafeTransferFromWithData(address,address,address,bytes) (runs: 256, μ: 1433791, ~: 1433893) ERC721Test:testFuzzSetApprovalForAllSuccess(address,address) (runs: 256, μ: 189156, ~: 189156) ERC721Test:testFuzzSetMinterNonOwner(address,string) (runs: 256, μ: 15520, ~: 15521) @@ -489,7 +489,7 @@ ERC721Test:testGetApprovedApprovedTokenId() (gas: 193886) ERC721Test:testGetApprovedInvalidTokenId() (gas: 11076) ERC721Test:testGetApprovedNotApprovedTokenId() (gas: 170325) ERC721Test:testHasOwner() (gas: 12626) -ERC721Test:testInitialSetup() (gas: 2512726) +ERC721Test:testInitialSetup() (gas: 2512760) ERC721Test:testOwnerOf() (gas: 166033) ERC721Test:testOwnerOfInvalidTokenId() (gas: 11009) ERC721Test:testPermitBadChainId() (gas: 199351) @@ -537,7 +537,7 @@ ERC721Test:testTokenOfOwnerByIndexReverts() (gas: 545656) ERC721Test:testTokenURIAfterBurning() (gas: 138536) ERC721Test:testTokenURIDefault() (gas: 168178) ERC721Test:testTokenURIInvalidTokenId() (gas: 13114) -ERC721Test:testTokenURINoBaseURI() (gas: 2632192) +ERC721Test:testTokenURINoBaseURI() (gas: 2632225) ERC721Test:testTokenURINoTokenUri() (gas: 125681) ERC721Test:testTotalSupply() (gas: 328172) ERC721Test:testTransferFrom() (gas: 574008) @@ -547,19 +547,19 @@ ERC721Test:testTransferOwnershipToZeroAddress() (gas: 15540) MathTest:testCbrtRoundDown() (gas: 51605) MathTest:testCbrtRoundUp() (gas: 52252) MathTest:testCeilDiv() (gas: 14716) -MathTest:testFuzzCbrt(uint256,bool) (runs: 256, μ: 22381, ~: 22302) +MathTest:testFuzzCbrt(uint256,bool) (runs: 256, μ: 22400, ~: 22336) MathTest:testFuzzCeilDiv(uint256,uint256) (runs: 256, μ: 9759, ~: 9760) MathTest:testFuzzInt256Average(int256,int256) (runs: 256, μ: 8533, ~: 8533) -MathTest:testFuzzLog10(uint256,bool) (runs: 256, μ: 10374, ~: 10347) +MathTest:testFuzzLog10(uint256,bool) (runs: 256, μ: 10375, ~: 10347) MathTest:testFuzzLog2(uint256,bool) (runs: 256, μ: 10134, ~: 10177) -MathTest:testFuzzLog256(uint256,bool) (runs: 256, μ: 10217, ~: 10139) +MathTest:testFuzzLog256(uint256,bool) (runs: 256, μ: 10220, ~: 10139) MathTest:testFuzzMulDiv(uint256,uint256,uint256) (runs: 256, μ: 14269, ~: 14059) MathTest:testFuzzMulDivDomain(uint256,uint256,uint256) (runs: 256, μ: 10847, ~: 10886) MathTest:testFuzzSignum(int256) (runs: 256, μ: 8483, ~: 8475) MathTest:testFuzzUint256Average(uint256,uint256) (runs: 256, μ: 8662, ~: 8662) -MathTest:testFuzzWadCbrt(uint256) (runs: 256, μ: 22266, ~: 21976) +MathTest:testFuzzWadCbrt(uint256) (runs: 256, μ: 22274, ~: 21981) MathTest:testFuzzWadExp(int256) (runs: 256, μ: 14698, ~: 15050) -MathTest:testFuzzWadLn(int256) (runs: 256, μ: 16343, ~: 16083) +MathTest:testFuzzWadLn(int256) (runs: 256, μ: 16342, ~: 16083) MathTest:testInt256Average() (gas: 18813) MathTest:testLog10RoundDown() (gas: 26172) MathTest:testLog10RoundUp() (gas: 27375) @@ -580,8 +580,8 @@ MathTest:testWadExp() (gas: 34284) MathTest:testWadExpOverflow() (gas: 11133) MathTest:testWadLn() (gas: 31203) MathTest:testWadLnNegativeValues() (gas: 11090) -MerkleProofVerificationTest:testFuzzMultiProofVerifySingleLeaf(bytes32[],uint256) (runs: 256, μ: 262416, ~: 274019) -MerkleProofVerificationTest:testFuzzVerify(bytes32[],uint256) (runs: 256, μ: 177002, ~: 186814) +MerkleProofVerificationTest:testFuzzMultiProofVerifySingleLeaf(bytes32[],uint256) (runs: 256, μ: 262415, ~: 273990) +MerkleProofVerificationTest:testFuzzVerify(bytes32[],uint256) (runs: 256, μ: 177000, ~: 186785) MerkleProofVerificationTest:testFuzzVerifyMultiProofMultipleLeaves(bool,bool,bool) (runs: 256, μ: 45519, ~: 45510) MerkleProofVerificationTest:testInvalidMerkleMultiProof() (gas: 46727) MerkleProofVerificationTest:testInvalidMerkleProof() (gas: 18786) @@ -622,7 +622,7 @@ Ownable2StepTest:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 45317 Ownable2StepTest:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 13989, ~: 13989) Ownable2StepTest:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 52111, ~: 52111) Ownable2StepTest:testHasOwner() (gas: 12524) -Ownable2StepTest:testInitialSetup() (gas: 241651) +Ownable2StepTest:testInitialSetup() (gas: 241666) Ownable2StepTest:testPendingOwnerResetAfterRenounceOwnership() (gas: 40753) Ownable2StepTest:testRenounceOwnershipNonOwner() (gas: 10831) Ownable2StepTest:testRenounceOwnershipSuccess() (gas: 20236) @@ -634,7 +634,7 @@ OwnableTest:testFuzzRenounceOwnershipSuccess(address) (runs: 256, μ: 25196, ~: OwnableTest:testFuzzTransferOwnershipNonOwner(address,address) (runs: 256, μ: 14031, ~: 14031) OwnableTest:testFuzzTransferOwnershipSuccess(address,address) (runs: 256, μ: 30209, ~: 30209) OwnableTest:testHasOwner() (gas: 12499) -OwnableTest:testInitialSetup() (gas: 212014) +OwnableTest:testInitialSetup() (gas: 212029) OwnableTest:testRenounceOwnershipNonOwner() (gas: 10805) OwnableTest:testRenounceOwnershipSuccess() (gas: 17942) OwnableTest:testTransferOwnershipNonOwner() (gas: 12287) @@ -666,13 +666,13 @@ SignatureCheckerTest:testFuzzEOAWithInvalidSignature(bytes,string) (runs: 256, SignatureCheckerTest:testFuzzEOAWithInvalidSigner(string,string) (runs: 256, μ: 20409, ~: 20410) SignatureCheckerTest:testFuzzEOAWithValidSignature(string,string) (runs: 256, μ: 20341, ~: 20342) SignatureCheckerTest:testInitialSetup() (gas: 8356) -TimelockControllerInvariants:statefulFuzzExecutedLessThanOrEqualToScheduled() (runs: 256, calls: 3840, reverts: 1318) -TimelockControllerInvariants:statefulFuzzExecutedProposalCancellation() (runs: 256, calls: 3840, reverts: 1271) -TimelockControllerInvariants:statefulFuzzExecutingCancelledProposal() (runs: 256, calls: 3840, reverts: 1202) -TimelockControllerInvariants:statefulFuzzExecutingNotReadyProposal() (runs: 256, calls: 3840, reverts: 1333) -TimelockControllerInvariants:statefulFuzzOnceProposalExecution() (runs: 256, calls: 3840, reverts: 1290) -TimelockControllerInvariants:statefulFuzzProposalsExecutedMatchCount() (runs: 256, calls: 3840, reverts: 1319) -TimelockControllerInvariants:statefulFuzzSumOfProposals() (runs: 256, calls: 3840, reverts: 1319) +TimelockControllerInvariants:statefulFuzzExecutedLessThanOrEqualToScheduled() (runs: 256, calls: 3840, reverts: 1310) +TimelockControllerInvariants:statefulFuzzExecutedProposalCancellation() (runs: 256, calls: 3840, reverts: 1274) +TimelockControllerInvariants:statefulFuzzExecutingCancelledProposal() (runs: 256, calls: 3840, reverts: 1188) +TimelockControllerInvariants:statefulFuzzExecutingNotReadyProposal() (runs: 256, calls: 3840, reverts: 1276) +TimelockControllerInvariants:statefulFuzzOnceProposalExecution() (runs: 256, calls: 3840, reverts: 1266) +TimelockControllerInvariants:statefulFuzzProposalsExecutedMatchCount() (runs: 256, calls: 3840, reverts: 1310) +TimelockControllerInvariants:statefulFuzzSumOfProposals() (runs: 256, calls: 3840, reverts: 1311) TimelockControllerTest:testAdminCannotBatchExecute() (gas: 750632) TimelockControllerTest:testAdminCannotBatchSchedule() (gas: 748419) TimelockControllerTest:testAdminCannotCancel() (gas: 13369) @@ -710,15 +710,15 @@ TimelockControllerTest:testExecutorCanExecute() (gas: 29459) TimelockControllerTest:testExecutorCannotBatchSchedule() (gas: 1485514) TimelockControllerTest:testExecutorCannotCancel() (gas: 15459) TimelockControllerTest:testExecutorCannotSchedule() (gas: 19124) -TimelockControllerTest:testFuzzBatchValue(uint256) (runs: 256, μ: 4650531, ~: 4650340) +TimelockControllerTest:testFuzzBatchValue(uint256) (runs: 256, μ: 4650528, ~: 4650340) TimelockControllerTest:testFuzzHashOperation(address,uint256,bytes,bytes32,bytes32) (runs: 256, μ: 10601, ~: 10581) TimelockControllerTest:testFuzzHashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32) (runs: 256, μ: 1826836, ~: 1817245) -TimelockControllerTest:testFuzzOperationValue(uint256) (runs: 256, μ: 111585, ~: 111394) -TimelockControllerTest:testHandleERC1155() (gas: 41560092) -TimelockControllerTest:testHandleERC721() (gas: 7160444) +TimelockControllerTest:testFuzzOperationValue(uint256) (runs: 256, μ: 111582, ~: 111394) +TimelockControllerTest:testHandleERC1155() (gas: 41560127) +TimelockControllerTest:testHandleERC721() (gas: 7160478) TimelockControllerTest:testHashOperation() (gas: 12365) TimelockControllerTest:testHashOperationBatch() (gas: 1525338) -TimelockControllerTest:testInitialSetup() (gas: 4325063) +TimelockControllerTest:testInitialSetup() (gas: 4325125) TimelockControllerTest:testInvalidOperation() (gas: 10716) TimelockControllerTest:testOperationAlreadyScheduled() (gas: 51483) TimelockControllerTest:testOperationCancelFinished() (gas: 99491) diff --git a/.github/workflows/halmos.yml b/.github/workflows/halmos.yml index 68fc4078..e5ba8a1d 100644 --- a/.github/workflows/halmos.yml +++ b/.github/workflows/halmos.yml @@ -36,7 +36,7 @@ jobs: architecture: ${{ matrix.architecture }} - name: Install Vyper - run: pip install vyper + run: pip install git+https://github.com/vyperlang/vyper@master - name: Show the Vyper version run: vyper --version diff --git a/.github/workflows/test-contracts.yml b/.github/workflows/test-contracts.yml index 1e245fec..04693526 100644 --- a/.github/workflows/test-contracts.yml +++ b/.github/workflows/test-contracts.yml @@ -34,6 +34,12 @@ jobs: python-version: ${{ matrix.python_version }} architecture: ${{ matrix.architecture }} + - name: Install Vyper + run: pip install git+https://github.com/vyperlang/vyper@master + + - name: Show the Vyper version + run: vyper --version + - name: Setup Ape uses: ApeWorX/github-action@v3 with: @@ -42,12 +48,6 @@ jobs: - name: Check Ape compilation run: ape compile - - name: Remove Ape Vyper and install latest Vyper - run: pip install --force-reinstall vyper - - - name: Show the Vyper version - run: vyper --version - - name: Install pnpm uses: pnpm/action-setup@v3 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index f0b711ba..8b65dcee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,15 +5,28 @@ ### ♻️ Refactoring - **Authentication** - - [`access_control`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/auth/access_control.vy): Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - [`ownable`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/auth/ownable.vy): Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) + - [`ownable_2step`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/auth/ownable_2step.vy): Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) + - [`access_control`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/auth/access_control.vy): + - Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) - **Extensions** - [`erc2981`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/extensions/erc2981.vy): - Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) - Remove unnecessary `denominator` variable declaration. ([#267](https://github.com/pcaversaccio/snekmate/pull/267)) + - [`erc4626`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/extensions/erc4626.vy): Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) +- **Governance** + - [`timelock_controller`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/governance/timelock_controller.vy): Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) - **Tokens** - - [`erc20`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc20.vy): Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) - - [`erc721`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc721.vy): Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) - - [`erc1155`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc1155.vy): Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - [`erc20`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc20.vy): + - Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) + - [`erc721`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc721.vy): + - Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) + - [`erc1155`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/tokens/erc1155.vy): + - Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) + - Use keyword arguments for event instantiation. ([#280](https://github.com/pcaversaccio/snekmate/pull/280)) - **Utility Functions** - [`eip712_domain_separator`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/utils/eip712_domain_separator.vy): Use relative `interfaces` `import`s. ([#263](https://github.com/pcaversaccio/snekmate/pull/263)) - [`math`](https://github.com/pcaversaccio/snekmate/blob/v0.1.1/src/snekmate/utils/math.vy): Use mutable `internal` function parameters. ([#267](https://github.com/pcaversaccio/snekmate/pull/267)) diff --git a/src/snekmate/auth/access_control.vy b/src/snekmate/auth/access_control.vy index ebbcb444..e6467380 100644 --- a/src/snekmate/auth/access_control.vy +++ b/src/snekmate/auth/access_control.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Multi-Role-Based Access Control Functions @custom:contract-name access_control @@ -210,7 +210,7 @@ def _set_role_admin(role: bytes32, admin_role: bytes32): """ previous_admin_role: bytes32 = self.getRoleAdmin[role] self.getRoleAdmin[role] = admin_role - log IAccessControl.RoleAdminChanged(role, previous_admin_role, admin_role) + log IAccessControl.RoleAdminChanged(role=role, previousAdminRole=previous_admin_role, newAdminRole=admin_role) @internal @@ -224,7 +224,7 @@ def _grant_role(role: bytes32, account: address): """ if (not(self.hasRole[role][account])): self.hasRole[role][account] = True - log IAccessControl.RoleGranted(role, account, msg.sender) + log IAccessControl.RoleGranted(role=role, account=account, sender=msg.sender) @internal @@ -238,4 +238,4 @@ def _revoke_role(role: bytes32, account: address): """ if (self.hasRole[role][account]): self.hasRole[role][account] = False - log IAccessControl.RoleRevoked(role, account, msg.sender) + log IAccessControl.RoleRevoked(role=role, account=account, sender=msg.sender) diff --git a/src/snekmate/auth/interfaces/IAccessControl.vyi b/src/snekmate/auth/interfaces/IAccessControl.vyi index af8b48d1..0043175c 100644 --- a/src/snekmate/auth/interfaces/IAccessControl.vyi +++ b/src/snekmate/auth/interfaces/IAccessControl.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `access_control` Interface Definition @custom:contract-name IAccessControl diff --git a/src/snekmate/auth/mocks/access_control_mock.vy b/src/snekmate/auth/mocks/access_control_mock.vy index 44e5cebb..e1bdba9d 100644 --- a/src/snekmate/auth/mocks/access_control_mock.vy +++ b/src/snekmate/auth/mocks/access_control_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `access_control` Module Reference Implementation @custom:contract-name access_control_mock diff --git a/src/snekmate/auth/mocks/ownable_2step_mock.vy b/src/snekmate/auth/mocks/ownable_2step_mock.vy index 736364e8..47a85e87 100644 --- a/src/snekmate/auth/mocks/ownable_2step_mock.vy +++ b/src/snekmate/auth/mocks/ownable_2step_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `ownable_2step` Module Reference Implementation @custom:contract-name ownable_2step_mock diff --git a/src/snekmate/auth/mocks/ownable_mock.vy b/src/snekmate/auth/mocks/ownable_mock.vy index 2baae010..c15a82f3 100644 --- a/src/snekmate/auth/mocks/ownable_mock.vy +++ b/src/snekmate/auth/mocks/ownable_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `ownable` Module Reference Implementation @custom:contract-name ownable_mock diff --git a/src/snekmate/auth/ownable.vy b/src/snekmate/auth/ownable.vy index c4f118cb..1c97c244 100644 --- a/src/snekmate/auth/ownable.vy +++ b/src/snekmate/auth/ownable.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Owner-Based Access Control Functions @custom:contract-name ownable @@ -90,4 +90,4 @@ def _transfer_ownership(new_owner: address): """ old_owner: address = self.owner self.owner = new_owner - log OwnershipTransferred(old_owner, new_owner) + log OwnershipTransferred(previous_owner=old_owner, new_owner=new_owner) diff --git a/src/snekmate/auth/ownable_2step.vy b/src/snekmate/auth/ownable_2step.vy index da514395..83e570d0 100644 --- a/src/snekmate/auth/ownable_2step.vy +++ b/src/snekmate/auth/ownable_2step.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title 2-Step Ownership Transfer Functions @custom:contract-name ownable_2step @@ -83,7 +83,7 @@ def transfer_ownership(new_owner: address): """ ownable._check_owner() self.pending_owner = new_owner - log OwnershipTransferStarted(ownable.owner, new_owner) + log OwnershipTransferStarted(previous_owner=ownable.owner, new_owner=new_owner) @external diff --git a/src/snekmate/extensions/erc2981.vy b/src/snekmate/extensions/erc2981.vy index bea33bfd..9f5551e7 100644 --- a/src/snekmate/extensions/erc2981.vy +++ b/src/snekmate/extensions/erc2981.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title ERC-721 and ERC-1155 Compatible ERC-2981 Reference Implementation @custom:contract-name erc2981 diff --git a/src/snekmate/extensions/erc4626.vy b/src/snekmate/extensions/erc4626.vy index 88db11a1..f24330ef 100644 --- a/src/snekmate/extensions/erc4626.vy +++ b/src/snekmate/extensions/erc4626.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Modern and Gas-Efficient ERC-4626 Tokenised Vault Implementation @custom:contract-name erc4626 @@ -658,7 +658,7 @@ def _deposit(sender: address, receiver: address, assets: uint256, shares: uint25 # the target address is an EOA), the call reverts. assert extcall _ASSET.transferFrom(sender, self, assets, default_return_value=True), "erc4626: transferFrom operation did not succeed" erc20._mint(receiver, shares) - log IERC4626.Deposit(sender, receiver, assets, shares) + log IERC4626.Deposit(sender=sender, owner=receiver, assets=assets, shares=shares) @internal @@ -697,4 +697,4 @@ def _withdraw(sender: address, receiver: address, owner: address, assets: uint25 # you add the kwarg `skip_contract_check=True`. If the check fails (i.e. # the target address is an EOA), the call reverts. assert extcall _ASSET.transfer(receiver, assets, default_return_value=True), "erc4626: transfer operation did not succeed" - log IERC4626.Withdraw(sender, receiver, owner, assets, shares) + log IERC4626.Withdraw(sender=sender, receiver=receiver, owner=owner, assets=assets, shares=shares) diff --git a/src/snekmate/extensions/interfaces/IERC2981.vyi b/src/snekmate/extensions/interfaces/IERC2981.vyi index a2bb26a0..1e02ae63 100644 --- a/src/snekmate/extensions/interfaces/IERC2981.vyi +++ b/src/snekmate/extensions/interfaces/IERC2981.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-2981 Interface Definition @custom:contract-name IERC2981 diff --git a/src/snekmate/extensions/mocks/erc2981_mock.vy b/src/snekmate/extensions/mocks/erc2981_mock.vy index 823a76e8..71bc390b 100644 --- a/src/snekmate/extensions/mocks/erc2981_mock.vy +++ b/src/snekmate/extensions/mocks/erc2981_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `erc2981` Module Reference Implementation @custom:contract-name erc2981_mock diff --git a/src/snekmate/extensions/mocks/erc4626_mock.vy b/src/snekmate/extensions/mocks/erc4626_mock.vy index 6d2a7874..28ee55e2 100644 --- a/src/snekmate/extensions/mocks/erc4626_mock.vy +++ b/src/snekmate/extensions/mocks/erc4626_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `erc4626` Module Reference Implementation @custom:contract-name erc4626_mock diff --git a/src/snekmate/governance/mocks/timelock_controller_mock.vy b/src/snekmate/governance/mocks/timelock_controller_mock.vy index 755af3e3..dbcafabb 100644 --- a/src/snekmate/governance/mocks/timelock_controller_mock.vy +++ b/src/snekmate/governance/mocks/timelock_controller_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `timelock_controller` Module Reference Implementation @custom:contract-name timelock_controller_mock diff --git a/src/snekmate/governance/timelock_controller.vy b/src/snekmate/governance/timelock_controller.vy index ffb62476..7a11906c 100644 --- a/src/snekmate/governance/timelock_controller.vy +++ b/src/snekmate/governance/timelock_controller.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Multi-Role-Based Timelock Controller Reference Implementation @custom:contract-name timelock_controller @@ -275,7 +275,7 @@ def __init__(minimum_delay_: uint256, proposers_: DynArray[address, _DYNARRAY_BO # Set the minimum delay. self.get_minimum_delay = minimum_delay_ - log MinimumDelayChange(empty(uint256), minimum_delay_) + log MinimumDelayChange(old_duration=empty(uint256), new_duration=minimum_delay_) @external @@ -425,9 +425,9 @@ def schedule(target: address, amount: uint256, payload: Bytes[1_024], predecesso id: bytes32 = self._hash_operation(target, amount, payload, predecessor, salt) self._schedule(id, delay) - log CallScheduled(id, empty(uint256), target, amount, payload, predecessor, delay) + log CallScheduled(id=id, index=empty(uint256), target=target, amount=amount, payload=payload, predecessor=predecessor, delay=delay) if (salt != empty(bytes32)): - log CallSalt(id, salt) + log CallSalt(id=id, salt=salt) @external @@ -456,14 +456,14 @@ def schedule_batch(targets: DynArray[address, _DYNARRAY_BOUND], amounts: DynArra self._schedule(id, delay) idx: uint256 = empty(uint256) for target: address in targets: - log CallScheduled(id, idx, target, amounts[idx], payloads[idx], predecessor, delay) + log CallScheduled(id=id, index=idx, target=target, amount=amounts[idx], payload=payloads[idx], predecessor=predecessor, delay=delay) # The following line cannot overflow because we have # limited the dynamic array `targets` by the `constant` # parameter `_DYNARRAY_BOUND`, which is bounded by the # maximum value of `uint8`. idx = unsafe_add(idx, 1) if (salt != empty(bytes32)): - log CallSalt(id, salt) + log CallSalt(id=id, salt=salt) @external @@ -476,7 +476,7 @@ def cancel(id: bytes32): access_control._check_role(CANCELLER_ROLE, msg.sender) assert self._is_operation_pending(id), "timelock_controller: operation cannot be cancelled" self.get_timestamp[id] = empty(uint256) - log Cancelled(id) + log Cancelled(id=id) @external @@ -503,7 +503,7 @@ def execute(target: address, amount: uint256, payload: Bytes[1_024], predecessor self._before_call(id, predecessor) self._execute(target, amount, payload) - log CallExecuted(id, empty(uint256), target, amount, payload) + log CallExecuted(id=id, index=empty(uint256), target=target, amount=amount, payload=payload) self._after_call(id) @@ -536,7 +536,7 @@ def execute_batch(targets: DynArray[address, _DYNARRAY_BOUND], amounts: DynArray idx: uint256 = empty(uint256) for target: address in targets: self._execute(target, amounts[idx], payloads[idx]) - log CallExecuted(id, idx, target, amounts[idx], payloads[idx]) + log CallExecuted(id=id, index=idx, target=target, amount=amounts[idx], payload=payloads[idx]) # The following line cannot overflow because we have # limited the dynamic array `targets` by the `constant` # parameter `_DYNARRAY_BOUND`, which is bounded by the @@ -558,7 +558,7 @@ def update_delay(new_delay: uint256): @param new_delay The new 32-byte minimum delay in seconds. """ assert msg.sender == self, "timelock_controller: caller must be timelock" - log MinimumDelayChange(self.get_minimum_delay, new_delay) + log MinimumDelayChange(old_duration=self.get_minimum_delay, new_duration=new_delay) self.get_minimum_delay = new_delay diff --git a/src/snekmate/tokens/erc1155.vy b/src/snekmate/tokens/erc1155.vy index 76dfd3ba..2990e371 100644 --- a/src/snekmate/tokens/erc1155.vy +++ b/src/snekmate/tokens/erc1155.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Modern and Gas-Efficient ERC-1155 Implementation @custom:contract-name erc1155 @@ -156,7 +156,7 @@ def __init__(base_uri_: String[80]): _BASE_URI = base_uri_ self.is_minter[msg.sender] = True - log RoleMinterChanged(msg.sender, True) + log RoleMinterChanged(minter=msg.sender, status=True) @external @@ -419,7 +419,7 @@ def set_minter(minter: address, status: bool): # that `msg.sender` is the `owner`. assert minter != msg.sender, "erc1155: minter is owner address" self.is_minter[minter] = status - log RoleMinterChanged(minter, status) + log RoleMinterChanged(minter=minter, status=status) @external @@ -440,11 +440,11 @@ def transfer_ownership(new_owner: address): assert new_owner != empty(address), "erc1155: new owner is the zero address" self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(new_owner) self.is_minter[new_owner] = True - log RoleMinterChanged(new_owner, True) + log RoleMinterChanged(minter=new_owner, status=True) @external @@ -466,7 +466,7 @@ def renounce_ownership(): """ ownable._check_owner() self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(empty(address)) @@ -482,7 +482,7 @@ def _set_approval_for_all(owner: address, operator: address, approved: bool): """ assert owner != operator, "erc1155: setting approval status for self" self.isApprovedForAll[owner][operator] = approved - log IERC1155.ApprovalForAll(owner, operator, approved) + log IERC1155.ApprovalForAll(_owner=owner, _operator=operator, _approved=approved) @internal @@ -522,7 +522,7 @@ def _safe_transfer_from(owner: address, to: address, id: uint256, amount: uint25 # due to an arithmetic check of the entire token # supply in the functions `_safe_mint` and `_safe_mint_batch`. self.balanceOf[to][id] = unsafe_add(self.balanceOf[to][id], amount) - log IERC1155.TransferSingle(msg.sender, owner, to, id, amount) + log IERC1155.TransferSingle(_operator=msg.sender, _from=owner, _to=to, _id=id, _value=amount) self._after_token_transfer(owner, to, self._as_singleton_array(id), self._as_singleton_array(amount), data) @@ -578,7 +578,7 @@ def _safe_batch_transfer_from(owner: address, to: address, ids: DynArray[uint256 # maximum value of `uint16`. idx = unsafe_add(idx, 1) - log IERC1155.TransferBatch(msg.sender, owner, to, ids, amounts) + log IERC1155.TransferBatch(_operator=msg.sender, _from=owner, _to=to, _ids=ids, _values=amounts) self._after_token_transfer(owner, to, ids, amounts, data) @@ -617,7 +617,7 @@ def _safe_mint(owner: address, id: uint256, amount: uint256, data: Bytes[1_024]) # due to an arithmetic check of the entire token # supply in the function `_before_token_transfer`. self.balanceOf[owner][id] = unsafe_add(self.balanceOf[owner][id], amount) - log IERC1155.TransferSingle(msg.sender, empty(address), owner, id, amount) + log IERC1155.TransferSingle(_operator=msg.sender, _from=empty(address), _to=owner, _id=id, _value=amount) self._after_token_transfer(empty(address), owner, self._as_singleton_array(id), self._as_singleton_array(amount), data) @@ -667,7 +667,7 @@ def _safe_mint_batch(owner: address, ids: DynArray[uint256, _BATCH_SIZE], amount # maximum value of `uint16`. idx = unsafe_add(idx, 1) - log IERC1155.TransferBatch(msg.sender, empty(address), owner, ids, amounts) + log IERC1155.TransferBatch(_operator=msg.sender, _from=empty(address), _to=owner, _ids=ids, _values=amounts) self._after_token_transfer(empty(address), owner, ids, amounts, data) @@ -728,7 +728,7 @@ def _set_uri(id: uint256, token_uri: String[432]): string URI for computing `uri`. """ self._token_uris[id] = token_uri - log IERC1155.URI(self._uri(id), id) + log IERC1155.URI(_value=self._uri(id), _id=id) @internal @@ -750,7 +750,7 @@ def _burn(owner: address, id: uint256, amount: uint256): owner_balance: uint256 = self.balanceOf[owner][id] assert owner_balance >= amount, "erc1155: burn amount exceeds balance" self.balanceOf[owner][id] = unsafe_sub(owner_balance, amount) - log IERC1155.TransferSingle(msg.sender, owner, empty(address), id, amount) + log IERC1155.TransferSingle(_operator=msg.sender, _from=owner, _to=empty(address), _id=id, _value=amount) self._after_token_transfer(owner, empty(address), self._as_singleton_array(id), self._as_singleton_array(amount), b"") @@ -786,7 +786,7 @@ def _burn_batch(owner: address, ids: DynArray[uint256, _BATCH_SIZE], amounts: Dy # maximum value of `uint16`. idx = unsafe_add(idx, 1) - log IERC1155.TransferBatch(msg.sender, owner, empty(address), ids, amounts) + log IERC1155.TransferBatch(_operator=msg.sender, _from=owner, _to=empty(address), _ids=ids, _values=amounts) self._after_token_transfer(owner, empty(address), ids, amounts, b"") diff --git a/src/snekmate/tokens/erc20.vy b/src/snekmate/tokens/erc20.vy index 37e0f231..8019575e 100644 --- a/src/snekmate/tokens/erc20.vy +++ b/src/snekmate/tokens/erc20.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Modern and Gas-Efficient ERC-20 + EIP-2612 Implementation @custom:contract-name erc20 @@ -202,7 +202,7 @@ def __init__(name_: String[25], symbol_: String[5], decimals_: uint8, name_eip71 decimals = decimals_ self.is_minter[msg.sender] = True - log RoleMinterChanged(msg.sender, True) + log RoleMinterChanged(minter=msg.sender, status=True) eip712_domain_separator.__init__(name_eip712_, version_eip712_) @@ -339,7 +339,7 @@ def set_minter(minter: address, status: bool): # that `msg.sender` is the `owner`. assert minter != msg.sender, "erc20: minter is owner address" self.is_minter[minter] = status - log RoleMinterChanged(minter, status) + log RoleMinterChanged(minter=minter, status=status) @external @@ -406,11 +406,11 @@ def transfer_ownership(new_owner: address): assert new_owner != empty(address), "erc20: new owner is the zero address" self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(new_owner) self.is_minter[new_owner] = True - log RoleMinterChanged(new_owner, True) + log RoleMinterChanged(minter=new_owner, status=True) @external @@ -432,7 +432,7 @@ def renounce_ownership(): """ ownable._check_owner() self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(empty(address)) @@ -457,7 +457,7 @@ def _transfer(owner: address, to: address, amount: uint256): assert owner_balanceOf >= amount, "erc20: transfer amount exceeds balance" self.balanceOf[owner] = unsafe_sub(owner_balanceOf, amount) self.balanceOf[to] = unsafe_add(self.balanceOf[to], amount) - log IERC20.Transfer(owner, to, amount) + log IERC20.Transfer(sender=owner, receiver=to, value=amount) self._after_token_transfer(owner, to, amount) @@ -480,7 +480,7 @@ def _mint(owner: address, amount: uint256): self.totalSupply += amount self.balanceOf[owner] = unsafe_add(self.balanceOf[owner], amount) - log IERC20.Transfer(empty(address), owner, amount) + log IERC20.Transfer(sender=empty(address), receiver=owner, value=amount) self._after_token_transfer(empty(address), owner, amount) @@ -504,7 +504,7 @@ def _burn(owner: address, amount: uint256): assert account_balance >= amount, "erc20: burn amount exceeds balance" self.balanceOf[owner] = unsafe_sub(account_balance, amount) self.totalSupply = unsafe_sub(self.totalSupply, amount) - log IERC20.Transfer(owner, empty(address), amount) + log IERC20.Transfer(sender=owner, receiver=empty(address), value=amount) self._after_token_transfer(owner, empty(address), amount) @@ -525,7 +525,7 @@ def _approve(owner: address, spender: address, amount: uint256): assert spender != empty(address), "erc20: approve to the zero address" self.allowance[owner][spender] = amount - log IERC20.Approval(owner, spender, amount) + log IERC20.Approval(owner=owner, spender=spender, value=amount) @internal diff --git a/src/snekmate/tokens/erc721.vy b/src/snekmate/tokens/erc721.vy index 9899930e..2d46536a 100644 --- a/src/snekmate/tokens/erc721.vy +++ b/src/snekmate/tokens/erc721.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Modern and Gas-Efficient ERC-721 + EIP-4494 Implementation @custom:contract-name erc721 @@ -274,7 +274,7 @@ def __init__(name_: String[25], symbol_: String[5], base_uri_: String[80], name_ _BASE_URI = base_uri_ self.is_minter[msg.sender] = True - log RoleMinterChanged(msg.sender, True) + log RoleMinterChanged(minter=msg.sender, status=True) eip712_domain_separator.__init__(name_eip712_, version_eip712_) @@ -405,7 +405,7 @@ def transferFrom(owner: address, to: address, token_id: uint256): @external @payable -def safeTransferFrom(owner: address, to: address, token_id: uint256, data: Bytes[1_024]=b""): +def safeTransferFrom(owner: address, to: address, token_id: uint256, data: Bytes[1_024] = b""): """ @dev Safely transfers `token_id` token from `owner` to `to`. @@ -426,7 +426,8 @@ def safeTransferFrom(owner: address, to: address, token_id: uint256, data: Bytes compatible with the function overloading of `safeTransferFrom` in the standard ERC-721 interface. You can find more information here: - https://github.com/vyperlang/vyper/issues/903. + - https://github.com/vyperlang/vyper/issues/903, + - https://github.com/vyperlang/vyper/pull/987. IMPORTANT: The function is declared as `payable` to comply with the EIP-721 standard definition: @@ -581,7 +582,7 @@ def set_minter(minter: address, status: bool): # that `msg.sender` is the `owner`. assert minter != msg.sender, "erc721: minter is owner address" self.is_minter[minter] = status - log RoleMinterChanged(minter, status) + log RoleMinterChanged(minter=minter, status=status) @external @@ -646,11 +647,11 @@ def transfer_ownership(new_owner: address): assert new_owner != empty(address), "erc721: new owner is the zero address" self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(new_owner) self.is_minter[new_owner] = True - log RoleMinterChanged(new_owner, True) + log RoleMinterChanged(minter=new_owner, status=True) @external @@ -672,7 +673,7 @@ def renounce_ownership(): """ ownable._check_owner() self.is_minter[msg.sender] = False - log RoleMinterChanged(msg.sender, False) + log RoleMinterChanged(minter=msg.sender, status=False) ownable._transfer_ownership(empty(address)) @@ -740,7 +741,7 @@ def _approve(to: address, token_id: uint256): @param token_id The 32-byte identifier of the token. """ self._token_approvals[token_id] = to - log IERC721.Approval(self._owner_of(token_id), to, token_id) + log IERC721.Approval(owner=self._owner_of(token_id), approved=to, token_id=token_id) @internal @@ -768,7 +769,7 @@ def _set_approval_for_all(owner: address, operator: address, approved: bool): """ assert owner != operator, "erc721: approve to caller" self.isApprovedForAll[owner][operator] = approved - log IERC721.ApprovalForAll(owner, operator, approved) + log IERC721.ApprovalForAll(owner=owner, operator=operator, approved=approved) @internal @@ -837,7 +838,7 @@ def _mint(owner: address, token_id: uint256): # this is no longer even theoretically possible. self._balances[owner] = unsafe_add(self._balances[owner], 1) self._owners[token_id] = owner - log IERC721.Transfer(empty(address), owner, token_id) + log IERC721.Transfer(sender=empty(address), receiver=owner, token_id=token_id) self._after_token_transfer(empty(address), owner, token_id) @@ -905,7 +906,7 @@ def _transfer(owner: address, to: address, token_id: uint256): self._balances[owner] = unsafe_sub(self._balances[owner], 1) self._balances[to] = unsafe_add(self._balances[to], 1) self._owners[token_id] = to - log IERC721.Transfer(owner, to, token_id) + log IERC721.Transfer(sender=owner, receiver=to, token_id=token_id) self._after_token_transfer(owner, to, token_id) @@ -921,7 +922,7 @@ def _set_token_uri(token_id: uint256, token_uri: String[432]): """ assert self._exists(token_id), "erc721: URI set of nonexistent token" self._token_uris[token_id] = token_uri - log IERC4906.MetadataUpdate(token_id) + log IERC4906.MetadataUpdate(_tokenId=token_id) @internal @@ -958,7 +959,7 @@ def _burn(token_id: uint256): # received through minting and transfer. self._balances[owner] = unsafe_sub(self._balances[owner], 1) self._owners[token_id] = empty(address) - log IERC721.Transfer(owner, empty(address), token_id) + log IERC721.Transfer(sender=owner, receiver=empty(address), token_id=token_id) self._after_token_transfer(owner, empty(address), token_id) diff --git a/src/snekmate/tokens/interfaces/IERC1155.vyi b/src/snekmate/tokens/interfaces/IERC1155.vyi index ca5ee5c3..a8e99f67 100644 --- a/src/snekmate/tokens/interfaces/IERC1155.vyi +++ b/src/snekmate/tokens/interfaces/IERC1155.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-1155 Interface Definition @custom:contract-name IERC1155 diff --git a/src/snekmate/tokens/interfaces/IERC1155MetadataURI.vyi b/src/snekmate/tokens/interfaces/IERC1155MetadataURI.vyi index d9caa180..92e11904 100644 --- a/src/snekmate/tokens/interfaces/IERC1155MetadataURI.vyi +++ b/src/snekmate/tokens/interfaces/IERC1155MetadataURI.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-1155 Optional Metadata Interface Definition @custom:contract-name IERC1155MetadataURI diff --git a/src/snekmate/tokens/interfaces/IERC1155Receiver.vyi b/src/snekmate/tokens/interfaces/IERC1155Receiver.vyi index 4a65824f..251e66c9 100644 --- a/src/snekmate/tokens/interfaces/IERC1155Receiver.vyi +++ b/src/snekmate/tokens/interfaces/IERC1155Receiver.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-1155 Token Receiver Interface Definition @custom:contract-name IERC1155Receiver diff --git a/src/snekmate/tokens/interfaces/IERC20Permit.vyi b/src/snekmate/tokens/interfaces/IERC20Permit.vyi index 24cce558..4af7fd88 100644 --- a/src/snekmate/tokens/interfaces/IERC20Permit.vyi +++ b/src/snekmate/tokens/interfaces/IERC20Permit.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-2612 Interface Definition @custom:contract-name IERC20Permit diff --git a/src/snekmate/tokens/interfaces/IERC4906.vyi b/src/snekmate/tokens/interfaces/IERC4906.vyi index 826662e0..a3c14eb2 100644 --- a/src/snekmate/tokens/interfaces/IERC4906.vyi +++ b/src/snekmate/tokens/interfaces/IERC4906.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-4906 Interface Definition @custom:contract-name IERC4906 diff --git a/src/snekmate/tokens/interfaces/IERC721Enumerable.vyi b/src/snekmate/tokens/interfaces/IERC721Enumerable.vyi index 9ffb27be..5c094db5 100644 --- a/src/snekmate/tokens/interfaces/IERC721Enumerable.vyi +++ b/src/snekmate/tokens/interfaces/IERC721Enumerable.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-721 Optional Enumeration Interface Definition @custom:contract-name IERC721Enumerable diff --git a/src/snekmate/tokens/interfaces/IERC721Metadata.vyi b/src/snekmate/tokens/interfaces/IERC721Metadata.vyi index 2abf6b9e..ae1a7e72 100644 --- a/src/snekmate/tokens/interfaces/IERC721Metadata.vyi +++ b/src/snekmate/tokens/interfaces/IERC721Metadata.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-721 Optional Metadata Interface Definition @custom:contract-name IERC721Metadata diff --git a/src/snekmate/tokens/interfaces/IERC721Permit.vyi b/src/snekmate/tokens/interfaces/IERC721Permit.vyi index 2d0695b5..63cc0469 100644 --- a/src/snekmate/tokens/interfaces/IERC721Permit.vyi +++ b/src/snekmate/tokens/interfaces/IERC721Permit.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-4494 Interface Definition @custom:contract-name IERC721Permit diff --git a/src/snekmate/tokens/interfaces/IERC721Receiver.vyi b/src/snekmate/tokens/interfaces/IERC721Receiver.vyi index b6e92c68..db892b56 100644 --- a/src/snekmate/tokens/interfaces/IERC721Receiver.vyi +++ b/src/snekmate/tokens/interfaces/IERC721Receiver.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-721 Token Receiver Interface Definition @custom:contract-name IERC721Receiver diff --git a/src/snekmate/tokens/mocks/erc1155_mock.vy b/src/snekmate/tokens/mocks/erc1155_mock.vy index be684743..460070d3 100644 --- a/src/snekmate/tokens/mocks/erc1155_mock.vy +++ b/src/snekmate/tokens/mocks/erc1155_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `erc1155` Module Reference Implementation @custom:contract-name erc1155_mock @@ -114,6 +114,6 @@ def _customMint(owner: address, id: uint256, amount: uint256): # due to an arithmetic check of the entire token # supply in the function `_before_token_transfer`. erc1155.balanceOf[owner][id] = unsafe_add(erc1155.balanceOf[owner][id], amount) - log IERC1155.TransferSingle(msg.sender, empty(address), owner, id, amount) + log IERC1155.TransferSingle(_operator=msg.sender, _from=empty(address), _to=owner, _id=id, _value=amount) erc1155._after_token_transfer(empty(address), owner, erc1155._as_singleton_array(id), erc1155._as_singleton_array(amount), b"") diff --git a/src/snekmate/tokens/mocks/erc20_mock.vy b/src/snekmate/tokens/mocks/erc20_mock.vy index 818c22b4..24db022d 100644 --- a/src/snekmate/tokens/mocks/erc20_mock.vy +++ b/src/snekmate/tokens/mocks/erc20_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `erc20` Module Reference Implementation @custom:contract-name erc20_mock diff --git a/src/snekmate/tokens/mocks/erc721_mock.vy b/src/snekmate/tokens/mocks/erc721_mock.vy index 349842c9..44299be8 100644 --- a/src/snekmate/tokens/mocks/erc721_mock.vy +++ b/src/snekmate/tokens/mocks/erc721_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `erc721` Module Reference Implementation @custom:contract-name erc721_mock diff --git a/src/snekmate/utils/base64.vy b/src/snekmate/utils/base64.vy index cdc4815a..33b131e1 100644 --- a/src/snekmate/utils/base64.vy +++ b/src/snekmate/utils/base64.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Base64 Encoding and Decoding Functions @custom:contract-name base64 diff --git a/src/snekmate/utils/batch_distributor.vy b/src/snekmate/utils/batch_distributor.vy index 38de404f..aec8130c 100644 --- a/src/snekmate/utils/batch_distributor.vy +++ b/src/snekmate/utils/batch_distributor.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Batch Sending Both Native and ERC-20 Tokens @custom:contract-name batch_distributor diff --git a/src/snekmate/utils/create2_address.vy b/src/snekmate/utils/create2_address.vy index da779047..1db41263 100644 --- a/src/snekmate/utils/create2_address.vy +++ b/src/snekmate/utils/create2_address.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `CREATE2` EVM Opcode Utility Functions for Address Calculations @custom:contract-name create2_address diff --git a/src/snekmate/utils/create_address.vy b/src/snekmate/utils/create_address.vy index 3491b25c..d6d2b49c 100644 --- a/src/snekmate/utils/create_address.vy +++ b/src/snekmate/utils/create_address.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `CREATE` EVM Opcode Utility Functions for Address Calculations @custom:contract-name create_address diff --git a/src/snekmate/utils/ecdsa.vy b/src/snekmate/utils/ecdsa.vy index b1c68c2c..bacf67ec 100644 --- a/src/snekmate/utils/ecdsa.vy +++ b/src/snekmate/utils/ecdsa.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Elliptic Curve Digital Signature Algorithm (ECDSA) Secp256k1-Based Functions @custom:contract-name ecdsa diff --git a/src/snekmate/utils/eip712_domain_separator.vy b/src/snekmate/utils/eip712_domain_separator.vy index db9156b7..bf379fb2 100644 --- a/src/snekmate/utils/eip712_domain_separator.vy +++ b/src/snekmate/utils/eip712_domain_separator.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-712 Domain Separator @custom:contract-name eip712_domain_separator diff --git a/src/snekmate/utils/interfaces/IERC1271.vyi b/src/snekmate/utils/interfaces/IERC1271.vyi index c200aecc..e402a9ad 100644 --- a/src/snekmate/utils/interfaces/IERC1271.vyi +++ b/src/snekmate/utils/interfaces/IERC1271.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-1271 Interface Definition @custom:contract-name IERC1271 diff --git a/src/snekmate/utils/interfaces/IERC5267.vyi b/src/snekmate/utils/interfaces/IERC5267.vyi index a7b0f44a..d89d87ee 100644 --- a/src/snekmate/utils/interfaces/IERC5267.vyi +++ b/src/snekmate/utils/interfaces/IERC5267.vyi @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title EIP-5267 Interface Definition @custom:contract-name IERC5267 diff --git a/src/snekmate/utils/math.vy b/src/snekmate/utils/math.vy index c6c106e4..b43782fb 100644 --- a/src/snekmate/utils/math.vy +++ b/src/snekmate/utils/math.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Standard Mathematical Utility Functions @custom:contract-name math diff --git a/src/snekmate/utils/merkle_proof_verification.vy b/src/snekmate/utils/merkle_proof_verification.vy index f12ca68e..6e660f2f 100644 --- a/src/snekmate/utils/merkle_proof_verification.vy +++ b/src/snekmate/utils/merkle_proof_verification.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Merkle Tree Proof Verification Functions @custom:contract-name merkle_proof_verification diff --git a/src/snekmate/utils/message_hash_utils.vy b/src/snekmate/utils/message_hash_utils.vy index 032e8562..56008436 100644 --- a/src/snekmate/utils/message_hash_utils.vy +++ b/src/snekmate/utils/message_hash_utils.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Signature Message Hash Utility Functions @custom:contract-name message_hash_utils diff --git a/src/snekmate/utils/mocks/base64_mock.vy b/src/snekmate/utils/mocks/base64_mock.vy index 7ec07b16..158205c9 100644 --- a/src/snekmate/utils/mocks/base64_mock.vy +++ b/src/snekmate/utils/mocks/base64_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `base64` Module Reference Implementation @custom:contract-name base64_mock diff --git a/src/snekmate/utils/mocks/batch_distributor_mock.vy b/src/snekmate/utils/mocks/batch_distributor_mock.vy index d1bbc575..61fa502f 100644 --- a/src/snekmate/utils/mocks/batch_distributor_mock.vy +++ b/src/snekmate/utils/mocks/batch_distributor_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `batch_distributor` Module Reference Implementation @custom:contract-name batch_distributor_mock diff --git a/src/snekmate/utils/mocks/create2_address_mock.vy b/src/snekmate/utils/mocks/create2_address_mock.vy index 440b4e3f..1608581e 100644 --- a/src/snekmate/utils/mocks/create2_address_mock.vy +++ b/src/snekmate/utils/mocks/create2_address_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `create2_address` Module Reference Implementation @custom:contract-name create2_address_mock diff --git a/src/snekmate/utils/mocks/create_address_mock.vy b/src/snekmate/utils/mocks/create_address_mock.vy index e26d9958..fd3db79d 100644 --- a/src/snekmate/utils/mocks/create_address_mock.vy +++ b/src/snekmate/utils/mocks/create_address_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `create_address` Module Reference Implementation @custom:contract-name create_address_mock diff --git a/src/snekmate/utils/mocks/ecdsa_mock.vy b/src/snekmate/utils/mocks/ecdsa_mock.vy index 6bf8529c..c1905660 100644 --- a/src/snekmate/utils/mocks/ecdsa_mock.vy +++ b/src/snekmate/utils/mocks/ecdsa_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `ecdsa` Module Reference Implementation @custom:contract-name ecdsa_mock diff --git a/src/snekmate/utils/mocks/eip712_domain_separator_mock.vy b/src/snekmate/utils/mocks/eip712_domain_separator_mock.vy index 10132d80..ce9e2680 100644 --- a/src/snekmate/utils/mocks/eip712_domain_separator_mock.vy +++ b/src/snekmate/utils/mocks/eip712_domain_separator_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `eip712_domain_separator` Module Reference Implementation @custom:contract-name eip712_domain_separator_mock diff --git a/src/snekmate/utils/mocks/math_mock.vy b/src/snekmate/utils/mocks/math_mock.vy index af75643d..1ca8ddf6 100644 --- a/src/snekmate/utils/mocks/math_mock.vy +++ b/src/snekmate/utils/mocks/math_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `math` Module Reference Implementation @custom:contract-name math_mock diff --git a/src/snekmate/utils/mocks/merkle_proof_verification_mock.vy b/src/snekmate/utils/mocks/merkle_proof_verification_mock.vy index 90211849..99c4b7a6 100644 --- a/src/snekmate/utils/mocks/merkle_proof_verification_mock.vy +++ b/src/snekmate/utils/mocks/merkle_proof_verification_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `merkle_proof_verification` Module Reference Implementation @custom:contract-name merkle_proof_verification_mock diff --git a/src/snekmate/utils/mocks/message_hash_utils_mock.vy b/src/snekmate/utils/mocks/message_hash_utils_mock.vy index dd691e02..6836fcad 100644 --- a/src/snekmate/utils/mocks/message_hash_utils_mock.vy +++ b/src/snekmate/utils/mocks/message_hash_utils_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `message_hash_utils` Module Reference Implementation @custom:contract-name message_hash_utils_mock diff --git a/src/snekmate/utils/mocks/multicall_mock.vy b/src/snekmate/utils/mocks/multicall_mock.vy index 5b3c5eac..72cb942f 100644 --- a/src/snekmate/utils/mocks/multicall_mock.vy +++ b/src/snekmate/utils/mocks/multicall_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `multicall` Module Reference Implementation @custom:contract-name multicall_mock diff --git a/src/snekmate/utils/mocks/p256_mock.vy b/src/snekmate/utils/mocks/p256_mock.vy index f4e0658d..cfbafa51 100644 --- a/src/snekmate/utils/mocks/p256_mock.vy +++ b/src/snekmate/utils/mocks/p256_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `p256` Module Reference Implementation @custom:contract-name p256_mock diff --git a/src/snekmate/utils/mocks/signature_checker_mock.vy b/src/snekmate/utils/mocks/signature_checker_mock.vy index f911fcaa..4385c4a2 100644 --- a/src/snekmate/utils/mocks/signature_checker_mock.vy +++ b/src/snekmate/utils/mocks/signature_checker_mock.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title `signature_checker` Module Reference Implementation @custom:contract-name signature_checker_mock diff --git a/src/snekmate/utils/multicall.vy b/src/snekmate/utils/multicall.vy index e24ff8a1..d6443575 100644 --- a/src/snekmate/utils/multicall.vy +++ b/src/snekmate/utils/multicall.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Multicall Functions @custom:contract-name multicall diff --git a/src/snekmate/utils/p256.vy b/src/snekmate/utils/p256.vy index 236f67e0..920ae29d 100644 --- a/src/snekmate/utils/p256.vy +++ b/src/snekmate/utils/p256.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title Elliptic Curve Digital Signature Algorithm (ECDSA) Secp256r1-Based Functions @custom:contract-name p256 diff --git a/src/snekmate/utils/signature_checker.vy b/src/snekmate/utils/signature_checker.vy index 1a1f85d3..0cc99d25 100644 --- a/src/snekmate/utils/signature_checker.vy +++ b/src/snekmate/utils/signature_checker.vy @@ -1,4 +1,4 @@ -# pragma version ~=0.4.0 +# pragma version ~=0.4.1 """ @title ECDSA and EIP-1271 Signature Verification Functions @custom:contract-name signature_checker