@resurrect-protocol/contracts 0.4.0-dev.32.1 → 0.4.0-dev.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,18 +6,20 @@ Canonical Resurrect Solidity sources, ABIs, and Ethereum mainnet deployment reco
6
6
  npm install @resurrect-protocol/contracts
7
7
  ```
8
8
 
9
- ## Registry
9
+ ## Beacon
10
10
 
11
11
  ```js
12
- import registryAbi from '@resurrect-protocol/contracts/abi/ResurrectRegistryV1.json' with { type: 'json' }
12
+ import beaconAbi from '@resurrect-protocol/contracts/abi/ResurrectBeaconV1.json' with { type: 'json' }
13
13
  import ethereumMainnet from '@resurrect-protocol/contracts/deployments/ethereum-mainnet.json' with { type: 'json' }
14
14
  ```
15
15
 
16
- Solidity tools can import `@resurrect-protocol/contracts/src/ResurrectRegistryV1.sol`. The permissionless registry exposes exactly `VERSION`, `MAX_TTL`, `MAX_RECORD_BYTES`, and `announce`. It has no owner, administrator, allowlist, pause, upgrade, withdrawal, or peer-storage path.
16
+ Solidity tools can import `@resurrect-protocol/contracts/src/ResurrectBeaconV1.sol`. The permissionless beacon exposes exactly `VERSION`, `MAX_TTL`, `MAX_RECORD_BYTES`, and `announce`. It has no owner, administrator, allowlist, pause, upgrade, withdrawal, or peer-storage path. Despite the name, it is a rendezvous beacon rather than an upgradeable proxy beacon.
17
17
 
18
- The reference deployment is `0x6F33c332e8251dcd307D85A27fCcAbd85d578910` on Ethereum mainnet, chain ID `1`, receipt block `25882327`. Its deployment JSON includes the transaction, deployer, compiler settings, runtime hash, source revision, and Etherscan and Sourcify links.
18
+ The canonical deployment is [`0x136c191B5e6541532E42Ecd7C719C29D7ecdf468`](https://etherscan.io/address/0x136c191B5e6541532E42Ecd7C719C29D7ecdf468#code) on Ethereum mainnet, chain ID `1`, receipt block `25943058`. Its deployment JSON includes the transaction, deployer, compiler settings, bytecode hashes, Etherscan and Sourcify links, and audit metadata.
19
19
 
20
- Applications may use the reference deployment or deploy the exact source elsewhere, but must pin the chosen chain, address, deployment block, namespace, and constants. A shared stateless registry does not create a shared peer list. RPC providers remain caller-selected, and an event remains an untrusted discovery hint until the signed record, sequence, expiry, endpoints, and application handshake are verified.
20
+ Applications may use the canonical deployment or deploy the exact source elsewhere, but must pin the chosen chain, address, deployment block, namespace, and constants. A shared stateless beacon does not create a shared peer list. RPC providers remain caller-selected, and an event remains an untrusted discovery hint until the signed record, sequence, expiry, endpoints, and application handshake are verified.
21
+
22
+ OneDollarAudit job [#904](https://www.onedollaraudit.com/audit/904) reviewed the exact canonical address and produced an [immutable IPFS report](https://bafkreid22gqqrzwo6b6scxqnmcmiinru3xzigz74xkere2573r6ivulzjq.ipfs.community.bgipfs.com/) with 0 Critical, 0 High, 0 Medium, 2 Low, and 1 Informational finding.
21
23
 
22
24
  ## Immutable explorer
23
25
 
@@ -28,16 +30,22 @@ import explorerMainnet from '@resurrect-protocol/contracts/deployments/ethereum-
28
30
 
29
31
  Solidity tools can import `@resurrect-protocol/contracts/src/ResurrectOnchainSite.sol`. The contract implements ERC-5219 and the ERC-6944 `5219` resolve mode, reconstructing immutable resources from bytecode-storage contracts. It has no owner, mutable storage, or upgrade path.
30
32
 
31
- The source-verified production router is `0xb69aF08877a0C417169135D6710Bca4840CCCdE1` on Ethereum mainnet at block `25936611`. Its deployment JSON records the 25 data contracts, all 26 transaction hashes and blocks, every resource hash and payload length, the router runtime and manifest hashes, compiler settings, Etherscan and Sourcify verification, deployment cost, gateway URLs, and runtime verification results.
33
+ The source-verified production router is `0x14765f12a7f068EDf42dF4920fd5170ADBa73306` on Ethereum mainnet at block `25943864`. Its deployment JSON records the 24 data contracts, all 25 transaction hashes and blocks, every resource hash and payload length, the router runtime and manifest hashes, compiler settings, Etherscan and Sourcify verification, deployment cost, gateway URLs, and runtime verification results. The embedded explorer uses the canonical `ResurrectBeaconV1` at `0x136c191B5e6541532E42Ecd7C719C29D7ecdf468`.
32
34
 
33
35
  Open it through:
34
36
 
35
- - `web3://0xb69aF08877a0C417169135D6710Bca4840CCCdE1:1/`;
36
- - `https://0xb69af08877a0c417169135d6710bca4840cccde1.w3eth.io/`; or
37
- - `https://0xb69af08877a0c417169135d6710bca4840cccde1.1.w3link.io/`.
37
+ - `https://resurrect.wei.domains/` — primary human-readable entry point;
38
+ - `web3://resurrect.wei/`;
39
+ - `web3://0x14765f12a7f068EDf42dF4920fd5170ADBa73306:1/`;
40
+ - `https://0x14765f12a7f068edf42df4920fd5170adba73306.w3eth.io/`; or
41
+ - `https://0x14765f12a7f068edf42df4920fd5170adba73306.1.w3link.io/`.
42
+
43
+ The deployment JSON also records the WNS contract, `resurrect.wei` token ID,
44
+ owner, expiry, resolved address, ERC-6821 `contentcontract`, registration and
45
+ configuration transactions, cost, and byte-for-byte WNS gateway verification.
38
46
 
39
47
  Consumers should independently compare deployed code and resources with the pinned source and build artifact before relying on them.
40
48
 
41
49
  ## License
42
50
 
43
- `ResurrectRegistryV1.sol` is CC0-1.0. `ResurrectOnchainSite.sol` is available under MIT or Apache-2.0 at your option. Deployment metadata and dependency licenses remain their own.
51
+ `ResurrectBeaconV1.sol` is CC0-1.0. `ResurrectOnchainSite.sol` is available under MIT or Apache-2.0 at your option. Deployment metadata and dependency licenses remain their own.
@@ -43,6 +43,14 @@
43
43
  ],
44
44
  "anonymous": false
45
45
  },
46
- { "type": "error", "name": "InvalidTTL", "inputs": [] },
47
- { "type": "error", "name": "RecordTooLarge", "inputs": [] }
46
+ {
47
+ "type": "error",
48
+ "name": "InvalidTTL",
49
+ "inputs": [{ "name": "supplied", "type": "uint32", "internalType": "uint32" }]
50
+ },
51
+ {
52
+ "type": "error",
53
+ "name": "RecordTooLarge",
54
+ "inputs": [{ "name": "supplied", "type": "uint256", "internalType": "uint256" }]
55
+ }
48
56
  ]
@@ -4,23 +4,28 @@
4
4
  "application": "Resurrect Explorer",
5
5
  "network": "ethereum-mainnet",
6
6
  "chainId": 1,
7
- "address": "0xb69aF08877a0C417169135D6710Bca4840CCCdE1",
8
- "deploymentBlock": 25936611,
9
- "firstDeploymentBlock": 25936585,
10
- "deploymentTimestamp": "2026-09-09T01:44:35Z",
11
- "transactionHash": "0x79f6fe3d1871d574d2e6e3201a08e7c1a36878648401af6f9ba597729ef88b78",
12
- "deployer": "0x318027A00a3A3eB6A7d6F45C832e47c126B4F2C2",
7
+ "address": "0x14765f12a7f068EDf42dF4920fd5170ADBa73306",
8
+ "canonicalBeacon": {
9
+ "contract": "ResurrectBeaconV1",
10
+ "address": "0x136c191B5e6541532E42Ecd7C719C29D7ecdf468",
11
+ "deploymentBlock": 25943058
12
+ },
13
+ "deploymentBlock": 25943864,
14
+ "firstDeploymentBlock": 25943834,
15
+ "firstDeploymentTimestamp": "2026-09-10T01:54:47Z",
16
+ "deploymentTimestamp": "2026-09-10T02:00:47Z",
17
+ "transactionHash": "0x4a128735f12908e0979982b3b3e92d575a5bdd6b19f280eaaf6a6fb8c40e05b0",
18
+ "deployer": "0x6E4a6b178Fea5FA7cE3051615C49F26b177E74F0",
13
19
  "immutable": true,
14
20
  "resolveMode": "5219",
15
- "manifestHash": "0xd23db1c25fef981cc403b978336a1795c0f891ac5f1f942c4ef4b33c15c33c02",
21
+ "manifestHash": "0x36f8d8a77af7849aa040a86d4f7663ab5a185b9d72e2ab500c9db85785ddd026",
16
22
  "manifestEncoding": "keccak256(abi.encode(string[6] paths, string[6] contentTypes, bytes32[] resourceHashes))",
17
- "runtimeBytecodeHash": "0x4e8268e3d86eea86e5b2a4b376d240273a25bee5b1d76cade546375ad6a181bf",
23
+ "runtimeBytecodeHash": "0x7d6198765aea906764d581185b310fa9c2a41670c5a6b674233b442c11ea9ecd",
18
24
  "source": {
19
25
  "repository": "https://github.com/cazala/resurrect",
20
- "commit": "5f167abf8a4d5cac38b8f56dd22f9ab236cd4c62",
21
26
  "contractPath": "contracts/src/ResurrectOnchainSite.sol",
22
27
  "deploymentScriptPath": "contracts/script/DeployResurrectExplorer.s.sol",
23
- "explorerArtifactCommit": "dff3cc44087a4c3b1931aef9d5beb9f6c3bed73c"
28
+ "explorerArtifactPath": "apps/explorer/dist"
24
29
  },
25
30
  "compiler": {
26
31
  "language": "Solidity",
@@ -34,29 +39,64 @@
34
39
  "scheme": "immutable-contract-runtime-bytecode",
35
40
  "sentinelBytes": 1,
36
41
  "maxPayloadBytesPerChunk": 24000,
37
- "resourceBytes": 494226,
38
- "chunkContracts": 25,
39
- "transactions": 26
42
+ "resourceBytes": 467179,
43
+ "chunkContracts": 24,
44
+ "transactions": 25
40
45
  },
41
46
  "deploymentCost": {
42
- "gasUsed": 110247127,
43
- "weiPaid": "6929689171978036",
44
- "ethPaid": "0.006929689171978036"
47
+ "gasUsed": 104317581,
48
+ "weiPaid": "7086418126710057",
49
+ "ethPaid": "0.007086418126710057"
45
50
  },
