@@ -2433,6 +2433,180 @@ describe('Bitcoin Service', function() {
2433
2433
done ( ) ;
2434
2434
} ) ;
2435
2435
} ) ;
2436
+ it ( 'three confirmed utxos -> one utxo after mempool' , function ( done ) {
2437
+ var deltas = [
2438
+ {
2439
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2440
+ satoshis : - 7679241 ,
2441
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2442
+ index : 0 ,
2443
+ timestamp : 1461342707725 ,
2444
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2445
+ prevout : 0
2446
+ } ,
2447
+ {
2448
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2449
+ satoshis : - 7679241 ,
2450
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2451
+ index : 0 ,
2452
+ timestamp : 1461342707725 ,
2453
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2454
+ prevout : 1
2455
+ } ,
2456
+ {
2457
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2458
+ satoshis : - 7679241 ,
2459
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2460
+ index : 1 ,
2461
+ timestamp : 1461342707725 ,
2462
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2463
+ prevout : 2
2464
+ } ,
2465
+ {
2466
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2467
+ satoshis : 100000 ,
2468
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2469
+ index : 1 ,
2470
+ script : '76a914809dc14496f99b6deb722cf46d89d22f4beb8efd88ac' ,
2471
+ timestamp : 1461342833133
2472
+ }
2473
+ ] ;
2474
+ var bitcoind = new BitcoinService ( baseConfig ) ;
2475
+ var confirmedUtxos = [
2476
+ {
2477
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2478
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2479
+ outputIndex : 0 ,
2480
+ script : '76a914f399b4b8894f1153b96fce29f05e6e116eb4c21788ac' ,
2481
+ satoshis : 7679241 ,
2482
+ height : 207111
2483
+ } ,
2484
+ {
2485
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2486
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2487
+ outputIndex : 1 ,
2488
+ script : '76a914f399b4b8894f1153b96fce29f05e6e116eb4c21788ac' ,
2489
+ satoshis : 7679241 ,
2490
+ height : 207111
2491
+ } ,
2492
+ {
2493
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2494
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2495
+ outputIndex : 2 ,
2496
+ script : '76a914f399b4b8894f1153b96fce29f05e6e116eb4c21788ac' ,
2497
+ satoshis : 7679241 ,
2498
+ height : 207111
2499
+ }
2500
+ ] ;
2501
+ bitcoind . nodes . push ( {
2502
+ client : {
2503
+ getAddressUtxos : sinon . stub ( ) . callsArgWith ( 1 , null , {
2504
+ result : confirmedUtxos
2505
+ } ) ,
2506
+ getAddressMempool : sinon . stub ( ) . callsArgWith ( 1 , null , {
2507
+ result : deltas
2508
+ } )
2509
+ }
2510
+ } ) ;
2511
+ var options = {
2512
+ queryMempool : true
2513
+ } ;
2514
+ var address = '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ;
2515
+ bitcoind . getAddressUnspentOutputs ( address , options , function ( err , utxos ) {
2516
+ if ( err ) {
2517
+ return done ( err ) ;
2518
+ }
2519
+ utxos . length . should . equal ( 1 ) ;
2520
+ done ( ) ;
2521
+ } ) ;
2522
+ } ) ;
2523
+ it ( 'spending utxos in the mempool' , function ( done ) {
2524
+ var deltas = [
2525
+ {
2526
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2527
+ satoshis : 7679241 ,
2528
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2529
+ index : 0 ,
2530
+ timestamp : 1461342707724
2531
+ } ,
2532
+ {
2533
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2534
+ satoshis : 7679241 ,
2535
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2536
+ index : 1 ,
2537
+ timestamp : 1461342707724
2538
+ } ,
2539
+ {
2540
+ txid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2541
+ satoshis : 7679241 ,
2542
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2543
+ timestamp : 1461342707724 ,
2544
+ index : 2 ,
2545
+ } ,
2546
+ {
2547
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2548
+ satoshis : - 7679241 ,
2549
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2550
+ index : 0 ,
2551
+ timestamp : 1461342707725 ,
2552
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2553
+ prevout : 0
2554
+ } ,
2555
+ {
2556
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2557
+ satoshis : - 7679241 ,
2558
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2559
+ index : 0 ,
2560
+ timestamp : 1461342707725 ,
2561
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2562
+ prevout : 1
2563
+ } ,
2564
+ {
2565
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2566
+ satoshis : - 7679241 ,
2567
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2568
+ index : 1 ,
2569
+ timestamp : 1461342707725 ,
2570
+ prevtxid : '46f24e0c274fc07708b781963576c4c5d5625d926dbb0a17fa865dcd9fe58ea0' ,
2571
+ prevout : 2
2572
+ } ,
2573
+ {
2574
+ txid : 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ,
2575
+ satoshis : 100000 ,
2576
+ address : '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ,
2577
+ index : 1 ,
2578
+ timestamp : 1461342833133
2579
+ }
2580
+ ] ;
2581
+ var bitcoind = new BitcoinService ( baseConfig ) ;
2582
+ var confirmedUtxos = [ ] ;
2583
+ bitcoind . nodes . push ( {
2584
+ client : {
2585
+ getAddressUtxos : sinon . stub ( ) . callsArgWith ( 1 , null , {
2586
+ result : confirmedUtxos
2587
+ } ) ,
2588
+ getAddressMempool : sinon . stub ( ) . callsArgWith ( 1 , null , {
2589
+ result : deltas
2590
+ } )
2591
+ }
2592
+ } ) ;
2593
+ var options = {
2594
+ queryMempool : true
2595
+ } ;
2596
+ var address = '1Cj4UZWnGWAJH1CweTMgPLQMn26WRMfXmo' ;
2597
+ bitcoind . getAddressUnspentOutputs ( address , options , function ( err , utxos ) {
2598
+ if ( err ) {
2599
+ return done ( err ) ;
2600
+ }
2601
+ utxos . length . should . equal ( 1 ) ;
2602
+ utxos [ 0 ] . address . should . equal ( address ) ;
2603
+ utxos [ 0 ] . txid . should . equal ( 'e9dcf22807db77ac0276b03cc2d3a8b03c4837db8ac6650501ef45af1c807cce' ) ;
2604
+ utxos [ 0 ] . outputIndex . should . equal ( 1 ) ;
2605
+ utxos [ 0 ] . script . should . equal ( '76a914809dc14496f99b6deb722cf46d89d22f4beb8efd88ac' ) ;
2606
+ utxos [ 0 ] . timestamp . should . equal ( 1461342833133 ) ;
2607
+ done ( ) ;
2608
+ } ) ;
2609
+ } ) ;
2436
2610
it ( 'will update with mempool results spending zero value output (likely never to happen)' , function ( done ) {
2437
2611
var deltas = [
2438
2612
{
0 commit comments