public async Task <IActionResult> GetAsync([FromBody] Attestation signedAttestation, CancellationToken cancellationToken) { if (_logger.IsDebug()) { string?aggregationBits = null; if (signedAttestation.AggregationBits != null) { aggregationBits = string.Create(signedAttestation.AggregationBits.Length, signedAttestation.AggregationBits, ((span, bitArray) => { for (int index = 0; index < bitArray.Length; index++) { span[index] = bitArray[index] ? '1' : '0'; } })); } LogDebug.AttestationPublished(_logger, signedAttestation.Data?.Slot, signedAttestation.Data?.Index, aggregationBits, signedAttestation.Signature, null); } ApiResponse apiResponse = await _beaconNode.PublishAttestationAsync(signedAttestation, cancellationToken).ConfigureAwait(false); return(apiResponse.StatusCode switch { // "The attestation was validated successfully and has been broadcast. It has also been integrated into the beacon node's database." Core2.Api.StatusCode.Success => Ok(), // "The attestation failed validation, but was successfully broadcast anyway. It was not integrated into the beacon node's database." Core2.Api.StatusCode.BroadcastButFailedValidation => Accepted(), Core2.Api.StatusCode.InvalidRequest => Problem("Invalid request syntax.", statusCode: (int)apiResponse.StatusCode), Core2.Api.StatusCode.CurrentlySyncing => Problem("Beacon node is currently syncing, try again later.", statusCode: (int)apiResponse.StatusCode), _ => Problem("Beacon node internal error.", statusCode: (int)apiResponse.StatusCode) });