├── .gas-snapshot ├── .gas-snapshot-benchmarks ├── .github └── workflows │ └── test.yml ├── .gitignore ├── .gitmodules ├── CLAUDE.md ├── LICENSE.md ├── README.md ├── audits ├── Cantina-Report-04-01-2025.pdf ├── Cantina-Report-04-22-2025.pdf ├── CommercePaymentsAudit1ProtoSec.pdf ├── CommercePaymentsAudit2ProtoSec.pdf └── CommercePaymentsAudit3CoinbaseProtoSec.pdf ├── docs ├── Fees.md ├── README.md ├── Security.md ├── TokenCollectors.md ├── diagrams │ ├── ContractsArchitecture.png │ ├── PaymentLifecycleDiagram.png │ ├── TokenCollectionSequence.png │ ├── TokenCollectorsDiagram.png │ ├── TokenStoreDiagram.png │ └── operations │ │ ├── Authorize.png │ │ ├── Capture.png │ │ ├── Charge.png │ │ ├── Reclaim.png │ │ ├── Refund.png │ │ └── Void.png └── operations │ ├── Authorize.md │ ├── Capture.md │ ├── Charge.md │ ├── Reclaim.md │ ├── Refund.md │ └── Void.md ├── foundry.toml ├── remappings.txt ├── script └── Deploy.s.sol ├── src ├── AuthCaptureEscrow.sol ├── TokenStore.sol ├── collectors │ ├── ERC3009PaymentCollector.sol │ ├── ERC6492SignatureHandler.sol │ ├── OperatorRefundCollector.sol │ ├── Permit2PaymentCollector.sol │ ├── PreApprovalPaymentCollector.sol │ ├── SpendPermissionPaymentCollector.sol │ └── TokenCollector.sol └── interfaces │ ├── IERC3009.sol │ └── IMulticall3.sol └── test ├── base ├── AuthCaptureEscrowBase.sol ├── AuthCaptureEscrowForkBase.sol └── AuthCaptureEscrowSmartWalletBase.sol ├── gas └── gasBenchmark.t.sol ├── integration └── usdc.t.sol ├── mocks ├── ERC20UnsafeTransferTokenCollector.sol ├── MockERC3009Token.sol ├── MockFailOnTransferToken.sol ├── MockRevertOnTransferToken.sol └── ReentrantTokenCollector.sol └── src ├── PaymentEscrow ├── authorize.t.sol ├── capture.t.sol ├── charge.t.sol ├── e2eCoinbaseSmartWallet.t.sol ├── reclaim.t.sol ├── reentrancy.t.sol ├── refund.t.sol └── void.t.sol ├── TokenStore.t.sol └── collectors ├── ERC3009PaymentCollector.t.sol ├── OperatorRefundCollector.t.sol ├── Permit2PaymentCollector.t.sol ├── PreApprovalPaymentCollector.t.sol └── SpendPermissionPaymentCollector.t.sol /.gas-snapshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/.gas-snapshot -------------------------------------------------------------------------------- /.gas-snapshot-benchmarks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/.gas-snapshot-benchmarks -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/.gitmodules -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/README.md -------------------------------------------------------------------------------- /audits/Cantina-Report-04-01-2025.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/audits/Cantina-Report-04-01-2025.pdf -------------------------------------------------------------------------------- /audits/Cantina-Report-04-22-2025.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/audits/Cantina-Report-04-22-2025.pdf -------------------------------------------------------------------------------- /audits/CommercePaymentsAudit1ProtoSec.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/audits/CommercePaymentsAudit1ProtoSec.pdf -------------------------------------------------------------------------------- /audits/CommercePaymentsAudit2ProtoSec.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/audits/CommercePaymentsAudit2ProtoSec.pdf -------------------------------------------------------------------------------- /audits/CommercePaymentsAudit3CoinbaseProtoSec.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/audits/CommercePaymentsAudit3CoinbaseProtoSec.pdf -------------------------------------------------------------------------------- /docs/Fees.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/Fees.md -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/README.md -------------------------------------------------------------------------------- /docs/Security.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/Security.md -------------------------------------------------------------------------------- /docs/TokenCollectors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/TokenCollectors.md -------------------------------------------------------------------------------- /docs/diagrams/ContractsArchitecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/ContractsArchitecture.png -------------------------------------------------------------------------------- /docs/diagrams/PaymentLifecycleDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/PaymentLifecycleDiagram.png -------------------------------------------------------------------------------- /docs/diagrams/TokenCollectionSequence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/TokenCollectionSequence.png -------------------------------------------------------------------------------- /docs/diagrams/TokenCollectorsDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/TokenCollectorsDiagram.png -------------------------------------------------------------------------------- /docs/diagrams/TokenStoreDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/TokenStoreDiagram.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Authorize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Authorize.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Capture.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Charge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Charge.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Reclaim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Reclaim.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Refund.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Refund.png -------------------------------------------------------------------------------- /docs/diagrams/operations/Void.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/diagrams/operations/Void.png -------------------------------------------------------------------------------- /docs/operations/Authorize.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Authorize.md -------------------------------------------------------------------------------- /docs/operations/Capture.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Capture.md -------------------------------------------------------------------------------- /docs/operations/Charge.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Charge.md -------------------------------------------------------------------------------- /docs/operations/Reclaim.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Reclaim.md -------------------------------------------------------------------------------- /docs/operations/Refund.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Refund.md -------------------------------------------------------------------------------- /docs/operations/Void.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/docs/operations/Void.md -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/foundry.toml -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/remappings.txt -------------------------------------------------------------------------------- /script/Deploy.s.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/script/Deploy.s.sol -------------------------------------------------------------------------------- /src/AuthCaptureEscrow.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/AuthCaptureEscrow.sol -------------------------------------------------------------------------------- /src/TokenStore.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/TokenStore.sol -------------------------------------------------------------------------------- /src/collectors/ERC3009PaymentCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/ERC3009PaymentCollector.sol -------------------------------------------------------------------------------- /src/collectors/ERC6492SignatureHandler.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/ERC6492SignatureHandler.sol -------------------------------------------------------------------------------- /src/collectors/OperatorRefundCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/OperatorRefundCollector.sol -------------------------------------------------------------------------------- /src/collectors/Permit2PaymentCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/Permit2PaymentCollector.sol -------------------------------------------------------------------------------- /src/collectors/PreApprovalPaymentCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/PreApprovalPaymentCollector.sol -------------------------------------------------------------------------------- /src/collectors/SpendPermissionPaymentCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/SpendPermissionPaymentCollector.sol -------------------------------------------------------------------------------- /src/collectors/TokenCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/collectors/TokenCollector.sol -------------------------------------------------------------------------------- /src/interfaces/IERC3009.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/interfaces/IERC3009.sol -------------------------------------------------------------------------------- /src/interfaces/IMulticall3.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/src/interfaces/IMulticall3.sol -------------------------------------------------------------------------------- /test/base/AuthCaptureEscrowBase.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/base/AuthCaptureEscrowBase.sol -------------------------------------------------------------------------------- /test/base/AuthCaptureEscrowForkBase.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/base/AuthCaptureEscrowForkBase.sol -------------------------------------------------------------------------------- /test/base/AuthCaptureEscrowSmartWalletBase.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/base/AuthCaptureEscrowSmartWalletBase.sol -------------------------------------------------------------------------------- /test/gas/gasBenchmark.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/gas/gasBenchmark.t.sol -------------------------------------------------------------------------------- /test/integration/usdc.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/integration/usdc.t.sol -------------------------------------------------------------------------------- /test/mocks/ERC20UnsafeTransferTokenCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/mocks/ERC20UnsafeTransferTokenCollector.sol -------------------------------------------------------------------------------- /test/mocks/MockERC3009Token.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/mocks/MockERC3009Token.sol -------------------------------------------------------------------------------- /test/mocks/MockFailOnTransferToken.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/mocks/MockFailOnTransferToken.sol -------------------------------------------------------------------------------- /test/mocks/MockRevertOnTransferToken.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/mocks/MockRevertOnTransferToken.sol -------------------------------------------------------------------------------- /test/mocks/ReentrantTokenCollector.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/mocks/ReentrantTokenCollector.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/authorize.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/authorize.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/capture.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/capture.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/charge.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/charge.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/e2eCoinbaseSmartWallet.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/e2eCoinbaseSmartWallet.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/reclaim.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/reclaim.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/reentrancy.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/reentrancy.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/refund.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/refund.t.sol -------------------------------------------------------------------------------- /test/src/PaymentEscrow/void.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/PaymentEscrow/void.t.sol -------------------------------------------------------------------------------- /test/src/TokenStore.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/TokenStore.t.sol -------------------------------------------------------------------------------- /test/src/collectors/ERC3009PaymentCollector.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/collectors/ERC3009PaymentCollector.t.sol -------------------------------------------------------------------------------- /test/src/collectors/OperatorRefundCollector.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/collectors/OperatorRefundCollector.t.sol -------------------------------------------------------------------------------- /test/src/collectors/Permit2PaymentCollector.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/collectors/Permit2PaymentCollector.t.sol -------------------------------------------------------------------------------- /test/src/collectors/PreApprovalPaymentCollector.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/collectors/PreApprovalPaymentCollector.t.sol -------------------------------------------------------------------------------- /test/src/collectors/SpendPermissionPaymentCollector.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/base/commerce-payments/HEAD/test/src/collectors/SpendPermissionPaymentCollector.t.sol --------------------------------------------------------------------------------