From 1544d9035457fed070636b2b62c88fbd83bb32a7 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 24 Mar 2025 15:54:08 -0300 Subject: [PATCH] split up serializeEvent() --- event.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/event.go b/event.go index ba8b3e3..499b809 100644 --- a/event.go +++ b/event.go @@ -8,8 +8,6 @@ import ( "github.com/mailru/easyjson" ) -const hextable = "0123456789abcdef" - // Event represents a Nostr event. type Event struct { ID string @@ -38,9 +36,12 @@ func (evt *Event) CheckID() bool { return false } - ser := evt.Serialize() + ser := make([]byte, 0, 100+len(evt.Content)+len(evt.Tags)*80) + ser = serializeEventInto(evt, ser) h := sha256.Sum256(ser) + const hextable = "0123456789abcdef" + for i := 0; i < 32; i++ { b := hextable[h[i]>>4] if b != evt.ID[i*2] { @@ -61,7 +62,10 @@ func (evt *Event) Serialize() []byte { // the serialization process is just putting everything into a JSON array // so the order is kept. See NIP-01 dst := make([]byte, 0, 100+len(evt.Content)+len(evt.Tags)*80) + return serializeEventInto(evt, dst) +} +func serializeEventInto(evt *Event, dst []byte) []byte { // the header portion is easy to serialize // [0,"pubkey",created_at,kind,[ dst = append(dst, "[0,\""...)