Skip to content

Commit fc47a5f

Browse files
authored
Return to immutable verifyingSigner (#21)
1 parent 7083385 commit fc47a5f

File tree

2 files changed

+4
-36
lines changed

2 files changed

+4
-36
lines changed

src/Paymaster.sol

+4-8
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@ import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
1818
contract Paymaster is BasePaymaster {
1919
using UserOperationLib for UserOperation;
2020

21-
address public verifyingSigner;
21+
address public immutable verifyingSigner;
2222

2323
uint256 private constant VALID_TIMESTAMP_OFFSET = 20;
2424
uint256 private constant SIGNATURE_OFFSET = VALID_TIMESTAMP_OFFSET + 64;
2525

2626
constructor(IEntryPoint _entryPoint, address _verifyingSigner) BasePaymaster(_entryPoint) Ownable() {
2727
require(address(_entryPoint).code.length > 0, "Paymaster: passed _entryPoint is not currently a contract");
28-
setVerifyingSigner(_verifyingSigner);
28+
require(_verifyingSigner != address(0), "Paymaster: verifyingSigner cannot be address(0)");
29+
require(_verifyingSigner != msg.sender, "Paymaster: verifyingSigner cannot be the owner");
30+
verifyingSigner = _verifyingSigner;
2931
}
3032

3133
/**
@@ -87,12 +89,6 @@ contract Paymaster is BasePaymaster {
8789
signature = paymasterAndData[SIGNATURE_OFFSET:];
8890
}
8991

90-
function setVerifyingSigner(address _verifyingSigner) public onlyOwner {
91-
require(_verifyingSigner != address(0), "Paymaster: verifyingSigner cannot be address(0)");
92-
require(_verifyingSigner != msg.sender, "Paymaster: verifyingSigner cannot be the owner");
93-
verifyingSigner = _verifyingSigner;
94-
}
95-
9692
function renounceOwnership() public override view onlyOwner {
9793
revert("Paymaster: renouncing ownership is not allowed");
9894
}

test/Paymaster.t.sol

-28
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,6 @@ contract PaymasterTest is Test {
4141
new Paymaster(entrypoint, address(this));
4242
}
4343

44-
function test_zeroAddressSetVerifyingSigner() public {
45-
vm.expectRevert("Paymaster: verifyingSigner cannot be address(0)");
46-
paymaster.setVerifyingSigner(address(0));
47-
}
48-
49-
function test_ownerSetVerifyingSigner() public {
50-
vm.expectRevert("Paymaster: verifyingSigner cannot be the owner");
51-
paymaster.setVerifyingSigner(address(this));
52-
}
53-
5444
function test_entryPointNotAContract() public {
5545
vm.expectRevert("Paymaster: passed _entryPoint is not currently a contract");
5646
new Paymaster(IEntryPoint(address(0x1234)), PAYMASTER_SIGNER);
@@ -79,12 +69,6 @@ contract PaymasterTest is Test {
7969
assertEq(hash, 0xd3a02a83ba925f913230b3c805cd623d66f85d0d2548a6bfb5dea3aec9757630);
8070
}
8171

82-
function test_setVerifyingSignerOnlyOwner() public {
83-
vm.broadcast(ACCOUNT_OWNER);
84-
vm.expectRevert("Ownable: caller is not the owner");
85-
paymaster.setVerifyingSigner(ACCOUNT_OWNER);
86-
}
87-
8872
function test_validatePaymasterUserOpValidSignature() public {
8973
UserOperation memory userOp = createUserOp();
9074
signUserOp(userOp);
@@ -93,18 +77,6 @@ contract PaymasterTest is Test {
9377
entrypoint.simulateValidation(userOp);
9478
}
9579

96-
function test_validatePaymasterUserOpUpdatedSigner() public {
97-
paymaster.setVerifyingSigner(ACCOUNT_OWNER);
98-
99-
UserOperation memory userOp = createUserOp();
100-
(uint8 v, bytes32 r, bytes32 s) = vm.sign(ACCOUNT_OWNER_KEY, ECDSA.toEthSignedMessageHash(paymaster.getHash(userOp, MOCK_VALID_UNTIL, MOCK_VALID_AFTER)));
101-
userOp.paymasterAndData = abi.encodePacked(address(paymaster), abi.encode(MOCK_VALID_UNTIL, MOCK_VALID_AFTER), r, s, v);
102-
signUserOp(userOp);
103-
104-
vm.expectRevert(createEncodedValidationResult(false, 55098));
105-
entrypoint.simulateValidation(userOp);
106-
}
107-
10880
function test_validatePaymasterUserOpWrongSigner() public {
10981
UserOperation memory userOp = createUserOp();
11082
(uint8 v, bytes32 r, bytes32 s) = vm.sign(ACCOUNT_OWNER_KEY, ECDSA.toEthSignedMessageHash(paymaster.getHash(userOp, MOCK_VALID_UNTIL, MOCK_VALID_AFTER)));

0 commit comments

Comments
 (0)