Skip to content

Instantly share code, notes, and snippets.

@MonsieurNicolas
Last active September 26, 2024 18:02
Show Gist options
  • Select an option

  • Save MonsieurNicolas/b03899d17949d254509f8b5f541e9195 to your computer and use it in GitHub Desktop.

Select an option

Save MonsieurNicolas/b03899d17949d254509f8b5f541e9195 to your computer and use it in GitHub Desktop.
prototype skip list
# skip = [10, 100, 1000, 10000]
# skip = [32, 64, 6400, 64000]
skip = [50, 5000, 50000, 500000]
# skip = [500, 5000, 50000, 500000]
def jed_skip(ledger_number):
cur_skip_list = [0,0,0,0]
for seq in range(1, ledger_number+1):
# uses seq-1 to make it easier to visualize destinations
prev_hash = seq-1
v = seq
if v % skip[0] == 0:
v = v - skip[0]
if v > 0 and (v % skip[1]) == 0:
v = v - skip[1]
if v > 0 and (v % skip[2]) == 0:
v = v - skip[2]
if v > 0 and (v % skip[3]) == 0:
cur_skip_list[3] = cur_skip_list[2]
cur_skip_list[2] = cur_skip_list[1]
cur_skip_list[1] = cur_skip_list[0]
cur_skip_list[0] = prev_hash
deltas = [ledger_number - i for i in cur_skip_list]
return cur_skip_list, deltas
def new_skip(ledger_number):
# check skip config
for i in range(0, len(skip)):
assert skip[i+1] % skip[i] == 0, "bad skip config"
# just calculates destinations
dests = [(ledger_number // s) * s - 1 for s in skip]
print(f"dests: {dests}")
# calculates sl
cur_skip_list = [0,0,0,0]
for seq in range(1, ledger_number+1):
# uses seq-1 to make it easier to visualize destinations
prev_hash = seq-1
for i in range(3, 0, -1):
if seq % skip[i] == 0:
cur_skip_list[i] = prev_hash
if seq % skip[0] == 0:
cur_skip_list[0] = prev_hash
deltas = [ledger_number - i for i in cur_skip_list]
return cur_skip_list, deltas
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment