messaging
Package messaging provides FHE-CRDT extensions for private messaging.
import "github.com/luxfi/node/vms/chainadapter/messaging"Package messaging provides FHE-CRDT extensions for private messaging. It enables encrypted CRDTs for conversation metadata, group membership, read markers, and rate-limit counters integrated with service node storage.
Functions
SerializeConversation
func SerializeConversation(conv *Conversation) ([]byte, error)SerializeConversation serializes a conversation to ZAP. Replaces the legacy JSON codec, which was UTF-8 unsafe (binary OR-Set tags stuffed into Go map keys).
Types
Conversation
Conversation represents an encrypted conversation with CRDT metadata
func DeserializeConversation(data []byte) (*Conversation, error)func MergeConversations(local, remote *Conversation) *Conversationfunc (c *Conversation) Hash() [32]byteConversationType
ConversationType defines the type of conversation
Encryptor
Encryptor provides encryption/decryption operations
MemberEntry
MemberEntry represents a member in the membership CRDT
MembershipCRDT
MembershipCRDT tracks group membership using an OR-Set CRDT
func NewMembershipCRDT() *MembershipCRDTfunc (m *MembershipCRDT) Add(accountID [32]byte, role string, addedBy [32]byte) stringfunc (m *MembershipCRDT) GetMember(accountID [32]byte) (*MemberEntry, string, error)func (m *MembershipCRDT) GetMembers() []*MemberEntryfunc (m *MembershipCRDT) IsMember(accountID [32]byte) boolfunc (m *MembershipCRDT) Merge(other *MembershipCRDT)func (m *MembershipCRDT) Remove(tag string)MessageStore
MessageStore manages encrypted messages with CRDT semantics
func NewMessageStore(encryptor Encryptor) *MessageStorefunc (s *MessageStore) AddMember(ctx context.Context, conversationID ids.ID, accountID [32]byte, role string, addedBy [32]byte) errorfunc (s *MessageStore) CheckRateLimit(accountID [32]byte) errorfunc (s *MessageStore) CreateConversation(ctx context.Context, convType ConversationType, creatorID [32]byte, members [][32]byte) (*Conversation, error)func (s *MessageStore) GetConversation(conversationID ids.ID) (*Conversation, error)func (s *MessageStore) IncrementRateLimit(accountID [32]byte)func (s *MessageStore) RemoveMember(ctx context.Context, conversationID ids.ID, accountID [32]byte, removedBy [32]byte) errorfunc (s *MessageStore) UpdateReadMarker(ctx context.Context, conversationID ids.ID, accountID [32]byte, lastReadID ids.ID) errorRateCounter
RateCounter tracks message counts for an account
RateLimiter
RateLimiter provides rate limiting for message sending
func NewRateLimiter(maxPerMinute, maxPerHour, maxPerDay int) *RateLimiterfunc (r *RateLimiter) Check(accountID [32]byte) errorfunc (r *RateLimiter) Increment(accountID [32]byte)ReadMarker
ReadMarker represents a member's read position
ReadMarkerCRDT
ReadMarkerCRDT tracks read markers using LWW registers
func NewReadMarkerCRDT() *ReadMarkerCRDTfunc (r *ReadMarkerCRDT) Get(accountID [32]byte) *ReadMarkerfunc (r *ReadMarkerCRDT) Merge(other *ReadMarkerCRDT)func (r *ReadMarkerCRDT) Update(accountID [32]byte, lastReadID ids.ID, lastReadTime time.Time)