1#![no_std]
40
41pub const EXTENSION_TYPE_NO_EXTENSION: u16 = 0;
44
45pub const SV2_FRAME_HEADER_SIZE: usize = 6;
47
48pub const SV2_FRAME_HEADER_LEN_OFFSET: usize = 3;
51
52pub const SV2_FRAME_HEADER_LEN_END: usize = 3;
55
56pub const SV2_FRAME_CHUNK_SIZE: usize = 65535;
58
59pub const AEAD_MAC_LEN: usize = 16;
61
62pub const ENCRYPTED_SV2_FRAME_HEADER_SIZE: usize = SV2_FRAME_HEADER_SIZE + AEAD_MAC_LEN;
66
67pub const NOISE_FRAME_HEADER_SIZE: usize = 2;
71
72pub const NOISE_FRAME_HEADER_LEN_OFFSET: usize = 0;
76
77pub const NOISE_FRAME_MAX_SIZE: usize = u16::MAX as usize;
80
81pub const ELLSWIFT_ENCODING_SIZE: usize = 64;
85
86pub const RESPONDER_EXPECTED_HANDSHAKE_MESSAGE_SIZE: usize = ELLSWIFT_ENCODING_SIZE;
89
90pub const MAC: usize = 16;
93
94pub const ENCRYPTED_ELLSWIFT_ENCODING_SIZE: usize = ELLSWIFT_ENCODING_SIZE + MAC;
98
99pub const SIGNATURE_NOISE_MESSAGE_SIZE: usize = 74;
103
104pub const ENCRYPTED_SIGNATURE_NOISE_MESSAGE_SIZE: usize = SIGNATURE_NOISE_MESSAGE_SIZE + MAC;
107
108pub const INITIATOR_EXPECTED_HANDSHAKE_MESSAGE_SIZE: usize = ELLSWIFT_ENCODING_SIZE
114 + ENCRYPTED_ELLSWIFT_ENCODING_SIZE
115 + ENCRYPTED_SIGNATURE_NOISE_MESSAGE_SIZE;
116
117pub const NOISE_HASHED_PROTOCOL_NAME_CHACHA: [u8; 32] = [
122 46, 180, 120, 129, 32, 142, 158, 238, 31, 102, 159, 103, 198, 110, 231, 14, 169, 234, 136, 9,
123 13, 80, 63, 232, 48, 220, 75, 200, 62, 41, 191, 16,
124];
125
126pub const NOISE_SUPPORTED_CIPHERS_MESSAGE: [u8; 5] = [1, 0x47, 0x53, 0x45, 0x41];
131
132pub const SV2_MINING_PROTOCOL_DISCRIMINANT: u8 = 0;
135pub const SV2_JOB_DECLARATION_PROTOCOL_DISCRIMINANT: u8 = 1;
136pub const SV2_TEMPLATE_DISTR_PROTOCOL_DISCRIMINANT: u8 = 2;
138
139pub const MESSAGE_TYPE_SETUP_CONNECTION: u8 = 0x0;
141pub const MESSAGE_TYPE_SETUP_CONNECTION_SUCCESS: u8 = 0x1;
142pub const MESSAGE_TYPE_SETUP_CONNECTION_ERROR: u8 = 0x2;
143pub const MESSAGE_TYPE_CHANNEL_ENDPOINT_CHANGED: u8 = 0x3;
144
145pub const MESSAGE_TYPE_OPEN_STANDARD_MINING_CHANNEL: u8 = 0x10;
147pub const MESSAGE_TYPE_OPEN_STANDARD_MINING_CHANNEL_SUCCESS: u8 = 0x11;
148pub const MESSAGE_TYPE_OPEN_MINING_CHANNEL_ERROR: u8 = 0x12;
149pub const MESSAGE_TYPE_OPEN_EXTENDED_MINING_CHANNEL: u8 = 0x13;
150pub const MESSAGE_TYPE_OPEN_EXTENDED_MINING_CHANNEL_SUCCES: u8 = 0x14;
152pub const MESSAGE_TYPE_NEW_MINING_JOB: u8 = 0x15;
153pub const MESSAGE_TYPE_UPDATE_CHANNEL: u8 = 0x16;
154pub const MESSAGE_TYPE_UPDATE_CHANNEL_ERROR: u8 = 0x17;
155pub const MESSAGE_TYPE_CLOSE_CHANNEL: u8 = 0x18;
156pub const MESSAGE_TYPE_SET_EXTRANONCE_PREFIX: u8 = 0x19;
157pub const MESSAGE_TYPE_SUBMIT_SHARES_STANDARD: u8 = 0x1a;
158pub const MESSAGE_TYPE_SUBMIT_SHARES_EXTENDED: u8 = 0x1b;
159pub const MESSAGE_TYPE_SUBMIT_SHARES_SUCCESS: u8 = 0x1c;
160pub const MESSAGE_TYPE_SUBMIT_SHARES_ERROR: u8 = 0x1d;
161pub const MESSAGE_TYPE_NEW_EXTENDED_MINING_JOB: u8 = 0x1f;
162pub const MESSAGE_TYPE_MINING_SET_NEW_PREV_HASH: u8 = 0x20;
163pub const MESSAGE_TYPE_SET_TARGET: u8 = 0x21;
164pub const MESSAGE_TYPE_SET_CUSTOM_MINING_JOB: u8 = 0x22;
165pub const MESSAGE_TYPE_SET_CUSTOM_MINING_JOB_SUCCESS: u8 = 0x23;
166pub const MESSAGE_TYPE_SET_CUSTOM_MINING_JOB_ERROR: u8 = 0x24;
167
168pub const MESSAGE_TYPE_RECONNECT: u8 = 0x25;
171pub const MESSAGE_TYPE_SET_GROUP_CHANNEL: u8 = 0x26;
172
173pub const MESSAGE_TYPE_ALLOCATE_MINING_JOB_TOKEN: u8 = 0x50;
175pub const MESSAGE_TYPE_ALLOCATE_MINING_JOB_TOKEN_SUCCESS: u8 = 0x51;
176pub const MESSAGE_TYPE_IDENTIFY_TRANSACTIONS: u8 = 0x53;
177pub const MESSAGE_TYPE_IDENTIFY_TRANSACTIONS_SUCCESS: u8 = 0x54;
178pub const MESSAGE_TYPE_PROVIDE_MISSING_TRANSACTIONS: u8 = 0x55;
179pub const MESSAGE_TYPE_PROVIDE_MISSING_TRANSACTIONS_SUCCESS: u8 = 0x56;
180pub const MESSAGE_TYPE_DECLARE_MINING_JOB: u8 = 0x57;
181pub const MESSAGE_TYPE_DECLARE_MINING_JOB_SUCCESS: u8 = 0x58;
182pub const MESSAGE_TYPE_DECLARE_MINING_JOB_ERROR: u8 = 0x59;
183pub const MESSAGE_TYPE_SUBMIT_SOLUTION_JD: u8 = 0x60;
184
185pub const MESSAGE_TYPE_COINBASE_OUTPUT_CONSTRAINTS: u8 = 0x70;
187pub const MESSAGE_TYPE_NEW_TEMPLATE: u8 = 0x71;
188pub const MESSAGE_TYPE_SET_NEW_PREV_HASH: u8 = 0x72;
189pub const MESSAGE_TYPE_REQUEST_TRANSACTION_DATA: u8 = 0x73;
190pub const MESSAGE_TYPE_REQUEST_TRANSACTION_DATA_SUCCESS: u8 = 0x74;
191pub const MESSAGE_TYPE_REQUEST_TRANSACTION_DATA_ERROR: u8 = 0x75;
192pub const MESSAGE_TYPE_SUBMIT_SOLUTION: u8 = 0x76;
193
194pub const CHANNEL_BIT_SETUP_CONNECTION: bool = false;
202pub const CHANNEL_BIT_SETUP_CONNECTION_SUCCESS: bool = false;
203pub const CHANNEL_BIT_SETUP_CONNECTION_ERROR: bool = false;
204pub const CHANNEL_BIT_CHANNEL_ENDPOINT_CHANGED: bool = true;
205
206pub const CHANNEL_BIT_COINBASE_OUTPUT_CONSTRAINTS: bool = false;
208pub const CHANNEL_BIT_NEW_TEMPLATE: bool = false;
209pub const CHANNEL_BIT_SET_NEW_PREV_HASH: bool = false;
210pub const CHANNEL_BIT_REQUEST_TRANSACTION_DATA: bool = false;
211pub const CHANNEL_BIT_REQUEST_TRANSACTION_DATA_SUCCESS: bool = false;
212pub const CHANNEL_BIT_REQUEST_TRANSACTION_DATA_ERROR: bool = false;
213pub const CHANNEL_BIT_SUBMIT_SOLUTION: bool = false;
214
215pub const CHANNEL_BIT_ALLOCATE_MINING_JOB_TOKEN: bool = false;
218pub const CHANNEL_BIT_ALLOCATE_MINING_JOB_TOKEN_SUCCESS: bool = false;
219pub const CHANNEL_BIT_DECLARE_MINING_JOB: bool = false;
220pub const CHANNEL_BIT_DECLARE_MINING_JOB_SUCCESS: bool = false;
221pub const CHANNEL_BIT_DECLARE_MINING_JOB_ERROR: bool = false;
222pub const CHANNEL_BIT_IDENTIFY_TRANSACTIONS: bool = false;
223pub const CHANNEL_BIT_IDENTIFY_TRANSACTIONS_SUCCESS: bool = false;
224pub const CHANNEL_BIT_PROVIDE_MISSING_TRANSACTIONS: bool = false;
225pub const CHANNEL_BIT_PROVIDE_MISSING_TRANSACTIONS_SUCCESS: bool = false;
226pub const CHANNEL_BIT_SUBMIT_SOLUTION_JD: bool = true;
227
228pub const CHANNEL_BIT_CLOSE_CHANNEL: bool = true;
230pub const CHANNEL_BIT_NEW_EXTENDED_MINING_JOB: bool = true;
231pub const CHANNEL_BIT_NEW_MINING_JOB: bool = true;
232pub const CHANNEL_BIT_OPEN_EXTENDED_MINING_CHANNEL: bool = false;
233pub const CHANNEL_BIT_OPEN_EXTENDED_MINING_CHANNEL_SUCCES: bool = false;
234pub const CHANNEL_BIT_OPEN_MINING_CHANNEL_ERROR: bool = false;
235pub const CHANNEL_BIT_OPEN_STANDARD_MINING_CHANNEL: bool = false;
236pub const CHANNEL_BIT_OPEN_STANDARD_MINING_CHANNEL_SUCCESS: bool = false;
237pub const CHANNEL_BIT_RECONNECT: bool = false;
238pub const CHANNEL_BIT_SET_CUSTOM_MINING_JOB: bool = false;
239pub const CHANNEL_BIT_SET_CUSTOM_MINING_JOB_ERROR: bool = false;
240pub const CHANNEL_BIT_SET_CUSTOM_MINING_JOB_SUCCESS: bool = false;
241pub const CHANNEL_BIT_SET_EXTRANONCE_PREFIX: bool = true;
242pub const CHANNEL_BIT_SET_GROUP_CHANNEL: bool = false;
243pub const CHANNEL_BIT_MINING_SET_NEW_PREV_HASH: bool = true;
244pub const CHANNEL_BIT_SET_TARGET: bool = true;
245pub const CHANNEL_BIT_SUBMIT_SHARES_ERROR: bool = true;
246pub const CHANNEL_BIT_SUBMIT_SHARES_EXTENDED: bool = true;
247pub const CHANNEL_BIT_SUBMIT_SHARES_STANDARD: bool = true;
248pub const CHANNEL_BIT_SUBMIT_SHARES_SUCCESS: bool = true;
249pub const CHANNEL_BIT_UPDATE_CHANNEL: bool = true;
250pub const CHANNEL_BIT_UPDATE_CHANNEL_ERROR: bool = true;