Created
November 3, 2021 23:45
-
-
Save usunyu/f4b5a611223f6d3ddbad074feb56c449 to your computer and use it in GitHub Desktop.
Test kraken checksum correct
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import binascii | |
from typing import List | |
init_snapshot = [320, {'as': [['62897.60000', '0.01481511', '1635981951.315958'], ['62900.00000', '0.03655383', '1635981951.270923'], ['62901.00000', '0.10600000', '1635981957.809459'], ['62903.80000', '0.10153441', '1635981957.924943'], ['62903.90000', '0.20000000', '1635981957.279708'], ['62904.00000', '0.10000000', '1635981955.920214'], ['62904.30000', '2.38498770', '1635981957.302002'], ['62907.60000', '0.20000000', '1635981957.301579'], ['62907.70000', '0.07000000', '1635981939.498124'], ['62908.10000', '0.15000000', '1635981956.360163']], 'bs': [['62897.50000', '0.79779400', '1635981956.465532'], ['62897.30000', '0.00781897', '1635981953.699042'], ['62896.60000', '2.38497341', '1635981957.579632'], ['62895.30000', '0.27695880', '1635981951.920146'], ['62895.00000', '0.10696037', '1635981935.899765'], ['62891.20000', '0.10000000', '1635981957.233156'], ['62891.10000', '3.97485953', '1635981953.262620'], ['62889.40000', '0.15866845', '1635981931.292536'], ['62888.90000', '0.53977189', '1635981933.142396'], ['62888.70000', '1.47388000', '1635981900.968003']]}, 'book-10', 'XBT/USD'] | |
asks = init_snapshot[1]['as'] | |
bids = init_snapshot[1]['bs'] | |
def _get_crc32_input(depth_list: List) -> str: | |
depth_list = depth_list[: 10] | |
input = '' | |
for i in depth_list: | |
p = i[0].replace('.', '').lstrip('0') | |
a = i[1].replace('.', '').lstrip('0') | |
input += p + a | |
return input | |
def _merge_order_book(depth_list: List) -> List: | |
merge_depth_list = [] | |
for depth in depth_list: | |
if len(merge_depth_list) == 0: | |
merge_depth_list.append(depth) | |
else: | |
if depth[0] == merge_depth_list[-1][0]: | |
if float(depth[1]) == 0: | |
# remove from order book | |
merge_depth_list.pop() | |
else: | |
# update volume | |
merge_depth_list[-1][1] = depth[1] | |
elif float(depth[1]) > 0: | |
merge_depth_list.append(depth) | |
return merge_depth_list | |
message_list = [ | |
[320, {'a': [['62904.30000', '0.00000000', '1635981957.946409'], ['62909.10000', '0.15000000', '1635981951.346641', 'r']], 'c': '2395791843'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62896.60000', '0.00000000', '1635981957.947129'], ['62884.70000', '0.58199755', '1635981924.079520', 'r']], 'c': '1789998580'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.30153441', '1635981957.970945']], 'c': '2855948358'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.40153441', '1635981957.979431']], 'c': '1351830024'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.60000', '2.38490295', '1635981957.992402']], 'c': '823487042'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '3.18273442', '1635981957.992528']], 'c': '1216368174'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '3.28120001', '1635981958.003743']], 'c': '3312402023'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.30153441', '1635981958.015306']], 'c': '1459052351'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.90000', '0.00000000', '1635981958.016002'], ['62909.10000', '0.15000000', '1635981951.346641', 'r']], 'c': '4008215150'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.00000000', '1635981958.034507'], ['62910.00000', '0.63580000', '1635981957.078283', 'r']], 'c': '3218833012'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '3.18273442', '1635981958.040646']], 'c': '842272317'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.60000', '0.00000000', '1635981958.063631'], ['62910.90000', '1.95910000', '1635981957.761709', 'r']], 'c': '3442476206'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.70000', '0.20000000', '1635981958.071965']], 'c': '3140331525'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.70000', '0.00000000', '1635981958.106908'], ['62910.90000', '1.95910000', '1635981957.761709', 'r']], 'c': '3442476206'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62908.10000', '0.00000000', '1635981958.198269'], ['62911.30000', '0.33000000', '1635981941.359685', 'r']], 'c': '3305432986'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62910.00000', '0.00000000', '1635981958.326829'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '1154717984'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62909.00000', '0.63580000', '1635981958.327003']], 'c': '2216230467'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.60000', '2.38494645', '1635981958.331239']], 'c': '2112948801'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.60000', '0.00000000', '1635981958.462346'], ['62911.30000', '0.33000000', '1635981941.359685', 'r']], 'c': '2216230467'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.20000000', '1635981958.484552']], 'c': '2946961196'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.00000000', '1635981958.519610'], ['62911.30000', '0.33000000', '1635981941.359685', 'r']], 'c': '2216230467'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '2.38486400', '1635981958.582754']], 'c': '4289803872'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62901.00000', '0.00000000', '1635981958.620216'], ['62911.30000', '0.33000000', '1635981941.359685', 'r']], 'c': '2234628873'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62891.20000', '0.00000000', '1635981958.729266'], ['62881.30000', '0.63714866', '1635981935.039043', 'r']], 'c': '4041516099'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.20000000', '1635981958.755412']], 'c': '2702623834'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '0.00000000', '1635981958.946306'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '4156144968'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.79779400', '1635981958.946649']], 'c': '317641721'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62908.10000', '2.38485352', '1635981958.993453']], 'c': '480802860'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '3.18271368', '1635981958.993560']], 'c': '2503872593'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62908.10000', '0.00000000', '1635981959.038522'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '1669951649'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.00000000', '1635981959.039278'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '3626728466'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.90000', '0.20000000', '1635981959.085525']], 'c': '1829938541'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62910.90000', '0.00000000', '1635981959.103545'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '2914103266'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.90000', '0.00000000', '1635981959.134650'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '3222980763'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62909.10000', '0.00000000', '1635981959.202597'], ['62913.00000', '0.27650104', '1635981941.419412', 'r']], 'c': '3122877655'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62908.90000', '0.20000000', '1635981959.235651']], 'c': '2652433123'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62909.20000', '2.38479361', '1635981959.252130']], 'c': '779557830'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62909.20000', '0.00000000', '1635981959.303636'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '2652433123'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.10000000', '1635981959.397823']], 'c': '2452251420'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.20153441', '1635981959.424296']], 'c': '2178490433'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62891.20000', '0.10000000', '1635981959.485558']], 'c': '4094443275'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62895.40000', '0.09846559', '1635981959.503480']], 'c': '3451984921'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62908.90000', '0.00000000', '1635981959.526620'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '28558139'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.80000', '2.38484735', '1635981959.551004']], 'c': '3141529669'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62895.40000', '0.00000000', '1635981959.551120'], ['62884.70000', '0.58199755', '1635981924.079520', 'r']], 'c': '2527583288'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62891.20000', '0.00000000', '1635981959.551173'], ['62881.30000', '0.63714866', '1635981935.039043', 'r']], 'c': '3815949170'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.70000', '0.70580000', '1635981959.782861']], 'c': '454618262'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62909.00000', '0.00000000', '1635981959.783041'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '2849069399'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62901.00000', '0.10600000', '1635981959.813389']], 'c': '261481188'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.80000', '0.00000000', '1635981959.815664'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '1168430495'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '0.20000000', '1635981959.832071']], 'c': '3854877338'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.30000', '2.38489799', '1635981959.861280']], 'c': '1469656274'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '0.40000000', '1635981959.984189']], 'c': '3556159054'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.20000', '0.20000000', '1635981960.031681']], 'c': '38253936'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '0.20000000', '1635981960.077197']], 'c': '2211039893'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.30000', '0.00000000', '1635981960.084318'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '2032976030'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.90000', '2.38491432', '1635981960.130489']], 'c': '4081209249'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.10153441', '1635981960.230088']], 'c': '412221529'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.00000000', '1635981960.254945'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '2274420773'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.90000', '0.00000000', '1635981960.277278'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '249347940'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.80000', '2.38487110', '1635981960.479449']], 'c': '2123710983'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.80000', '0.00000000', '1635981960.623531'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '249347940'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.79779400', '1635981960.626271']], 'c': '2596666860'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62896.30000', '2.38494728', '1635981960.673521']], 'c': '2138695608'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.50000', '0.00000000', '1635981960.723653'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '1521441627'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.20000000', '1635981960.761558']], 'c': '2159858809'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62901.00000', '0.00000000', '1635981960.819114'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '3260618759'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.20000', '2.38496621', '1635981960.887572']], 'c': '1141456141'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.30000000', '1635981960.902436']], 'c': '2184967680'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.40153441', '1635981960.921337']], 'c': '2038743592'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.10000', '0.20000000', '1635981960.936150']], 'c': '1511224481'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.20000', '0.00000000', '1635981960.936555'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '2914980202'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62891.20000', '0.10000000', '1635981960.979276']], 'c': '155098125'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.30000000', '1635981961.003500']], 'c': '4068583461'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.20000000', '1635981961.007819']], 'c': '884171560'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.10000', '0.00000000', '1635981961.024809'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '1725470048'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.70000', '0.07000000', '1635981961.024971']], 'c': '1755376761'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.10000', '0.63580000', '1635981961.025033']], 'c': '1860139271'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62912.60000', '0.26840000', '1635981961.052787']], 'c': '1822471792'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.53981511', '1635981961.062430']], 'c': '3838643892'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62912.60000', '0.00000000', '1635981961.105028'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '4066251286'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.60981511', '1635981961.124225']], 'c': '1318016750'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62896.30000', '0.00000000', '1635981961.125424'], ['62884.70000', '0.58199755', '1635981924.079520', 'r']], 'c': '661016942'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.67347512', '1635981961.151077']], 'c': '2717443713'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.30000', '2.38499237', '1635981961.170021']], 'c': '2677309463'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62895.50000', '2.38499237', '1635981961.170226']], 'c': '2354716813'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.52500000', '1635981961.212380']], 'c': '58758387'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.30000', '0.00000000', '1635981961.222911'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '450023140'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62895.50000', '0.00000000', '1635981961.229190'], ['62884.70000', '0.58199755', '1635981924.079520', 'r']], 'c': '517105501'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.79779400', '1635981961.246579']], 'c': '2717443713'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.14847512', '1635981961.253969']], 'c': '3392574812'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62912.60000', '0.26730000', '1635981961.292177']], 'c': '1428107647'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.08481511', '1635981961.318633']], 'c': '746043062'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.00000', '0.15000000', '1635981961.372052']], 'c': '3138902955'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.00000', '0.25000000', '1635981961.494776']], 'c': '2790236406'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.90000', '0.10153441', '1635981961.669324']], 'c': '3634364578'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.90000', '0.10000000', '1635981961.727751']], 'c': '1169241154'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.89625959', '1635981961.754064']], 'c': '2559039679'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.90000', '0.00000000', '1635981961.763106'], ['62911.30000', '0.33000000', '1635981941.359685', 'r']], 'c': '93776991'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.90000', '0.30153441', '1635981961.772821']], 'c': '3638391672'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.50000', '0.79779400', '1635981961.793306']], 'c': '99327877'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62897.60000', '0.01481511', '1635981961.798353']], 'c': '2342036074'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.00000000', '1635981961.801893'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '935881162'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62901.00000', '0.10600000', '1635981961.814180']], 'c': '2090078536'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.20000', '0.00000000', '1635981961.838931'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '1545250546'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.20000000', '1635981961.840779']], 'c': '1454454779'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62904.10000', '0.00000000', '1635981961.863009'], ['62911.60000', '0.14509984', '1635981913.506896', 'r']], 'c': '1083422059'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62903.80000', '0.00000000', '1635981961.903275'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '399151624'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.40000', '2.38492555', '1635981961.914046']], 'c': '2715386992'}, 'book-10', 'XBT/USD'], | |
[320, {'b': [['62897.40000', '2.38490971', '1635981961.914148']], 'c': '4157970430'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62905.40000', '0.00000000', '1635981961.969383'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '2847768038'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62901.00000', '0.00000000', '1635981962.022239'], ['62912.80000', '0.15786275', '1635981933.342593', 'r']], 'c': '4009384096'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62907.60000', '0.20000000', '1635981962.232944']], 'c': '2974155148'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62910.40000', '0.63580000', '1635981962.267788']], 'c': '3331740835'}, 'book-10', 'XBT/USD'], | |
[320, {'a': [['62906.00000', '0.00000000', '1635981962.311485'], ['62912.70000', '3.97500783', '1635981955.074186', 'r']], 'c': '994601124'}, 'book-10', 'XBT/USD'], | |
] | |
for message in message_list: | |
a = message[1].get('a', []) | |
b = message[1].get('b', []) | |
c = message[1].get('c') | |
asks = asks + a | |
asks.sort(key=lambda x: float(x[0]), reverse=False) | |
asks = _merge_order_book(asks) | |
bids = bids + b | |
bids.sort(key=lambda x: float(x[0]), reverse=True) | |
bids = _merge_order_book(bids) | |
checksum_input = f"{_get_crc32_input(asks) + _get_crc32_input(bids)}".encode( | |
'utf-8') | |
checksum = str(binascii.crc32(checksum_input)) | |
match = (checksum == c) | |
if not match: | |
# print(asks) | |
# print(bids) | |
print(message) | |
print(match) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment