Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion contracts/anchors/AnchorBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,14 @@ abstract contract AnchorBase is LinkableTree {
require(proposalNonce < nonce, "Invalid nonce");
require(nonce <= proposalNonce + 1, "Nonce must increment by 1");
handler = newHandler;
proposalNonce = nonce;
}

function setVerifier(address newVerifier) onlyHandler external {
function setVerifier(address newVerifier, uint32 nonce) onlyHandler external {
require(newVerifier != address(0), "Handler cannot be 0");
require(proposalNonce < nonce, "Invalid nonce");
require(nonce <= proposalNonce + 1, "Nonce must increment by 1");
verifier = IAnchorVerifier(newVerifier);
proposalNonce = nonce;
}
}
5 changes: 3 additions & 2 deletions contracts/handlers/AnchorHandler.sol
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,10 @@ contract AnchorHandler is IExecutor, HandlerHelpers {
uint32 nonce = uint32(bytes4(arguments[0:4]));
address newHandler = address(bytes20(arguments[4:24]));
anchor.setHandler(newHandler, nonce);
} else if (functionSig == bytes4(keccak256("setVerifier(address)"))) {
} else if (functionSig == bytes4(keccak256("setVerifier(address,uint32)"))) {
uint32 nonce = uint32(bytes4(arguments[0:4]));
address newVerifier = address(bytes20(arguments[4:24]));
anchor.setVerifier(newVerifier);
anchor.setVerifier(newVerifier, nonce);
} else if (functionSig == bytes4(keccak256("updateEdge(uint256,bytes32,uint256)"))) {
uint32 sourceChainId = uint32(bytes4(arguments[4:8]));
uint32 leafIndex = uint32(bytes4(arguments[8:12]));
Expand Down
2 changes: 1 addition & 1 deletion contracts/interfaces/ILinkableAnchor.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pragma solidity ^0.8.0;

interface ILinkableAnchor {
function setHandler(address _handler, uint32 nonce) external;
function setVerifier(address _verifier) external;
function setVerifier(address _verifier, uint32 nonce) external;
function configureLimits(uint256 _minimalWithdrawalAmount, uint256 _maximumDepositAmount) external;

function updateEdge(
Expand Down
3 changes: 2 additions & 1 deletion docs/AnchorBase.md
Original file line number Diff line number Diff line change
Expand Up @@ -609,7 +609,7 @@ function setHandler(address newHandler, uint32 nonce) external nonpayable
### setVerifier

```solidity
function setVerifier(address newVerifier) external nonpayable
function setVerifier(address newVerifier, uint32 nonce) external nonpayable
```


Expand All @@ -621,6 +621,7 @@ function setVerifier(address newVerifier) external nonpayable
| Name | Type | Description |
|---|---|---|
| newVerifier | address | undefined
| nonce | uint32 | undefined

### unpackProof

Expand Down
3 changes: 2 additions & 1 deletion docs/FixedDepositAnchor.md
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,7 @@ function setHandler(address newHandler, uint32 nonce) external nonpayable
### setVerifier

```solidity
function setVerifier(address newVerifier) external nonpayable
function setVerifier(address newVerifier, uint32 nonce) external nonpayable
```


Expand All @@ -705,6 +705,7 @@ function setVerifier(address newVerifier) external nonpayable
| Name | Type | Description |
|---|---|---|
| newVerifier | address | undefined
| nonce | uint32 | undefined

### token

Expand Down
3 changes: 2 additions & 1 deletion docs/ILinkableAnchor.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ function setHandler(address _handler, uint32 nonce) external nonpayable
### setVerifier

```solidity
function setVerifier(address _verifier) external nonpayable
function setVerifier(address _verifier, uint32 nonce) external nonpayable
```


Expand All @@ -59,6 +59,7 @@ function setVerifier(address _verifier) external nonpayable
| Name | Type | Description |
|---|---|---|
| _verifier | address | undefined
| nonce | uint32 | undefined

### updateEdge

Expand Down
3 changes: 2 additions & 1 deletion docs/VAnchor.md
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ function setHandler(address newHandler, uint32 nonce) external nonpayable
### setVerifier

```solidity
function setVerifier(address newVerifier) external nonpayable
function setVerifier(address newVerifier, uint32 nonce) external nonpayable
```


Expand All @@ -833,6 +833,7 @@ function setVerifier(address newVerifier) external nonpayable
| Name | Type | Description |
|---|---|---|
| newVerifier | address | undefined
| nonce | uint32 | undefined

### token

Expand Down
3 changes: 2 additions & 1 deletion docs/VAnchorBase.md
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,7 @@ function setHandler(address newHandler, uint32 nonce) external nonpayable
### setVerifier

```solidity
function setVerifier(address newVerifier) external nonpayable
function setVerifier(address newVerifier, uint32 nonce) external nonpayable
```


Expand All @@ -779,6 +779,7 @@ function setVerifier(address newVerifier) external nonpayable
| Name | Type | Description |
|---|---|---|
| newVerifier | address | undefined
| nonce | uint32 | undefined

### unpackProof

Expand Down
17 changes: 14 additions & 3 deletions packages/contracts/src/AnchorBase.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ interface AnchorBaseInterface extends ethers.utils.Interface {
"nullifierHashes(bytes32)": FunctionFragment;
"roots(uint256)": FunctionFragment;
"setHandler(address,uint32)": FunctionFragment;
"setVerifier(address)": FunctionFragment;
"setVerifier(address,uint32)": FunctionFragment;
"unpackProof(uint256[8])": FunctionFragment;
"updateEdge(uint256,bytes32,uint256)": FunctionFragment;
"verifier()": FunctionFragment;
Expand Down Expand Up @@ -158,7 +158,10 @@ interface AnchorBaseInterface extends ethers.utils.Interface {
functionFragment: "setHandler",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "setVerifier", values: [string]): string;
encodeFunctionData(
functionFragment: "setVerifier",
values: [string, BigNumberish]
): string;
encodeFunctionData(
functionFragment: "unpackProof",
values: [
Expand Down Expand Up @@ -486,6 +489,7 @@ export class AnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -632,6 +636,7 @@ export class AnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -788,7 +793,11 @@ export class AnchorBase extends BaseContract {
overrides?: CallOverrides
): Promise<void>;

setVerifier(newVerifier: string, overrides?: CallOverrides): Promise<void>;
setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: CallOverrides
): Promise<void>;

unpackProof(
_proof: [
Expand Down Expand Up @@ -988,6 +997,7 @@ export class AnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;

Expand Down Expand Up @@ -1140,6 +1150,7 @@ export class AnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;

Expand Down
17 changes: 14 additions & 3 deletions packages/contracts/src/FixedDepositAnchor.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ interface FixedDepositAnchorInterface extends ethers.utils.Interface {
"nullifierHashes(bytes32)": FunctionFragment;
"roots(uint256)": FunctionFragment;
"setHandler(address,uint32)": FunctionFragment;
"setVerifier(address)": FunctionFragment;
"setVerifier(address,uint32)": FunctionFragment;
"token()": FunctionFragment;
"unpackProof(uint256[8])": FunctionFragment;
"unwrapIntoNative(address,uint256)": FunctionFragment;
Expand Down Expand Up @@ -185,7 +185,10 @@ interface FixedDepositAnchorInterface extends ethers.utils.Interface {
functionFragment: "setHandler",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "setVerifier", values: [string]): string;
encodeFunctionData(
functionFragment: "setVerifier",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "token", values?: undefined): string;
encodeFunctionData(
functionFragment: "unpackProof",
Expand Down Expand Up @@ -639,6 +642,7 @@ export class FixedDepositAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -857,6 +861,7 @@ export class FixedDepositAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -1082,7 +1087,11 @@ export class FixedDepositAnchor extends BaseContract {
overrides?: CallOverrides
): Promise<void>;

setVerifier(newVerifier: string, overrides?: CallOverrides): Promise<void>;
setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: CallOverrides
): Promise<void>;

token(overrides?: CallOverrides): Promise<string>;

Expand Down Expand Up @@ -1418,6 +1427,7 @@ export class FixedDepositAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;

Expand Down Expand Up @@ -1642,6 +1652,7 @@ export class FixedDepositAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;

Expand Down
17 changes: 14 additions & 3 deletions packages/contracts/src/VAnchor.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ interface VAnchorInterface extends ethers.utils.Interface {
"registerAndTransactWrap((address,bytes),(bytes,bytes,bytes32[],bytes32[2],uint256,bytes32),(address,int256,address,uint256,bytes,bytes),address)": FunctionFragment;
"roots(uint256)": FunctionFragment;
"setHandler(address,uint32)": FunctionFragment;
"setVerifier(address)": FunctionFragment;
"setVerifier(address,uint32)": FunctionFragment;
"token()": FunctionFragment;
"transact((bytes,bytes,bytes32[],bytes32[2],uint256,bytes32),(address,int256,address,uint256,bytes,bytes))": FunctionFragment;
"transactWrap((bytes,bytes,bytes32[],bytes32[2],uint256,bytes32),(address,int256,address,uint256,bytes,bytes),address)": FunctionFragment;
Expand Down Expand Up @@ -261,7 +261,10 @@ interface VAnchorInterface extends ethers.utils.Interface {
functionFragment: "setHandler",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "setVerifier", values: [string]): string;
encodeFunctionData(
functionFragment: "setVerifier",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "token", values?: undefined): string;
encodeFunctionData(
functionFragment: "transact",
Expand Down Expand Up @@ -818,6 +821,7 @@ export class VAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -1120,6 +1124,7 @@ export class VAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -1432,7 +1437,11 @@ export class VAnchor extends BaseContract {
overrides?: CallOverrides
): Promise<void>;

setVerifier(newVerifier: string, overrides?: CallOverrides): Promise<void>;
setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: CallOverrides
): Promise<void>;

token(overrides?: CallOverrides): Promise<string>;

Expand Down Expand Up @@ -1822,6 +1831,7 @@ export class VAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;

Expand Down Expand Up @@ -2134,6 +2144,7 @@ export class VAnchor extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;

Expand Down
17 changes: 14 additions & 3 deletions packages/contracts/src/VAnchorBase.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ interface VAnchorBaseInterface extends ethers.utils.Interface {
"register((address,bytes))": FunctionFragment;
"roots(uint256)": FunctionFragment;
"setHandler(address,uint32)": FunctionFragment;
"setVerifier(address)": FunctionFragment;
"setVerifier(address,uint32)": FunctionFragment;
"unpackProof(uint256[8])": FunctionFragment;
"updateEdge(uint256,bytes32,uint256)": FunctionFragment;
"verifier()": FunctionFragment;
Expand Down Expand Up @@ -200,7 +200,10 @@ interface VAnchorBaseInterface extends ethers.utils.Interface {
functionFragment: "setHandler",
values: [string, BigNumberish]
): string;
encodeFunctionData(functionFragment: "setVerifier", values: [string]): string;
encodeFunctionData(
functionFragment: "setVerifier",
values: [string, BigNumberish]
): string;
encodeFunctionData(
functionFragment: "unpackProof",
values: [
Expand Down Expand Up @@ -608,6 +611,7 @@ export class VAnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -787,6 +791,7 @@ export class VAnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<ContractTransaction>;

Expand Down Expand Up @@ -976,7 +981,11 @@ export class VAnchorBase extends BaseContract {
overrides?: CallOverrides
): Promise<void>;

setVerifier(newVerifier: string, overrides?: CallOverrides): Promise<void>;
setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: CallOverrides
): Promise<void>;

unpackProof(
_proof: [
Expand Down Expand Up @@ -1245,6 +1254,7 @@ export class VAnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<BigNumber>;

Expand Down Expand Up @@ -1434,6 +1444,7 @@ export class VAnchorBase extends BaseContract {

setVerifier(
newVerifier: string,
nonce: BigNumberish,
overrides?: Overrides & { from?: string | Promise<string> }
): Promise<PopulatedTransaction>;

Expand Down
5 changes: 5 additions & 0 deletions packages/contracts/src/factories/AnchorBase__factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,11 @@ const _abi = [
name: "newVerifier",
type: "address",
},
{
internalType: "uint32",
name: "nonce",
type: "uint32",
},
],
name: "setVerifier",
outputs: [],
Expand Down
Loading