sign method
Implementation
@override
ScTxData sign() {
final inputs =
(txData.transaction['siacoinInputs'] as List<dynamic>?) ?? [];
if (inputs.length != txData.toSign.length) {
throw StateError(
'siacoinInputs length (${inputs.length}) must match '
'toSign length (${txData.toSign.length})');
}
for (int i = 0; i < txData.toSign.length; i++) {
// wallet.sign() returns base64-encoded ed25519 signature.
// The V2 transaction expects hex-encoded signatures.
final base64Sig = wallet.sign(txData.toSign[i]);
final sigBytes = base64.decode(base64Sig);
final sigHex = dynamicToString(sigBytes);
(inputs[i]['satisfiedPolicy'] as Map)['signatures'] = [sigHex];
}
if (txData.toSign.isNotEmpty) {
txData.message = txData.toSign.first;
final firstSigs =
(inputs.first['satisfiedPolicy'] as Map)['signatures'] as List;
txData.signature = firstSigs.first as String;
}
txData.isSigned = true;
return txData;
}