@@ -10,8 +10,9 @@ use crate::docker::{
10
10
self , docker_daemon_ip, free_local_port:: free_local_port, DockerImage , File , LogMessage ,
11
11
DOCKER_NETWORK ,
12
12
} ;
13
+ use serde:: Serializer ;
13
14
14
- const IMAGE : & str = "comitnetwork/cnd:0.4 .0" ;
15
+ const IMAGE : & str = "comitnetwork/cnd:0.8 .0" ;
15
16
16
17
#[ derive( derive_more:: Display , Copy , Clone ) ]
17
18
#[ display( fmt = "http://{}:{}" , ip, port) ]
@@ -25,17 +26,7 @@ pub struct CndInstance {
25
26
}
26
27
27
28
pub async fn new_instance ( index : u32 ) -> anyhow:: Result < CndInstance > {
28
- let settings = Settings {
29
- bitcoin : Bitcoin {
30
- network : String :: from ( "regtest" ) ,
31
- node_url : "http://bitcoin:18443" . to_string ( ) ,
32
- } ,
33
- ethereum : Ethereum {
34
- chain_id : 17 ,
35
- node_url : "http://ethereum:8545" . to_string ( ) ,
36
- } ,
37
- ..Default :: default ( )
38
- } ;
29
+ let settings = Settings :: default ( ) ;
39
30
40
31
let settings = toml:: to_string ( & settings) . context ( "failed to serialize settings" ) ?;
41
32
@@ -72,6 +63,7 @@ pub async fn new_instance(index: u32) -> anyhow::Result<CndInstance> {
72
63
struct Settings {
73
64
network : Network ,
74
65
http_api : HttpApi ,
66
+ data : Data ,
75
67
logging : Logging ,
76
68
bitcoin : Bitcoin ,
77
69
ethereum : Ethereum ,
@@ -87,32 +79,55 @@ struct HttpApi {
87
79
cors : Cors ,
88
80
}
89
81
90
- #[ derive( Clone , Debug , serde :: Serialize ) ]
82
+ #[ derive( Clone , Debug ) ]
91
83
struct Socket {
92
84
address : IpAddr ,
93
85
port : u16 ,
94
86
}
95
87
88
+ impl serde:: Serialize for Socket {
89
+ fn serialize < S > ( & self , serializer : S ) -> Result < <S as Serializer >:: Ok , <S as Serializer >:: Error >
90
+ where
91
+ S : Serializer ,
92
+ {
93
+ serializer. serialize_str ( & format ! ( "{}:{}" , self . address. to_string( ) , self . port) )
94
+ }
95
+ }
96
+
96
97
#[ derive( Clone , Debug , serde:: Serialize ) ]
97
98
struct Cors {
98
99
allowed_origins : String ,
99
100
}
100
101
102
+ #[ derive( Clone , Debug , serde:: Serialize ) ]
103
+ struct Data {
104
+ dir : String ,
105
+ }
106
+
101
107
#[ derive( Clone , Debug , serde:: Serialize ) ]
102
108
struct Logging {
103
109
level : String ,
104
- structured : bool ,
105
110
}
106
111
107
112
#[ derive( Clone , Debug , serde:: Serialize ) ]
108
113
struct Bitcoin {
109
114
network : String ,
115
+ bitcoind : Bitcoind ,
116
+ }
117
+
118
+ #[ derive( Clone , Debug , serde:: Serialize ) ]
119
+ struct Bitcoind {
110
120
node_url : String ,
111
121
}
112
122
113
123
#[ derive( Clone , Debug , serde:: Serialize ) ]
114
124
struct Ethereum {
115
- chain_id : i8 ,
125
+ chain_id : i16 ,
126
+ geth : Geth ,
127
+ }
128
+
129
+ #[ derive( Clone , Debug , serde:: Serialize ) ]
130
+ struct Geth {
116
131
node_url : String ,
117
132
}
118
133
@@ -150,11 +165,18 @@ impl Default for Cors {
150
165
}
151
166
}
152
167
168
+ impl Default for Data {
169
+ fn default ( ) -> Self {
170
+ Data {
171
+ dir : "/home/cnd/.local/share/comit/" . to_string ( ) ,
172
+ }
173
+ }
174
+ }
175
+
153
176
impl Default for Logging {
154
177
fn default ( ) -> Self {
155
178
Logging {
156
- level : "DEBUG" . to_string ( ) ,
157
- structured : false ,
179
+ level : "Debug" . to_string ( ) ,
158
180
}
159
181
}
160
182
}
@@ -163,7 +185,9 @@ impl Default for Bitcoin {
163
185
fn default ( ) -> Self {
164
186
Bitcoin {
165
187
network : "regtest" . to_string ( ) ,
166
- node_url : "http://localhost:18443" . to_string ( ) ,
188
+ bitcoind : Bitcoind {
189
+ node_url : "http://bitcoin:18443" . to_string ( ) ,
190
+ } ,
167
191
}
168
192
}
169
193
}
@@ -172,7 +196,9 @@ impl Default for Ethereum {
172
196
fn default ( ) -> Self {
173
197
Ethereum {
174
198
chain_id : 17 ,
175
- node_url : "http://localhost:8545" . to_string ( ) ,
199
+ geth : Geth {
200
+ node_url : "http://ethereum:8545" . to_string ( ) ,
201
+ } ,
176
202
}
177
203
}
178
204
}
0 commit comments