Skip to content

Instantly share code, notes, and snippets.

@hackaugusto
Last active November 7, 2018 11:54
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/d691af507f3153d06f77a33ec26ee9d5 to your computer and use it in GitHub Desktop.
Save hackaugusto/d691af507f3153d06f77a33ec26ee9d5 to your computer and use it in GitHub Desktop.
import sys
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
from raiden.utils import serialization
json = serialize.JSONSerializer()
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)
locksroot = serialization.deserialize_bytes(
'0xdf72ce62d1ec2df92619691e0ad96a0853aec3a0106ed6ea149f9ff63bc2f566'
)
token_network_identifier = to_canonical_address(
'0xa5C9ECf54790334B73E5DfA1ff5668eB425dC474',
)
partner_address = to_canonical_address(
'0x10F4BC8CD156B4785f8F1f100C53C4cA0181E9b9',
)
all_events = list()
all_states = list()
for _, 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:
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:
return 0
return 1
def main():
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('database')
args = parser.parse_args()
exitcode = replay_wal(
storage=sqlite.SQLiteStorage(args.database, json),
)
sys.exit(exitcode)
if __name__ == '__main__':
main()
from raiden.storage import serialize, sqlite
from raiden.storage.wal import WriteAheadLog
from raiden.transfer import node
from raiden.transfer.mediated_transfer.events import SendLockedTransfer
from raiden.transfer.architecture import StateManager
from raiden.tests.utils.events import must_contain_entry
json = serialize.JSONSerializer()
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)
for _, state_change in enumerate(all_state_changes):
events = wal.state_manager.dispatch(state_change)
send_locked_transfer = must_contain_entry(
events,
SendLockedTransfer,
{
'transfer': {
'balance_proof': {
'nonce': 3,
'channel_identifier': 46,
},
},
},
)
if send_locked_transfer:
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, json),
)
if __name__ == '__main__':
main()
git rev-list bfff025038034c9381ac1f225f9f8c19a5b86e4b..e9bd1fdcf151438d276c7d3117cf894948baf054 | while read commit; do
git checkout $commit
python t.py ~/download/paul/node_28898a6b/netid_1/network_b9633dd9/v9_log.db && echo $commit && break
done
13b03009fb44d1b6bf6d5a04f0a19c2c5cc82fc2
bb5f5aee37f48d95209d0d0aeb63cdead50ce24b
8a305fee259a0c5688b51dd06e197a4a74a307fe
02f275e3c421e00336ee478a850862d25a78937c
c098937b350a05c4f8a3ebeb2fcfe80e68a90ab0
7241d389ce9082087416704083ca61a8cf5c6e03
5c63917231c72a24ebc2287d4a48bb3bc6dd0777
927a23a94add8521ed3cafd424b8637c35ebb287
cc14d2848fb0402b3fe58c199c1ce88c1a161a90
8052af6bbfda5535f8eac8c2610b6da4f746c974
a7233073bb278f31358a2375af3e5419f7ab8f97
89cba57c54bedf93a5df8134257f0ff928427fbf
11a39fad54b54112b1b29f4b84ed9b361bfcdf59
92bdaa1f8e15487cc4b40221a58131050f93d90f
8d99cc9fa21ba2db82df8a4fa869f87bcd59fd37
9636253147fd4f8a38e3bbbe323181c10b197bdb
787530ce3f8b06e5883fc4dd8d2a63d0997d82e9
33cb2bf0304af2a8ee4336c28fddd71a5f92e240
d3d204022e24d09c51f5ccaac936f5e022af9625
ebf8a2346620761affdd9339e31fffddf13ded36
1e582cbb8b9b738458dd0cda77bfcec745d18d89
29188326633184d11244f3055342e704dbaeb048
4181727d475707ead8df73fa8d73f5bca32cf02d
996dd56f35f1df84026e557d3abc0f923081998f
e67f7d6acd8b318138e7b0b44e1ad933cd2327a8
9d604a2a672815061e243abc1d799b50214d158c
8c5ab90e53aedaed30e14e9cca791df219d5e169
4498c2ee2c9cc3dcb7bca83612212a6ac544ba65
d75750f536807cda8804af91f494904553699221
fe240ba632dcd92958952860932d51021bb85501
96bb7c87a0908e5c493152040e5c6a14870c7a66
71f5148b0fd98f31733e1fca1c2a37a2e1dfd0cd
28b9c0f30132541a00a22b3096324b5aaab5f7f0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment