toBroadcast method
Build the legacy broadcast payload matching buildLegacyBroadcastPayload
in the JS reference.
Converts the first hex signature to base64 and adds it under a
transactionSignatures field, then wraps everything in { data: ... }.
Implementation
@override
Map<String, dynamic> toBroadcast() {
if (!isSigned) return {};
final data = Map<String, dynamic>.from(transaction);
final inputs = data['siacoinInputs'] as List<dynamic>?;
final sigs = inputs?.isNotEmpty == true
? inputs!.first['satisfiedPolicy']['signatures'] as List<dynamic>?
: null;
final firstSigHex = sigs?.isNotEmpty == true ? sigs!.first as String : null;
if (firstSigHex == null) {
return {};
}
data['transactionSignatures'] = [
{
'signature': base64.encode(
List<int>.generate(firstSigHex.length ~/ 2, (i) {
return int.parse(firstSigHex.substring(i * 2, i * 2 + 2),
radix: 16);
}),
),
}
];
return {'data': data};
}