@@ -10,7 +10,7 @@ const bobAddress = 'bchtest:qz6q5gqnxdldkr07xpls5474mmzmlesd6qnux4skuc';
10
10
const carolAddress = 'bchtest:qqsr7nqwe6rq5crj63gy5gdqchpnwmguusmr7tfmsj' ;
11
11
12
12
export default class MockNetworkProvider implements NetworkProvider {
13
- // we use lockingBytecode as the key for utxoMap to make cashaddresses and tokenaddresses interchangeable
13
+ // we use lockingBytecode as the key for utxoMap to make cash addresses and token addresses interchangeable
14
14
private utxoMap : Record < string , Utxo [ ] > = { } ;
15
15
private transactionMap : Record < string , string > = { } ;
16
16
public network : Network = Network . MOCKNET ;
@@ -45,6 +45,11 @@ export default class MockNetworkProvider implements NetworkProvider {
45
45
const transactionBin = hexToBin ( txHex ) ;
46
46
47
47
const txid = binToHex ( sha256 ( sha256 ( transactionBin ) ) . reverse ( ) ) ;
48
+
49
+ if ( this . transactionMap [ txid ] ) {
50
+ throw new Error ( `Transaction with txid ${ txid } was already submitted: txn-mempool-conflict` ) ;
51
+ }
52
+
48
53
this . transactionMap [ txid ] = txHex ;
49
54
50
55
const decoded = decodeTransaction ( transactionBin ) ;
@@ -57,7 +62,7 @@ export default class MockNetworkProvider implements NetworkProvider {
57
62
for ( const address of Object . keys ( this . utxoMap ) ) {
58
63
const utxos = this . utxoMap [ address ] ;
59
64
const index = utxos . findIndex (
60
- ( utxo ) => utxo . txid === binToHex ( input . outpointTransactionHash ) && utxo . vout === input . outpointIndex
65
+ ( utxo ) => utxo . txid === binToHex ( input . outpointTransactionHash ) && utxo . vout === input . outpointIndex ,
61
66
) ;
62
67
63
68
if ( index !== - 1 ) {
@@ -93,7 +98,8 @@ export default class MockNetworkProvider implements NetworkProvider {
93
98
}
94
99
95
100
addUtxo ( addressOrLockingBytecode : string , utxo : Utxo ) : void {
96
- const lockingBytecode = isHex ( addressOrLockingBytecode ) ? addressOrLockingBytecode : binToHex ( addressToLockScript ( addressOrLockingBytecode ) ) ;
101
+ const lockingBytecode = isHex ( addressOrLockingBytecode ) ?
102
+ addressOrLockingBytecode : binToHex ( addressToLockScript ( addressOrLockingBytecode ) ) ;
97
103
if ( ! this . utxoMap [ lockingBytecode ] ) {
98
104
this . utxoMap [ lockingBytecode ] = [ ] ;
99
105
}
0 commit comments