@@ -4,56 +4,70 @@ use std::sync::Arc;
4
4
5
5
use elements:: { confidential, taproot:: ControlBlock , AssetIssuance } ;
6
6
use hashes:: Hash ;
7
+ use simplicity:: elements:: { AssetId , TxOut } ;
7
8
use simplicity:: jet:: elements:: { ElementsEnv , ElementsUtxo } ;
8
9
use simplicity:: Cmr ;
9
10
use simplicity:: { elements, hashes} ;
10
11
11
12
/// Return a dummy Elements environment.
12
13
pub fn dummy ( ) -> ElementsEnv < Arc < elements:: Transaction > > {
13
- dummy_with ( elements:: LockTime :: ZERO , elements:: Sequence :: MAX )
14
+ dummy_with ( elements:: LockTime :: ZERO , elements:: Sequence :: MAX , false )
14
15
}
15
16
16
- /// Return a dummy Elements environment with the given locktime and input sequence.
17
- pub fn dummy_with (
18
- lock_time : elements:: LockTime ,
19
- sequence : elements:: Sequence ,
20
- ) -> ElementsEnv < Arc < elements:: Transaction > > {
17
+ /// Returns a default transaction for the Elements network.
18
+ fn create_default_transaction ( lock_time : elements:: LockTime , sequence : elements:: Sequence , include_fee_output : bool ) -> elements:: Transaction {
19
+ let mut tx = elements:: Transaction {
20
+ version : 2 ,
21
+ lock_time,
22
+ input : vec ! [ elements:: TxIn {
23
+ previous_output: elements:: OutPoint :: default ( ) ,
24
+ is_pegin: false ,
25
+ script_sig: elements:: Script :: new( ) ,
26
+ sequence,
27
+ asset_issuance: AssetIssuance :: default ( ) ,
28
+ witness: elements:: TxInWitness :: default ( ) ,
29
+ } ] ,
30
+ output : vec ! [ elements:: TxOut {
31
+ asset: confidential:: Asset :: default ( ) ,
32
+ value: confidential:: Value :: default ( ) ,
33
+ nonce: confidential:: Nonce :: default ( ) ,
34
+ script_pubkey: elements:: Script :: default ( ) ,
35
+ witness: elements:: TxOutWitness :: default ( ) ,
36
+ } ] ,
37
+ } ;
38
+
39
+ if include_fee_output {
40
+ tx. output . push ( TxOut :: new_fee ( 1_000 , AssetId :: default ( ) ) ) ;
41
+ }
42
+ tx
43
+ }
44
+
45
+ /// Returns a dummy Elements environment with a provided transaction.
46
+ pub fn dummy_with_tx ( tx : elements:: Transaction ) -> ElementsEnv < Arc < elements:: Transaction > > {
21
47
let ctrl_blk: [ u8 ; 33 ] = [
22
48
0xc0 , 0xeb , 0x04 , 0xb6 , 0x8e , 0x9a , 0x26 , 0xd1 , 0x16 , 0x04 , 0x6c , 0x76 , 0xe8 , 0xff , 0x47 ,
23
49
0x33 , 0x2f , 0xb7 , 0x1d , 0xda , 0x90 , 0xff , 0x4b , 0xef , 0x53 , 0x70 , 0xf2 , 0x52 , 0x26 , 0xd3 ,
24
50
0xbc , 0x09 , 0xfc ,
25
51
] ;
52
+ let num_inputs = tx. input . len ( ) ;
26
53
27
54
ElementsEnv :: new (
28
- Arc :: new ( elements:: Transaction {
29
- version : 2 ,
30
- lock_time,
31
- // Enable locktime in dummy txin
32
- input : vec ! [ elements:: TxIn {
33
- previous_output: elements:: OutPoint :: default ( ) ,
34
- is_pegin: false ,
35
- script_sig: elements:: Script :: new( ) ,
36
- sequence,
37
- asset_issuance: AssetIssuance :: default ( ) ,
38
- witness: elements:: TxInWitness :: default ( ) ,
39
- } ] ,
40
- output : vec ! [ elements:: TxOut {
41
- asset: confidential:: Asset :: default ( ) ,
42
- value: confidential:: Value :: default ( ) ,
43
- nonce: confidential:: Nonce :: default ( ) ,
44
- script_pubkey: elements:: Script :: default ( ) ,
45
- witness: elements:: TxOutWitness :: default ( ) ,
46
- } ] ,
47
- } ) ,
55
+ Arc :: new ( tx) ,
48
56
vec ! [ ElementsUtxo {
49
57
script_pubkey: elements:: Script :: default ( ) ,
50
58
asset: confidential:: Asset :: default ( ) ,
51
59
value: confidential:: Value :: default ( ) ,
52
- } ] ,
60
+ } ; num_inputs ] ,
53
61
0 ,
54
62
Cmr :: from_byte_array ( [ 0 ; 32 ] ) ,
55
63
ControlBlock :: from_slice ( & ctrl_blk) . unwrap ( ) ,
56
64
None ,
57
65
elements:: BlockHash :: all_zeros ( ) ,
58
66
)
59
67
}
68
+
69
+ /// Returns a dummy Elements environment with the given locktime and sequence.
70
+ pub fn dummy_with ( lock_time : elements:: LockTime , sequence : elements:: Sequence , include_fee_output : bool ) -> ElementsEnv < Arc < elements:: Transaction > > {
71
+ let default_tx = create_default_transaction ( lock_time, sequence, include_fee_output) ;
72
+ dummy_with_tx ( default_tx)
73
+ }
0 commit comments