# Offline signing, deserialization exception

**URL:** <https://forum.cardano.org/t/offline-signing-deserialization-exception/151192>\
**Category:** Cardano Integration\
**Tags:** cardano, cardano-node\
**Created:** [12 November 2025 09:25 UTC](https://forum.cardano.org/t/offline-signing-deserialization-exception/151192 "2025-11-12T09:25:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ruofei-wang](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/ruofei-wang/32/87591_2.png) [@ruofei-wang](https://forum.cardano.org/u/ruofei-wang)\
**Post date:** [12 November 2025 09:25 UTC](https://forum.cardano.org/t/offline-signing-deserialization-exception/151192/1 "2025-11-12T09:25:35Z")

</div>

When using the `/construction/payloads` interface to build an `unsigned_transaction` , and then using the `Transaction.deserialize(HexUtil.decodeHex(unsigned_transaction))` method from [GitHub - bloxbean/cardano-client-lib: Cardano client library in Java](https://github.com/bloxbean/cardano-client-lib) for deserialization, an error occurred. The error is as follows:

```auto
Caused by: com.bloxbean.cardano.client.exception.CborDeserializationException: Invalid no of items
	at com.bloxbean.cardano.client.transaction.spec.Transaction.deserialize(Transaction.java:144)

```

/construction/payloads  
Request parameters:

```auto
{
    "network_identifier": {
        "blockchain": "cardano",
        "network": "mainnet"
    },
    "operations": [
        {
            "operation_identifier": {
                "index": 0
            },
            "type": "input",
            "account": {
                "address": "addr1qxpk7jpjvaexq5uws3d3vyw65hj7lr0857c59fydrqeztgn0xtjzsg9zn50nrswqawem5qtuk7t9m4cx27xtqfhkgfjsp9fy8f"
            },
            "amount": {
                "value": "-17012170",
                "currency": {
                    "symbol": "ADA",
                    "decimals": 6
                }
            },
            "coin_change": {
                "coin_identifier": {
                    "identifier": "d56859256fec1a6d3f34a19027ee647b23690ab2dc43c281d77c2f7bcd6d1372:0"
                },
                "coin_action": "coin_spent"
            }
        },
        {
            "operation_identifier": {
                "index": 1
            },
            "type": "output",
            "account": {
                "address": "addr1q82yrpffkgkpd5mxfg5nrlq957tjjudczj280kccqwmyrdex0l8rgylfceqp89q2x79alwjn383gzuhxgx9ps3ene2gsm4ah6c"
            },
            "amount": {
                "value": "2000000",
                "currency": {
                    "symbol": "ADA",
                    "decimals": 6
                }
            }
        },
        {
            "operation_identifier": {
                "index": 2
            },
            "type": "output",
            "account": {
                "address": "addr1qxpk7jpjvaexq5uws3d3vyw65hj7lr0857c59fydrqeztgn0xtjzsg9zn50nrswqawem5qtuk7t9m4cx27xtqfhkgfjsp9fy8f"
            },
            "amount": {
                "value": "15000000",
                "currency": {
                    "symbol": "ADA",
                    "decimals": 6
                }
            }
        }
    ],
    "metadata": {
        "ttl": "171367670",
        "protocol_parameters": {
            "coinsPerUtxoSize": "4310",
            "maxTxSize": 16384,
            "maxValSize": 5000,
            "keyDeposit": "2000000",
            "maxCollateralInputs": 3,
            "minFeeCoefficient": 44,
            "minFeeConstant": 155381,
            "minPoolCost": "170000000",
            "poolDeposit": "500000000",
            "protocol": 10
        }
    }
}

```

Response result:

```auto
{
    "unsigned_transaction": "8279016a6134303038313832353832306435363835393235366665633161366433663334613139303237656536343762323336393061623264633433633238316437376332663762636436643133373230303031383238323538333930316434343138353239623232633136643336363461323933316663303561373937323937316238313439343737646231383033623634316237323637666365333431336539633634303133393430613337386264666261353338396532383137326536343138613138343733336361393131613030316538343830383235383339303138333666343833323637373236303533386538343562313631316461613565356566386465376137623134326134386431383332323561323666333265343238323061323964316633316331633065626233626130313763623739363564643730363537386362303236663634323635316130306534653163303032313932663861303331613061333664636636a16a6f7065726174696f6e7381a5746f7065726174696f6e5f6964656e746966696572a165696e64657800647479706565696e707574676163636f756e74a16761646472657373786761646472317178706b376a706a7661657871357577733364337679773635686a376c72303835376335396679647271657a74676e3078746a7a7367397a6e35306e727377716177656d357174756b3774396d346378323778747166686b67666a7370396679386666616d6f756e74a26576616c7565692d31373031323137306863757272656e6379a26673796d626f6c6341444168646563696d616c73066b636f696e5f6368616e6765a26f636f696e5f6964656e746966696572a16a6964656e7469666965727842643536383539323536666563316136643366333461313930323765653634376232333639306162326463343363323831643737633266376263643664313337323a306b636f696e5f616374696f6e6a636f696e5f7370656e74",
    "payloads": [
        {
            "account_identifier": {
                "address": "addr1qxpk7jpjvaexq5uws3d3vyw65hj7lr0857c59fydrqeztgn0xtjzsg9zn50nrswqawem5qtuk7t9m4cx27xtqfhkgfjsp9fy8f"
            },
            "hex_bytes": "0246760f72dae12e0b8f518576133bda8d2afb5a4217887df325c85250dad1c5",
            "signature_type": "ed25519"
        }
    ]
}

```

---

<div class="post-metadata">

**Author:** ![Kartik\_Iyer](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/kartik_iyer/32/61006_2.png) [@Kartik\_Iyer](https://forum.cardano.org/u/Kartik_Iyer)\
**Post date:** [12 November 2025 10:07 UTC](https://forum.cardano.org/t/offline-signing-deserialization-exception/151192/2 "2025-11-12T10:07:57Z")

</div>

The rosetta-java /payload response for unsigned\_transaction has wrapped rosetta CBOR structure that itself contains another CBOR object inside it which is actual transaction that be decoded by the Cardano client library. So initally you would have to a normal CBOR decode and get the inside transaction CBOR structure and then decode it using the the Cardano client library.

If you paste your CBOR on the right side here at [https://cbor.me/](https://cbor.me/) and click on ← button in the shown image, it will give you actual txn CBOR. You can use any cbor libraries in your preferd language for this.

 ![Screenshot 2025-11-12 at 10.04.58](https://us1.discourse-cdn.com/flex023/uploads/cardano/original/3X/2/0/20075d8d4b6b2d9d8902db8efc33c316f69b626d.png)

---

<div class="post-metadata">

**Author:** ![ruofei-wang](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/ruofei-wang/32/87591_2.png) [@ruofei-wang](https://forum.cardano.org/u/ruofei-wang)\
**Post date:** [13 November 2025 01:27 UTC](https://forum.cardano.org/t/offline-signing-deserialization-exception/151192/3 "2025-11-13T01:27:00Z")

</div>

> [@ruofei-wang](#):
>
> unsigned\_transaction

We are an exchange. We previously used the Blockfrost service, but it is unstable. Therefore, we are using cardano-rosetta-java to set up our own node to ensure service stability. At the same time, our offline signing logic cannot change, and we still need to use the account.sign(transaction) method from cardano-client-lib. Currently, the unsigned\_transaction generated by the /construction/payloads interface, after decoding, still cannot be deserialized using Transaction.deserialize(HexUtil.decodeHex(“”)). Can you provide more detailed steps?

---

<div class="post-metadata">

**Author:** ![Kartik\_Iyer](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.cardano.org/kartik_iyer/32/61006_2.png) [@Kartik\_Iyer](https://forum.cardano.org/u/Kartik_Iyer)\
**Post date:** [13 November 2025 11:09 UTC](https://forum.cardano.org/t/offline-signing-deserialization-exception/151192/4 "2025-11-13T11:09:14Z")

</div>

> [@ruofei-wang](#):
>
> `8279016a6134303038313832353832306435363835393235366665633161366433663334613139303237656536343762323336393061623264633433633238316437376332663762636436643133373230303031383238323538333930316434343138353239623232633136643336363461323933316663303561373937323937316238313439343737646231383033623634316237323637666365333431336539633634303133393430613337386264666261353338396532383137326536343138613138343733336361393131613030316538343830383235383339303138333666343833323637373236303533386538343562313631316461613565356566386465376137623134326134386431383332323561323666333265343238323061323964316633316331633065626233626130313763623739363564643730363537386362303236663634323635316130306534653163303032313932663861303331613061333664636636a16a6f7065726174696f6e7381a5746f7065726174696f6e5f6964656e746966696572a165696e64657800647479706565696e707574676163636f756e74a16761646472657373786761646472317178706b376a706a7661657871357577733364337679773635686a376c72303835376335396679647271657a74676e3078746a7a7367397a6e35306e727377716177656d357174756b3774396d346378323778747166686b67666a7370396679386666616d6f756e74a26576616c7565692d31373031323137306863757272656e6379a26673796d626f6c6341444168646563696d616c73066b636f696e5f6368616e6765a26f636f696e5f6964656e746966696572a16a6964656e7469666965727842643536383539323536666563316136643366333461313930323765653634376232333639306162326463343363323831643737633266376263643664313337323a306b636f696e5f616374696f6e6a636f696e5f7370656e74`

replied you on the github - [How to use cardano-client-lib to sign the unsigned\_transaction generated by the /construction/payloads interface? · Issue #651 · cardano-foundation/cardano-rosetta-java · GitHub](https://github.com/cardano-foundation/cardano-rosetta-java/issues/651#issuecomment-3527279180)
