Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XRP recovery fails during signing v1.1.0 #108

Open
m8nky opened this issue Dec 19, 2024 · 0 comments
Open

XRP recovery fails during signing v1.1.0 #108

m8nky opened this issue Dec 19, 2024 · 0 comments

Comments

@m8nky
Copy link

m8nky commented Dec 19, 2024

NEVER PROVIDE ANY PART OF YOUR RECOVERY KIT, KEYS, OR OTHER INFORMATION AS PART OF THIS ISSUE - NO MEMBER OF FIREBLOCKS WILL EVER ASK FOR SUCH INFORMATION
MAKE SURE TO OBFUSCATE ANY SENSETIVE DATA FROM YOUR SCREENSHOTS OR STEPS

Describe the bug
The release 1.1.0

To Reproduce
After recovery / verification (Choose one): Yes

If the issue is after recovery or verification, simply write the steps after the recovery (no need to provide the recovery steps unless requested)
Steps to reproduce the behavior:

  1. On airgapped device, initiate a XRP recovery for a Fireblocks wallet.
  2. Select source wallet, QR is displayed.
  3. On broadcaster device, scan QR.
  4. On broadcaster, enter recipient Memo/Tag.
  5. On broadcaster, prepare Transaction. QR is displayed.
  6. On airgapped, scan QR code. Transaction details are displayed.
  7. On airpressed, press 'Approve and Sign Transaction'
error

Nothing seems to happen. But logs reveal:

utility.log:

[2024-12-19 12:01:25.923] [debug] Ripple: Signing Tx: {
  "TransactionType": "Payment",
  "Account": "rB3...",
  "Amount": "15003252.999999998",
  "Destination": "rp...",
  "Memos": [
    {
      "Memo": {
        "MemoData": "11..."
      }
    }
  ],
  "LastLedgerSequence": 92874758,
  "Sequence": 92872460,
  "Fee": "36",
  "Flags": 0
}
[2024-12-19 12:05:19.893] [info]  Trying to approve transaction.
[2024-12-19 12:05:19.895] [debug] About to sign tx to rp... {
  sanatizedDerivation: {
    assetId: 'XRP',
    algorithm: 'ECDSA',
    isLegacy: false,
    isTestnet: false,
    path: { coinType: 144, account: 1, changeIndex: 0, addressIndex: 0 },
    pathParts: { '0': 44, '1': 144, '2': 1, '3': 0, '4': 0 },
    type: 'Permanent',
    publicKey: '0x02...',
    address: 'rB3...',
    KEY_TX: 't',
    KEY_SEQUENCE: 's',
    KEY_FEE: 'f',
    KEY_LEDGER_SEQUENCE: 'l',
    MIN_XRP_BALANCE: 10
  }
}
[2024-12-19 12:05:19.896] [debug] Ripple: Signing Tx: {
  "TransactionType": "Payment",
  "Account": "rB3...",
  "Amount": "15003252.999999998",
  "Destination": "rp...",
  "Memos": [
    {
      "Memo": {
        "MemoData": "11..."
      }
    }
  ],
  "LastLedgerSequence": 92874758,
  "Sequence": 92872460,
  "Fee": "36",
  "Flags": 0
}

shared.log

[2024-12-19 12:01:17.978] [debug] getSchema { action: 'tx/sign', app: 'utility' }
[2024-12-19 12:01:17.979] [info]  Relay URL parameters: {
  accountId: 1,
  version: '1.1.0',
  ip: '213...',
  action: 'tx/sign',
  unsignedTx: {
    id: '52...',
    assetId: 'XRP',
    to: 'rp...',
    path: [ 44, 144, 1, 0, 0 ],
    from: 'rB3...',
    amount: 15.003288999999999,
    balance: 15.003288999999999,
    misc: {
      gasPrice: 'undefined',
      memo: '11...',
      extraParams: { l: 92874758, f: '36', s: 92872460 }
    }
  }
}
[2024-12-19 12:01:17.979] [debug] inboundRelayParams changed to: {
  "accountId": 1,
  "version": "1.1.0",
  "ip": "213...",
  "action": "tx/sign",
  "unsignedTx": {
    "id": "52...",
    "assetId": "XRP",
    "to": "rp...",
    "path": [
      44,
      144,
      1,
      0,
      0
    ],
    "from": "rB3...",
    "amount": 15.003288999999999,
    "balance": 15.003288999999999,
    "misc": {
      "gasPrice": "undefined",
      "memo": "11...",
      "extraParams": {}
    }
  }
}
[2024-12-19 12:01:17.979] [debug] createTxOutboundRelayUrl changed to: null
[2024-12-19 12:01:25.926] [error] shared: Unhandled error: 15003252.999999998 is an illegal amount UnhandledRejection Error: 15003252.999999998 is an illegal amount
    at Amount.assertXrpIsValid (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:22562)
    at Amount.from (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:20973)
    at app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:37139
    at Array.forEach (<anonymous>)
    at STObject.from (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:36993)
    at serializeObject (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:434:59686)
    at signingData (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:434:59815)
    at encodeForSigning (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:8186)
    at computeSignature (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:512:152874)
    at Wallet.sign (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:512:152280)
[2024-12-19 12:01:25.926] [error] Unhandled Exception UnhandledRejection Error: 15003252.999999998 is an illegal amount
    at Amount.assertXrpIsValid (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:22562)
    at Amount.from (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:20973)
    at app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:37139
    at Array.forEach (<anonymous>)
    at STObject.from (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:36993)
    at serializeObject (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:434:59686)
    at signingData (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:434:59815)
    at encodeForSigning (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:435:8186)
    at computeSignature (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:512:152874)
    at Wallet.sign (app://index.html/_next/static/chunks/pages/_app-213ac638432a3b16.js:512:152280)

Expected behavior

Ultimately, the XRP is transferred to another wallet. An intermediate step is, that the tx is signed and correct QR code is shown for broadcasting.

Desktop (please complete the following information):

  • OS and version: iOS
  • Version [e.g. 22]

Additional context

BTW, the release 1.1.0 on Github for Ubuntu contains an outdated recovery tool (v1.0.0), while the Mac package is the expected (v1.1.0). But this is a minor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant