Skip to content

Commit ae6f399

Browse files
Merge pull request #124 from bgd-labs/feat/ink
feat: ink permissions
2 parents c7298c4 + bc14ca1 commit ae6f399

File tree

10 files changed

+895
-193
lines changed

10 files changed

+895
-193
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ These documents contain tables with the following information:
5656
| CELO | V3 | [Permissions](./out/CELO-V3.md#contracts) | |--------|--------|--------|
5757
| AVALANCHE | V3 | [Permissions](./out/AVALANCHE-V3.md#contracts) | |--------|--------|--------|
5858
| AVALANCHE | V2 | [Permissions](./out/AVALANCHE-V2.md#contracts) | |--------|--------|--------|
59+
| INK_WHITELABEL | V3 | [Permissions](./out/INK_WHITELABEL-V3.md#contracts) | |--------|--------|--------|
5960
| LINEA | V3 | [Permissions](./out/LINEA-V3.md#contracts) | |--------|--------|--------|
6061
| SCROLL | V3 | [Permissions](./out/SCROLL-V3.md#contracts) | |--------|--------|--------|
6162

helpers/configs.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ import {
5959
GovernanceV3Soneium,
6060
AaveV3Soneium,
6161
MiscSoneium,
62+
GovernanceV3InkWhitelabel,
63+
AaveV3InkWhitelabel,
64+
MiscInkWhitelabel,
6265
} from '@bgd-labs/aave-address-book';
6366
import { NetworkConfigs } from './types.js';
6467
import { ChainId } from '@bgd-labs/toolbox';
@@ -1050,4 +1053,35 @@ export const networkConfigs: NetworkConfigs = {
10501053
},
10511054
},
10521055
},
1056+
[ChainId.ink]: {
1057+
name: 'Ink_Whitelabel',
1058+
rpcUrl: process.env.RPC_INK,
1059+
explorer: 'https://explorer.inkonchain.com/',
1060+
addressesNames: {
1061+
'0x00C2B13eF4F70Bf1827179Fe6d8facF7cFf6AcD2':
1062+
'Ink emergency-admin multisig',
1063+
'0x2e8090716C5a25332cf963d454250B88bf04E6dC':
1064+
'Ink super-admin multisig',
1065+
},
1066+
pools: {
1067+
[Pools.V3]: {
1068+
aclBlock: 19948732,
1069+
collectorBlock: 19948732,
1070+
granularGuardianBlock: 19948732,
1071+
crossChainControllerBlock: 19948732,
1072+
permissionsJson: './statics/functionsPermissionsV3.0.1.json',
1073+
crossChainPermissionsJson: './statics/functionsPermissionsGovV3.json',
1074+
addressBook: {
1075+
...AaveV3InkWhitelabel,
1076+
...MiscInkWhitelabel,
1077+
},
1078+
governanceAddressBook: {
1079+
...GovernanceV3InkWhitelabel,
1080+
...MiscInkWhitelabel
1081+
},
1082+
addresses: {
1083+
},
1084+
},
1085+
},
1086+
},
10531087
};

helpers/crossChainControllerLogs.ts

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -53,43 +53,42 @@ export const getCCCSendersAndAdapters = async (
5353
let events: Log[] = [];
5454
let latestBlockNumber = 0;
5555

56-
if (
57-
pool === Pools.TENDERLY
58-
) {
59-
const { logs: preTenderlyForkEvents, currentBlock: preTenderlyForkCurrentBlock } = await getEvents({
60-
client,
61-
fromBlock,
62-
contract: addressBook.CROSS_CHAIN_CONTROLLER,
63-
eventTypes: ['SenderUpdated'],
64-
maxBlock: networkConfigs[Number(chainId)].pools[pool].tenderlyBlock!,
65-
limit
66-
});
67-
68-
const tenderlyProvider = getRpcClientFromUrl(
69-
networkConfigs[Number(chainId)].pools[pool].tenderlyRpcUrl!,
70-
);
71-
72-
73-
const { logs: tenderlyForkEvents } = await getEvents({
74-
client: tenderlyProvider,
75-
fromBlock: networkConfigs[Number(chainId)].pools[pool].tenderlyBlock!,
76-
contract: addressBook.CROSS_CHAIN_CONTROLLER,
77-
eventTypes: ['SenderUpdated'],
78-
limit: 999
79-
});
80-
events = [...preTenderlyForkEvents, ...tenderlyForkEvents];
81-
82-
latestBlockNumber = preTenderlyForkCurrentBlock;
83-
} else {
84-
const { logs: networkEvents, currentBlock: eventsCurrentBlock } = await getEvents({
85-
client,
86-
fromBlock,
87-
contract: addressBook.CROSS_CHAIN_CONTROLLER,
88-
eventTypes: ['SenderUpdated'],
89-
limit
90-
});
91-
events = networkEvents;
92-
latestBlockNumber = eventsCurrentBlock;
56+
if (addressBook.CROSS_CHAIN_CONTROLLER) {
57+
if (pool === Pools.TENDERLY) {
58+
const { logs: preTenderlyForkEvents, currentBlock: preTenderlyForkCurrentBlock } = await getEvents({
59+
client,
60+
fromBlock,
61+
contract: addressBook.CROSS_CHAIN_CONTROLLER,
62+
eventTypes: ['SenderUpdated'],
63+
maxBlock: networkConfigs[Number(chainId)].pools[pool].tenderlyBlock!,
64+
limit
65+
});
66+
67+
const tenderlyProvider = getRpcClientFromUrl(
68+
networkConfigs[Number(chainId)].pools[pool].tenderlyRpcUrl!,
69+
);
70+
71+
const { logs: tenderlyForkEvents } = await getEvents({
72+
client: tenderlyProvider,
73+
fromBlock: networkConfigs[Number(chainId)].pools[pool].tenderlyBlock!,
74+
contract: addressBook.CROSS_CHAIN_CONTROLLER,
75+
eventTypes: ['SenderUpdated'],
76+
limit: 999
77+
});
78+
events = [...preTenderlyForkEvents, ...tenderlyForkEvents];
79+
80+
latestBlockNumber = preTenderlyForkCurrentBlock;
81+
} else {
82+
const { logs: networkEvents, currentBlock: eventsCurrentBlock } = await getEvents({
83+
client,
84+
fromBlock,
85+
contract: addressBook.CROSS_CHAIN_CONTROLLER,
86+
eventTypes: ['SenderUpdated'],
87+
limit
88+
});
89+
events = networkEvents;
90+
latestBlockNumber = eventsCurrentBlock;
91+
}
9392
}
9493

9594

helpers/decentralization.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ const isOwnedByGov = (
9898
for (let contractName of Object.keys(govInfo)) {
9999
const contract = govInfo[contractName];
100100
if (contract.address.toLowerCase() === address.toLowerCase()) {
101+
if (contract.proxyAdmin) {
102+
ownerFound = isOwnedByGov(contract.proxyAdmin, govInfo, initialAddress);
103+
if (ownerFound) return ownerFound;
104+
}
105+
101106
contract.modifiers.forEach((modifierInfo) => {
102107
if (
103108
modifierInfo.modifier === 'onlyOwner' ||

0 commit comments

Comments
 (0)