File tree Expand file tree Collapse file tree 3 files changed +26
-2
lines changed Expand file tree Collapse file tree 3 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -390,9 +390,25 @@ def parse_price_attestation(bytes_):
390390 }
391391
392392
393+ def is_accumulator_update (vaa , encoding = DEFAULT_VAA_ENCODING ) -> bool :
394+ """
395+ This function checks if a given VAA is an accumulator update.
396+
397+ Parameters:
398+ vaa (str): The VAA to check.
399+ encoding (str, optional): The encoding of the VAA. Defaults to hex.
400+
401+ Returns:
402+ bool: True if the VAA is an accumulator update, False otherwise.
403+ """
404+ if encode_vaa_for_chain (vaa , encoding , buffer = True )[:4 ].hex () == ACCUMULATOR_MAGIC :
405+ return True
406+ return False
407+
408+
393409# Referenced from https://github.com/pyth-network/pyth-crosschain/blob/110caed6be3be7885773d2f6070b143cc13fb0ee/price_service/server/src/rest.ts#L139
394410def vaa_to_price_infos (vaa , encoding = DEFAULT_VAA_ENCODING ) -> List [PriceInfo ]:
395- if encode_vaa_for_chain (vaa , encoding , buffer = True )[: 4 ]. hex () == ACCUMULATOR_MAGIC :
411+ if is_accumulator_update (vaa , encoding ) :
396412 return extract_price_info_from_accumulator_update (vaa , encoding )
397413 parsed_vaa = parse_vaa (vaa , encoding )
398414 batch_attestation = parse_batch_price_attestation (parsed_vaa ["payload" ])
Original file line number Diff line number Diff line change 77
88setup (
99 name = 'pythclient' ,
10- version = '0.1.13 ' ,
10+ version = '0.1.14 ' ,
1111 packages = ['pythclient' ],
1212 author = 'Pyth Developers' ,
1313
Original file line number Diff line number Diff line change 66 MerkleUpdate ,
77 compress_accumulator_update ,
88 encode_vaa_for_chain ,
9+ is_accumulator_update ,
910 parse_accumulator_update ,
1011 serialize_accumulator_update ,
1112 vaa_to_price_info ,
3637ACCUMULATOR_UPDATE_DATA_SOL_DIFFERENT_VAA = "UE5BVQEAAAADuAEAAAADDQBKFAm5gZxQZ89PDktXvCHe7kD0oYCU0YfEEeMsHJ4IQW8A5g0qe0wESIGKcEcA6OPic12DE1tdp6YARgviIpFGAQH+1Lm+9Kd/9rKx0ExQ8Attr2+clx4Inv5fCUSAmLSoeX85Ozs8YsACeenITjLX5luKSNWgm21Wu9AajvgUSKyDAAJ76AwXmW2pJ2ga2ZpiQERAr6v66VM5Mrvjp5UiewmSbVv/7kf3yM2ARr6WppbBvnwVdpnN/JdQFRomAl9mZS/SAANPCkWipzos+ioWE5Zzk+xO10kmR7sLPWvalGOjqPMjJld8dxfN66QVqYvVIKNdQgyfcKKLEnfw1PKY1lyjPuYjAQSK25cVWNC8akycRKhjawoP0baF9xtbLWnYSAFBgiJjnlHdlXBEHYrJW7mB1b6ALjglMkEXcrCZsRULpWgQtMbyAQs13nvw502cMVFYXB6L82R5NcYyH4Xq4wW1Ra+x86B+ZCRgyvuH+ALP3j1/iA8ObB43eki55h83JINUyPiySTsbAQw1r4gtKmnAmKtK4Ge8e+iJyExww5huK48nqlWQZBBMcxIu0aQZDZO37Ysaa6jbHy6YgvMn1iHzh8reH2vfS/lyAQ1HVCPSzrTtOjF3ZF8BJqGWedNhdnffyvRI0g9EWqQRvXoPwy7w/41jnfKUrxcrhGpRzcNutlbPNN9kPtmUEq5gAA4QwFhqNPqzWy/hY2qp3RGHjV8i9zx4I0aJyOi7NB+1ewmm3yOZk4nvBqizGBtxdFKITNag0OHh4IbO8zON/6vnAA/qBsZEltyzDy/OJnqsX8gyOUm53/pFieXa23lSODPi9mYbwSCTjb03X3bLVjKqrHi71F5+qlbCqer7wfXNzSrgARDIhOeEsgcWUmfKfes/ln9OV4i8XAKQzlDaC4BRUnAO0yIPJZATE3rOq/UcXdHfQUJiI/BBzh+KNZTi7QsvDP1mABFZLX4GkPz92o6eLQro8y1RFNiP1w1yDf0Td7PBtE86ujHwQY3QqCHp2Q9hiVox7go1wDWEG6H0rzOKQfKTC9oyABLd6Fb+2ThyhiFtreyc/0lLmSfi3ZClZiC7eVOvg32ybmNtZWunfYuxojVdM6e3ETeHoZ8Xzsetab3iBKzOInmEAWTxKYEAAAAAABrhAfrtrFhR4yubI7X5QRqMK6xKrj7U3XuBHdGnLqSqcQAAAAAAijllAUFVV1YAAAAAAAWKvXUAACcQ3HvATwZJhOMXUOpsxl3js3cJ2UoBAFUA7w2Lb9os66QdoV1AldHaOSoNL47Qxse8D0z6yMKAtW0AAAAAdZyz4QAAAAAAGzQd////+AAAAABk8SmBAAAAAGTxKYAAAAAAdajBegAAAAAAGDQdCX7POyhhbRE0fZPLbyONUAJ+6eS8CUz89ZmOaX9iCON0AzYTqrcpKZe189sKyhdvV8wZPkdHj8K7sNCWVP77y4K8q0eIHSbEbiAZv3GQxptsAP/yBqn4QmvmKA8tqiNp2ZwyMvTreSVyWhDVPo+acVFaI5WQHw45KwMm3/L7zcEKr8+pzQl8FKfnH1wy3Tjw2hj8sPfq1NHeVttsBEK5SIPSXMgExPoP1vmy7SymxxR8JIM3ug=="
3738
3839
40+ def test_is_accumulator_update ():
41+ # Test that a price service VAA is not an accumulator update
42+ assert is_accumulator_update (HEX_VAA , "hex" ) == False
43+ # Test that an accumulator update VAA is an accumulator update
44+ assert is_accumulator_update (ACCUMULATOR_UPDATE_DATA_BTC_SAME_VAA , "base64" ) == True
45+
46+
3947def test_valid_hex_vaa_to_price_info ():
4048 price_info = vaa_to_price_info (BTC_ID , HEX_VAA )
4149 assert price_info .seq_num == 558149954
You can’t perform that action at this time.
0 commit comments