Skip to content

Commit 6d8c079

Browse files
committed
Feat: Add v1 RollupAdminLogic setters
Closes FS-621
1 parent 4561376 commit 6d8c079

File tree

6 files changed

+303
-0
lines changed

6 files changed

+303
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import {
2+
Chain,
3+
PrepareTransactionRequestParameters,
4+
PrepareTransactionRequestReturnType,
5+
PublicClient,
6+
Transport,
7+
encodeFunctionData,
8+
} from 'viem';
9+
import { rollupAdminLogic } from '../contracts';
10+
import { ActionParameters, WithAccount } from '../types/Actions';
11+
import { Prettify } from '../types/utils';
12+
13+
export type SetConfirmPeriodBlocksParameters<Curried extends boolean = false> = Prettify<
14+
WithAccount<
15+
ActionParameters<
16+
{
17+
newPeriod: bigint;
18+
},
19+
'rollupAdminLogic',
20+
Curried
21+
>
22+
>
23+
>;
24+
25+
export type SetConfirmPeriodBlocksReturnType = PrepareTransactionRequestReturnType;
26+
27+
function rollupAdminLogicFunctionData({ newPeriod }: SetConfirmPeriodBlocksParameters) {
28+
return encodeFunctionData({
29+
abi: rollupAdminLogic.abi,
30+
functionName: 'setConfirmPeriodBlocks',
31+
args: [newPeriod],
32+
});
33+
}
34+
35+
export async function setConfirmPeriodBlocks<TChain extends Chain | undefined>(
36+
client: PublicClient<Transport, TChain>,
37+
args: SetConfirmPeriodBlocksParameters,
38+
): Promise<SetConfirmPeriodBlocksReturnType> {
39+
const data = rollupAdminLogicFunctionData(args);
40+
41+
return client.prepareTransactionRequest({
42+
to: args.rollupAdminLogic,
43+
value: BigInt(0),
44+
chain: client.chain,
45+
data,
46+
account: args.account,
47+
} satisfies PrepareTransactionRequestParameters);
48+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import {
2+
Chain,
3+
PrepareTransactionRequestParameters,
4+
PrepareTransactionRequestReturnType,
5+
PublicClient,
6+
Transport,
7+
encodeFunctionData,
8+
} from 'viem';
9+
import { rollupAdminLogic } from '../contracts';
10+
import { ActionParameters, WithAccount } from '../types/Actions';
11+
import { Prettify } from '../types/utils';
12+
13+
export type SetExtraChallengeTimeBlocksParameters<Curried extends boolean = false> = Prettify<
14+
WithAccount<
15+
ActionParameters<
16+
{
17+
newExtraTimeBlocks: bigint;
18+
},
19+
'rollupAdminLogic',
20+
Curried
21+
>
22+
>
23+
>;
24+
25+
export type SetExtraChallengeTimeBlocksReturnType = PrepareTransactionRequestReturnType;
26+
27+
function rollupAdminLogicFunctionData({
28+
newExtraTimeBlocks,
29+
}: SetExtraChallengeTimeBlocksParameters) {
30+
return encodeFunctionData({
31+
abi: rollupAdminLogic.abi,
32+
functionName: 'setExtraChallengeTimeBlocks',
33+
args: [newExtraTimeBlocks],
34+
});
35+
}
36+
37+
export async function setExtraChallengeTimeBlocks<TChain extends Chain | undefined>(
38+
client: PublicClient<Transport, TChain>,
39+
args: SetExtraChallengeTimeBlocksParameters,
40+
): Promise<SetExtraChallengeTimeBlocksReturnType> {
41+
const data = rollupAdminLogicFunctionData(args);
42+
43+
return client.prepareTransactionRequest({
44+
to: args.rollupAdminLogic,
45+
value: BigInt(0),
46+
chain: client.chain,
47+
data,
48+
account: args.account,
49+
} satisfies PrepareTransactionRequestParameters);
50+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import {
2+
Chain,
3+
PrepareTransactionRequestParameters,
4+
PrepareTransactionRequestReturnType,
5+
PublicClient,
6+
Transport,
7+
encodeFunctionData,
8+
} from 'viem';
9+
import { rollupAdminLogic } from '../contracts';
10+
import { ActionParameters, WithAccount } from '../types/Actions';
11+
import { Prettify } from '../types/utils';
12+
13+
export type SetMinimumAssertionPeriodParameters<Curried extends boolean = false> = Prettify<
14+
WithAccount<
15+
ActionParameters<
16+
{
17+
newPeriod: bigint;
18+
},
19+
'rollupAdminLogic',
20+
Curried
21+
>
22+
>
23+
>;
24+
25+
export type SetMinimumAssertionPeriodReturnType = PrepareTransactionRequestReturnType;
26+
27+
function rollupAdminLogicFunctionData({ newPeriod }: SetMinimumAssertionPeriodParameters) {
28+
return encodeFunctionData({
29+
abi: rollupAdminLogic.abi,
30+
functionName: 'setMinimumAssertionPeriod',
31+
args: [newPeriod],
32+
});
33+
}
34+
35+
export async function setMinimumAssertionPeriod<TChain extends Chain | undefined>(
36+
client: PublicClient<Transport, TChain>,
37+
args: SetMinimumAssertionPeriodParameters,
38+
): Promise<SetMinimumAssertionPeriodReturnType> {
39+
const data = rollupAdminLogicFunctionData(args);
40+
41+
return client.prepareTransactionRequest({
42+
to: args.rollupAdminLogic,
43+
value: BigInt(0),
44+
chain: client.chain,
45+
data,
46+
account: args.account,
47+
} satisfies PrepareTransactionRequestParameters);
48+
}

src/actions/setValidator.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import {
2+
Address,
3+
Chain,
4+
PrepareTransactionRequestParameters,
5+
PrepareTransactionRequestReturnType,
6+
PublicClient,
7+
Transport,
8+
encodeFunctionData,
9+
} from 'viem';
10+
import { rollupAdminLogic } from '../contracts';
11+
import { ActionParameters, WithAccount } from '../types/Actions';
12+
import { Prettify } from '../types/utils';
13+
14+
type Args = {
15+
add: Address[];
16+
remove: Address[];
17+
};
18+
19+
export type SetIsValidatorParameters<Curried extends boolean = false> = Prettify<
20+
WithAccount<ActionParameters<Args, 'rollupAdminLogic', Curried>>
21+
>;
22+
23+
export type SetIsValidatorReturnType = PrepareTransactionRequestReturnType;
24+
25+
function rollupAdminLogicFunctionData({ add, remove }: SetIsValidatorParameters) {
26+
const addState: boolean[] = new Array(add.length).fill(true);
27+
const removeState: boolean[] = new Array(remove.length).fill(false);
28+
return encodeFunctionData({
29+
abi: rollupAdminLogic.abi,
30+
functionName: 'setValidator',
31+
args: [add.concat(remove), addState.concat(removeState)],
32+
});
33+
}
34+
35+
export async function setValidators<TChain extends Chain | undefined>(
36+
client: PublicClient<Transport, TChain>,
37+
args: SetIsValidatorParameters,
38+
): Promise<SetIsValidatorReturnType> {
39+
const data = rollupAdminLogicFunctionData(args);
40+
return client.prepareTransactionRequest({
41+
to: args.rollupAdminLogic,
42+
value: BigInt(0),
43+
chain: client.chain,
44+
data,
45+
account: args.account,
46+
} satisfies PrepareTransactionRequestParameters);
47+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import {
2+
Chain,
3+
PrepareTransactionRequestParameters,
4+
PrepareTransactionRequestReturnType,
5+
PublicClient,
6+
Transport,
7+
encodeFunctionData,
8+
} from 'viem';
9+
import { rollupAdminLogic } from '../contracts';
10+
import { ActionParameters, WithAccount } from '../types/Actions';
11+
import { Prettify } from '../types/utils';
12+
13+
export type SetValidatorWhitelistDisabledParameters<Curried extends boolean = false> = Prettify<
14+
WithAccount<ActionParameters<{}, 'rollupAdminLogic', Curried>>
15+
>;
16+
17+
export type SetValidatorWhitelistDisabledReturnType = PrepareTransactionRequestReturnType;
18+
19+
function rollupAdminLogicFunctionData({
20+
enable,
21+
}: SetValidatorWhitelistDisabledParameters & { enable: boolean }) {
22+
return encodeFunctionData({
23+
abi: rollupAdminLogic.abi,
24+
functionName: 'setValidatorWhitelistDisabled',
25+
args: [enable],
26+
});
27+
}
28+
29+
async function setValidatorWhitelistDisabled<TChain extends Chain | undefined>(
30+
client: PublicClient<Transport, TChain>,
31+
args: SetValidatorWhitelistDisabledParameters & { enable: boolean },
32+
): Promise<SetValidatorWhitelistDisabledReturnType> {
33+
const data = rollupAdminLogicFunctionData(args);
34+
return client.prepareTransactionRequest({
35+
to: args.rollupAdminLogic,
36+
value: BigInt(0),
37+
chain: client.chain,
38+
data,
39+
account: args.account,
40+
} satisfies PrepareTransactionRequestParameters);
41+
}
42+
43+
export async function enableValidatorWhitelist<TChain extends Chain | undefined>(
44+
client: PublicClient<Transport, TChain>,
45+
args: SetValidatorWhitelistDisabledParameters,
46+
): Promise<SetValidatorWhitelistDisabledReturnType> {
47+
return setValidatorWhitelistDisabled(client, {
48+
...args,
49+
enable: true,
50+
});
51+
}
52+
53+
export async function disableValidatorWhitelist<TChain extends Chain | undefined>(
54+
client: PublicClient<Transport, TChain>,
55+
args: SetValidatorWhitelistDisabledParameters,
56+
): Promise<SetValidatorWhitelistDisabledReturnType> {
57+
return setValidatorWhitelistDisabled(client, {
58+
...args,
59+
enable: false,
60+
});
61+
}

src/actions/setWasmModuleRoot.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import {
2+
Chain,
3+
Hex,
4+
PrepareTransactionRequestParameters,
5+
PrepareTransactionRequestReturnType,
6+
PublicClient,
7+
Transport,
8+
encodeFunctionData,
9+
} from 'viem';
10+
import { rollupAdminLogic } from '../contracts';
11+
import { ActionParameters, WithAccount } from '../types/Actions';
12+
import { Prettify } from '../types/utils';
13+
14+
export type SetWasmModuleRootParameters<Curried extends boolean = false> = Prettify<
15+
WithAccount<
16+
ActionParameters<
17+
{
18+
newWasmModuleRoot: Hex;
19+
},
20+
'rollupAdminLogic',
21+
Curried
22+
>
23+
>
24+
>;
25+
26+
export type SetWasmModuleRootReturnType = PrepareTransactionRequestReturnType;
27+
28+
function rollupAdminLogicFunctionData({ newWasmModuleRoot }: SetWasmModuleRootParameters) {
29+
return encodeFunctionData({
30+
abi: rollupAdminLogic.abi,
31+
functionName: 'setWasmModuleRoot',
32+
args: [newWasmModuleRoot],
33+
});
34+
}
35+
36+
export async function setWasmModuleRoot<TChain extends Chain | undefined>(
37+
client: PublicClient<Transport, TChain>,
38+
args: SetWasmModuleRootParameters,
39+
): Promise<SetWasmModuleRootReturnType> {
40+
const data = rollupAdminLogicFunctionData(args);
41+
42+
return client.prepareTransactionRequest({
43+
to: args.rollupAdminLogic,
44+
value: BigInt(0),
45+
chain: client.chain,
46+
data,
47+
account: args.account,
48+
} satisfies PrepareTransactionRequestParameters);
49+
}

0 commit comments

Comments
 (0)