fix(store): retain eligibilityProof on outbound storeQuery

Stop clearing eligibilityProof after JSON parse in logosdelivery_store_query
so tag-30 proof bytes reach the remote Store handler (Step 17 paid E2E).

Add waku_store test for E2E query JSON / N8 canonical parity.
This commit is contained in:
Sergei Tikhomirov 2026-06-18 22:32:39 +02:00
parent 538d358c95
commit a40fd258da
No known key found for this signature in database
GPG Key ID: 6A1F8ED9D6538027
3 changed files with 47 additions and 2 deletions

View File

@ -126,8 +126,6 @@ proc logosdelivery_store_query(
var storeQueryRequest = storeQueryRequestFromJson(jsonContentRes.get()).valueOr:
return err("StoreRequest invalid query: " & error)
storeQueryRequest.eligibilityProof = none(seq[byte])
let (providerCb, providerUserData) = snapshotProviderCb(ctx)
let peer = peers.parsePeerInfo(($providerAddr).split(",")).valueOr:

View File

@ -40,6 +40,7 @@ import
./waku_store/test_rpc_codec,
./waku_store/test_store_eligibility_canonical,
./waku_store/test_store_eligibility_hooks,
./waku_store/test_store_query_json_canonical,
./waku_store/test_waku_store,
./waku_store/test_wakunode_store

View File

@ -0,0 +1,46 @@
{.used.}
import std/[json, options], results, testutils/unittests
import logos_delivery/waku/waku_core, logos_delivery/waku/waku_store/[
common, eligibility_canonical, rpc_codec
]
import ../../library/store_eligibility/store_query_json
const N8ReferenceWireHex =
"2f4c455a2f76302e312f53746f7265456c69676962696c6974792f0000000000050000007265712d3101010d0000002f77616b752f322f746f70696301000000140000002f6d792d6170702f312f636861742f70726f746f010a000000000000000002000000010101010101010101010101010101010101010101010101010101010101010102020202020202020202020202020202020202020202020202020202020202020001016400000000000000"
const E2eQueryJson = """
{
"requestId": "req-1",
"includeData": true,
"pubsubTopic": "/waku/2/topic",
"contentTopics": ["/my-app/1/chat/proto"],
"timeStart": 10,
"paginationForward": true,
"paginationLimit": 100,
"messageHashes": [
"0101010101010101010101010101010101010101010101010101010101010101",
"0202020202020202020202020202020202020202020202020202020202020202"
]
}
"""
procSuite "Waku Store - store query JSON (N8)":
test "E2E query JSON matches n8_canonical_wire_hex reference":
let parsed = parseJson(E2eQueryJson)
let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk()
let req = reqRes.get()
check storeEligibilityCanonicalHex(req) == N8ReferenceWireHex
test "E2E query JSON protobuf roundtrip matches N8 reference":
let parsed = parseJson(E2eQueryJson)
let reqRes = storeQueryRequestFromJson(parsed)
check reqRes.isOk()
var req = reqRes.get()
req.eligibilityProof = some(@[byte(0xAB), byte(0xCD)])
let buf = req.encode().buffer
let decoded = StoreQueryRequest.decode(buf).get()
check storeEligibilityCanonicalHex(decoded) == N8ReferenceWireHex
check decoded.eligibilityProof.isSome()
check decoded.eligibilityProof.get() == @[byte(0xAB), byte(0xCD)]