CakeWallet/cw_bitcoin/lib/psbt/utils.dart
2025-06-26 09:39:20 +03:00

41 lines
1.3 KiB
Dart

import 'dart:convert';
import 'package:bitcoin_base_old/bitcoin_base.dart';
import 'package:blockchain_utils/blockchain_utils.dart';
import 'package:cw_bitcoin/bitcoin_wallet.dart';
import 'package:cw_bitcoin/psbt/v0_deserialize.dart';
import 'package:cw_core/utils/print_verbose.dart';
import 'package:ledger_bitcoin/psbt.dart';
String getTxIdFromPsbtV0(String psbt) {
final psbtV2 = PsbtV2()..deserializeV0(base64.decode(psbt));
return BtcTransaction.fromRaw(
BytesUtils.toHexString(psbtV2.extractUnsignedTX(false)))
.txId();
}
String getOutputAmountFromPsbt(String psbtV0, BitcoinWalletBase wallet) {
printV(psbtV0);
final psbt = PsbtV2()..deserializeV0(base64.decode(psbtV0));
int amount = 0;
for (var i = 0; i < psbt.getGlobalOutputCount(); i++) {
final script = psbt.getOutputScript(i);
if (wallet.isMine(Script.fromRaw(byteData: script))) {
amount += psbt.getOutputAmount(i);
}
}
return amount.toString();
}
String getOutputAmountFromTx(String originalTx, BitcoinWalletBase wallet) {
final tx = BtcTransaction.fromRaw(originalTx);
BigInt amount = BigInt.zero;
for (final output in tx.outputs) {
if (wallet.isMine(output.scriptPubKey)) {
amount += output.amount;
}
}
printV(amount);
return amount.toString();
}