modify bip47 utils

This commit is contained in:
julian 2023-01-31 16:21:09 -06:00
parent 6a0673bec5
commit a25c03cb5c

View file

@ -1,24 +1,34 @@
import 'dart:typed_data';
import 'package:bip47/src/util.dart';
import 'package:stackwallet/models/isar/models/blockchain_data/output.dart';
import 'package:stackwallet/models/isar/models/blockchain_data/transaction.dart';
abstract class Bip47Utils {
/// looks at tx outputs and returns a blinded payment code if found
static Uint8List? getBlindedPaymentCodeBytesFrom(Transaction transaction) {
for (int i = 0; i < transaction.outputs.length; i++) {
final bytes = getBlindedPaymentCodeBytesFromOutput(
transaction.outputs.elementAt(i));
if (bytes != null) {
return bytes;
}
}
return null;
}
static Uint8List? getBlindedPaymentCodeBytesFromOutput(Output output) {
Uint8List? blindedCodeBytes;
for (int i = 0; i < transaction.outputs.length; i++) {
List<String>? scriptChunks =
transaction.outputs.elementAt(i).scriptPubKeyAsm?.split(" ");
if (scriptChunks?.length == 2 && scriptChunks?[0] == "OP_RETURN") {
final blindedPaymentCode = scriptChunks![1];
final bytes = blindedPaymentCode.fromHex;
List<String>? scriptChunks = output.scriptPubKeyAsm?.split(" ");
if (scriptChunks?.length == 2 && scriptChunks?[0] == "OP_RETURN") {
final blindedPaymentCode = scriptChunks![1];
final bytes = blindedPaymentCode.fromHex;
// https://en.bitcoin.it/wiki/BIP_0047#Sending
if (bytes.length == 80 && bytes.first == 1) {
blindedCodeBytes = bytes;
}
// https://en.bitcoin.it/wiki/BIP_0047#Sending
if (bytes.length == 80 && bytes.first == 1) {
blindedCodeBytes = bytes;
}
}