Skip to content

Commit 8eeb284

Browse files
committed
2 parents 5d9a1df + 1db9e42 commit 8eeb284

3 files changed

Lines changed: 60 additions & 2 deletions

File tree

lib/src/transaction_builder/forked_transaction_builder.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class ForkedTransactionBuilder extends BasedBitcoinTransacationBuilder {
2727
final String? memo;
2828
final bool enableRBF;
2929
final bool isFakeTransaction;
30+
final List<int> locktime;
3031

3132
ForkedTransactionBuilder({
3233
required super.outPuts,
@@ -38,6 +39,7 @@ class ForkedTransactionBuilder extends BasedBitcoinTransacationBuilder {
3839
this.memo,
3940
this.enableRBF = false,
4041
this.isFakeTransaction = false,
42+
this.locktime = BitcoinOpCodeConst.defaultTxLocktime,
4143
}) {
4244
_validateBuilder();
4345
}
@@ -496,7 +498,7 @@ be retrieved by anyone who examines the blockchain's history.
496498
);
497499

498500
/// create new transaction with inputs and outputs and isSegwit transaction or not
499-
final transaction = BtcTransaction(inputs: inputs, outputs: outputs);
501+
final transaction = BtcTransaction(inputs: inputs, outputs: outputs, locktime: locktime);
500502
const sighash =
501503
BitcoinOpCodeConst.sighashAll | BitcoinOpCodeConst.sighashForked;
502504

@@ -608,7 +610,7 @@ be retrieved by anyone who examines the blockchain's history.
608610
);
609611

610612
/// create new transaction with inputs and outputs and isSegwit transaction or not
611-
final transaction = BtcTransaction(inputs: inputs, outputs: outputs);
613+
final transaction = BtcTransaction(inputs: inputs, outputs: outputs, locktime: locktime);
612614

613615
const sighash =
614616
BitcoinOpCodeConst.sighashAll | BitcoinOpCodeConst.sighashForked;

lib/src/transaction_builder/transaction_builder.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class BitcoinTransactionBuilder extends BasedBitcoinTransacationBuilder {
2828
final String? memo;
2929
final bool enableRBF;
3030
final bool isFakeTransaction;
31+
final List<int> locktime;
3132

3233
BitcoinTransactionBuilder({
3334
required super.outPuts,
@@ -39,6 +40,7 @@ class BitcoinTransactionBuilder extends BasedBitcoinTransacationBuilder {
3940
this.memo,
4041
this.enableRBF = false,
4142
this.isFakeTransaction = false,
43+
this.locktime = BitcoinOpCodeConst.defaultTxLocktime,
4244
}) {
4345
_validateBuilder();
4446
}
@@ -527,6 +529,7 @@ that demonstrate the right to spend the bitcoins associated with the correspondi
527529
BtcTransaction transaction = BtcTransaction(
528530
inputs: inputs,
529531
outputs: outputs,
532+
locktime: locktime,
530533
);
531534

532535
/// we define empty witnesses. maybe the transaction is segwit and We need this
@@ -728,6 +731,7 @@ that demonstrate the right to spend the bitcoins associated with the correspondi
728731
BtcTransaction transaction = BtcTransaction(
729732
inputs: inputs,
730733
outputs: outputs,
734+
locktime: locktime,
731735
);
732736

733737
/// we define empty witnesses. maybe the transaction is segwit and We need this
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import 'package:bitcoin_base/bitcoin_base.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
group('BitcoinTransactionBuilder locktime', () {
6+
test('defaults to defaultTxLocktime', () {
7+
final b = BitcoinTransactionBuilder(
8+
outPuts: const [],
9+
fee: BigInt.zero,
10+
network: BitcoinNetwork.mainnet,
11+
utxos: const [],
12+
);
13+
expect(b.locktime, BitcoinOpCodeConst.defaultTxLocktime);
14+
});
15+
16+
test('stores the provided locktime', () {
17+
final lt = [0x50, 0x01, 0xcf, 0x00];
18+
final b = BitcoinTransactionBuilder(
19+
outPuts: const [],
20+
fee: BigInt.zero,
21+
network: BitcoinNetwork.mainnet,
22+
utxos: const [],
23+
locktime: lt,
24+
);
25+
expect(b.locktime, lt);
26+
});
27+
});
28+
29+
group('ForkedTransactionBuilder locktime', () {
30+
test('defaults to defaultTxLocktime', () {
31+
final b = ForkedTransactionBuilder(
32+
outPuts: const [],
33+
fee: BigInt.zero,
34+
network: BitcoinCashNetwork.mainnet,
35+
utxos: const [],
36+
);
37+
expect(b.locktime, BitcoinOpCodeConst.defaultTxLocktime);
38+
});
39+
40+
test('stores the provided locktime', () {
41+
final lt = [0x50, 0x01, 0xcf, 0x00];
42+
final b = ForkedTransactionBuilder(
43+
outPuts: const [],
44+
fee: BigInt.zero,
45+
network: BitcoinCashNetwork.mainnet,
46+
utxos: const [],
47+
locktime: lt,
48+
);
49+
expect(b.locktime, lt);
50+
});
51+
});
52+
}

0 commit comments

Comments
 (0)