Closed palango closed 3 years ago
The actual validation error is
ValidationError: {'metadata': {'routes': {0: {'address_metadata': ['Missing data for required field.']}}}}
Now we're running into problems when verifying the signature:
{"message": "<LockedTransfer ...>", "signer": "b'*W\\x82\\xde\\xb7?\\x14nmx\\xc0v\\xaa\\xad+mN\\x14\\xa7o'", "peer_address": "0x14791697260E4c9A71f18484C9f997B308e59325", "event": "Message not signed by sender!", "logger": "raiden.network.transport.matrix.utils", "level": "warning", "greenlet_name": "GMatrixClient.message_worker user_id:@0x517aad51d0e9bbef3c64803f86b3b9136641d9ec:localhost", "timestamp": "2021-05-18 13:32:40.882767"}
This is caused by replacing the not provided metadata with None
or an empty dict.
The signature check most likely fails because we have the address_metadata
key in RouteMetadata._serialize_canonicaljson even though it is missing in the original message.
I think it doesn't make sense to make this field optional in the schema, but require a change in signature. Either we require it in both or we ensure it's added to the signed bytestring only if it's present, making this change compatible with clients not providing it, of which I'd prefer the later, since this was intended to be an optional optimization.
While running the LC e2e tests I found expired transfers. They seem to be caused by python client not accepting certain messages by the LC.
One example for such a denied message:
Version
This was run with f22184b24f944e76e42c88a46e589b8e686bf3d6 I'm currently testing again with current develop (6730646c785b8d85b8ded9039383ccdde2acfb2c).
Update
This happens on 6730646c785b8d85b8ded9039383ccdde2acfb2c as well: