Skip to content

Commit 1db9e42

Browse files
authored
Merge pull request #24 from bc1cindy/mrtnetwork-locktime-param
Add locktime param to transaction builders
2 parents 3de6b4b + 59ec386 commit 1db9e42

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
@@ -28,6 +28,7 @@ class ForkedTransactionBuilder extends BasedBitcoinTransacationBuilder {
2828
final String? memo;
2929
final bool enableRBF;
3030
final bool isFakeTransaction;
31+
final List<int> locktime;
3132

3233
ForkedTransactionBuilder({
3334
required super.outPuts,
@@ -39,6 +40,7 @@ class ForkedTransactionBuilder extends BasedBitcoinTransacationBuilder {
3940
this.memo,
4041
this.enableRBF = false,
4142
this.isFakeTransaction = false,
43+
this.locktime = BitcoinOpCodeConst.defaultTxLocktime,
4244
}) {
4345
_validateBuilder();
4446
}
@@ -492,7 +494,7 @@ be retrieved by anyone who examines the blockchain's history.
492494
);
493495

494496
/// create new transaction with inputs and outputs and isSegwit transaction or not
495-
final transaction = BtcTransaction(inputs: inputs, outputs: outputs);
497+
final transaction = BtcTransaction(inputs: inputs, outputs: outputs, locktime: locktime);
496498
const sighash =
497499
BitcoinOpCodeConst.sighashAll | BitcoinOpCodeConst.sighashForked;
498500

@@ -604,7 +606,7 @@ be retrieved by anyone who examines the blockchain's history.
604606
);
605607

606608
/// create new transaction with inputs and outputs and isSegwit transaction or not
607-
final transaction = BtcTransaction(inputs: inputs, outputs: outputs);
609+
final transaction = BtcTransaction(inputs: inputs, outputs: outputs, locktime: locktime);
608610

609611
const sighash =
610612
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
}
@@ -514,6 +516,7 @@ that demonstrate the right to spend the bitcoins associated with the correspondi
514516
BtcTransaction transaction = BtcTransaction(
515517
inputs: inputs,
516518
outputs: outputs,
519+
locktime: locktime,
517520
);
518521

519522
/// we define empty witnesses. maybe the transaction is segwit and We need this
@@ -715,6 +718,7 @@ that demonstrate the right to spend the bitcoins associated with the correspondi
715718
BtcTransaction transaction = BtcTransaction(
716719
inputs: inputs,
717720
outputs: outputs,
721+
locktime: locktime,
718722
);
719723

720724
/// 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)