326 {
328 return ar.stream().good();
330 return false;
332 {
336 else
338 ar.tag("bp");
339 ar.begin_array();
340 if (nbp > outputs)
341 return false;
343 for (size_t i = 0; i < nbp; ++i)
344 {
346 if (nbp - i > 1)
347 ar.delimit_array();
348 }
350 return false;
351 ar.end_array();
352 }
353 else
354 {
355 ar.tag("rangeSigs");
356 ar.begin_array();
359 return false;
360 for (size_t i = 0; i < outputs; ++i)
361 {
363 if (outputs - i > 1)
364 ar.delimit_array();
365 }
366 ar.end_array();
367 }
368
369 ar.tag("MGs");
370 ar.begin_array();
371
372
375 if (
MGs.size() != mg_elements)
376 return false;
377 for (size_t i = 0; i < mg_elements; ++i)
378 {
379
380
381
382 ar.begin_object();
383 ar.tag("ss");
384 ar.begin_array();
386 if (
MGs[i].ss.size() != mixin + 1)
387 return false;
388 for (size_t j = 0; j < mixin + 1; ++j)
389 {
390 ar.begin_array();
393 if (
MGs[i].ss[j].size() != mg_ss2_elements)
394 return false;
395 for (size_t k = 0; k < mg_ss2_elements; ++k)
396 {
398 if (mg_ss2_elements - k > 1)
399 ar.delimit_array();
400 }
401 ar.end_array();
402
403 if (mixin + 1 - j > 1)
404 ar.delimit_array();
405 }
406 ar.end_array();
407
408 ar.tag("cc");
410
411 ar.end_object();
412
413 if (mg_elements - i > 1)
414 ar.delimit_array();
415 }
416 ar.end_array();
418 {
419 ar.tag("pseudoOuts");
420 ar.begin_array();
423 return false;
424 for (size_t i = 0; i < inputs; ++i)
425 {
427 if (inputs - i > 1)
428 ar.delimit_array();
429 }
430 ar.end_array();
431 }
432 return ar.stream().good();
433 }
size_t n_bulletproof_max_amounts(const Bulletproof &proof)
#define PREPARE_CUSTOM_VECTOR_SERIALIZATION(size, vec)
std::vector< rangeSig > rangeSigs
std::vector< Bulletproof > bulletproofs