Skip to content

Instantly share code, notes, and snippets.

@hackaugusto
Created October 26, 2018 13:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hackaugusto/a846775ad7cf7202a89bf1250cbe3d7e to your computer and use it in GitHub Desktop.
Save hackaugusto/a846775ad7cf7202a89bf1250cbe3d7e to your computer and use it in GitHub Desktop.
from raiden.transfer.architecture import StateManager
from raiden.storage import serialize, sqlite
from raiden.transfer import node
from raiden.storage.wal import WriteAheadLog
def replay_wal(storage):
all_state_changes = storage.get_statechanges_by_identifier(
from_identifier=0,
to_identifier='latest',
)
state_manager = StateManager(state_transition=node.state_transition, current_state=None)
wal = WriteAheadLog(state_manager, storage)
secrethash = (
b'\xf6.\xb5}B0\xf5\xbaK\x1em\xde)\xda\xf3\xf9\x9bU\xbd\r'
b'\xc54`\xcd\x93\xf0!\x92\xba\x84\xcd\x03'
)
found_payment = False
task_exists = False
all_events = list()
all_states = list()
for pos, state_change in enumerate(all_state_changes):
events = wal.state_manager.dispatch(state_change)
all_states.append(wal.state_manager.current_state)
all_events.append(events)
if state_manager.current_state is not None:
chain_state = wal.state_manager.current_state
task_exists = secrethash in chain_state.payment_mapping.secrethashes_to_task
found_payment = found_payment or task_exists
if found_payment and not task_exists:
import pdb
pdb.set_trace()
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('database')
args = parser.parse_args()
replay_wal(
storage=sqlite.SQLiteStorage(args.database, serialize.JSONSerializer()),
)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment