Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
anon-xxs committed Aug 1, 2023
1 parent 87592dd commit c072888
Show file tree
Hide file tree
Showing 101 changed files with 5,679 additions and 1 deletion.
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
FORK_URL=
1 change: 1 addition & 0 deletions .forge-snapshots/batchTransferFrom.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
61797
1 change: 1 addition & 0 deletions .forge-snapshots/batchTransferFromMultiToken.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
81786
1 change: 1 addition & 0 deletions .forge-snapshots/lockdown.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
28435
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
60346
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
65533
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
60811
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
46296
1 change: 1 addition & 0 deletions .forge-snapshots/permitBatchCleanWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
91924
1 change: 1 addition & 0 deletions .forge-snapshots/permitBatchDirtyWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
57724
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
143387
1 change: 1 addition & 0 deletions .forge-snapshots/permitBatchTransferFromSingleToken.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
88867
1 change: 1 addition & 0 deletions .forge-snapshots/permitCleanWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
63119
1 change: 1 addition & 0 deletions .forge-snapshots/permitCompactSig.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
63094
1 change: 1 addition & 0 deletions .forge-snapshots/permitDirtyNonce.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
44014
1 change: 1 addition & 0 deletions .forge-snapshots/permitDirtyWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
46019
1 change: 1 addition & 0 deletions .forge-snapshots/permitInvalidSigner.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
40301
1 change: 1 addition & 0 deletions .forge-snapshots/permitSetMaxAllowanceCleanWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
61114
1 change: 1 addition & 0 deletions .forge-snapshots/permitSetMaxAllowanceDirtyWrite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
44014
1 change: 1 addition & 0 deletions .forge-snapshots/permitSignatureExpired.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
31700
1 change: 1 addition & 0 deletions .forge-snapshots/permitTransferFromBatchTypedWitness.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
120325
1 change: 1 addition & 0 deletions .forge-snapshots/permitTransferFromCompactSig.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
86066
1 change: 1 addition & 0 deletions .forge-snapshots/permitTransferFromSingleToken.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
86092
1 change: 1 addition & 0 deletions .forge-snapshots/permitTransferFromTypedWitness.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
87817
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
48268
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
60811
1 change: 1 addition & 0 deletions .forge-snapshots/single recipient 2 tokens.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
118525
1 change: 1 addition & 0 deletions .forge-snapshots/single recipient many tokens.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
133544
1 change: 1 addition & 0 deletions .forge-snapshots/transferFrom with different owners.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
61886
1 change: 1 addition & 0 deletions .forge-snapshots/transferFrom.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
52197
115 changes: 115 additions & 0 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
AllowanceTransferInvariants:invariant_balanceEqualsSpent() (runs: 256, calls: 3840, reverts: 884)
AllowanceTransferInvariants:invariant_permit2NeverHoldsBalance() (runs: 256, calls: 3840, reverts: 876)
AllowanceTransferInvariants:invariant_spendNeverExceedsPermit() (runs: 256, calls: 3840, reverts: 886)
AllowanceTransferTest:testApprove() (gas: 47576)
AllowanceTransferTest:testBatchTransferFrom() (gas: 159209)
AllowanceTransferTest:testBatchTransferFromDifferentOwners() (gas: 235115)
AllowanceTransferTest:testBatchTransferFromMultiToken() (gas: 231865)
AllowanceTransferTest:testBatchTransferFromWithGasSnapshot() (gas: 159869)
AllowanceTransferTest:testExcessiveInvalidation() (gas: 64205)
AllowanceTransferTest:testInvalidateMultipleNonces() (gas: 83150)
AllowanceTransferTest:testInvalidateNonces() (gas: 62847)
AllowanceTransferTest:testInvalidateNoncesInvalid() (gas: 16327)
AllowanceTransferTest:testLockdown() (gas: 146002)
AllowanceTransferTest:testLockdownEvent() (gas: 117767)
AllowanceTransferTest:testMaxAllowance() (gas: 134888)
AllowanceTransferTest:testMaxAllowanceDirtyWrite() (gas: 117455)
AllowanceTransferTest:testPartialAllowance() (gas: 105152)
AllowanceTransferTest:testReuseOrderedNonceInvalid() (gas: 69160)
AllowanceTransferTest:testSetAllowance() (gas: 89633)
AllowanceTransferTest:testSetAllowanceBatch() (gas: 133752)
AllowanceTransferTest:testSetAllowanceBatchDifferentNonces() (gas: 118621)
AllowanceTransferTest:testSetAllowanceBatchDirtyWrite() (gas: 99222)
AllowanceTransferTest:testSetAllowanceBatchEvent() (gas: 116061)
AllowanceTransferTest:testSetAllowanceCompactSig() (gas: 89593)
AllowanceTransferTest:testSetAllowanceDeadlinePassed() (gas: 56512)
AllowanceTransferTest:testSetAllowanceDirtyWrite() (gas: 72181)
AllowanceTransferTest:testSetAllowanceIncorrectSigLength() (gas: 29198)
AllowanceTransferTest:testSetAllowanceInvalidSignature() (gas: 64065)
AllowanceTransferTest:testSetAllowanceTransfer() (gas: 103124)
AllowanceTransferTest:testSetAllowanceTransferDirtyNonceDirtyTransfer() (gas: 97206)
AllowanceTransferTest:testTransferFromWithGasSnapshot() (gas: 132876)
AllowanceUnitTest:testPackAndUnpack(uint160,uint48,uint48) (runs: 256, μ: 39013, ~: 39091)
AllowanceUnitTest:testUpdateAllRandomly(uint160,uint48,uint48) (runs: 256, μ: 40234, ~: 40235)
AllowanceUnitTest:testUpdateAmountExpirationRandomly(uint160,uint48) (runs: 256, μ: 39160, ~: 39161)
CompactSignature:testCompactSignature27() (gas: 300)
CompactSignature:testCompactSignature28() (gas: 144)
DeployPermit2Test:testAllowanceTransferSanityCheck() (gas: 101867)
DeployPermit2Test:testDeployPermit2() (gas: 4337530)
DeployPermit2Test:testSignatureTransferSanityCheck() (gas: 92786)
EIP712Test:testDomainSeparator() (gas: 5878)
EIP712Test:testDomainSeparatorAfterFork() (gas: 10827)
MockPermit2Lib:testPermit2Code(address):(bool) (runs: 256, μ: 2972, ~: 3016)
NonceBitmapTest:testHighNonces() (gas: 36305)
NonceBitmapTest:testInvalidateFullWord() (gas: 63061)
NonceBitmapTest:testInvalidateNoncesRandomly(uint248,uint256) (runs: 256, μ: 30436, ~: 31136)
NonceBitmapTest:testInvalidateNonzeroWord() (gas: 85642)
NonceBitmapTest:testInvalidateTwoNoncesRandomly(uint248,uint256,uint256) (runs: 256, μ: 39173, ~: 39173)
NonceBitmapTest:testLowNonces() (gas: 41041)
NonceBitmapTest:testNonceWordBoundary() (gas: 42284)
NonceBitmapTest:testUseTwoRandomNonces(uint256,uint256) (runs: 256, μ: 49190, ~: 51625)
NonceBitmapTest:testUsingNonceTwiceFails(uint256) (runs: 256, μ: 21934, ~: 21955)
Permit2LibTest:testOZSafePermit() (gas: 24682)
Permit2LibTest:testOZSafePermitPlusOZSafeTransferFrom() (gas: 129329)
Permit2LibTest:testOZSafeTransferFrom() (gas: 39007)
Permit2LibTest:testPermit2() (gas: 22941)
Permit2LibTest:testPermit2DSLessToken() (gas: 7143)
Permit2LibTest:testPermit2DSMore32Token() (gas: 7252)
Permit2LibTest:testPermit2DSMoreToken() (gas: 7023)
Permit2LibTest:testPermit2Full() (gas: 42356)
Permit2LibTest:testPermit2InvalidAmount() (gas: 21011)
Permit2LibTest:testPermit2LargerDS() (gas: 51467)
Permit2LibTest:testPermit2LargerDSRevert() (gas: 32841)
Permit2LibTest:testPermit2NonPermitFallback() (gas: 37245)
Permit2LibTest:testPermit2NonPermitToken() (gas: 32164)
Permit2LibTest:testPermit2PlusTransferFrom2() (gas: 126995)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermit() (gas: 148221)
Permit2LibTest:testPermit2PlusTransferFrom2WithNonPermitFallback() (gas: 174749)
Permit2LibTest:testPermit2PlusTransferFrom2WithWETH9Mainnet() (gas: 147934)
Permit2LibTest:testPermit2SmallerDS() (gas: 77691)
Permit2LibTest:testPermit2SmallerDSNoRevert() (gas: 59324)
Permit2LibTest:testPermit2WETH9Mainnet() (gas: 28774)
Permit2LibTest:testSimplePermit2() (gas: 29117)
Permit2LibTest:testSimplePermit2InvalidAmount() (gas: 16944)
Permit2LibTest:testSimplePermit2PlusTransferFrom2WithNonPermit() (gas: 148463)
Permit2LibTest:testStandardPermit() (gas: 22535)
Permit2LibTest:testStandardTransferFrom() (gas: 38143)
Permit2LibTest:testTransferFrom2() (gas: 38734)
Permit2LibTest:testTransferFrom2Full() (gas: 53368)
Permit2LibTest:testTransferFrom2InvalidAmount() (gas: 12732)
Permit2LibTest:testTransferFrom2NonPermitToken() (gas: 53170)
SignatureTransferTest:testCorrectWitnessTypehashes() (gas: 3097)
SignatureTransferTest:testGasMultiplePermitBatchTransferFrom() (gas: 270957)
SignatureTransferTest:testGasSinglePermitBatchTransferFrom() (gas: 186354)
SignatureTransferTest:testGasSinglePermitTransferFrom() (gas: 123848)
SignatureTransferTest:testInvalidateUnorderedNonces() (gas: 41396)
SignatureTransferTest:testPermitBatchMultiPermitSingleTransfer() (gas: 133663)
SignatureTransferTest:testPermitBatchTransferFrom() (gas: 162007)
SignatureTransferTest:testPermitBatchTransferFromSingleRecipient() (gas: 190445)
SignatureTransferTest:testPermitBatchTransferFromTypedWitness() (gas: 239914)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidType() (gas: 84489)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidTypeHash() (gas: 86007)
SignatureTransferTest:testPermitBatchTransferFromTypedWitnessInvalidWitness() (gas: 85751)
SignatureTransferTest:testPermitBatchTransferInvalidAmountsLengthMismatch() (gas: 44074)
SignatureTransferTest:testPermitBatchTransferMultiAddr() (gas: 160535)
SignatureTransferTest:testPermitBatchTransferSingleRecipientManyTokens() (gas: 211916)
SignatureTransferTest:testPermitTransferFrom() (gas: 92903)
SignatureTransferTest:testPermitTransferFromCompactSig() (gas: 124053)
SignatureTransferTest:testPermitTransferFromIncorrectSigLength() (gas: 51346)
SignatureTransferTest:testPermitTransferFromInvalidNonce() (gas: 72928)
SignatureTransferTest:testPermitTransferFromRandomNonceAndAmount(uint256,uint128) (runs: 256, μ: 95303, ~: 96722)
SignatureTransferTest:testPermitTransferFromToSpender() (gas: 93277)
SignatureTransferTest:testPermitTransferFromTypedWitness() (gas: 125153)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidType() (gas: 55947)
SignatureTransferTest:testPermitTransferFromTypedWitnessInvalidTypehash() (gas: 56879)
SignatureTransferTest:testPermitTransferSpendLessThanFull(uint256,uint128) (runs: 256, μ: 97710, ~: 99727)
TypehashGeneration:testPermitBatch() (gas: 40473)
TypehashGeneration:testPermitBatchTransferFrom() (gas: 49837)
TypehashGeneration:testPermitBatchTransferFromWithWitness() (gas: 56621)
TypehashGeneration:testPermitBatchTransferFromWithWitnessIncorrectPermitData() (gas: 56744)
TypehashGeneration:testPermitBatchTransferFromWithWitnessIncorrectTypehashStub() (gas: 57353)
TypehashGeneration:testPermitSingle() (gas: 28138)
TypehashGeneration:testPermitTransferFrom() (gas: 36511)
TypehashGeneration:testPermitTransferFromWithWitness() (gas: 43469)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectPermitData() (gas: 43436)
TypehashGeneration:testPermitTransferFromWithWitnessIncorrectTypehashStub() (gas: 43956)
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.sol linguist-language=Solidity
.gas-snapshot linguist-language=Julia
21 changes: 21 additions & 0 deletions .github/workflows/gas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Gas

