Skip to content

Commit cf0a8b9

Browse files
committed
Remove Double Checks for Commitments
1 parent d889b1e commit cf0a8b9

File tree

5 files changed

+4
-73
lines changed

5 files changed

+4
-73
lines changed

contracts/src/ProtocolAdapter.sol

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -195,13 +195,7 @@ contract ProtocolAdapter is IProtocolAdapter, ReentrancyGuardTransient, Commitme
195195
}
196196

197197
{
198-
// Check that the commitment does not already exist
199-
tags.checkCommitmentNonExistence(cm);
200-
201-
// Check that the commitment does not exist in the commitment accumulator
202-
_checkCommitmentNonExistence(cm);
203-
204-
// Add the nullifier to the list of tags
198+
// Add the commitment to the list of tags
205199
tags[resCounter++] = cm;
206200
actionTreeTags[(2 * j) + 1] = cm;
207201
}

contracts/src/libs/TagLookup.sol

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,4 @@ library TagLookup {
3737
revert NullifierDuplicated(nullifier);
3838
}
3939
}
40-
41-
/// @notice Checks if a commitment is non-existent in an array of tags and reverts if it not.
42-
/// @param tags The tags array to check.
43-
/// @param commitment The commitment to check non-existence for.
44-
function checkCommitmentNonExistence(bytes32[] memory tags, bytes32 commitment) internal pure {
45-
if (isFoundInEvenOrOddPosition({tags: tags, tag: commitment, even: false})) {
46-
revert CommitmentDuplicated(commitment);
47-
}
48-
}
4940
}

contracts/test/ProtocolAdapter.t.sol

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,6 @@ contract ProtocolAdapterTest is Test {
8383
_pa.verify(txn);
8484
}
8585

