/* * This file is part of Stack Wallet. * * Copyright (c) 2023 Cypher Stack * All Rights Reserved. * The code is distributed under GPLv3 license, see LICENSE file for details. * Generated by Cypher Stack on 2023-05-26 * */ import 'dart:typed_data'; import 'package:bip47/src/util.dart'; import '../models/isar/models/blockchain_data/v2/output_v2.dart'; import '../models/isar/models/blockchain_data/v2/transaction_v2.dart'; abstract class Bip47Utils { /// looks at tx outputs and returns a blinded payment code if found static Uint8List? getBlindedPaymentCodeBytesFrom(TransactionV2 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(OutputV2 output) { Uint8List? blindedCodeBytes; final List? 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; } } return blindedCodeBytes; } }