From d16900a7532156991515e6267e9d22b70f02a31a Mon Sep 17 00:00:00 2001
From: Justin <drakefjustin@gmail.com>
Date: Wed, 18 Nov 2020 09:31:41 +0000
Subject: [PATCH] Fixes from @ralexstokes

---
 specs/lightclient/sync-protocol.md | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/specs/lightclient/sync-protocol.md b/specs/lightclient/sync-protocol.md
index e460d86d9..d35c9821d 100644
--- a/specs/lightclient/sync-protocol.md
+++ b/specs/lightclient/sync-protocol.md
@@ -76,10 +76,10 @@ class LightClientUpdate(Container):
     signed_header: BeaconBlockHeader
     # Merkle branch proving ancestry of the header in the snapshot
     ancestry_branch: Vector[Bytes32, log2(FINALIZED_ROOT_INDEX)]
-    # Merkle branches for the next sync committee
+    # Merkle branch for the next sync committee
     next_sync_committee_branch: Vector[Bytes32, log2(NEXT_SYNC_COMMITTEE_INDEX)]
     # Sync committee aggregate signature
-    sync_committee_bits: Bitlist[MAX_SYNC_COMMITTEE_SIZE]
+    sync_committee_bits: Bitvector[SYNC_COMMITTEE_SIZE]
     sync_committee_signature: BLSSignature
     # Fork version for the aggregate signature
     fork_version: Version
@@ -127,7 +127,7 @@ def is_valid_light_client_update(store: LightClientStore, update: LightClientUpd
     if new_period == old_period:
         assert new_snapshot.current_sync_committee == old_snapshot.current_sync_committee
         assert new_snapshot.next_sync_committee == old_snapshot.next_sync_committee
-    else new_period == old_period + 1:
+    else:
         assert new_snapshot.current_sync_committee == old_snapshot.next_sync_committee
         assert is_valid_merkle_branch(
             leaf=hash_tree_root(new_snapshot.next_sync_committee),
@@ -140,7 +140,7 @@ def is_valid_light_client_update(store: LightClientStore, update: LightClientUpd
     # Verify sync committee bitfield length 
     sync_committee = new_snapshot.current_sync_committee
     assert len(update.sync_committee_bits) == len(sync_committee)
-    assert sum(update.sync_committee_bits) > MIN_SYNC_COMMITTEE_PARTICIPANTS
+    assert sum(update.sync_committee_bits) >= MIN_SYNC_COMMITTEE_PARTICIPANTS
 
     # Verify sync committee aggregate signature
     participant_pubkeys = [pubkey for (bit, pubkey) in zip(update.sync_committee_bits, sync_committee.pubkeys) if bit]
@@ -166,9 +166,9 @@ def process_light_client_update(store: LightClientStore, update: LightClientUpda
     if sum(update.sync_committee_bits) * 3 > len(update.sync_committee_bits) * 2 and update.snapshot.header != update.signed_header:
         # Immediate update when quorum is reached
         store.snapshot = update.snapshot
-        valid_updates = []
+        store.valid_updates = []
     elif current_slot > old_snapshot.header.slot + LIGHT_CLIENT_UPDATE_TIMEOUT:
         # Forced best update when the update timeout has elapsed
-        store.snapshot = max(valid_updates, key=lambda update: sum(update.sync_committee_bits)).new_snapshot
-        valid_updates = []
+        store.snapshot = max(store.valid_updates, key=lambda update: sum(update.sync_committee_bits)).snapshot
+        store.valid_updates = []
 ```