86-
function test_verify_reverts_on_action_with_duplicated_commitments() public {
87-
Action[] memory actions = new Action[](1);
88-
actions[0] = _actionWithDuplicatedComplianceUnit();
89-
90-
bytes32 duplicatedCommitment = actions[0].complianceVerifierInputs[0].instance.created.commitment;
91-
actions[0].complianceVerifierInputs[1].instance.consumed.nullifier = keccak256("Not a duplicate");
92-
93-
Transaction memory txn = Transaction({actions: actions, deltaProof: ""});
94-
95-
vm.expectRevert(
96-
abi.encodeWithSelector(TagLookup.CommitmentDuplicated.selector, duplicatedCommitment), address(_pa)
97-
);
98-
_pa.verify(txn);
99-
}
100-
10186
function test_verify_empty_tx() public view {
10287
Transaction memory txn = Transaction({actions: new Action[](0), deltaProof: ""});
10388
_pa.verify(txn);

contracts/test/ProtocolAdapterMock.t.sol

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ contract ProtocolAdapterMockTest is Test {
170170
(Transaction memory tx1, uint256 updatedNonce) =
171171
_mockVerifier.transaction({nonce: 0, configs: configs, commitmentTreeDepth: _TEST_COMMITMENT_TREE_DEPTH});
172172
bytes32 preExistingNf = tx1.actions[0].complianceVerifierInputs[0].instance.consumed.nullifier;
173+
bytes32 preExistingCm = tx1.actions[0].complianceVerifierInputs[0].instance.created.commitment;
173174
_mockPa.execute(tx1);
174175

175176
(Transaction memory tx2,) = _mockVerifier.transaction({
@@ -184,48 +185,17 @@ contract ProtocolAdapterMockTest is Test {
184185
_mockPa.verify(tx2);
185186
}
186187

187-
function test_verify_reverts_on_pre_existing_commitment() public {
188-
TxGen.ActionConfig[] memory configs = TxGen.generateActionConfigs({nActions: 1, nCUs: 1});
189-
190-
(Transaction memory tx1, uint256 updatedNonce) =
191-
_mockVerifier.transaction({nonce: 0, configs: configs, commitmentTreeDepth: _TEST_COMMITMENT_TREE_DEPTH});
192-
bytes32 preExistingCm = tx1.actions[0].complianceVerifierInputs[0].instance.created.commitment;
193-
_mockPa.execute(tx1);
194-
195-
(Transaction memory tx2,) = _mockVerifier.transaction({
196-
nonce: updatedNonce,
197-
configs: configs,
198-
commitmentTreeDepth: _TEST_COMMITMENT_TREE_DEPTH
199-
});
200-
tx2.actions[0].complianceVerifierInputs[0].instance.created.commitment = preExistingCm;
201-
vm.expectRevert(
202-
abi.encodeWithSelector(CommitmentAccumulator.PreExistingCommitment.selector, preExistingCm),
203-
address(_mockPa)
204-
);
205-
_mockPa.verify(tx2);
206-
}
207-
208188
function test_verify_reverts_on_duplicated_nullifier() public {
209189
TxGen.ActionConfig[] memory configs = TxGen.generateActionConfigs({nActions: 1, nCUs: 2});
210190

211191
(Transaction memory txn,) =
212192
_mockVerifier.transaction({nonce: 0, configs: configs, commitmentTreeDepth: _TEST_COMMITMENT_TREE_DEPTH});
213193
bytes32 duplicatedNf = txn.actions[0].complianceVerifierInputs[0].instance.consumed.nullifier;
214-
txn.actions[0].complianceVerifierInputs[1].instance.consumed.nullifier = duplicatedNf;
215-
216-
vm.expectRevert(abi.encodeWithSelector(TagLookup.NullifierDuplicated.selector, duplicatedNf), address(_mockPa));
217-
_mockPa.verify(txn);
218-
}
219-
220-
function test_verify_reverts_on_duplicated_commitment() public {
221-
TxGen.ActionConfig[] memory configs = TxGen.generateActionConfigs({nActions: 1, nCUs: 2});
222-
223-
(Transaction memory txn,) =
224-
_mockVerifier.transaction({nonce: 0, configs: configs, commitmentTreeDepth: _TEST_COMMITMENT_TREE_DEPTH});
225194
bytes32 duplicatedCm = txn.actions[0].complianceVerifierInputs[0].instance.created.commitment;
195+
txn.actions[0].complianceVerifierInputs[1].instance.consumed.nullifier = duplicatedNf;
226196
txn.actions[0].complianceVerifierInputs[1].instance.created.commitment = duplicatedCm;
227197

228-
vm.expectRevert(abi.encodeWithSelector(TagLookup.CommitmentDuplicated.selector, duplicatedCm), address(_mockPa));
198+
vm.expectRevert(abi.encodeWithSelector(TagLookup.NullifierDuplicated.selector, duplicatedNf), address(_mockPa));
229199
_mockPa.verify(txn);
230200
}
231201
}

contracts/test/TagLookup.t.sol

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,10 @@ contract TagLookupTest is Test {
2424
_tags.checkNullifierNonExistence(_tags[0]);
2525
}
2626

27-
function test_checkCommitmentNonExistence_reverts_if_commitment_exists() public {
28-
vm.expectRevert(abi.encodeWithSelector(TagLookup.CommitmentDuplicated.selector, _tags[1]), address(this));
29-
_tags.checkCommitmentNonExistence(_tags[1]);
30-
}
31-
3227
function test_checkNullifierNonExistence_passes_if_the_nullifier_does_not_exist() public view {
3328
_tags.checkNullifierNonExistence(_tags[1]);
3429
}
3530

36-
function test_checkCommitmentNonExistence_passes_if_the_commitment_does_not_exist() public view {
37-
_tags.checkCommitmentNonExistence(_tags[0]);
38-
}
39-
4031
function test_isFoundInEvenOrOddPosition_returns_true_for_existent_tag_in_even_positions() public view {
4132
assertEq(_tags.isFoundInEvenOrOddPosition({tag: _tags[0], even: true}), true);
4233
assertEq(_tags.isFoundInEvenOrOddPosition({tag: _tags[2], even: true}), true);

0 commit comments

Comments
 (0)