on:
push:
branches:
- main
pull_request:

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Check gas snapshots
run: forge snapshot --check
30 changes: 30 additions & 0 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Integration Tests

on:
push:
branches:
- main
pull_request:

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Install dependencies
run: forge install

- name: Check contract sizes
run: forge build --sizes

- name: Run tests
run: forge test
env:
FOUNDRY_PROFILE: integration
FORK_URL: ${{ secrets.FORK_URL }}
21 changes: 21 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Lint

on:
push:
branches:
- main
pull_request:

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Check formatting
run: forge fmt --check
27 changes: 27 additions & 0 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Unit Tests

on:
push:
branches:
- main
pull_request:

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Install dependencies
run: forge install

- name: Check contract sizes
run: forge build --sizes

- name: Run tests
run: forge test
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.env
/cache
/out
broadcast/
.DS_Store
12 changes: 12 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "lib/solmate"]
path = lib/solmate
url = https://github.com/rari-capital/solmate
[submodule "lib/openzeppelin-contracts"]
path = lib/openzeppelin-contracts
url = https://github.com/OpenZeppelin/openzeppelin-contracts
[submodule "lib/forge-gas-snapshot"]
path = lib/forge-gas-snapshot
url = https://github.com/marktoda/forge-gas-snapshot
11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"solidity.packageDefaultDependenciesContractsDirectory": "src",
"solidity.packageDefaultDependenciesDirectory": "lib",
"solidity.compileUsingRemoteVersion": "v0.8.17",
"solidity.formatter": "forge",
"search.exclude": { "lib": true },
"files.associations": {
".gas-snapshot": "julia"
},
"editor.formatOnSave": true
}
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2023 PancakeSwap
Copyright (c) 2022 Uniswap Labs

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading

0 comments on commit c072888

Please sign in to comment.