fix: store id committment as little endian

This commit is contained in:
Prem Chaitanya Prathi 2023-12-06 17:28:58 +05:30
parent 021265eba4
commit 6a270a4218
No known key found for this signature in database
3 changed files with 21 additions and 3 deletions

View File

@ -98,7 +98,10 @@ func (gm *DynamicGroupManager) handler(events []*contracts.RLNMemberRegistered)
// this is not a fatal error, hence we don't raise an exception // this is not a fatal error, hence we don't raise an exception
gm.log.Warn("failed to persist rln metadata", zap.Error(err)) gm.log.Warn("failed to persist rln metadata", zap.Error(err))
} else { } else {
gm.log.Debug("rln metadata persisted", zap.Uint64("lastBlockProcessed", gm.lastBlockProcessed), zap.Uint64("chainID", gm.web3Config.ChainID.Uint64()), logging.HexBytes("contractAddress", gm.web3Config.RegistryContract.Address.Bytes())) gm.log.Debug("rln metadata persisted", zap.Uint64("lastBlockProcessed", gm.lastBlockProcessed),
zap.Uint64("chainID", gm.web3Config.ChainID.Uint64()),
logging.HexBytes("contractAddress", gm.web3Config.RegistryContract.Address.Bytes()),
)
} }
return nil return nil
@ -216,6 +219,13 @@ func (gm *DynamicGroupManager) loadCredential(ctx context.Context) error {
return nil return nil
} }
func ConvertToLittleEndian(b []byte) [32]byte {
for i := 0; i < len(b)/2; i++ {
b[i], b[len(b)-i-1] = b[len(b)-i-1], b[i]
}
return rln.Bytes32(b)
}
func (gm *DynamicGroupManager) InsertMembers(toInsert *om.OrderedMap) error { func (gm *DynamicGroupManager) InsertMembers(toInsert *om.OrderedMap) error {
for pair := toInsert.Oldest(); pair != nil; pair = pair.Next() { for pair := toInsert.Oldest(); pair != nil; pair = pair.Next() {
events := pair.Value.([]*contracts.RLNMemberRegistered) // TODO: should these be sortered by index? we assume all members arrive in order events := pair.Value.([]*contracts.RLNMemberRegistered) // TODO: should these be sortered by index? we assume all members arrive in order
@ -225,7 +235,11 @@ func (gm *DynamicGroupManager) InsertMembers(toInsert *om.OrderedMap) error {
if oldestIndexInBlock == nil { if oldestIndexInBlock == nil {
oldestIndexInBlock = evt.Index oldestIndexInBlock = evt.Index
} }
idCommitments = append(idCommitments, rln.BigIntToBytes32(evt.IdCommitment)) convertedIdCommittment := rln.BigIntToBytes32(evt.IdCommitment)
leIdCommittment := ConvertToLittleEndian(convertedIdCommittment[:])
idCommitments = append(idCommitments, leIdCommittment)
gm.log.Debug("processed committment", logging.HexBytes("id-committment", leIdCommittment[:]))
} }
if len(idCommitments) == 0 { if len(idCommitments) == 0 {
@ -235,6 +249,8 @@ func (gm *DynamicGroupManager) InsertMembers(toInsert *om.OrderedMap) error {
// TODO: should we track indexes to identify missing? // TODO: should we track indexes to identify missing?
startIndex := rln.MembershipIndex(uint(oldestIndexInBlock.Int64())) startIndex := rln.MembershipIndex(uint(oldestIndexInBlock.Int64()))
start := time.Now() start := time.Now()
gm.log.Debug("inserting members at index", zap.Uint("index", startIndex))
err := gm.rln.InsertMembers(startIndex, idCommitments) err := gm.rln.InsertMembers(startIndex, idCommitments)
if err != nil { if err != nil {
gm.log.Error("inserting members into merkletree", zap.Error(err)) gm.log.Error("inserting members into merkletree", zap.Error(err))

View File

@ -75,6 +75,7 @@ func (mf *MembershipFetcher) HandleGroupUpdates(ctx context.Context, handler Reg
return err return err
} }
mf.log.Info("events loaded", zap.Duration("timeToLoad", time.Since(t))) mf.log.Info("events loaded", zap.Duration("timeToLoad", time.Since(t)))
//TODO: Set latest block in gm to latestBlockNumber???
errCh := make(chan error) errCh := make(chan error)

View File

@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"sync" "sync"
"github.com/waku-org/go-waku/logging"
"github.com/waku-org/go-waku/waku/v2/utils" "github.com/waku-org/go-waku/waku/v2/utils"
"github.com/waku-org/go-zerokit-rln/rln" "github.com/waku-org/go-zerokit-rln/rln"
"go.uber.org/zap" "go.uber.org/zap"
@ -109,7 +110,7 @@ func (m *MerkleRootTracker) UpdateLatestRoot(blockNumber uint64) rln.MerkleNode
if err != nil { if err != nil {
utils.Logger().Named("root-tracker").Panic("could not retrieve merkle root", zap.Error(err)) utils.Logger().Named("root-tracker").Panic("could not retrieve merkle root", zap.Error(err))
} }
utils.Logger().Named("root-tracker").Debug("pushing root", logging.HexBytes("root", root[:]))
m.pushRoot(blockNumber, root) m.pushRoot(blockNumber, root)
return root return root