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