Last active
September 26, 2024 18:02
-
-
Save MonsieurNicolas/b03899d17949d254509f8b5f541e9195 to your computer and use it in GitHub Desktop.
prototype skip list
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
| # 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