├── .github └── workflows │ └── test.yml ├── .gitignore ├── .gitmodules ├── LICENSE.md ├── README.md ├── audits └── 0-Coinbase-Protocol-Security.pdf ├── docs ├── CryptoKey.md ├── README.md ├── SpendPermission.md └── diagrams │ ├── offchain │ ├── getPermissions.md │ ├── grantPermissions.md │ ├── prepareCalls+sendCalls.md │ └── sendCalls.md │ └── onchain │ ├── batchUpdatePermissions.md │ ├── paymaster.md │ └── withdraw.md ├── foundry.toml ├── node ├── abi │ ├── PermissionCallable.ts │ ├── PermissionCallableAllowedContractNativeTokenRecurringAllowance.ts │ └── PermissionManager.ts ├── constants.ts ├── package.json ├── types.ts └── utils │ ├── createSmartWalletPermission.ts │ ├── decodePermissionContext.ts │ ├── decodePermissionValues.ts │ ├── encodePermissionContext.ts │ ├── formatUserOpSignature.ts │ ├── getRequiresPrefund.ts │ ├── hashPermission.ts │ ├── prepareBeforeCalls.ts │ ├── preparePermissionedCall.ts │ ├── prepareUseSpendPermission.ts │ └── updatePermissionApproval.ts ├── remappings.txt ├── script ├── Debug.s.sol └── Deploy.s.sol ├── src └── SpendPermissionManager.sol └── test ├── README.md ├── base ├── Base.sol ├── SpendPermissionManagerBase.sol └── Static.sol ├── mocks ├── MockCoinbaseSmartWallet.sol ├── MockContractSigner.sol └── MockSpendPermissionManager.sol └── src └── SpendPermissions ├── Debug.t.sol ├── approve.t.sol ├── getCurrentPeriod.t.sol ├── getHash.t.sol ├── isApproved.t.sol ├── permit.t.sol ├── permitAndSpend.t.sol ├── revoke.t.sol ├── spend.t.sol └── useSpendPermission.t.sol /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/.gitmodules -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/README.md -------------------------------------------------------------------------------- /audits/0-Coinbase-Protocol-Security.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/audits/0-Coinbase-Protocol-Security.pdf -------------------------------------------------------------------------------- /docs/CryptoKey.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/CryptoKey.md -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/README.md -------------------------------------------------------------------------------- /docs/SpendPermission.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/SpendPermission.md -------------------------------------------------------------------------------- /docs/diagrams/offchain/getPermissions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/offchain/getPermissions.md -------------------------------------------------------------------------------- /docs/diagrams/offchain/grantPermissions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/offchain/grantPermissions.md -------------------------------------------------------------------------------- /docs/diagrams/offchain/prepareCalls+sendCalls.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/offchain/prepareCalls+sendCalls.md -------------------------------------------------------------------------------- /docs/diagrams/offchain/sendCalls.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/offchain/sendCalls.md -------------------------------------------------------------------------------- /docs/diagrams/onchain/batchUpdatePermissions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/onchain/batchUpdatePermissions.md -------------------------------------------------------------------------------- /docs/diagrams/onchain/paymaster.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/onchain/paymaster.md -------------------------------------------------------------------------------- /docs/diagrams/onchain/withdraw.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/docs/diagrams/onchain/withdraw.md -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/foundry.toml -------------------------------------------------------------------------------- /node/abi/PermissionCallable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/abi/PermissionCallable.ts -------------------------------------------------------------------------------- /node/abi/PermissionCallableAllowedContractNativeTokenRecurringAllowance.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/abi/PermissionCallableAllowedContractNativeTokenRecurringAllowance.ts -------------------------------------------------------------------------------- /node/abi/PermissionManager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/abi/PermissionManager.ts -------------------------------------------------------------------------------- /node/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/constants.ts -------------------------------------------------------------------------------- /node/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/package.json -------------------------------------------------------------------------------- /node/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/types.ts -------------------------------------------------------------------------------- /node/utils/createSmartWalletPermission.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/createSmartWalletPermission.ts -------------------------------------------------------------------------------- /node/utils/decodePermissionContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/decodePermissionContext.ts -------------------------------------------------------------------------------- /node/utils/decodePermissionValues.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/decodePermissionValues.ts -------------------------------------------------------------------------------- /node/utils/encodePermissionContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/encodePermissionContext.ts -------------------------------------------------------------------------------- /node/utils/formatUserOpSignature.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/formatUserOpSignature.ts -------------------------------------------------------------------------------- /node/utils/getRequiresPrefund.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/getRequiresPrefund.ts -------------------------------------------------------------------------------- /node/utils/hashPermission.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/hashPermission.ts -------------------------------------------------------------------------------- /node/utils/prepareBeforeCalls.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/prepareBeforeCalls.ts -------------------------------------------------------------------------------- /node/utils/preparePermissionedCall.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/preparePermissionedCall.ts -------------------------------------------------------------------------------- /node/utils/prepareUseSpendPermission.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/prepareUseSpendPermission.ts -------------------------------------------------------------------------------- /node/utils/updatePermissionApproval.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/node/utils/updatePermissionApproval.ts -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/remappings.txt -------------------------------------------------------------------------------- /script/Debug.s.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/script/Debug.s.sol -------------------------------------------------------------------------------- /script/Deploy.s.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/script/Deploy.s.sol -------------------------------------------------------------------------------- /src/SpendPermissionManager.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/src/SpendPermissionManager.sol -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | # Tests Overview 2 | 3 | ## Invariants 4 | -------------------------------------------------------------------------------- /test/base/Base.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/base/Base.sol -------------------------------------------------------------------------------- /test/base/SpendPermissionManagerBase.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/base/SpendPermissionManagerBase.sol -------------------------------------------------------------------------------- /test/base/Static.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/base/Static.sol -------------------------------------------------------------------------------- /test/mocks/MockCoinbaseSmartWallet.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/mocks/MockCoinbaseSmartWallet.sol -------------------------------------------------------------------------------- /test/mocks/MockContractSigner.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/mocks/MockContractSigner.sol -------------------------------------------------------------------------------- /test/mocks/MockSpendPermissionManager.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/mocks/MockSpendPermissionManager.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/Debug.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/Debug.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/approve.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/approve.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/getCurrentPeriod.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/getCurrentPeriod.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/getHash.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/getHash.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/isApproved.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/isApproved.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/permit.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/permit.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/permitAndSpend.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/permitAndSpend.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/revoke.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/revoke.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/spend.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/spend.t.sol -------------------------------------------------------------------------------- /test/src/SpendPermissions/useSpendPermission.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coinbase/smart-wallet-permissions/HEAD/test/src/SpendPermissions/useSpendPermission.t.sol --------------------------------------------------------------------------------