@@ -64,14 +64,14 @@ use enr::{EnrBuilder, k256};
64
64
use std :: net :: Ipv4Addr ;
65
65
use rand :: thread_rng;
66
66
67
+ // generate a random secp256k1 key
67
68
let mut rng = thread_rng ();
68
- // generate a random k256 key
69
69
let key = k256 :: ecdsa :: SigningKey :: random (& mut rng );
70
70
71
71
let ip = Ipv4Addr :: new (192 ,168 ,0 ,1 );
72
- let enr = EnrBuilder :: new (" v4" ). ip (ip . into ()) . tcp (8000 ). build (& key ). unwrap ();
72
+ let enr = EnrBuilder :: new (" v4" ). ip4 (ip ) . tcp4 (8000 ). build (& key ). unwrap ();
73
73
74
- assert_eq! (enr . ip (), Some (" 192.168.0.1" . parse (). unwrap ()));
74
+ assert_eq! (enr . ip4 (), Some (" 192.168.0.1" . parse (). unwrap ()));
75
75
assert_eq! (enr . id (), Some (" v4" . into ()));
76
76
```
77
77
@@ -84,49 +84,52 @@ Note the `ed25519` feature flag must be set. This makes use of the
84
84
use enr :: {EnrBuilder , CombinedKey };
85
85
use std :: net :: Ipv4Addr ;
86
86
87
- // create a new k256 key
87
+ // create a new secp256k1 key
88
88
let key = CombinedKey :: generate_secp256k1 ();
89
89
90
90
// or create a new ed25519 key
91
91
let key = CombinedKey :: generate_ed25519 ();
92
92
93
93
let ip = Ipv4Addr :: new (192 ,168 ,0 ,1 );
94
- let enr = EnrBuilder :: new (" v4" ). ip (ip . into ()) . tcp (8000 ). build (& key ). unwrap ();
94
+ let enr = EnrBuilder :: new (" v4" ). ip4 (ip ) . tcp4 (8000 ). build (& key ). unwrap ();
95
95
96
- assert_eq! (enr . ip (), Some (" 192.168.0.1" . parse (). unwrap ()));
96
+ assert_eq! (enr . ip4 (), Some (" 192.168.0.1" . parse (). unwrap ()));
97
97
assert_eq! (enr . id (), Some (" v4" . into ()));
98
98
```
99
99
100
100
#### Modifying an ENR
101
101
102
- Enr fields can be added and modified using the getters/setters on ` Enr ` . A custom field
102
+ ENR fields can be added and modified using the getters/setters on ` Enr ` . A custom field
103
103
can be added using ` insert ` and retrieved with ` get ` .
104
104
105
105
``` rust
106
106
use enr :: {EnrBuilder , k256 :: ecdsa :: SigningKey , Enr };
107
107
use std :: net :: Ipv4Addr ;
108
108
use rand :: thread_rng;
109
109
110
- // generate a random k256 key
110
+ // specify the type of ENR
111
+ type DefaultEnr = Enr <SigningKey >;
112
+
113
+ // generate a random secp256k1 key
111
114
let mut rng = thread_rng ();
112
115
let key = SigningKey :: random (& mut rng );
113
116
114
117
let ip = Ipv4Addr :: new (192 ,168 ,0 ,1 );
115
- let mut enr = EnrBuilder :: new (" v4" ). ip (ip . into ()) . tcp (8000 ). build (& key ). unwrap ();
118
+ let mut enr = EnrBuilder :: new (" v4" ). ip4 (ip ) . tcp4 (8000 ). build (& key ). unwrap ();
116
119
117
- enr . set_tcp (8001 , & key );
120
+ enr . set_tcp4 (8001 , & key );
118
121
// set a custom key
119
122
enr . insert (" custom_key" , & vec! [0 ,0 ,1 ], & key );
120
123
121
124
// encode to base64
122
125
let base_64_string = enr . to_base64 ();
123
126
124
127
// decode from base64
125
- let decoded_enr : Enr < SigningKey > = base_64_string . parse (). unwrap ();
128
+ let decoded_enr : DefaultEnr = base_64_string . parse (). unwrap ();
126
129
127
- assert_eq! (decoded_enr . ip (), Some (" 192.168.0.1" . parse (). unwrap ()));
130
+ assert_eq! (decoded_enr . ip4 (), Some (" 192.168.0.1" . parse (). unwrap ()));
128
131
assert_eq! (decoded_enr . id (), Some (" v4" . into ()));
129
- assert_eq! (decoded_enr . tcp (), Some (8001 ));
132
+ assert_eq! (decoded_enr . tcp4 (), Some (8001 ));
130
133
assert_eq! (decoded_enr . get (" custom_key" ), Some (vec! [0 ,0 ,1 ]. as_slice ()));
131
134
```
132
135
@@ -136,28 +139,30 @@ assert_eq!(decoded_enr.get("custom_key"), Some(vec![0,0,1].as_slice()));
136
139
use enr :: {EnrBuilder , k256 :: ecdsa :: SigningKey , Enr , ed25519_dalek :: Keypair , CombinedKey };
137
140
use std :: net :: Ipv4Addr ;
138
141
use rand :: thread_rng;
142
+ use rand :: Rng ;
139
143
140
- // generate a random k256 key
144
+ // generate a random secp256k1 key
141
145
let mut rng = thread_rng ();
142
146
let key = SigningKey :: random (& mut rng );
143
147
let ip = Ipv4Addr :: new (192 ,168 ,0 ,1 );
144
- let enr_secp256k1 = EnrBuilder :: new (" v4" ). ip (ip . into ()) . tcp (8000 ). build (& key ). unwrap ();
148
+ let enr_secp256k1 = EnrBuilder :: new (" v4" ). ip4 (ip ) . tcp4 (8000 ). build (& key ). unwrap ();
145
149
146
150
// encode to base64
147
151
let base64_string_secp256k1 = enr_secp256k1 . to_base64 ();
148
152
149
153
// generate a random ed25519 key
154
+ let mut rng = rand_07 :: thread_rng ();
150
155
let key = Keypair :: generate (& mut rng );
151
- let enr_ed25519 = EnrBuilder :: new (" v4" ). ip (ip . into ()) . tcp (8000 ). build (& key ). unwrap ();
156
+ let enr_ed25519 = EnrBuilder :: new (" v4" ). ip4 (ip ) . tcp4 (8000 ). build (& key ). unwrap ();
152
157
153
158
// encode to base64
154
159
let base64_string_ed25519 = enr_ed25519 . to_base64 ();
155
160
156
161
// decode base64 strings of varying key types
157
162
// decode the secp256k1 with default Enr
158
- let decoded_enr_secp256k1 : Enr <SigningKey > = base64_string_secp256k1 . parse (). unwrap ();
163
+ let decoded_enr_secp256k1 : Enr <k256 :: ecdsa :: SigningKey > = base64_string_secp256k1 . parse (). unwrap ();
159
164
// decode ed25519 ENRs
160
- let decoded_enr_ed25519 : Enr <Keypair > = base64_string_ed25519 . parse (). unwrap ();
165
+ let decoded_enr_ed25519 : Enr <ed25519_dalek :: Keypair > = base64_string_ed25519 . parse (). unwrap ();
161
166
162
167
// use the combined key to be able to decode either
163
168
let decoded_enr : Enr <CombinedKey > = base64_string_secp256k1 . parse (). unwrap ();
0 commit comments