mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-12-23 11:59:30 +00:00
49 lines
1.4 KiB
Dart
49 lines
1.4 KiB
Dart
/*
|
|
* 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<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;
|
|
}
|
|
}
|
|
|
|
return blindedCodeBytes;
|
|
}
|
|
}
|