safe-transaction-service: Service Fails to verify & store EIP1271 Signature

Describe the bug When using an EIP1271 verifier for a Safe, the transaction service wont accept the signature bytes for the contract as valid. However when the same signatures are executed onchain the transaction is successful. It seems theres a validation error.

To Reproduce Safe: here Transaction in question: here Successful tx with same signers: here

Steps to reproduce the behavior:

  1. Create & sign a new transaction on a Safe.
  2. Generate EIP1721 signature.
  3. Send to service using SafeAPIKit:
"0x000000000000000000000000820ba510d0c2f72bbdecd7ac825a5929ea6c341a000000000000000000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000024dde92378e6630a91d7c76b6cd4be997c1f9c2cabf684eead3a9b70245fe0ddf3e79c59ce0b45105571179e81fc5f086e60002f5b674985a0e2908042093da3d7000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f37b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2257496b7369503748573937796b624d7a786c6772436f4145665f555275336d654d526e35443176746b7177222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a33303030222c2263726f73734f726967696e223a66616c73652c226f746865725f6b6579735f63616e5f62655f61646465645f68657265223a22646f206e6f7420636f6d7061726520636c69656e74446174614a534f4e20616761696e737420612074656d706c6174652e205365652068747470733a2f2f676f6f2e676c2f796162506578227d0000000000000000000000001b"
  1. Service returns 400 Error:
{
    "signature": [
        "Signature=0x000000000000000000000000820ba510d0c2f72bbdecd7ac825a5929ea6c341a000000000000000000000000000000000000000000000000000000000000008200 for owner=0x820Ba510D0C2F72BbDecd7ac825A5929EA6C341a is not valid"
      ]
}

Expected behavior After I’ve generated a valid signature, I should be able to post it to the transaction service. The service should correctly validate it & store the signature for execution by another wallet.

Environment:

  • Production & Staging
  • All chains

About this issue

  • Original URL
  • State: closed
  • Created 8 months ago
  • Comments: 15 (9 by maintainers)

Commits related to this issue

Most upvoted comments

This is now fixed on production