@resurrect-protocol/contracts 0.4.0-dev.31.1 → 0.4.0-dev.33.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,16 @@ 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 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, deployment cost, gateway URLs, and 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
+ - `web3://0x14765f12a7f068EDf42dF4920fd5170ADBa73306:1/`;
38
+ - `https://0x14765f12a7f068edf42df4920fd5170adba73306.w3eth.io/`; or
39
+ - `https://0x14765f12a7f068edf42df4920fd5170adba73306.1.w3link.io/`.
38
40
 
39
41
  Consumers should independently compare deployed code and resources with the pinned source and build artifact before relying on them.
40
42
 
41
43
  ## License
42
44
 
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.
45
+ `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,52 @@
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
+ "web3": "web3://0x14765f12a7f068EDf42dF4920fd5170ADBa73306:1/",
53
+ "w3eth": "https://0x14765f12a7f068edf42df4920fd5170adba73306.w3eth.io/",
54
+ "w3link": "https://0x14765f12a7f068edf42df4920fd5170adba73306.1.w3link.io/"
50
55
  },
51
56
  "ens": {
52
57
  "name": "resurrect.cazala.eth",
53
58
  "status": "pending-address-record"
54
59
  },
55
60
  "verification": {
61
+ "sourceCode": {
62
+ "etherscan": {
63
+ "status": "pass",
64
+ "url": "https://etherscan.io/address/0x14765f12a7f068EDf42dF4920fd5170ADBa73306#code",
65
+ "contractName": "ResurrectOnchainSite",
66
+ "compilerVersion": "v0.8.24+commit.e11b9ed9",
67
+ "optimizer": true,
68
+ "optimizerRuns": 20000,
69
+ "proxy": false
70
+ },
71
+ "sourcify": {
72
+ "status": "pass",
73
+ "url": "https://repo.sourcify.dev/1/0x14765f12a7f068EDf42dF4920fd5170ADBa73306",
74
+ "apiUrl": "https://sourcify.dev/server/v2/contract/1/0x14765f12a7f068EDf42dF4920fd5170ADBa73306?fields=all",
75
+ "jobUrl": "https://sourcify.dev/server/verify-ui/jobs/e869b535-a13a-42a0-8d38-9c68a5d2b301",
76
+ "match": "match",
77
+ "creationMatch": "match",
78
+ "runtimeMatch": "match",
79
+ "matchId": "48334992",
80
+ "verifiedAt": "2026-09-10T02:03:21Z"
81
+ }
82
+ },
56
83
  "ethereumRpc": {
57
84
  "status": "pass",
58
85
  "resolveMode": true,
59
86
  "manifestHash": true,
87
+ "canonicalBeaconEmbedded": true,
60
88
  "allResourceBodiesByteForByte": true,
61
89
  "resourceMetadata": true,
62
90
  "notFoundResponse": true
@@ -64,79 +92,60 @@
64
92
  "w3eth": {
65
93
  "status": "pass",
66
94
  "allAssetsByteForByte": true,
67
- "htmlCompatibilityShimInjectedByGateway": true
95
+ "rootDocumentServed": true
68
96
  },
69
97
  "w3link": {
70
98
  "status": "pass",
71
99
  "allAssetsByteForByte": true,
72
- "htmlCompatibilityShimInjectedByGateway": true
73
- },
74
- "browser": {
75
- "status": "pass",
76
- "gateway": "w3eth",
77
- "registryScan": true,
78
- "signedPeerRecord": true,
79
- "noisePeerIdentity": true,
80
- "identify": true,
81
- "ping": true,
82
- "peerId": "12D3KooWRFAprLu4b2RQzq9PWJ2sTYSYuCYA9yDJNEF5kFPYh7B6",
83
- "endpoint": "/dns4/resurrect-ws.caza.la/tcp/443/wss",
84
- "observedPingMilliseconds": 306,
85
- "observedConnectMilliseconds": 1950
100
+ "rootDocumentServed": true
86
101
  }
87
102
  },
88
103
  "resources": [
89
104
  {
90
105
  "path": "index.html",
91
106
  "contentType": "text/html; charset=utf-8",
92
- "bytes": 661,
93
- "keccak256": "0xb11742d9a343d4d8ca148ef1592a8cdbb470752fd60e596b8b3a329c7cd3e213",
107
+ "bytes": 846,
108
+ "keccak256": "0xa041546d52f4a94300f04fb1ced3e058f843f2cd9edf54cab9370b7c4dff37a3",
94
109
  "chunks": [
95
110
  {
96
- "address": "0xa3018a41347f3220366aa467a2b99eed7bdea1c8",
97
- "transactionHash": "0xd8f3df539a89875c3e5132c79cb6ed04a07bdebecf7c748bd38d87766f175b9f",
98
- "block": 25936585,
99
- "payloadBytes": 661
111
+ "address": "0x85D83Ac987CD03A516e43e524d2Ed2F9af2EC4D3",
112
+ "transactionHash": "0x0fa25ef1cf1c0b73dab2db9293053766a74ab8f08288632773315a59547b61c0",
113
+ "block": 25943834,
114
+ "payloadBytes": 846
100
115
  }
101
116
  ]
102
117
  },
103
118
  {
104
119
  "path": "index.css",
105
120
  "contentType": "text/css; charset=utf-8",
106
- "bytes": 5521,
107
- "keccak256": "0x46890c55fc010d0cbc6fe7851cb1ff53c14b1abaa1ddd3a81c97c1d6dc019719",
121
+ "bytes": 6573,
122
+ "keccak256": "0x1783b9d52010f4d0f016b802b7f73142142bc1395605bf57525f896d3174c544",
108
123
  "chunks": [
109
124
  {
110
- "address": "0xaba2c11fc2a3d30bd9cdf76253844c57c139506e",
111
- "transactionHash": "0x5e0a834cadbd05ccb3e2047dc2db98857a95e977f4650560c1f857d1d4cf7646",
112
- "block": 25936586,
113
- "payloadBytes": 5521
125
+ "address": "0xE04834b7ad6F2C6D01D29D10061c7468663723B4",
126
+ "transactionHash": "0x1d56306dd1c2590b0066a1f05cbd3216f3a9a3c745d41dd0667039e9032d9621",
127
+ "block": 25943836,
128
+ "payloadBytes": 6573
114
129
  }
115
130
  ]
116
131
  },
117
132
  {
118
133
  "path": "app.js",
119
134
  "contentType": "text/javascript; charset=utf-8",
120
- "bytes": 63525,
121
- "keccak256": "0x04d1f263ea798d7df89dd06b74b8da6d0a10a67a96f953b94da410e9309dccf5",
135
+ "bytes": 35241,
136
+ "keccak256": "0x7add949f94f202fae190835642abec74bdeb4421b39ac7660934315be257f887",
122
137
  "chunks": [
123
138
  {
124
- "address": "0x70566f16b7ac1c0cd94eafb057169d6caf5ded2b",
125
- "transactionHash": "0x08601adc0b4a6877d6350159ac8cfde6bd43a58903d1f438be6e667d93139cfc",
126
- "block": 25936587,
127
- "payloadBytes": 24000
128
- },
129
- {
130
- "address": "0xc6495227365ec56cac967b280e42e062883b630c",
131
- "transactionHash": "0x59cc4c60ba42133b715aabe49908d3dc3e2ffe9d7b230500583209992c10b1d5",
132
- "block": 25936588,
139
+ "address": "0x17Ca0269c87921A01F7Bc43fAE4CD8A64e321Fa1",
140
+ "transactionHash": "0x237ab2650a68328de72a2be7dc8025f3641daac852975c68f4dbda43a8aa32e7",
141
+ "block": 25943837,
133
142
  "payloadBytes": 24000
134
143
  },
135
144
  {
136
- "address": "0xa00157a681ea3b87cc0a7be67b87f7c90ea62db4",
137
- "transactionHash": "0x0b786e15e5b00f60d8b86479bdf89cfab8f9ce53f52d6ace67b9b9dac22793b3",
138
- "block": 25936589,
139
- "payloadBytes": 15525
145
+ "address": "0x79FC47FA71ff18A95156b05b52b83fa3853e29Ae",
146
+ "transactionHash": "0x639bb81fb01a411f8a72e462da4138be25ac37e548024e7e5497a0e4a77005a1",
147
+ "block": 25943839,
148
+ "payloadBytes": 11241
140
149
  }
141
150
  ]
142
151
  },
@@ -147,9 +156,9 @@
147
156
  "keccak256": "0x7de63044a95dcac21b8884ab40985883e687488e6e2abfd5770266e2c537cfb2",
148
157
  "chunks": [
149
158
  {
150
- "address": "0x8e340d94abbc1f38745b3ffbf0568a2c011208cf",
151
- "transactionHash": "0x1f4f411e9cfcc2448d8cdd65951deec56806989fc9ab64b9576611a458ef783e",
152
- "block": 25936590,
159
+ "address": "0xC87924d955f41640De7e838383E3fFcB4f9f59f1",
160
+ "transactionHash": "0x559607532f4931140c941dedc8c5b8299e7592dcc711c16c0d2e68140b98a0da",
161
+ "block": 25943840,
153
162
  "payloadBytes": 716
154
163
  }
155
164
  ]
@@ -161,39 +170,39 @@
161
170
  "keccak256": "0xe69fcbeb747bf15edf524ec758d6340157a4460ac14ff0a7fcf77b84e1eb2529",
162
171
  "chunks": [
163
172
  {
164
- "address": "0x059635cc5c16083d2b6c2d6379e40a3780e589d6",
165
- "transactionHash": "0xdfc885c38d5d3f0746470ea48eecf8c4b3ea172bacfbf10a006f7ec2da2bfd06",
166
- "block": 25936591,
173
+ "address": "0x08cc5cF593d2AE209E1016D635D347687F5e4201",
174
+ "transactionHash": "0xdcfe31f4a8323cbacee59f5113e21cde61a483d17c3e9c738a72c7b8ae73a9c7",
175
+ "block": 25943841,
167
176
  "payloadBytes": 24000
168
177
  },
169
178
  {
170
- "address": "0xceb09dba1872a07e5d82cdf4df252df4420ad10a",
171
- "transactionHash": "0xc4467840db732cd6765fe59251efd73857d71d6b2ad5861048a481c04df58893",
172
- "block": 25936592,
179
+ "address": "0x2073DE6FEE2422589CC0660BAbab8E57c7B862A6",
180
+ "transactionHash": "0x7ad83d7ba1c5bdfca931f0746481bdef542f61ce0441d5eb3da643b25fc48f71",
181
+ "block": 25943842,
173
182
  "payloadBytes": 24000
174
183
  },
175
184
  {
176
- "address": "0x2cfd0ff617b0d3ceedab78ef783122e773c8edc1",
177
- "transactionHash": "0x94f800283966c037e3c1a359c5b11bddfc17e94464cd61c4f3c9c0702aa2c149",
178
- "block": 25936593,
185
+ "address": "0xf40Fa2695B29E464470197450A26a49ca0616ACC",
186
+ "transactionHash": "0x8f7e507bb4200328f767a8bbe1df226edacd689299acd3cbda71b689c8610231",
187
+ "block": 25943845,
179
188
  "payloadBytes": 24000
180
189
  },
181
190
  {
182
- "address": "0x0ffe481a6d04a0cbf6fb5891f17979e1e2a8ae51",
183
- "transactionHash": "0xd5cb645736b9b9c3a1f257e7d376fcb25f1f6e80aad792715734d9f63c37a456",
184
- "block": 25936594,
191
+ "address": "0x262Cecf0f23b8e36b1A1dbD6dc11BAa8909A3F74",
192
+ "transactionHash": "0x1e81082808835ad4d96710a1aa1a061d03858e921806fe2e0535f600d3f753a1",
193
+ "block": 25943846,
185
194
  "payloadBytes": 24000
186
195
  },
187
196
  {
188
- "address": "0x9e932760c948d09d4c02a386887b37377cb85460",
189
- "transactionHash": "0x61e56065fcc91dee9aaae4d53acf65574a1b6e74df65130172439980393c09df",
190
- "block": 25936595,
197
+ "address": "0x78C083C8a9b70Dd1e0e4b040EC8c2C563aD5e013",
198
+ "transactionHash": "0x23fdc4a1ba66708098fb351a8f354f2f300e47430a1f4c2be387a5d194824e3d",
199
+ "block": 25943847,
191
200
  "payloadBytes": 24000
192
201
  },
193
202
  {
194
- "address": "0x38ae771c6153ac41e3829aa795d0bbf75bb60adc",
195
- "transactionHash": "0xce90bc457a2fd9b3197971839d15e6b3e83077bac5c6942829ea805976d6345b",
196
- "block": 25936596,
203
+ "address": "0x941DfA169654A59Dfbf63CFEe6E4E9a96fA64b11",
204
+ "transactionHash": "0xed4d4ecc202a606f49991f37ca35479dc751b210e748f5667406a3e735bf02d4",
205
+ "block": 25943848,
197
206
  "payloadBytes": 12713
198
207
  }
199
208
  ]
@@ -205,81 +214,81 @@
205
214
  "keccak256": "0xd52f2b97fec863c83fdffce1ad05e338e95a762e81cab8bacd99437c421ada7a",
206
215
  "chunks": [
207
216
  {
208
- "address": "0xdb490a00fd1de273e82a12fbbaa9eac328d7c8ec",
209
- "transactionHash": "0xd122f2ec17379e282da8d2c4d2b9430a1b01a96bb8975dad2030fe9f3fb6e9af",
210
- "block": 25936597,
217
+ "address": "0x5BADF212c1Fe55e6b3bfBcB491B121C465093a10",
218
+ "transactionHash": "0xc6643cc41e982b3f42f8aa78e523bb0b9ebaf36cd9c4399862269ab04fd7e26c",
219
+ "block": 25943849,
211
220
  "payloadBytes": 24000
212
221
  },
213
222
  {
214
- "address": "0x9862e3fca8654922b96f772c7ea1f0a8fa5853af",
215
- "transactionHash": "0x2d14008803c816cffdca5f03f802de4ce6ac533439f466c2acd5a5e8692a1524",
216
- "block": 25936598,
223
+ "address": "0xb1EF58696779Ae67Af58EFfF5ab0ac4fE506F846",
224
+ "transactionHash": "0x34ee601ecca1b9ee12adece40636c82572677ab9a6efebc01aa02e9e48241cf4",
225
+ "block": 25943850,
217
226
  "payloadBytes": 24000
218
227
  },
219
228
  {
220
- "address": "0x816095efc8d7ea80dcb5fd48d3639ab1a8a73ea3",
221
- "transactionHash": "0xd8401f8ef0346415ae4352f30786fd7e0f3354dd7dda4c57e56f3ab769125674",
222
- "block": 25936599,
229
+ "address": "0xCFc6c16826Da7c50A6598F2D0a6082875C1ae372",
230
+ "transactionHash": "0x0488161ae996d825498545ae6ac21e986ad1814f9fb2251f3b45c1bf777c4c16",
231
+ "block": 25943851,
223
232
  "payloadBytes": 24000
224
233
  },
225
234
  {
226
- "address": "0x39caa55da0d24de9a4c3675ae1c696d258d47854",
227
- "transactionHash": "0x2ddae2a0883b385b4b96ee582a0870c886ba46f1f9670cb5e1c10c6ca7a49909",
228
- "block": 25936600,
235
+ "address": "0xeAD2faDAc40662431Ce527226e5125AEa5613679",
236
+ "transactionHash": "0xdc6de04a68b92e398a2f206086676f1933a4e2c6bd8bc77e7c98bf31f4224be5",
237
+ "block": 25943852,
229
238
  "payloadBytes": 24000
230
239
  },
231
240
  {
232
- "address": "0x5bf2786b16aab97a25bf36024e2a302caf78f45f",
233
- "transactionHash": "0x6e91abff36aa778213303e529192a9365dbefd2f92af8c743fa68a4fa12a9619",
234
- "block": 25936601,
241
+ "address": "0xa1Cd9225dc37a258eD42F122e6A654365244429b",
242
+ "transactionHash": "0x30efae542312c85314c435ab05ff0aba99b1f4892618826dc00248057ea13b22",
243
+ "block": 25943853,
235
244
  "payloadBytes": 24000
236
245
  },
237
246
  {
238
- "address": "0xdfde55779da28f3657d88143113d77b444cbd32d",
239
- "transactionHash": "0x2f481c10c4d08a9e2d46435b61250287367f58d881822a3f927a81b09523a2c8",
240
- "block": 25936602,
247
+ "address": "0xA05FEd13f2558AeAF8E9236De9712c389312F392",
248
+ "transactionHash": "0x05560e9a1a4a5b0ea3bf5f0770a6d100fbd0adcb6bd8938d14406edd145add45",
249
+ "block": 25943854,
241
250
  "payloadBytes": 24000
242
251
  },
243
252
  {
244
- "address": "0x7cda636334d36a7f42fda1bf701f29eab9101a69",
245
- "transactionHash": "0x70048693d2a81263bf0ac349bb05ae17b28dbda77784c76449488b50d68345b5",
246
- "block": 25936603,
253
+ "address": "0x31cBAAb7694C0398493211B81946437083FEb760",
254
+ "transactionHash": "0xf416d4b05554bf0ef1e96d29b70b37a9c8babf5e4f42849062a3e441b29c3203",
255
+ "block": 25943855,
247
256
  "payloadBytes": 24000
248
257
  },
249
258
  {
250
- "address": "0x0f7180c0955c541483b97028885ad100afdfcdda",
251
- "transactionHash": "0x77b455f18d98e866db03e3fe2e75eae26f0dda2c8b1788fe42740a15898ff27b",
252
- "block": 25936604,
259
+ "address": "0xa1Fb4Ae5988Cb9739A0Cf3b4fc7e6BF3E045ec04",
260
+ "transactionHash": "0x8978f08f465d954751266c0dc284bfd888b5ff4a9756d6c7fd2288ac86268378",
261
+ "block": 25943856,
253
262
  "payloadBytes": 24000
254
263
  },
255
264
  {
256
- "address": "0xad1107664c170688cb5226141f64272191d6e056",
257
- "transactionHash": "0x2ccf0e15fb0e594fd532ab4f7671b4bbbdcdd264f2c8de06f595810b5415c4f3",
258
- "block": 25936605,
265
+ "address": "0x9E986048bf8B7C296d19cd8dF02CB0bfe8f73Ea4",
266
+ "transactionHash": "0xe1d9ddada722beb7a2148e2d558ff333773c5a4b878725baa00590bcd0b8ab76",
267
+ "block": 25943857,
259
268
  "payloadBytes": 24000
260
269
  },
261
270
  {
262
- "address": "0x11b1df01f23000894ba3d9ce8c9866da5a516755",
263
- "transactionHash": "0xd012cc7f620909c9b193c935e4bf6b859cf4379c1a9b999be9672f4eb7146cf3",
264
- "block": 25936606,
271
+ "address": "0xf568f232CB6154d9dD9B0c5fc47046e691266135",
272
+ "transactionHash": "0x3295e512fa016f8d4306421e7928be87f9c85f70ba9084fac441b5ce44127113",
273
+ "block": 25943859,
265
274
  "payloadBytes": 24000
266
275
  },
267
276
  {
268
- "address": "0xe2e0cda7353a7806ef644ec04c778613a955fa95",
269
- "transactionHash": "0xf428eda0c11a578b7c626aa28921780ec996b700ad0d7e65ad1ba094090bc98b",
270
- "block": 25936607,
277
+ "address": "0x27EE558daf98316D0D375Cc2c60906Cb71f57dE5",
278
+ "transactionHash": "0x7944f1dbfaf3022659b5ea1669f883df7f714edf36a690dbfe9da255959133dd",
279
+ "block": 25943860,
271
280
  "payloadBytes": 24000
272
281
  },
273
282
  {
274
- "address": "0x42dbff87f19d84f237e1aba0242b88548b8afa8b",
275
- "transactionHash": "0xd1d503fea960cfdf528518c14ae3683320e243c9fe0262daebf56d2482123f2f",
276
- "block": 25936608,
283
+ "address": "0x9feD0e9da21FC0f1b79543E7b87042E457bDb545",
284
+ "transactionHash": "0x3637bb2e4bae51c619c5adc3c41249cde81cff2e108a1fa4fbce851b24474ac3",
285
+ "block": 25943861,
277
286
  "payloadBytes": 24000
278
287
  },
279
288
  {
280
- "address": "0xcea7a193e998620e2406fe9e94526b7fba17d1ba",
281
- "transactionHash": "0x461cc7fa1573cdb5653e6beb45b85ee2804fd58001efdbf7f90c39bfdd39f2ea",
282
- "block": 25936609,
289
+ "address": "0x26172ac10e736ada96e690baAeccBa1b04D47cC6",
290
+ "transactionHash": "0x80ca114d2f552195ce9e3ef1591616ff5cae5a8c26bb894680d7fb1612defe0b",
291
+ "block": 25943863,
283
292
  "payloadBytes": 3090
284
293
  }
285
294
  ]
@@ -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.31.1",
3
+ "version": "0.4.0-dev.33.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
- }