-
-
Save hackaugusto/f3870eddd2cf44adb1c44b2e26115466 to your computer and use it in GitHub Desktop.
This file contains 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
from eth_utils import to_canonical_address | |
from raiden.storage import serialize, sqlite | |
from raiden.storage.wal import WriteAheadLog | |
from raiden.transfer import node, views | |
from raiden.transfer.architecture import StateManager | |
serializer = serialize.JSONSerializer() | |
def replay_wal(storage): | |
locksroot = ( | |
b'\xdfr\xceb\xd1\xec-\xf9&\x19i\x1e\n\xd9j\x08S\xae' | |
b'\xc3\xa0\x10n\xd6\xea\x14\x9f\x9f\xf6;\xc2\xf5f' | |
) | |
token_network_identifier = to_canonical_address( | |
'0xa5C9ECf54790334B73E5DfA1ff5668eB425dC474', | |
) | |
partner_address = to_canonical_address( | |
'0x10F4BC8CD156B4785f8F1f100C53C4cA0181E9b9', | |
) | |
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) | |
for pos, state_change in enumerate(all_state_changes): | |
state = wal.state_manager.current_state | |
snap = serializer.serialize(state) | |
restored = serializer.deserialize(snap) | |
state_manager = StateManager(node.state_transition, restored) | |
wal = WriteAheadLog(state_manager, storage) | |
wal.state_manager.dispatch(state_change) | |
if state_manager.current_state: | |
chain_state = state_manager.current_state | |
channel_state = views.get_channelstate_by_token_network_and_partner( | |
chain_state=chain_state, | |
token_network_id=token_network_identifier, | |
partner_address=partner_address, | |
) | |
is_bp = ( | |
channel_state and | |
channel_state.our_state.balance_proof and | |
channel_state.our_state.balance_proof.locksroot == locksroot and | |
channel_state.our_state.balance_proof.nonce == 3 | |
) | |
if is_bp: | |
import pdb; pdb.set_trace() | |
snap = serializer.serialize(state) | |
restored = serializer.deserialize(snap) | |
def main(): | |
import argparse | |
parser = argparse.ArgumentParser() | |
parser.add_argument('database') | |
args = parser.parse_args() | |
replay_wal( | |
storage=sqlite.SQLiteStorage(args.database, serializer), | |
) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment