mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 12:29:51 +00:00
update-payjoin (#2281)
* feat: upgrade to flutter_payjoin 0.23.0 * fix: dependency discrepancy freezed_annotation * feat(cw_bitcoin): use latest payjoin deps * ci: update rust toolchain * Update pubspec.yaml * trial: downgrade flutter payjoin ffi * some checks * trial 2 * [skip ci] use correct image for CI * fix: bump flutter sdk to 3.29.0 * partial revert --------- Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net> Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
This commit is contained in:
parent
b0edf1fe75
commit
8457a45c2a
38 changed files with 477 additions and 346 deletions
|
@ -31,12 +31,10 @@ abstract class BitcoinWalletAddressesBase extends ElectrumWalletAddresses with S
|
|||
|
||||
final PayjoinManager payjoinManager;
|
||||
|
||||
@observable
|
||||
payjoin.Receiver? currentPayjoinReceiver;
|
||||
|
||||
@computed
|
||||
String? get payjoinEndpoint =>
|
||||
currentPayjoinReceiver?.pjUriBuilder().build().pjEndpoint();
|
||||
@observable
|
||||
String? payjoinEndpoint = null;
|
||||
|
||||
@override
|
||||
String getAddress(
|
||||
|
@ -59,14 +57,19 @@ abstract class BitcoinWalletAddressesBase extends ElectrumWalletAddresses with S
|
|||
return generateP2WPKHAddress(hd: hd, index: index, network: network);
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> initPayjoin() async {
|
||||
await payjoinManager.initPayjoin();
|
||||
currentPayjoinReceiver = await payjoinManager.initReceiver(primaryAddress);
|
||||
|
||||
payjoinEndpoint = (await currentPayjoinReceiver?.pjUri())?.pjEndpoint();
|
||||
|
||||
payjoinManager.resumeSessions();
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> newPayjoinReceiver() async {
|
||||
currentPayjoinReceiver = await payjoinManager.initReceiver(primaryAddress);
|
||||
payjoinEndpoint = (await currentPayjoinReceiver?.pjUri())?.pjEndpoint();
|
||||
|
||||
printV("Initializing new Payjoin Receiver");
|
||||
payjoinManager.spawnNewReceiver(receiver: currentPayjoinReceiver!);
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'dart:typed_data';
|
|||
import 'package:bitcoin_base/bitcoin_base.dart';
|
||||
import 'package:cw_bitcoin/bitcoin_wallet.dart';
|
||||
import 'package:cw_bitcoin/bitcoin_wallet_addresses.dart';
|
||||
import 'package:cw_bitcoin/payjoin/payjoin_persister.dart';
|
||||
import 'package:cw_bitcoin/payjoin/payjoin_receive_worker.dart';
|
||||
import 'package:cw_bitcoin/payjoin/payjoin_send_worker.dart';
|
||||
import 'package:cw_bitcoin/payjoin/payjoin_session_errors.dart';
|
||||
|
@ -16,6 +17,7 @@ import 'package:cw_core/utils/print_verbose.dart';
|
|||
import 'package:payjoin_flutter/common.dart';
|
||||
import 'package:payjoin_flutter/receive.dart';
|
||||
import 'package:payjoin_flutter/send.dart';
|
||||
import 'package:payjoin_flutter/src/config.dart' as pj_config;
|
||||
import 'package:payjoin_flutter/uri.dart' as PayjoinUri;
|
||||
|
||||
class PayjoinManager {
|
||||
|
@ -31,11 +33,13 @@ class PayjoinManager {
|
|||
'https://ohttp.cakewallet.com',
|
||||
];
|
||||
|
||||
static Future<PayjoinUri.Url> randomOhttpRelayUrl() => PayjoinUri.Url.fromStr(
|
||||
ohttpRelayUrls[Random.secure().nextInt(ohttpRelayUrls.length)]);
|
||||
static String randomOhttpRelayUrl() =>
|
||||
ohttpRelayUrls[Random.secure().nextInt(ohttpRelayUrls.length)];
|
||||
|
||||
static const payjoinDirectoryUrl = 'https://payjo.in';
|
||||
|
||||
Future<void> initPayjoin() => pj_config.PConfig.initializeApp();
|
||||
|
||||
Future<void> resumeSessions() async {
|
||||
final allSessions = _payjoinStorage.readAllOpenSessions(_wallet.id);
|
||||
|
||||
|
@ -43,11 +47,11 @@ class PayjoinManager {
|
|||
if (session.isSenderSession) {
|
||||
printV("Resuming Payjoin Sender Session ${session.pjUri!}");
|
||||
return _spawnSender(
|
||||
sender: Sender.fromJson(session.sender!),
|
||||
sender: Sender.fromJson(json: session.sender!),
|
||||
pjUri: session.pjUri!,
|
||||
);
|
||||
}
|
||||
final receiver = Receiver.fromJson(session.receiver!);
|
||||
final receiver = Receiver.fromJson(json: session.receiver!);
|
||||
printV("Resuming Payjoin Receiver Session ${receiver.id()}");
|
||||
return _spawnReceiver(receiver: receiver);
|
||||
});
|
||||
|
@ -66,7 +70,12 @@ class PayjoinManager {
|
|||
psbtBase64: originalPsbt,
|
||||
pjUri: pjUri,
|
||||
);
|
||||
return senderBuilder.buildRecommended(minFeeRate: minFeeRateSatPerKwu);
|
||||
final persister = PayjoinSenderPersister.impl();
|
||||
final newSender =
|
||||
await senderBuilder.buildRecommended(minFeeRate: minFeeRateSatPerKwu);
|
||||
final senderToken = await newSender.persist(persister: persister);
|
||||
|
||||
return Sender.load(token: senderToken, persister: persister);
|
||||
} catch (e) {
|
||||
throw Exception('Error initializing Payjoin Sender: $e');
|
||||
}
|
||||
|
@ -143,21 +152,21 @@ class PayjoinManager {
|
|||
Future<Receiver> initReceiver(String address,
|
||||
[bool isTestnet = false]) async {
|
||||
try {
|
||||
final payjoinDirectory =
|
||||
await PayjoinUri.Url.fromStr(payjoinDirectoryUrl);
|
||||
|
||||
final ohttpKeys = await PayjoinUri.fetchOhttpKeys(
|
||||
ohttpRelay: await randomOhttpRelayUrl(),
|
||||
payjoinDirectory: payjoinDirectory,
|
||||
payjoinDirectory: payjoinDirectoryUrl,
|
||||
);
|
||||
|
||||
final receiver = await Receiver.create(
|
||||
final newReceiver = await NewReceiver.create(
|
||||
address: address,
|
||||
network: isTestnet ? Network.testnet : Network.bitcoin,
|
||||
directory: payjoinDirectory,
|
||||
directory: payjoinDirectoryUrl,
|
||||
ohttpKeys: ohttpKeys,
|
||||
ohttpRelay: await randomOhttpRelayUrl(),
|
||||
);
|
||||
final persister = PayjoinReceiverPersister.impl();
|
||||
final receiverToken = await newReceiver.persist(persister: persister);
|
||||
final receiver =
|
||||
await Receiver.load(persister: persister, token: receiverToken);
|
||||
|
||||
await _payjoinStorage.insertReceiverSession(receiver, _wallet.id);
|
||||
|
||||
|
@ -195,7 +204,8 @@ class PayjoinManager {
|
|||
rawAmount = getOutputAmountFromTx(tx, _wallet);
|
||||
break;
|
||||
case PayjoinReceiverRequestTypes.checkIsOwned:
|
||||
(_wallet.walletAddresses as BitcoinWalletAddresses).newPayjoinReceiver();
|
||||
(_wallet.walletAddresses as BitcoinWalletAddresses)
|
||||
.newPayjoinReceiver();
|
||||
_payjoinStorage.markReceiverSessionInProgress(receiver.id());
|
||||
|
||||
final inputScript = message['input_script'] as Uint8List;
|
||||
|
|
66
cw_bitcoin/lib/payjoin/payjoin_persister.dart
Normal file
66
cw_bitcoin/lib/payjoin/payjoin_persister.dart
Normal file
|
@ -0,0 +1,66 @@
|
|||
import 'package:payjoin_flutter/src/generated/api/receive.dart';
|
||||
import 'package:payjoin_flutter/src/generated/api/send.dart';
|
||||
|
||||
class PayjoinSenderPersister implements DartSenderPersister {
|
||||
static DartSenderPersister impl() {
|
||||
final impl = PayjoinSenderPersister();
|
||||
return DartSenderPersister(
|
||||
save: (sender) => impl.save(sender: sender),
|
||||
load: (token) => impl.load(token: token),
|
||||
);
|
||||
}
|
||||
|
||||
final Map<String, FfiSender> _store = {};
|
||||
|
||||
Future<SenderToken> save({required FfiSender sender}) async {
|
||||
final token = sender.key();
|
||||
_store[token.toBytes().toString()] = sender;
|
||||
return token;
|
||||
}
|
||||
|
||||
Future<FfiSender> load({required SenderToken token}) async {
|
||||
final sender = _store[token.toBytes().toString()];
|
||||
if (sender == null) {
|
||||
throw Exception('Sender not found for the provided token.');
|
||||
}
|
||||
return sender;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() => _store.clear();
|
||||
|
||||
@override
|
||||
bool get isDisposed => _store.isEmpty;
|
||||
}
|
||||
|
||||
class PayjoinReceiverPersister implements DartReceiverPersister {
|
||||
static DartReceiverPersister impl() {
|
||||
final impl = PayjoinReceiverPersister();
|
||||
return DartReceiverPersister(
|
||||
save: (receiver) => impl.save(receiver: receiver),
|
||||
load: (token) => impl.load(token: token),
|
||||
);
|
||||
}
|
||||
|
||||
final Map<String, FfiReceiver> _store = {};
|
||||
|
||||
Future<ReceiverToken> save({required FfiReceiver receiver}) async {
|
||||
final token = receiver.key();
|
||||
_store[token.toBytes().toString()] = receiver;
|
||||
return token;
|
||||
}
|
||||
|
||||
Future<FfiReceiver> load({required ReceiverToken token}) async {
|
||||
final receiver = _store[token.toBytes().toString()];
|
||||
if (receiver == null) {
|
||||
throw Exception('Receiver not found for the provided token.');
|
||||
}
|
||||
return receiver;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() => _store.clear();
|
||||
|
||||
@override
|
||||
bool get isDisposed => _store.isEmpty;
|
||||
}
|
|
@ -4,6 +4,7 @@ import 'dart:isolate';
|
|||
import 'dart:typed_data';
|
||||
|
||||
import 'package:blockchain_utils/blockchain_utils.dart';
|
||||
import 'package:cw_bitcoin/payjoin/manager.dart';
|
||||
import 'package:cw_bitcoin/payjoin/payjoin_session_errors.dart';
|
||||
import 'package:cw_bitcoin/psbt/signer.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
|
@ -42,7 +43,7 @@ class PayjoinReceiverWorker {
|
|||
|
||||
try {
|
||||
final httpClient = http.Client();
|
||||
final receiver = Receiver.fromJson(receiverJson);
|
||||
final receiver = Receiver.fromJson(json: receiverJson);
|
||||
|
||||
final uncheckedProposal =
|
||||
await worker.receiveUncheckedProposal(httpClient, receiver);
|
||||
|
@ -101,7 +102,8 @@ class PayjoinReceiverWorker {
|
|||
http.Client httpClient, Receiver session) async {
|
||||
while (true) {
|
||||
printV("Polling for Proposal (${session.id()})");
|
||||
final extractReq = await session.extractReq();
|
||||
final extractReq = await session.extractReq(
|
||||
ohttpRelay: PayjoinManager.randomOhttpRelayUrl());
|
||||
final request = extractReq.$1;
|
||||
|
||||
final url = Uri.parse(request.url.asString());
|
||||
|
@ -116,7 +118,8 @@ class PayjoinReceiverWorker {
|
|||
|
||||
Future<String> sendFinalProposal(
|
||||
http.Client httpClient, PayjoinProposal finalProposal) async {
|
||||
final req = await finalProposal.extractV2Req();
|
||||
final req = await finalProposal.extractReq(
|
||||
ohttpRelay: PayjoinManager.randomOhttpRelayUrl());
|
||||
final proposalReq = req.$1;
|
||||
final proposalCtx = req.$2;
|
||||
|
||||
|
@ -214,6 +217,6 @@ class PayjoinReceiverWorker {
|
|||
sequence: 0,
|
||||
);
|
||||
|
||||
return InputPair.newInstance(txin, psbtin);
|
||||
return InputPair.newInstance(txin: txin, psbtin: psbtin);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ import 'package:http/http.dart' as http;
|
|||
import 'package:payjoin_flutter/common.dart';
|
||||
import 'package:payjoin_flutter/send.dart';
|
||||
import 'package:payjoin_flutter/src/generated/frb_generated.dart' as pj;
|
||||
import 'package:payjoin_flutter/src/generated/api/send/error.dart' as pj_error;
|
||||
import 'package:payjoin_flutter/uri.dart' as pj_uri;
|
||||
|
||||
enum PayjoinSenderRequestTypes {
|
||||
requestPosted,
|
||||
|
@ -29,7 +31,7 @@ class PayjoinSenderWorker {
|
|||
final senderJson = args[1] as String;
|
||||
final pjUrl = args[2] as String;
|
||||
|
||||
final sender = Sender.fromJson(senderJson);
|
||||
final sender = Sender.fromJson(json: senderJson);
|
||||
final worker = PayjoinSenderWorker._(sendPort, pjUrl);
|
||||
|
||||
try {
|
||||
|
@ -51,9 +53,7 @@ class PayjoinSenderWorker {
|
|||
return await _runSenderV2(sender, httpClient);
|
||||
} catch (e) {
|
||||
printV(e);
|
||||
if (e is PayjoinException &&
|
||||
// TODO condition on error type instead of message content
|
||||
e.message?.contains('parse receiver public key') == true) {
|
||||
if (e is pj_error.FfiCreateRequestError) {
|
||||
return await _runSenderV1(sender, httpClient);
|
||||
} else if (e is HttpException) {
|
||||
printV(e);
|
||||
|
@ -68,7 +68,8 @@ class PayjoinSenderWorker {
|
|||
Future<String> _runSenderV2(Sender sender, http.Client httpClient) async {
|
||||
try {
|
||||
final postRequest = await sender.extractV2(
|
||||
ohttpProxyUrl: await PayjoinManager.randomOhttpRelayUrl(),
|
||||
ohttpProxyUrl:
|
||||
await pj_uri.Url.fromStr(PayjoinManager.randomOhttpRelayUrl()),
|
||||
);
|
||||
|
||||
final postResult = await _postRequest(httpClient, postRequest.$1);
|
||||
|
|
|
@ -5,34 +5,39 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: _fe_analyzer_shared
|
||||
sha256: "4897882604d919befd350648c7f91926a9d5de99e67b455bf0917cc2362f4bb8"
|
||||
sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "47.0.0"
|
||||
version: "76.0.0"
|
||||
_macros:
|
||||
dependency: transitive
|
||||
description: dart
|
||||
source: sdk
|
||||
version: "0.3.3"
|
||||
analyzer:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer
|
||||
sha256: "690e335554a8385bc9d787117d9eb52c0c03ee207a607e593de3c9d71b1cfe80"
|
||||
sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.7.0"
|
||||
version: "6.11.0"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
version: "2.7.0"
|
||||
asn1lib:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: asn1lib
|
||||
sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
|
||||
sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.8"
|
||||
version: "1.5.9"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -121,10 +126,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: build
|
||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
||||
sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
build_cli_annotations:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -137,42 +142,42 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: build_config
|
||||
sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
|
||||
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.1.2"
|
||||
build_daemon:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
||||
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.0.4"
|
||||
build_resolvers:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_resolvers
|
||||
sha256: "687cf90a3951affac1bd5f9ecb5e3e90b60487f3d9cdc359bb310f8876bb02a6"
|
||||
sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.10"
|
||||
version: "2.4.4"
|
||||
build_runner:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner
|
||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
||||
sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.13"
|
||||
version: "2.4.15"
|
||||
build_runner_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_runner_core
|
||||
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
|
||||
sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.10"
|
||||
version: "8.0.0"
|
||||
built_collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -185,10 +190,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: built_value
|
||||
sha256: "8b158ab94ec6913e480dc3f752418348b5ae099eb75868b5f4775f0572999c61"
|
||||
sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.9.4"
|
||||
version: "8.10.1"
|
||||
cake_backup:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -296,10 +301,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4"
|
||||
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.4"
|
||||
version: "2.3.8"
|
||||
dart_varuint_bitcoin:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -389,10 +394,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_rust_bridge
|
||||
sha256: "3292ad6085552987b8b3b9a7e5805567f4013372d302736b702801acb001ee00"
|
||||
sha256: "5a5c7a5deeef2cc2ffe6076a33b0429f4a20ceac22a397297aed2b1eb067e611"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.7.1"
|
||||
version: "2.9.0"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
|
@ -402,10 +407,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_web_bluetooth
|
||||
sha256: "1363831def5eed1e1064d1eca04e8ccb35446e8f758579c3c519e156b77926da"
|
||||
sha256: ad26a1b3fef95b86ea5f63793b9a0cdc1a33490f35d754e4e711046cae3ebbf8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.1.0"
|
||||
flutter_web_plugins:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -415,10 +420,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: freezed_annotation
|
||||
sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
|
||||
sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
version: "3.0.0"
|
||||
frontend_server_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -439,18 +444,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: google_identity_services_web
|
||||
sha256: "55580f436822d64c8ff9a77e37d61f5fb1e6c7ec9d632a43ee324e2a05c3c6c9"
|
||||
sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.3"
|
||||
version: "0.3.3+1"
|
||||
googleapis_auth:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: googleapis_auth
|
||||
sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938
|
||||
sha256: b81fe352cc4a330b3710d2b7ad258d9bcef6f909bb759b306bf42973a7d046db
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.0"
|
||||
version: "2.0.0"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -463,10 +468,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: grpc
|
||||
sha256: "5b99b7a420937d4361ece68b798c9af8e04b5bc128a7859f2a4be87427694813"
|
||||
sha256: "30e1edae6846b163a64f6d8716e3443980fe1f7d2d1f086f011d24ea186f2582"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.1"
|
||||
version: "4.0.4"
|
||||
hex:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -487,18 +492,18 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: hive_generator
|
||||
sha256: "81fd20125cb2ce8fd23623d7744ffbaf653aae93706c9bd3bf7019ea0ace3938"
|
||||
sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.3"
|
||||
version: "2.0.1"
|
||||
http:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
|
||||
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.4.0"
|
||||
http2:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -519,10 +524,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.1.2"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -592,10 +597,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: ledger_flutter_plus
|
||||
sha256: "1c03f3c4a9754b5f0170a9eb9552ec54fa86e985f8ee71a255ee2c5629b53d31"
|
||||
sha256: "531da5daba5731d9eca2732881ef2f039b97bf8aa3564e7098dfa99a9b07a8e6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
version: "1.5.3"
|
||||
ledger_litecoin:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -621,6 +626,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
macros:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: macros
|
||||
sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3-main.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -665,10 +678,10 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: mobx_codegen
|
||||
sha256: d4beb9cea4b7b014321235f8fdc7c2193ee0fe1d1198e9da7403f8bc85c4407c
|
||||
sha256: e0abbbc651a69550440f6b65c99ec222a1e2a4afd7baec8ba0f3088c7ca582a8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.7.1"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -690,10 +703,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: package_config
|
||||
sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67"
|
||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -714,10 +727,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
|
||||
sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.15"
|
||||
version: "2.2.17"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -754,11 +767,11 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
path: "."
|
||||
ref: "6a3eb32fb9467ac12e7b75d3de47de4ca44fd88c"
|
||||
resolved-ref: "6a3eb32fb9467ac12e7b75d3de47de4ca44fd88c"
|
||||
url: "https://github.com/konstantinullrich/payjoin-flutter"
|
||||
ref: da83a23f3a011cb49eb3b6513cd485b3fb8867ff
|
||||
resolved-ref: da83a23f3a011cb49eb3b6513cd485b3fb8867ff
|
||||
url: "https://github.com/OmarHatem28/payjoin-flutter"
|
||||
source: git
|
||||
version: "0.21.0"
|
||||
version: "0.23.0"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -811,26 +824,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: provider
|
||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
||||
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.2"
|
||||
version: "6.1.5"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd"
|
||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
pubspec_parse:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pubspec_parse
|
||||
sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
|
||||
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
version: "1.5.0"
|
||||
quiver:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -859,18 +872,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
|
||||
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.2"
|
||||
version: "2.5.3"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: a768fc8ede5f0c8e6150476e14f38e2417c0864ca36bb4582be8e21925a03c22
|
||||
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.6"
|
||||
version: "2.4.10"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -915,18 +928,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shelf
|
||||
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
||||
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
version: "1.4.2"
|
||||
shelf_web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shelf_web_socket
|
||||
sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
|
||||
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.0"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -944,18 +957,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: source_gen
|
||||
sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d"
|
||||
sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.6"
|
||||
version: "1.5.0"
|
||||
source_helper:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_helper
|
||||
sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f"
|
||||
sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
version: "1.3.5"
|
||||
source_span:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -973,14 +986,6 @@ packages:
|
|||
url: "https://github.com/cake-tech/sp_scanner"
|
||||
source: git
|
||||
version: "0.0.1"
|
||||
sprintf:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sprintf
|
||||
sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1057,10 +1062,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: universal_ble
|
||||
sha256: "1fad089150a29db82b3b7d60327e18c5ad6b3a5bb509defc1c690b0a76b9c098"
|
||||
sha256: "35d210e93a5938c6a6d1fd3c710cf4ac90b1bdd1b11c8eb2beeb32600672e6e6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.15.0"
|
||||
version: "0.17.0"
|
||||
universal_platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1077,14 +1082,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.0"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: uuid
|
||||
sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.1"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1121,18 +1118,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.6"
|
||||
version: "1.0.1"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
|
||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1166,5 +1163,5 @@ packages:
|
|||
source: hosted
|
||||
version: "2.2.2"
|
||||
sdks:
|
||||
dart: ">=3.5.0 <4.0.0"
|
||||
flutter: ">=3.24.0"
|
||||
dart: ">=3.6.0 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
|
|
|
@ -42,8 +42,8 @@ dependencies:
|
|||
url: https://github.com/cake-tech/bech32.git
|
||||
payjoin_flutter:
|
||||
git:
|
||||
url: https://github.com/konstantinullrich/payjoin-flutter
|
||||
ref: 6a3eb32fb9467ac12e7b75d3de47de4ca44fd88c #cake-v1
|
||||
url: https://github.com/OmarHatem28/payjoin-flutter
|
||||
ref: da83a23f3a011cb49eb3b6513cd485b3fb8867ff #cake-v2
|
||||
ledger_flutter_plus: ^1.4.1
|
||||
ledger_bitcoin:
|
||||
git:
|
||||
|
@ -58,10 +58,10 @@ dependencies:
|
|||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
build_runner: ^2.4.7
|
||||
build_resolvers: ^2.0.9
|
||||
build_runner: ^2.4.15
|
||||
build_resolvers: ^2.4.4
|
||||
mobx_codegen: ^2.0.7
|
||||
hive_generator: ^1.1.3
|
||||
hive_generator: ^2.0.1
|
||||
|
||||
dependency_overrides:
|
||||
watcher: ^1.1.0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue