Skip to content

Commit 499c254

Browse files
authored
Merge pull request #164 from BitGo/BTC-3025-sol-wasm-staking-fixes
fix(wasm-solana): return empty string for unsigned (all-zeros) signat…
2 parents af0c725 + 03111f0 commit 499c254

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

packages/wasm-solana/src/parser.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,21 @@ pub fn parse_transaction(bytes: &[u8]) -> Result<ParsedTransaction, String> {
153153
// Note: Instruction combining (e.g., CreateAccount + StakeInitialize → StakingActivate)
154154
// is handled by TypeScript in mapWasmInstructionsToBitGoJS for flexibility
155155

156-
// Extract signatures as base58 strings
157-
let signatures: Vec<String> = tx.signatures.iter().map(|s| s.to_string()).collect();
156+
// Extract signatures as base58 strings.
157+
// All-zeros signatures (unsigned placeholder slots) are returned as empty strings
158+
// so the JS side can simply use `signatures[0] || 'UNAVAILABLE'`.
159+
let signatures: Vec<String> = tx
160+
.signatures
161+
.iter()
162+
.map(|s| {
163+
let bytes: &[u8] = s.as_ref();
164+
if bytes.iter().all(|&b| b == 0) {
165+
String::new()
166+
} else {
167+
s.to_string()
168+
}
169+
})
170+
.collect();
158171

159172
Ok(ParsedTransaction {
160173
fee_payer,

0 commit comments

Comments
 (0)