46
51
  "gateways": {
47
- "web3": "web3://0xb69aF08877a0C417169135D6710Bca4840CCCdE1:1/",
48
- "w3eth": "https://0xb69af08877a0c417169135d6710bca4840cccde1.w3eth.io/",
49
- "w3link": "https://0xb69af08877a0c417169135d6710bca4840cccde1.1.w3link.io/"
52
+ "primary": "https://resurrect.wei.domains/",
53
+ "wns": "https://resurrect.wei.domains/",
54
+ "web3Name": "web3://resurrect.wei/",
55
+ "web3": "web3://0x14765f12a7f068EDf42dF4920fd5170ADBa73306:1/",
56
+ "w3eth": "https://0x14765f12a7f068edf42df4920fd5170adba73306.w3eth.io/",
57
+ "w3link": "https://0x14765f12a7f068edf42df4920fd5170adba73306.1.w3link.io/"
50
58
  },
51
- "ens": {
52
- "name": "resurrect.cazala.eth",
53
- "status": "pending-address-record"
59
+ "wns": {
60
+ "name": "resurrect.wei",
61
+ "status": "active",
62
+ "contract": "0x0000000000696760E15f265e828DB644A0c242EB",
63
+ "tokenId": "41087391431831184440468199834649177938136395864233436476895591760904781888274",
64
+ "tokenIdHex": "0x5ad6a3b22580f32032bc963e77903e6c2d7baa9199d605fa31cc1613dd98fb12",
65
+ "owner": "0x6E4a6b178Fea5FA7cE3051615C49F26b177E74F0",
66
+ "resolvedAddress": "0x14765f12a7f068EDf42dF4920fd5170ADBa73306",
67
+ "contentcontract": "eth:0x14765f12a7f068EDf42dF4920fd5170ADBa73306",
68
+ "contenthash": "0x",
69
+ "registeredAt": "2026-09-10T12:10:47Z",
70
+ "expiresAt": "2027-09-10T12:10:47Z",
71
+ "expiresAtUnix": 1820578247,
72
+ "registrationFeeWei": "500000000000000",
73
+ "registrationAndConfigurationGasUsed": 350304,
74
+ "weiPaid": "526901469028467",
75
+ "ethPaid": "0.000526901469028467",
76
+ "transactions": {
77
+ "commit": {
78
+ "hash": "0x0645328813aa11e75aaf9286bc11d35dd3905f417131736ebdcef8a9c54298d9",
79
+ "block": 25946893
80
+ },
81
+ "reveal": {
82
+ "hash": "0x010cce17ac09ea0a1deda110993d904e5af402217fe954439636866a9dad79c4",
83
+ "block": 25946901
84
+ },
85
+ "setAddr": {
86
+ "hash": "0x420f900ae42dfa456770c5334694de467d81e3f804fd3d6c58db92f549f3e09f",
87
+ "block": 25946902
88
+ },
89
+ "setContentcontract": {
90
+ "hash": "0x45d0cd803dd6e04f623d42e2cb5519f954fd0ec958a52a7b8cd37b57fec98674",
91
+ "block": 25946904
92
+ }
93
+ }
54
94
  },
55
95
  "verification": {
56
96
  "sourceCode": {
57
97
  "etherscan": {
58
98
  "status": "pass",
59
- "url": "https://etherscan.io/address/0xb69aF08877a0C417169135D6710Bca4840CCCdE1#code",
99
+ "url": "https://etherscan.io/address/0x14765f12a7f068EDf42dF4920fd5170ADBa73306#code",
60
100
  "contractName": "ResurrectOnchainSite",
61
101
  "compilerVersion": "v0.8.24+commit.e11b9ed9",
62
102
  "optimizer": true,
@@ -65,19 +105,21 @@
65
105
  },
66
106
  "sourcify": {
67
107
  "status": "pass",
68
- "url": "https://repo.sourcify.dev/1/0xb69aF08877a0C417169135D6710Bca4840CCCdE1",
69
- "apiUrl": "https://sourcify.dev/server/v2/contract/1/0xb69aF08877a0C417169135D6710Bca4840CCCdE1?fields=all",
108
+ "url": "https://repo.sourcify.dev/1/0x14765f12a7f068EDf42dF4920fd5170ADBa73306",
109
+ "apiUrl": "https://sourcify.dev/server/v2/contract/1/0x14765f12a7f068EDf42dF4920fd5170ADBa73306?fields=all",
110
+ "jobUrl": "https://sourcify.dev/server/verify-ui/jobs/e869b535-a13a-42a0-8d38-9c68a5d2b301",
70
111
  "match": "match",
71
112
  "creationMatch": "match",
72
113
  "runtimeMatch": "match",
73
- "matchId": "48092080",
74
- "verifiedAt": "2026-09-09T13:07:58Z"
114
+ "matchId": "48334992",
115
+ "verifiedAt": "2026-09-10T02:03:21Z"
75
116
  }
76
117
  },
77
118
  "ethereumRpc": {
78
119
  "status": "pass",
79
120
  "resolveMode": true,
80
121
  "manifestHash": true,
122
+ "canonicalBeaconEmbedded": true,
81
123
  "allResourceBodiesByteForByte": true,
82
124
  "resourceMetadata": true,
83
125
  "notFoundResponse": true
@@ -85,79 +127,68 @@
85
127
  "w3eth": {
86
128
  "status": "pass",
87
129
  "allAssetsByteForByte": true,
88
- "htmlCompatibilityShimInjectedByGateway": true
130
+ "rootDocumentServed": true
89
131
  },
90
132
  "w3link": {
91
133
  "status": "pass",
92
134
  "allAssetsByteForByte": true,
93
- "htmlCompatibilityShimInjectedByGateway": true
135
+ "rootDocumentServed": true
94
136
  },
95
- "browser": {
137
+ "weiDomains": {
96
138
  "status": "pass",
97
- "gateway": "w3eth",
98
- "registryScan": true,
99
- "signedPeerRecord": true,
100
- "noisePeerIdentity": true,
101
- "identify": true,
102
- "ping": true,
103
- "peerId": "12D3KooWRFAprLu4b2RQzq9PWJ2sTYSYuCYA9yDJNEF5kFPYh7B6",
104
- "endpoint": "/dns4/resurrect-ws.caza.la/tcp/443/wss",
105
- "observedPingMilliseconds": 306,
106
- "observedConnectMilliseconds": 1950
139
+ "url": "https://resurrect.wei.domains/",
140
+ "nameRecordsMatchRouter": true,
141
+ "allAssetsByteForByte": true,
142
+ "rootDocumentServed": true,
143
+ "browserRendered": true
107
144
  }
108
145
  },
109
146
  "resources": [
110
147
  {
111
148
  "path": "index.html",
112
149
  "contentType": "text/html; charset=utf-8",
113
- "bytes": 661,
114
- "keccak256": "0xb11742d9a343d4d8ca148ef1592a8cdbb470752fd60e596b8b3a329c7cd3e213",
150
+ "bytes": 846,
151
+ "keccak256": "0xa041546d52f4a94300f04fb1ced3e058f843f2cd9edf54cab9370b7c4dff37a3",
115
152
  "chunks": [
116
153
  {
117
- "address": "0xa3018a41347f3220366aa467a2b99eed7bdea1c8",
118
- "transactionHash": "0xd8f3df539a89875c3e5132c79cb6ed04a07bdebecf7c748bd38d87766f175b9f",
119
- "block": 25936585,
120
- "payloadBytes": 661
154
+ "address": "0x85D83Ac987CD03A516e43e524d2Ed2F9af2EC4D3",
155
+ "transactionHash": "0x0fa25ef1cf1c0b73dab2db9293053766a74ab8f08288632773315a59547b61c0",
156
+ "block": 25943834,
157
+ "payloadBytes": 846
121
158
  }
122
159
  ]
123
160
  },
124
161
  {
125
162
  "path": "index.css",
126
163
  "contentType": "text/css; charset=utf-8",
127
- "bytes": 5521,
128
- "keccak256": "0x46890c55fc010d0cbc6fe7851cb1ff53c14b1abaa1ddd3a81c97c1d6dc019719",
164
+ "bytes": 6573,
165
+ "keccak256": "0x1783b9d52010f4d0f016b802b7f73142142bc1395605bf57525f896d3174c544",
129
166
  "chunks": [
130
167
  {
131
- "address": "0xaba2c11fc2a3d30bd9cdf76253844c57c139506e",
132
- "transactionHash": "0x5e0a834cadbd05ccb3e2047dc2db98857a95e977f4650560c1f857d1d4cf7646",
133
- "block": 25936586,
134
- "payloadBytes": 5521
168
+ "address": "0xE04834b7ad6F2C6D01D29D10061c7468663723B4",
169
+ "transactionHash": "0x1d56306dd1c2590b0066a1f05cbd3216f3a9a3c745d41dd0667039e9032d9621",
170
+ "block": 25943836,
171
+ "payloadBytes": 6573
135
172
  }
136
173
  ]
137
174
  },
138
175
  {
139
176
  "path": "app.js",
140
177
  "contentType": "text/javascript; charset=utf-8",
141
- "bytes": 63525,
142
- "keccak256": "0x04d1f263ea798d7df89dd06b74b8da6d0a10a67a96f953b94da410e9309dccf5",
178
+ "bytes": 35241,
179
+ "keccak256": "0x7add949f94f202fae190835642abec74bdeb4421b39ac7660934315be257f887",
143
180
  "chunks": [
144
181
  {
145
- "address": "0x70566f16b7ac1c0cd94eafb057169d6caf5ded2b",
146
- "transactionHash": "0x08601adc0b4a6877d6350159ac8cfde6bd43a58903d1f438be6e667d93139cfc",
147
- "block": 25936587,
148
- "payloadBytes": 24000
149
- },
150
- {
151
- "address": "0xc6495227365ec56cac967b280e42e062883b630c",
152
- "transactionHash": "0x59cc4c60ba42133b715aabe49908d3dc3e2ffe9d7b230500583209992c10b1d5",
153
- "block": 25936588,
182
+ "address": "0x17Ca0269c87921A01F7Bc43fAE4CD8A64e321Fa1",
183
+ "transactionHash": "0x237ab2650a68328de72a2be7dc8025f3641daac852975c68f4dbda43a8aa32e7",
184
+ "block": 25943837,
154
185
  "payloadBytes": 24000
155
186
  },
156
187
  {
157
- "address": "0xa00157a681ea3b87cc0a7be67b87f7c90ea62db4",
158
- "transactionHash": "0x0b786e15e5b00f60d8b86479bdf89cfab8f9ce53f52d6ace67b9b9dac22793b3",
159
- "block": 25936589,
160
- "payloadBytes": 15525
188
+ "address": "0x79FC47FA71ff18A95156b05b52b83fa3853e29Ae",
189
+ "transactionHash": "0x639bb81fb01a411f8a72e462da4138be25ac37e548024e7e5497a0e4a77005a1",
190
+ "block": 25943839,
191
+ "payloadBytes": 11241
161
192
  }
162
193
  ]
163
194
  },
@@ -168,9 +199,9 @@
168
199
  "keccak256": "0x7de63044a95dcac21b8884ab40985883e687488e6e2abfd5770266e2c537cfb2",
169
200
  "chunks": [
170
201
  {
171
- "address": "0x8e340d94abbc1f38745b3ffbf0568a2c011208cf",
172
- "transactionHash": "0x1f4f411e9cfcc2448d8cdd65951deec56806989fc9ab64b9576611a458ef783e",
173
- "block": 25936590,
202
+ "address": "0xC87924d955f41640De7e838383E3fFcB4f9f59f1",
203
+ "transactionHash": "0x559607532f4931140c941dedc8c5b8299e7592dcc711c16c0d2e68140b98a0da",
204
+ "block": 25943840,
174
205
  "payloadBytes": 716
175
206
  }
176
207
  ]
@@ -182,39 +213,39 @@
182
213
  "keccak256": "0xe69fcbeb747bf15edf524ec758d6340157a4460ac14ff0a7fcf77b84e1eb2529",
183
214
  "chunks": [
184
215
  {
185
- "address": "0x059635cc5c16083d2b6c2d6379e40a3780e589d6",
186
- "transactionHash": "0xdfc885c38d5d3f0746470ea48eecf8c4b3ea172bacfbf10a006f7ec2da2bfd06",
187
- "block": 25936591,
216
+ "address": "0x08cc5cF593d2AE209E1016D635D347687F5e4201",
217
+ "transactionHash": "0xdcfe31f4a8323cbacee59f5113e21cde61a483d17c3e9c738a72c7b8ae73a9c7",
218
+ "block": 25943841,
188
219
  "payloadBytes": 24000
189
220
  },
190
221
  {
191
- "address": "0xceb09dba1872a07e5d82cdf4df252df4420ad10a",
192
- "transactionHash": "0xc4467840db732cd6765fe59251efd73857d71d6b2ad5861048a481c04df58893",
193
- "block": 25936592,
222
+ "address": "0x2073DE6FEE2422589CC0660BAbab8E57c7B862A6",
223
+ "transactionHash": "0x7ad83d7ba1c5bdfca931f0746481bdef542f61ce0441d5eb3da643b25fc48f71",
224
+ "block": 25943842,
194
225
  "payloadBytes": 24000
195
226
  },
196
227
  {
197
- "address": "0x2cfd0ff617b0d3ceedab78ef783122e773c8edc1",
198
- "transactionHash": "0x94f800283966c037e3c1a359c5b11bddfc17e94464cd61c4f3c9c0702aa2c149",
199
- "block": 25936593,
228
+ "address": "0xf40Fa2695B29E464470197450A26a49ca0616ACC",
229
+ "transactionHash": "0x8f7e507bb4200328f767a8bbe1df226edacd689299acd3cbda71b689c8610231",
230
+ "block": 25943845,
200
231
  "payloadBytes": 24000
201
232
  },
202
233
  {
203
- "address": "0x0ffe481a6d04a0cbf6fb5891f17979e1e2a8ae51",
204
- "transactionHash": "0xd5cb645736b9b9c3a1f257e7d376fcb25f1f6e80aad792715734d9f63c37a456",
205
- "block": 25936594,
234
+ "address": "0x262Cecf0f23b8e36b1A1dbD6dc11BAa8909A3F74",
235
+ "transactionHash": "0x1e81082808835ad4d96710a1aa1a061d03858e921806fe2e0535f600d3f753a1",
236
+ "block": 25943846,
206
237
  "payloadBytes": 24000
207
238
  },
208
239
  {
209
- "address": "0x9e932760c948d09d4c02a386887b37377cb85460",
210
- "transactionHash": "0x61e56065fcc91dee9aaae4d53acf65574a1b6e74df65130172439980393c09df",
211
- "block": 25936595,
240
+ "address": "0x78C083C8a9b70Dd1e0e4b040EC8c2C563aD5e013",
241
+ "transactionHash": "0x23fdc4a1ba66708098fb351a8f354f2f300e47430a1f4c2be387a5d194824e3d",
242
+ "block": 25943847,
212
243
  "payloadBytes": 24000
213
244
  },
214
245
  {
215
- "address": "0x38ae771c6153ac41e3829aa795d0bbf75bb60adc",
216
- "transactionHash": "0xce90bc457a2fd9b3197971839d15e6b3e83077bac5c6942829ea805976d6345b",
217
- "block": 25936596,
246
+ "address": "0x941DfA169654A59Dfbf63CFEe6E4E9a96fA64b11",
247
+ "transactionHash": "0xed4d4ecc202a606f49991f37ca35479dc751b210e748f5667406a3e735bf02d4",
248
+ "block": 25943848,
218
249
  "payloadBytes": 12713
219
250
  }
220
251
  ]
@@ -226,81 +257,81 @@
226
257
  "keccak256": "0xd52f2b97fec863c83fdffce1ad05e338e95a762e81cab8bacd99437c421ada7a",
227
258
  "chunks": [
228
259
  {
229
- "address": "0xdb490a00fd1de273e82a12fbbaa9eac328d7c8ec",
230
- "transactionHash": "0xd122f2ec17379e282da8d2c4d2b9430a1b01a96bb8975dad2030fe9f3fb6e9af",
231
- "block": 25936597,
260
+ "address": "0x5BADF212c1Fe55e6b3bfBcB491B121C465093a10",
261
+ "transactionHash": "0xc6643cc41e982b3f42f8aa78e523bb0b9ebaf36cd9c4399862269ab04fd7e26c",
262
+ "block": 25943849,
232
263
  "payloadBytes": 24000
233
264
  },
234
265
  {
235
- "address": "0x9862e3fca8654922b96f772c7ea1f0a8fa5853af",
236
- "transactionHash": "0x2d14008803c816cffdca5f03f802de4ce6ac533439f466c2acd5a5e8692a1524",
237
- "block": 25936598,
266
+ "address": "0xb1EF58696779Ae67Af58EFfF5ab0ac4fE506F846",
267
+ "transactionHash": "0x34ee601ecca1b9ee12adece40636c82572677ab9a6efebc01aa02e9e48241cf4",
268
+ "block": 25943850,
238
269
  "payloadBytes": 24000
239
270
  },
240
271
  {
241
- "address": "0x816095efc8d7ea80dcb5fd48d3639ab1a8a73ea3",
242
- "transactionHash": "0xd8401f8ef0346415ae4352f30786fd7e0f3354dd7dda4c57e56f3ab769125674",
243
- "block": 25936599,
272
+ "address": "0xCFc6c16826Da7c50A6598F2D0a6082875C1ae372",
273
+ "transactionHash": "0x0488161ae996d825498545ae6ac21e986ad1814f9fb2251f3b45c1bf777c4c16",
274
+ "block": 25943851,
244
275
  "payloadBytes": 24000
245
276
  },
246
277
  {
247
- "address": "0x39caa55da0d24de9a4c3675ae1c696d258d47854",
248
- "transactionHash": "0x2ddae2a0883b385b4b96ee582a0870c886ba46f1f9670cb5e1c10c6ca7a49909",
249
- "block": 25936600,
278
+ "address": "0xeAD2faDAc40662431Ce527226e5125AEa5613679",
279
+ "transactionHash": "0xdc6de04a68b92e398a2f206086676f1933a4e2c6bd8bc77e7c98bf31f4224be5",
280
+ "block": 25943852,
250
281
  "payloadBytes": 24000
251
282
  },
252
283
  {
253
- "address": "0x5bf2786b16aab97a25bf36024e2a302caf78f45f",
254
- "transactionHash": "0x6e91abff36aa778213303e529192a9365dbefd2f92af8c743fa68a4fa12a9619",
255
- "block": 25936601,
284
+ "address": "0xa1Cd9225dc37a258eD42F122e6A654365244429b",
285
+ "transactionHash": "0x30efae542312c85314c435ab05ff0aba99b1f4892618826dc00248057ea13b22",
286
+ "block": 25943853,
256
287
  "payloadBytes": 24000
257
288
  },
258
289
  {
259
- "address": "0xdfde55779da28f3657d88143113d77b444cbd32d",
260
- "transactionHash": "0x2f481c10c4d08a9e2d46435b61250287367f58d881822a3f927a81b09523a2c8",
261
- "block": 25936602,
290
+ "address": "0xA05FEd13f2558AeAF8E9236De9712c389312F392",
291
+ "transactionHash": "0x05560e9a1a4a5b0ea3bf5f0770a6d100fbd0adcb6bd8938d14406edd145add45",
292
+ "block": 25943854,
262
293
  "payloadBytes": 24000
263
294
  },
264
295
  {
265
- "address": "0x7cda636334d36a7f42fda1bf701f29eab9101a69",
266
- "transactionHash": "0x70048693d2a81263bf0ac349bb05ae17b28dbda77784c76449488b50d68345b5",
267
- "block": 25936603,
296
+ "address": "0x31cBAAb7694C0398493211B81946437083FEb760",
297
+ "transactionHash": "0xf416d4b05554bf0ef1e96d29b70b37a9c8babf5e4f42849062a3e441b29c3203",
298
+ "block": 25943855,
268
299
  "payloadBytes": 24000
269
300
  },
270
301
  {
271
- "address": "0x0f7180c0955c541483b97028885ad100afdfcdda",
272
- "transactionHash": "0x77b455f18d98e866db03e3fe2e75eae26f0dda2c8b1788fe42740a15898ff27b",
273
- "block": 25936604,
302
+ "address": "0xa1Fb4Ae5988Cb9739A0Cf3b4fc7e6BF3E045ec04",
303
+ "transactionHash": "0x8978f08f465d954751266c0dc284bfd888b5ff4a9756d6c7fd2288ac86268378",
304
+ "block": 25943856,
274
305
  "payloadBytes": 24000
275
306
  },
276
307
  {
277
- "address": "0xad1107664c170688cb5226141f64272191d6e056",
278
- "transactionHash": "0x2ccf0e15fb0e594fd532ab4f7671b4bbbdcdd264f2c8de06f595810b5415c4f3",
279
- "block": 25936605,
308
+ "address": "0x9E986048bf8B7C296d19cd8dF02CB0bfe8f73Ea4",
309
+ "transactionHash": "0xe1d9ddada722beb7a2148e2d558ff333773c5a4b878725baa00590bcd0b8ab76",
310
+ "block": 25943857,
280
311
  "payloadBytes": 24000
281
312
  },
282
313
  {
283
- "address": "0x11b1df01f23000894ba3d9ce8c9866da5a516755",
284
- "transactionHash": "0xd012cc7f620909c9b193c935e4bf6b859cf4379c1a9b999be9672f4eb7146cf3",
285
- "block": 25936606,
314
+ "address": "0xf568f232CB6154d9dD9B0c5fc47046e691266135",
315
+ "transactionHash": "0x3295e512fa016f8d4306421e7928be87f9c85f70ba9084fac441b5ce44127113",
316
+ "block": 25943859,
286
317
  "payloadBytes": 24000
287
318
  },
288
319
  {
289
- "address": "0xe2e0cda7353a7806ef644ec04c778613a955fa95",
290
- "transactionHash": "0xf428eda0c11a578b7c626aa28921780ec996b700ad0d7e65ad1ba094090bc98b",
291
- "block": 25936607,
320
+ "address": "0x27EE558daf98316D0D375Cc2c60906Cb71f57dE5",
321
+ "transactionHash": "0x7944f1dbfaf3022659b5ea1669f883df7f714edf36a690dbfe9da255959133dd",
322
+ "block": 25943860,
292
323
  "payloadBytes": 24000
293
324
  },
294
325
  {
295
- "address": "0x42dbff87f19d84f237e1aba0242b88548b8afa8b",
296
- "transactionHash": "0xd1d503fea960cfdf528518c14ae3683320e243c9fe0262daebf56d2482123f2f",
297
- "block": 25936608,
326
+ "address": "0x9feD0e9da21FC0f1b79543E7b87042E457bDb545",
327
+ "transactionHash": "0x3637bb2e4bae51c619c5adc3c41249cde81cff2e108a1fa4fbce851b24474ac3",
328
+ "block": 25943861,
298
329
  "payloadBytes": 24000
299
330
  },
300
331
  {
301
- "address": "0xcea7a193e998620e2406fe9e94526b7fba17d1ba",
302
- "transactionHash": "0x461cc7fa1573cdb5653e6beb45b85ee2804fd58001efdbf7f90c39bfdd39f2ea",
303
- "block": 25936609,
332
+ "address": "0x26172ac10e736ada96e690baAeccBa1b04D47cC6",
333
+ "transactionHash": "0x80ca114d2f552195ce9e3ef1591616ff5cae5a8c26bb894680d7fb1612defe0b",
334
+ "block": 25943863,
304
335
  "payloadBytes": 3090
305
336
  }
306
337
  ]
@@ -1,40 +1,53 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "contract": "ResurrectRegistryV1",
3
+ "contract": "ResurrectBeaconV1",
4
4
  "network": "ethereum-mainnet",
5
5
  "chainId": 1,
6
- "address": "0x6F33c332e8251dcd307D85A27fCcAbd85d578910",
7
- "deploymentBlock": 25882327,
8
- "deploymentTimestamp": "2026-09-01T12:07:23Z",
9
- "transactionHash": "0x41f8b9e49265c5796c627eb8e32bd0d366f9408dfc0c75861189758f638440ab",
10
- "deployer": "0x318027A00a3A3eB6A7d6F45C832e47c126B4F2C2",
11
- "runtimeBytecodeHash": "0x0024244f6ad881009b5726d2c1644a3c2aff178852c4d01b1066cd7d9967c109",
6
+ "address": "0x136c191B5e6541532E42Ecd7C719C29D7ecdf468",
7
+ "deploymentBlock": 25943058,
8
+ "deploymentTimestamp": "2026-09-09T23:19:35Z",
9
+ "transactionHash": "0x8e7c2ddf815d44166d436fabd886a05bac6eab25ba5abf6faf9e93e3e179b8d6",
10
+ "deployer": "0x6E4a6b178Fea5FA7cE3051615C49F26b177E74F0",
11
+ "creationBytecodeHash": "0x449675c0d8b1c3ba38a1cd0c633ee043a9f328c14535ea04ff6d9e51845efa3a",
12
+ "runtimeBytecodeHash": "0x20999e7bf54d855e3bfedebfd7053d41f0c873ecde3b9d70a71ee6dcd086bce7",
12
13
  "source": {
13
14
  "repository": "https://github.com/cazala/resurrect",
14
- "tag": "v0.1.0",
15
- "commit": "3298158d0e86959a05434495eb28335808e7964a",
16
- "path": "contracts/src/ResurrectRegistryV1.sol"
15
+ "path": "contracts/src/ResurrectBeaconV1.sol"
17
16
  },
18
17
  "compiler": {
19
18
  "language": "Solidity",
20
- "version": "0.8.24",
19
+ "version": "0.8.24+commit.e11b9ed9",
21
20
  "optimizer": true,
22
21
  "optimizerRuns": 20000,
23
22
  "bytecodeHash": "none",
24
- "cborMetadata": false
23
+ "cborMetadata": false,
24
+ "evmVersion": "cancun"
25
25
  },
26
26
  "verification": {
27
27
  "provider": "Sourcify",
28
28
  "status": "match",
29
- "verifiedAt": "2026-09-01T12:08:54Z",
30
- "url": "https://repo.sourcify.dev/1/0x6F33c332e8251dcd307D85A27fCcAbd85d578910",
31
- "apiUrl": "https://sourcify.dev/server/v2/contract/1/0x6F33c332e8251dcd307D85A27fCcAbd85d578910"
29
+ "verifiedAt": "2026-09-09T23:24:46Z",
30
+ "creationMatch": "match",
31
+ "runtimeMatch": "match",
32
+ "url": "https://repo.sourcify.dev/1/0x136c191B5e6541532E42Ecd7C719C29D7ecdf468",
33
+ "apiUrl": "https://sourcify.dev/server/v2/contract/1/0x136c191B5e6541532E42Ecd7C719C29D7ecdf468"
32
34
  },
33
35
  "explorers": {
34
36
  "etherscan": {
35
37
  "status": "verified",
36
- "verifiedAt": "2026-09-02T12:23:05Z",
37
- "url": "https://etherscan.io/address/0x6F33c332e8251dcd307D85A27fCcAbd85d578910#code"
38
+ "url": "https://etherscan.io/address/0x136c191B5e6541532E42Ecd7C719C29D7ecdf468#code"
38
39
  }
40
+ },
41
+ "audit": {
42
+ "provider": "OneDollarAudit",
43
+ "jobId": 904,
44
+ "completedAt": "2026-09-10T00:24:09Z",
45
+ "critical": 0,
46
+ "high": 0,
47
+ "medium": 0,
48
+ "low": 2,
49
+ "informational": 1,
50
+ "jobUrl": "https://www.onedollaraudit.com/audit/904",
51
+ "reportUrl": "https://bafkreid22gqqrzwo6b6scxqnmcmiinru3xzigz74xkere2573r6ivulzjq.ipfs.community.bgipfs.com/"
39
52
  }
40
53
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resurrect-protocol/contracts",
3
- "version": "0.4.0-dev.32.1",
3
+ "version": "0.4.0-dev.35.1",
4
4
  "description": "Canonical immutable Solidity contracts, ABIs, and Ethereum deployments for Resurrect",
5
5
  "license": "CC0-1.0 AND (MIT OR Apache-2.0)",
6
6
  "repository": {
@@ -16,17 +16,17 @@
16
16
  "README.md"
17
17
  ],
18
18
  "exports": {
19
- "./abi/ResurrectRegistryV1.json": "./abi/ResurrectRegistryV1.json",
19
+ "./abi/ResurrectBeaconV1.json": "./abi/ResurrectBeaconV1.json",
20
20
  "./abi/ResurrectOnchainSite.json": "./abi/ResurrectOnchainSite.json",
21
21
  "./deployments/ethereum-mainnet-explorer.json": "./deployments/ethereum-mainnet-explorer.json",
22
22
  "./deployments/ethereum-mainnet.json": "./deployments/ethereum-mainnet.json",
23
- "./src/ResurrectOnchainSite.sol": "./src/ResurrectOnchainSite.sol",
24
- "./src/ResurrectRegistryV1.sol": "./src/ResurrectRegistryV1.sol"
23
+ "./src/ResurrectBeaconV1.sol": "./src/ResurrectBeaconV1.sol",
24
+ "./src/ResurrectOnchainSite.sol": "./src/ResurrectOnchainSite.sol"
25
25
  },
26
26
  "scripts": {
27
- "build": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectRegistryV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\"",
28
- "check": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectRegistryV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\"",
29
- "test": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectRegistryV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\""
27
+ "build": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectBeaconV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\"",
28
+ "check": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectBeaconV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\"",
29
+ "test": "node -e \"const fs=require('node:fs'); for (const file of ['abi/ResurrectBeaconV1.json','abi/ResurrectOnchainSite.json','deployments/ethereum-mainnet.json','deployments/ethereum-mainnet-explorer.json']) JSON.parse(fs.readFileSync(file))\""
30
30
  },
31
31
  "publishConfig": {
32
32
  "access": "public",
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: CC0-1.0
2
+ pragma solidity 0.8.24;
3
+
4
+ /// @title Resurrect rendezvous beacon v1
5
+ /// @notice Permissionless, immutable, log-only transport for caller-supplied peer-record bytes.
6
+ /// @dev The contract does not verify signatures or bind namespace, recordType, ttl, peerRecord, or
7
+ /// msg.sender to one another. Consumers must perform those trust checks off-chain. This is not an
8
+ /// upgradeable proxy beacon and deliberately has no owner, storage, upgrade, pause, or withdrawal
9
+ /// path.
10
+ contract ResurrectBeaconV1 {
11
+ uint32 public constant VERSION = 1;
12
+ uint32 public constant MAX_TTL = 90 days;
13
+ uint32 public constant MAX_RECORD_BYTES = 4096;
14
+
15
+ error InvalidTTL(uint32 supplied);
16
+ error RecordTooLarge(uint256 supplied);
17
+
18
+ event PeerAnnounced(
19
+ bytes32 indexed namespace, uint32 indexed recordType, uint64 validUntil, bytes peerRecord
20
+ );
21
+
22
+ /// @notice Publishes a bounded-lifetime record for an application namespace.
23
+ /// @param namespace Application/network isolation identifier.
24
+ /// @param recordType Resurrect peer-record codec identifier.
25
+ /// @param ttl Lifetime in seconds, bounded by `MAX_TTL`.
26
+ /// @param peerRecord Raw peer-record bytes; this contract does not authenticate them.
27
+ function announce(bytes32 namespace, uint32 recordType, uint32 ttl, bytes calldata peerRecord)
28
+ external
29
+ {
30
+ if (ttl == 0 || ttl > MAX_TTL) revert InvalidTTL(ttl);
31
+
32
+ uint256 recordLength = peerRecord.length;
33
+ if (recordLength == 0 || recordLength > MAX_RECORD_BYTES) {
34
+ revert RecordTooLarge(recordLength);
35
+ }
36
+
37
+ emit PeerAnnounced(namespace, recordType, uint64(block.timestamp) + uint64(ttl), peerRecord);
38
+ }
39
+ }
@@ -1,34 +0,0 @@
1
- // SPDX-License-Identifier: CC0-1.0
2
- pragma solidity 0.8.24;
3
-
4
- /// @title Resurrect registry v1
5
- /// @notice Permissionless, immutable, log-only rendezvous for signed peer records.
6
- /// @dev This contract deliberately has no owner, storage, upgrade, pause, or withdrawal path.
7
- contract ResurrectRegistryV1 {
8
- uint32 public constant VERSION = 1;
9
- uint32 public constant MAX_TTL = 90 days;
10
- uint32 public constant MAX_RECORD_BYTES = 4096;
11
-
12
- error InvalidTTL();
13
- error RecordTooLarge();
14
-
15
- event PeerAnnounced(
16
- bytes32 indexed namespace, uint32 indexed recordType, uint64 validUntil, bytes peerRecord
17
- );
18
-
19
- /// @notice Publishes a bounded-lifetime, application-namespaced signed peer record.
20
- /// @param namespace Application/network isolation identifier.
21
- /// @param recordType Resurrect peer-record codec identifier.
22
- /// @param ttl Lifetime in seconds, bounded by `MAX_TTL`.
23
- /// @param peerRecord Raw self-authenticating peer-record bytes.
24
- function announce(bytes32 namespace, uint32 recordType, uint32 ttl, bytes calldata peerRecord)
25
- external
26
- {
27
- if (ttl == 0 || ttl > MAX_TTL) revert InvalidTTL();
28
- if (peerRecord.length == 0 || peerRecord.length > MAX_RECORD_BYTES) {
29
- revert RecordTooLarge();
30
- }
31
-
32
- emit PeerAnnounced(namespace, recordType, uint64(block.timestamp) + uint64(ttl), peerRecord);
33
- }
34
- }