Skip to content

Commit 6760ab0

Browse files
authored
feat!: remove nip-26 delegation support (#350)
BREAKING CHANGE: NIP-26 support has been removed. Delegated events will not be handled differently.
1 parent ed30823 commit 6760ab0

16 files changed

+35
-561
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ NIPs with a relay-specific implementation are listed here.
5757
- [x] NIP-16: Event Treatment
5858
- [x] NIP-20: Command Results
5959
- [x] NIP-22: Event `created_at` Limits
60-
- [x] NIP-26: Delegated Event Signing
60+
- [ ] NIP-26: Delegated Event Signing (REMOVED)
6161
- [x] NIP-28: Public Chat
6262
- [x] NIP-33: Parameterized Replaceable Events
6363
- [x] NIP-40: Expiration Timestamp
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
exports.up = async function (knex) {
2+
await knex.schema
3+
.raw('DROP INDEX IF EXISTS pubkey_delegator_kind_idx;')
4+
await knex.schema.alterTable('events', function (table) {
5+
table.dropColumn('event_delegator')
6+
})
7+
}
8+
9+
exports.down = async function (knex) {
10+
await knex.schema.alterTable('events', function (table) {
11+
table.binary('event_delegator').nullable().index()
12+
})
13+
await knex.schema
14+
.raw(
15+
`CREATE UNIQUE INDEX pubkey_delegator_kind_idx
16+
ON events ( event_pubkey, event_delegator, event_kind );`,
17+
)
18+
}

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
16,
1414
20,
1515
22,
16-
26,
1716
28,
1817
33,
1918
40

src/@types/event.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ContextMetadata, EventId, Pubkey, Tag } from './base'
2-
import { ContextMetadataKey, EventDeduplicationMetadataKey, EventDelegatorMetadataKey, EventExpirationTimeMetadataKey, EventKinds } from '../constants/base'
2+
import { ContextMetadataKey, EventDeduplicationMetadataKey, EventExpirationTimeMetadataKey, EventKinds } from '../constants/base'
33

44
export interface BaseEvent {
55
id: EventId
@@ -21,10 +21,6 @@ export type UnsignedEvent = Omit<Event, 'sig'>
2121

2222
export type UnidentifiedEvent = Omit<UnsignedEvent, 'id'>
2323

24-
export interface DelegatedEvent extends Event {
25-
[EventDelegatorMetadataKey]?: Pubkey
26-
}
27-
2824
export interface ExpiringEvent extends Event {
2925
[EventExpirationTimeMetadataKey]?: number
3026
}
@@ -42,7 +38,6 @@ export interface DBEvent {
4238
event_content: string
4339
event_tags: Tag[]
4440
event_signature: Buffer
45-
event_delegator?: Buffer | null
4641
event_deduplication?: string | null
4742
first_seen: Date
4843
deleted_at?: Date

src/@types/subscription.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export type SubscriptionId = string
55

66
export interface SubscriptionFilter {
77
ids?: EventId[]
8-
kinds?: EventKinds[]
8+
kinds?: (EventKinds | number)[]
99
since?: number
1010
until?: number
1111
authors?: Pubkey[]

src/constants/base.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export enum EventTags {
3737
Event = 'e',
3838
Pubkey = 'p',
3939
// Multicast = 'm',
40-
Delegation = 'delegation',
4140
Deduplication = 'd',
4241
Expiration = 'expiration',
4342
Invoice = 'bolt11',
@@ -49,7 +48,6 @@ export enum PaymentsProcessors {
4948
LNBITS = 'lnbits',
5049
}
5150

52-
export const EventDelegatorMetadataKey = Symbol('Delegator')
5351
export const EventDeduplicationMetadataKey = Symbol('Deduplication')
5452
export const ContextMetadataKey = Symbol('Context')
5553
export const EventExpirationTimeMetadataKey = Symbol('Expiration')

src/factories/delegated-event-strategy-factory.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/factories/message-handler-factory.ts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import { IEventRepository, IUserRepository } from '../@types/repositories'
22
import { IncomingMessage, MessageType } from '../@types/messages'
33
import { createSettings } from './settings-factory'
4-
import { DelegatedEventMessageHandler } from '../handlers/delegated-event-message-handler'
5-
import { delegatedEventStrategyFactory } from './delegated-event-strategy-factory'
64
import { EventMessageHandler } from '../handlers/event-message-handler'
75
import { eventStrategyFactory } from './event-strategy-factory'
8-
import { isDelegatedEvent } from '../utils/event'
96
import { IWebSocketAdapter } from '../@types/adapters'
107
import { slidingWindowRateLimiterFactory } from './rate-limiter-factory'
118
import { SubscribeMessageHandler } from '../handlers/subscribe-message-handler'
@@ -18,16 +15,6 @@ export const messageHandlerFactory = (
1815
switch (message[0]) {
1916
case MessageType.EVENT:
2017
{
21-
if (isDelegatedEvent(message[1])) {
22-
return new DelegatedEventMessageHandler(
23-
adapter,
24-
delegatedEventStrategyFactory(eventRepository),
25-
userRepository,
26-
createSettings,
27-
slidingWindowRateLimiterFactory,
28-
)
29-
}
30-
3118
return new EventMessageHandler(
3219
adapter,
3320
eventStrategyFactory(eventRepository),
@@ -39,7 +26,7 @@ export const messageHandlerFactory = (
3926
case MessageType.REQ:
4027
return new SubscribeMessageHandler(adapter, eventRepository, createSettings)
4128
case MessageType.CLOSE:
42-
return new UnsubscribeMessageHandler(adapter,)
29+
return new UnsubscribeMessageHandler(adapter)
4330
default:
4431
throw new Error(`Unknown message type: ${String(message[0]).substring(0, 64)}`)
4532
}

src/handlers/delegated-event-message-handler.ts

Lines changed: 0 additions & 75 deletions
This file was deleted.

src/repositories/event-repository.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {
2828
toPairs,
2929
} from 'ramda'
3030

31-
import { ContextMetadataKey, EventDeduplicationMetadataKey, EventDelegatorMetadataKey, EventExpirationTimeMetadataKey } from '../constants/base'
31+
import { ContextMetadataKey, EventDeduplicationMetadataKey, EventExpirationTimeMetadataKey } from '../constants/base'
3232
import { DatabaseClient, EventId } from '../@types/base'
3333
import { DBEvent, Event } from '../@types/event'
3434
import { IEventRepository, IQueryResult } from '../@types/repositories'
@@ -105,7 +105,7 @@ export class EventRepository implements IEventRepository {
105105
])(currentFilter[filterName] as string[])
106106
})
107107
})({
108-
authors: ['event_pubkey', 'event_delegator'],
108+
authors: ['event_pubkey'],
109109
ids: ['event_id'],
110110
})
111111

@@ -180,11 +180,6 @@ export class EventRepository implements IEventRepository {
180180
event_tags: pipe(prop('tags'), toJSON),
181181
event_content: prop('content'),
182182
event_signature: pipe(prop('sig'), toBuffer),
183-
event_delegator: ifElse(
184-
propSatisfies(is(String), EventDelegatorMetadataKey),
185-
pipe(prop(EventDelegatorMetadataKey as any), toBuffer),
186-
always(null),
187-
),
188183
remote_address: path([ContextMetadataKey as any, 'remoteAddress', 'address']),
189184
expires_at: ifElse(
190185
propSatisfies(is(Number), EventExpirationTimeMetadataKey),
@@ -212,11 +207,6 @@ export class EventRepository implements IEventRepository {
212207
event_tags: pipe(prop('tags'), toJSON),
213208
event_content: prop('content'),
214209
event_signature: pipe(prop('sig'), toBuffer),
215-
event_delegator: ifElse(
216-
propSatisfies(is(String), EventDelegatorMetadataKey),
217-
pipe(prop(EventDelegatorMetadataKey as any), toBuffer),
218-
always(null),
219-
),
220210
event_deduplication: ifElse(
221211
propSatisfies(isNil, EventDeduplicationMetadataKey),
222212
pipe(paths([['pubkey'], ['kind']]), toJSON),

0 commit comments

Comments
 (0)