Skip to content

Commit f24ad88

Browse files
authored
Merge pull request #224 from BitGo/BTC-3198/compact-prefix-in-unsigned
feat: add compact call_data length prefix to unsigned signing payload
2 parents a4db2f9 + d45d3dc commit f24ad88

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

packages/wasm-dot/src/transaction.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,15 @@ impl Transaction {
220220
// Fall back to manual serialization if no context
221221
self.to_bytes_manual()
222222
} else {
223-
// Unsigned: return the signing payload (call_data + extensions + additional_signed).
224-
// This matches legacy toBroadcastFormat which returns construct.signingPayload().
225-
self.signable_payload()
223+
// Unsigned: return the signing payload with a compact call_data length prefix.
224+
// Format: compact(call_data_len) | call_data | extensions | additional_signed
225+
// This matches legacy toBroadcastFormat (construct.signingPayload from txwrapper)
226+
// and is decodable by both wasm-dot and polkadot-js/txwrapper.
227+
use parity_scale_codec::{Compact, Encode};
228+
let payload = self.signable_payload()?;
229+
let mut result = Compact(self.call_data.len() as u32).encode();
230+
result.extend_from_slice(&payload);
231+
Ok(result)
226232
}
227233
}
228234

0 commit comments

Comments
 (0)