Session event emits the customer's MAC address in the p tag — spec-invalid value on every payment response
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 70/100
Direzione di ricerca
Inizia da createSessionEvent in src/merchant/merchant.go, dove l'evento kind-1022 inserisce customerPubkey nel tag p, e dal suo unico chiamante in PurchaseSession, che passa l'indirizzo MAC. Rimuovi il tag p dall'evento di sessione e lascia device-identifier com'è. Prima di modificare, esegui grep nelle suite di conformità di portal e PRTA per cercare qualsiasi lettore del tag p, dato che l'issue dice che è visibile sul wire. Il lavoro è completato quando l'evento di sessione non ha il tag p e i test del package merchant passano ancora.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found while resolving the spec divergence tollgate#16 (spec PR: tollgate#26).
Evidence
createSessionEvent in src/merchant/merchant.go declares a customerPubkey parameter and puts it straight into the kind-1022 session event's p tag:
func (m *Merchant) createSessionEvent(session *CustomerSession, customerPubkey string) (*nostr.Event, error) {
deviceIdentifier := session.MacAddress
...
Tags: nostr.Tags{
{"p", customerPubkey},
{"device-identifier", "mac", deviceIdentifier},
Its only call site passes the MAC address (src/merchant/merchant.go, PurchaseSession):
sessionEvent, err := m.createSessionEvent(session, macAddress)
So every payment response carries the customer's MAC in p — a value that is not a Nostr pubkey. Consequences: #p relay-side filtering of session events can never match anything; any spec-conformant consumer validating p as a pubkey rejects our session events; and the MAC — which device-identifier already carries — is duplicated into a field whose contract says pubkey.
Why it happens
Pre-March-2026 the payment was a signed kind=21000 event, so a customer pubkey existed. The raw-token rework removed the identity source; the parameter was never revisited.
Suggested fix
In the raw-token flow there is no customer Nostr identity, so the spec-conformant behavior is to omit the p tag (the spec PR above makes p conditional and forbids non-pubkey values in it). If the legacy kind=21000 envelope ever carries a verified customer pubkey, that is the one case where p could be filled.
Note the change is wire-visible on every successful payment response (the shipped portal and PRTA conformance suites should be checked for anything reading the p tag — grep suggests the portal keys on allotment/metric, but that is worth confirming in review, not assuming).
Also noted there
The same function emits a start-time tag TIP-01 does not document — flagged on the spec PR as a separate documentation proposal, not part of this fix.
- Lingua principale
- Go
- Stelle
- 12
- Fork
- 14
- Merge medio
- 3g 18h
- PR unite (30g)
- 284
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OpenTollGate/tollgate-module-basic-go
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OpenTollGate/tollgate-module-basic-go#1122 ·
I maintainer di solito rispondono entro 1 giorno
-
changelog: dependency-security sweep missing from [Unreleased] [Amperstrand fork #105 review debt]Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
OpenTollGate/tollgate-module-basic-go#1055 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OpenTollGate/tollgate-module-basic-go#1027 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OpenTollGate/tollgate-module-basic-go#1026 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
OpenTollGate/tollgate-module-basic-go#833 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di OpenTollGate/tollgate-module-basic-go
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
yetone/magpie#4095 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
docs: Google Safe Browsing flags go-bonnie.dev as "deceptive" (pipe-to-shell install instructions)Apertadocumentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
[Bug]: Telegram bot (v3.11.0): "Ban log" no longer sends the current 3xipl-banned.logForse già presa @HamedSanaei l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
MHSanaei/3x-ui#6990 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
bug(tool/internal/instrument): identical inject_code rules from two rule packages are applied twiceAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
open-telemetry/opentelemetry-go-compile-instrumentation#1611 ·
I maintainer di solito rispondono entro 2 giorni