Skip to content

Commit 2901284

Browse files
committed
feat: unwrapped controller support
1 parent c844791 commit 2901284

File tree

8 files changed

+1414
-272
lines changed

8 files changed

+1414
-272
lines changed

abis/UnwrappedEthRegistrarController.json

Lines changed: 677 additions & 0 deletions
Large diffs are not rendered by default.

networks.json

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -15,46 +15,21 @@
1515
"address": "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85",
1616
"startBlock": 9380410
1717
},
18-
"EthRegistrarControllerOld": {
18+
"LegacyEthRegistrarController": {
1919
"address": "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5",
2020
"startBlock": 9380471
2121
},
22-
"EthRegistrarController": {
22+
"WrappedEthRegistrarController": {
2323
"address": "0x253553366Da8546fC250F225fe3d25d0C782303b",
2424
"startBlock": 16925618
2525
},
2626
"NameWrapper": {
2727
"address": "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401",
2828
"startBlock": 16925608
29-
}
30-
},
31-
"goerli": {
32-
"ENSRegistry": {
33-
"address": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
34-
"startBlock": 2086611
3529
},
36-
"ENSRegistryOld": {
37-
"address": "0x112234455c3a32fd11230c42e7bccd4a84e02010",
38-
"startBlock": 43152
39-
},
40-
"Resolver": {
41-
"startBlock": 43152
42-
},
43-
"BaseRegistrar": {
44-
"address": "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85",
45-
"startBlock": 2086621
46-
},
47-
"EthRegistrarControllerOld": {
48-
"address": "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5",
49-
"startBlock": 2086640
50-
},
51-
"EthRegistrarController": {
52-
"address": "0xCc5e7dB10E65EED1BBD105359e7268aa660f6734",
53-
"startBlock": 8649286
54-
},
55-
"NameWrapper": {
56-
"address": "0x114D4603199df73e7D157787f8778E21fCd13066",
57-
"startBlock": 8649122
30+
"UnwrappedEthRegistrarController": {
31+
"address": "0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547",
32+
"startBlock": 22764821
5833
}
5934
},
6035
"sepolia": {
@@ -73,17 +48,21 @@
7348
"address": "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85",
7449
"startBlock": 3702731
7550
},
76-
"EthRegistrarControllerOld": {
51+
"LegacyEthRegistrarController": {
7752
"address": "0x7e02892cfc2Bfd53a75275451d73cF620e793fc0",
7853
"startBlock": 3790197
7954
},
80-
"EthRegistrarController": {
55+
"WrappedEthRegistrarController": {
8156
"address": "0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72",
8257
"startBlock": 3790244
8358
},
8459
"NameWrapper": {
8560
"address": "0x0635513f179D50A207757E05759CbD106d7dFcE8",
8661
"startBlock": 3790153
62+
},
63+
"UnwrappedEthRegistrarController": {
64+
"address": "0xfb3cE5D01e0f33f41DbB39035dB9745962F1f968",
65+
"startBlock": 8579988
8766
}
8867
},
8968
"holesky": {
@@ -102,17 +81,21 @@
10281
"address": "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85",
10382
"startBlock": 801686
10483
},
105-
"EthRegistrarControllerOld": {
84+
"LegacyEthRegistrarController": {
10685
"address": "0xf13fC748601fDc5afA255e9D9166EB43f603a903",
10786
"startBlock": 815355
10887
},
109-
"EthRegistrarController": {
88+
"WrappedEthRegistrarController": {
11089
"address": "0x179Be112b24Ad4cFC392eF8924DfA08C20Ad8583",
11190
"startBlock": 815359
11291
},
11392
"NameWrapper": {
11493
"address": "0xab50971078225D365994dc1Edcb9b7FD72Bb4862",
11594
"startBlock": 815127
95+
},
96+
"UnwrappedEthRegistrarController": {
97+
"address": "0xFce6ce4373CB6E7e470EAa55329638acD9Dbd202",
98+
"startBlock": 4027261
11699
}
117100
}
118101
}

src/ethRegistrar.ts

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ import {
1616
Transfer as TransferEvent,
1717
} from "./types/BaseRegistrar/BaseRegistrar";
1818

19-
import { NameRegistered as ControllerNameRegisteredEventOld } from "./types/EthRegistrarControllerOld/EthRegistrarControllerOld";
20-
2119
import {
22-
NameRegistered as ControllerNameRegisteredEvent,
23-
NameRenewed as ControllerNameRenewedEvent,
24-
} from "./types/EthRegistrarController/EthRegistrarController";
20+
NameRegistered as LegacyEthRegistrarController_NameRegistered,
21+
NameRenewed as LegacyEthRegistrarController_NameRenewed,
22+
} from "./types/LegacyEthRegistrarController/LegacyEthRegistrarController";
23+
import {
24+
NameRegistered as UnwrappedEthRegistrarController_NameRegistered,
25+
NameRenewed as UnwrappedEthRegistrarController_NameRenewed,
26+
} from "./types/UnwrappedEthRegistrarController/UnwrappedEthRegistrarController";
27+
import { NameRegistered as WrappedEthRegistrarController_NameRegistered } from "./types/WrappedEthRegistrarController/WrappedEthRegistrarController";
2528

2629
// Import entity types generated from the GraphQL schema
2730
import {
@@ -71,14 +74,24 @@ export function handleNameRegistered(event: NameRegisteredEvent): void {
7174
registrationEvent.save();
7275
}
7376

74-
export function handleNameRegisteredByControllerOld(
75-
event: ControllerNameRegisteredEventOld
77+
// Legacy controller
78+
79+
export function handleNameRegisteredByLegacyController(
80+
event: LegacyEthRegistrarController_NameRegistered
81+
): void {
82+
setNamePreimage(event.params.name, event.params.label, event.params.cost);
83+
}
84+
85+
export function handleNameRenewedByLegacyController(
86+
event: LegacyEthRegistrarController_NameRenewed
7687
): void {
7788
setNamePreimage(event.params.name, event.params.label, event.params.cost);
7889
}
7990

80-
export function handleNameRegisteredByController(
81-
event: ControllerNameRegisteredEvent
91+
// Wrapped controller (reuses same renew event as legacy controller)
92+
93+
export function handleNameRegisteredByWrappedController(
94+
event: WrappedEthRegistrarController_NameRegistered
8295
): void {
8396
setNamePreimage(
8497
event.params.name,
@@ -87,10 +100,26 @@ export function handleNameRegisteredByController(
87100
);
88101
}
89102

90-
export function handleNameRenewedByController(
91-
event: ControllerNameRenewedEvent
103+
// Unwrapped controller
104+
105+
export function handleNameRegisteredByUnwrappedController(
106+
event: UnwrappedEthRegistrarController_NameRegistered
92107
): void {
93-
setNamePreimage(event.params.name, event.params.label, event.params.cost);
108+
setNamePreimage(
109+
event.params.label,
110+
event.params.labelhash,
111+
event.params.baseCost.plus(event.params.premium)
112+
);
113+
}
114+
115+
export function handleNameRenewedByUnwrappedController(
116+
event: UnwrappedEthRegistrarController_NameRenewed
117+
): void {
118+
setNamePreimage(
119+
event.params.label,
120+
event.params.labelhash,
121+
event.params.cost
122+
);
94123
}
95124

96125
function setNamePreimage(name: string, label: Bytes, cost: BigInt): void {

subgraph.yaml

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dataSources:
3434
handler: handleNewResolver
3535
- event: "NewTTL(indexed bytes32,uint64)"
3636
handler: handleNewTTL
37+
3738
- kind: ethereum/contract
3839
name: ENSRegistryOld
3940
network: mainnet
@@ -62,6 +63,7 @@ dataSources:
6263
handler: handleNewResolverOldRegistry
6364
- event: "NewTTL(indexed bytes32,uint64)"
6465
handler: handleNewTTLOldRegistry
66+
6567
- kind: ethereum/contract
6668
name: Resolver
6769
network: mainnet
@@ -110,6 +112,7 @@ dataSources:
110112
handler: handleTextChangedWithValue
111113
- event: "VersionChanged(indexed bytes32,uint64)"
112114
handler: handleVersionChanged
115+
113116
- kind: ethereum/contract
114117
name: BaseRegistrar
115118
network: mainnet
@@ -137,12 +140,13 @@ dataSources:
137140
handler: handleNameRenewed
138141
- event: "Transfer(indexed address,indexed address,indexed uint256)"
139142
handler: handleNameTransferred
143+
140144
- kind: ethereum/contract
141-
name: EthRegistrarControllerOld
145+
name: LegacyEthRegistrarController
142146
network: mainnet
143147
source:
144148
address: "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5"
145-
abi: EthRegistrarControllerOld
149+
abi: LegacyEthRegistrarController
146150
startBlock: 9380471
147151
mapping:
148152
kind: ethereum/events
@@ -152,21 +156,22 @@ dataSources:
152156
entities:
153157
- Registration
154158
abis:
155-
- name: EthRegistrarControllerOld
156-
file: ./abis/EthRegistrarControllerOld.json
159+
- name: LegacyEthRegistrarController
160+
file: ./abis/LegacyEthRegistrarController.json
157161
eventHandlers:
158162
- event: >-
159163
NameRegistered(string,indexed bytes32,indexed
160164
address,uint256,uint256)
161-
handler: handleNameRegisteredByControllerOld
165+
handler: handleNameRegisteredByLegacyController
162166
- event: "NameRenewed(string,indexed bytes32,uint256,uint256)"
163-
handler: handleNameRenewedByController
167+
handler: handleNameRenewedByLegacyController
168+
164169
- kind: ethereum/contract
165-
name: EthRegistrarController
170+
name: WrappedEthRegistrarController
166171
network: mainnet
167172
source:
168173
address: "0x253553366Da8546fC250F225fe3d25d0C782303b"
169-
abi: EthRegistrarController
174+
abi: WrappedEthRegistrarController
170175
startBlock: 16925618
171176
mapping:
172177
kind: ethereum/events
@@ -176,15 +181,16 @@ dataSources:
176181
entities:
177182
- Registration
178183
abis:
179-
- name: EthRegistrarController
180-
file: ./abis/EthRegistrarController.json
184+
- name: WrappedEthRegistrarController
185+
file: ./abis/WrappedEthRegistrarController.json
181186
eventHandlers:
182187
- event: >-
183188
NameRegistered(string,indexed bytes32,indexed
184189
address,uint256,uint256,uint256)
185-
handler: handleNameRegisteredByController
190+
handler: handleNameRegisteredByWrappedController
186191
- event: "NameRenewed(string,indexed bytes32,uint256,uint256)"
187-
handler: handleNameRenewedByController
192+
handler: handleNameRenewedByLegacyController
193+
188194
- kind: ethereum/contract
189195
name: NameWrapper
190196
network: mainnet
@@ -214,4 +220,29 @@ dataSources:
214220
- event: TransferSingle(indexed address,indexed address,indexed address,uint256,uint256)
215221
handler: handleTransferSingle
216222
- event: TransferBatch(indexed address,indexed address,indexed address,uint256[],uint256[])
217-
handler: handleTransferBatch
223+
handler: handleTransferBatch
224+
225+
- kind: ethereum/contract
226+
name: UnwrappedEthRegistrarController
227+
network: mainnet
228+
source:
229+
address: "0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547"
230+
abi: UnwrappedEthRegistrarController
231+
startBlock: 22764821
232+
mapping:
233+
kind: ethereum/events
234+
apiVersion: 0.0.6
235+
language: wasm/assemblyscript
236+
file: ./src/ethRegistrar.ts
237+
entities:
238+
- Registration
239+
abis:
240+
- name: UnwrappedEthRegistrarController
241+
file: ./abis/UnwrappedEthRegistrarController.json
242+
eventHandlers:
243+
- event: >-
244+
NameRegistered(string,indexed bytes32,indexed
245+
address,uint256,uint256,uint256,bytes32)
246+
handler: handleNameRegisteredByUnwrappedController
247+
- event: "NameRenewed(string,indexed bytes32,uint256,uint256,bytes32)"
248+
handler: handleNameRenewedByUnwrappedController

tests/.latest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"version": "0.6.0",
3-
"timestamp": 1707952879651
3+
"timestamp": 1751423035005
44
}

0 commit comments

Comments
 (0)