sendOperation static method

Future<Map<String, Object?>> sendOperation(
  1. String server,
  2. List<OperationModel> operations,
  3. SoftSigner signer,
  4. int offset, [
  5. dynamic blockHead,
  6. dynamic preapply,
  7. dynamic gasEstimation,
])

Implementation

static Future<Map<String, Object?>> sendOperation(String server,
    List<OperationModel> operations, SoftSigner signer, int offset,
    [blockHead, preapply, gasEstimation]) async {
  var _blockHead =
      blockHead ?? await TezosNodeReader.getBlockAtOffset(server, offset);
  var blockHash = _blockHead['hash'].toString().substring(0, 51);
  var forgedOperationGroup =
      await forgeOperations(server, blockHash, operations);
  var opSignature = signer.signOperation(Uint8List.fromList(hex.decode(
      TezosConstants.OperationGroupWatermark + forgedOperationGroup)));
  var signedOpGroup = Uint8List.fromList(
      hex.decode(forgedOperationGroup) + opSignature.toList());
  var base58signature = TezosMessageUtils.readSignatureWithHint(
      opSignature, signer.getSignerCurve());
  var opPair = {'bytes': signedOpGroup, 'signature': base58signature};
  var appliedOp = await preapplyOperation(
      server, blockHash, _blockHead['protocol'], operations, opPair);
  if (preapply != null &&
      preapply &&
      gasEstimation != null &&
      gasEstimation) {
    return {
      'opPair': opPair,
      'gasEstimation': operations[0].fee.toString(),
    };
  }
  if (preapply != null && preapply) return opPair;
  var injectedOperation = await injectOperation(server, opPair);

  return {'appliedOp': appliedOp[0], 'operationGroupID': injectedOperation};
}