Skip to content

Commit ebae42f

Browse files
committed
simplify
1 parent 83b25d6 commit ebae42f

File tree

1 file changed

+0
-90
lines changed

1 file changed

+0
-90
lines changed

pkg/store/README.md

Lines changed: 0 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -180,93 +180,3 @@ err = batch.Commit(ctx)
180180
## Store Adapters for P2P Integration
181181

182182
The store package provides adapter implementations that wrap the ev-node store to satisfy the `header.Store[H]` interface from the `go-header` library. This enables the ev-node store to be used directly by go-header's P2P infrastructure, eliminating data duplication.
183-
184-
### Background
185-
186-
Previously, ev-node maintained redundant storage:
187-
188-
1. **ev-node store** - Primary store for headers, data, state, and metadata
189-
2. **go-header stores** - Separate stores for P2P sync (headerSync and dataSync prefixes)
190-
191-
This resulted in the same headers and data being stored multiple times.
192-
193-
### Solution: Store Adapters
194-
195-
Two adapter types wrap the ev-node store:
196-
197-
- **`HeaderStoreAdapter`** - Implements `header.Store[*types.SignedHeader]`
198-
- **`DataStoreAdapter`** - Implements `header.Store[*types.Data]`
199-
200-
These adapters:
201-
202-
- Read from the single ev-node store
203-
- Write to the ev-node store when receiving data via P2P
204-
- Provide the interface required by go-header's exchange server, syncer, and subscriber
205-
206-
### Usage
207-
208-
```go
209-
// Create the ev-node store
210-
evStore := store.New(kvStore)
211-
212-
// Create adapters for P2P infrastructure
213-
headerAdapter := store.NewHeaderStoreAdapter(evStore)
214-
dataAdapter := store.NewDataStoreAdapter(evStore)
215-
216-
// Use with go-header P2P components
217-
exchangeServer, _ := goheaderp2p.NewExchangeServer(host, headerAdapter, opts...)
218-
```
219-
220-
### Benefits
221-
222-
1. **Single source of truth** - All block data lives in one place
223-
2. **Reduced disk usage** - No duplicate storage of headers and data
224-
3. **Simplified rollback** - Rolling back the ev-node store automatically affects P2P sync
225-
4. **Atomic operations** - Block storage and state updates remain atomic
226-
227-
### Architecture
228-
229-
```mermaid
230-
classDiagram
231-
class Store {
232-
<<interface>>
233-
+GetHeader(height) SignedHeader
234-
+GetBlockData(height) (SignedHeader, Data)
235-
+GetBlockByHash(hash) (SignedHeader, Data)
236-
+NewBatch() Batch
237-
}
238-
239-
class HeaderStoreAdapter {
240-
-store Store
241-
-height atomic.Uint64
242-
+Head() SignedHeader
243-
+GetByHeight(height) SignedHeader
244-
+Get(hash) SignedHeader
245-
+Append(headers...) error
246-
+Height() uint64
247-
}
248-
249-
class DataStoreAdapter {
250-
-store Store
251-
-height atomic.Uint64
252-
+Head() Data
253-
+GetByHeight(height) Data
254-
+Get(hash) Data
255-
+Append(data...) error
256-
+Height() uint64
257-
}
258-
259-
class GoHeaderStore {
260-
<<interface>>
261-
+Head() H
262-
+Get(hash) H
263-
+GetByHeight(height) H
264-
+Append(items...) error
265-
+Height() uint64
266-
}
267-
268-
Store <-- HeaderStoreAdapter : wraps
269-
Store <-- DataStoreAdapter : wraps
270-
GoHeaderStore <|.. HeaderStoreAdapter : implements
271-
GoHeaderStore <|.. DataStoreAdapter : implements
272-
```

0 commit comments

Comments
 (0)