Skip to content

Commit

Permalink
up
Browse files Browse the repository at this point in the history
  • Loading branch information
ernestognw committed Jan 28, 2025
1 parent 9f53296 commit e9047b2
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 36 deletions.
9 changes: 0 additions & 9 deletions contracts/account/paymaster/PaymasterSigner.sol
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,4 @@ abstract contract PaymasterSigner is PaymasterCore, AbstractSigner, EIP712 {
bytes calldata paymasterData = userOp.paymasterData();
return (uint48(bytes6(paymasterData[0:6])), uint48(bytes6(paymasterData[6:12])), paymasterData[12:]);
}

function _postOp(
PostOpMode /* mode */,
bytes calldata /* context */,
uint256 /* actualGasCost */,
uint256 /* actualUserOpFeePerGas */
) internal virtual override {
// No context for postop
}
}
24 changes: 2 additions & 22 deletions contracts/mocks/account/paymaster/PaymasterCoreMock.sol
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ contract PaymasterCoreContextNoPostOpMock is PaymasterCore {
PackedUserOperation calldata userOp,
bytes32 /* userOpHash */,
uint256 /* requiredPreFund */
) internal virtual override returns (bytes memory context, uint256 validationData) {
) internal pure override returns (bytes memory context, uint256 validationData) {
bytes calldata paymasterData = userOp.paymasterData();
return (
paymasterData,
Expand All @@ -30,26 +30,11 @@ contract PaymasterCoreContextNoPostOpMock is PaymasterCore {
}
}

contract PaymasterCoreMock is PaymasterCore {
contract PaymasterCoreMock is PaymasterCoreContextNoPostOpMock {
using ERC4337Utils for *;

event PaymasterDataPostOp(bytes paymasterData);

function _validatePaymasterUserOp(
PackedUserOperation calldata userOp,
bytes32 /* userOpHash */,
uint256 /* requiredPreFund */
) internal virtual override returns (bytes memory context, uint256 validationData) {
bytes calldata paymasterData = userOp.paymasterData();
return (
paymasterData,
(bytes1(paymasterData[0:1]) == bytes1(0x01)).packValidationData(
uint48(bytes6(paymasterData[1:7])),
uint48(bytes6(paymasterData[7:13]))
)
);
}

function _postOp(
PostOpMode /* mode */,
bytes calldata context,
Expand All @@ -59,11 +44,6 @@ contract PaymasterCoreMock is PaymasterCore {
emit PaymasterDataPostOp(context);
}

// WARNING: No access control
function deposit() external payable {
_deposit();
}

// WARNING: No access control
function addStake(uint32 unstakeDelaySec) external payable {
_addStake(unstakeDelaySec);
Expand Down
12 changes: 7 additions & 5 deletions test/account/paymaster/PaymasterCore.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ describe('PaymasterCore', function () {

shouldBehaveLikePaymaster({ postOp: true });

it('reverts if validatePaymasterUserOp returns context and was not overriden', async function () {
const mock = await ethers.deployContract('$PaymasterCoreContextNoPostOpMock');
it('still execute the user op if validatePaymasterUserOp returns context and _postOp was not overriden', async function () {
const paymaster = await ethers.deployContract('$PaymasterCoreContextNoPostOpMock');
const paymasterDeposit = ethers.parseEther('1');
await mock.connect(this.depositor).deposit({ value: paymasterDeposit });
await paymaster.connect(this.depositor).deposit({ value: paymasterDeposit });
const userOp = {
paymaster: this.mock,
paymaster,
};

userOp.callData = this.accountMock.interface.encodeFunctionData('execute', [
Expand All @@ -79,6 +79,8 @@ describe('PaymasterCore', function () {
const userSignedUserOp = await this.signUserOp(operation);
const paymasterSignedUserOp = await this.paymasterSignUserOp(userSignedUserOp, 0, 0);

await expect(entrypoint.handleOps([paymasterSignedUserOp.packed], this.receiver)).to.be.reverted;
await expect(this.accountMock.getNonce()).to.eventually.equal(0);
await entrypoint.handleOps([paymasterSignedUserOp.packed], this.receiver);
await expect(this.accountMock.getNonce()).to.eventually.equal(1); // Does execute
});
});

0 comments on commit e9047b2

Please sign in to comment.