broadcastTransaction method

Future<String> broadcastTransaction(
  1. List<int> txRaw, {
  2. Duration? timeout,
})

Implementation

Future<String> broadcastTransaction(
  List<int> txRaw, {
  Duration? timeout,
}) async {
  final result = await foldApi(
    onTendermint: (provider) async {
      final result = await provider.request(
        TendermintRequestBroadcastTxSync(
          BytesUtils.toHexString(txRaw, prefix: "0x"),
        ),
        timeout: timeout,
      );
      return (
        code: result.code,
        data: result.data,
        log: result.log,
        hash: result.hash,
      );
    },
    onRest: (provider) async {
      final result = await query(
        BroadcastTxRequest(
          txBytes: txRaw,
          mode: BroadcastMode.broadcastModeAsync,
        ),
        timeout: timeout,
      );
      return (
        code: result.txResponse?.code,
        data: result.txResponse?.data,
        log: result.txResponse?.rawLog,
        hash: result.txResponse?.txhash,
      );
    },
    onGrpc: (provider) async {
      final result = await query(
        BroadcastTxRequest(
          txBytes: txRaw,
          mode: BroadcastMode.broadcastModeAsync,
        ),
        timeout: timeout,
      );

      return (
        code: result.txResponse?.code,
        data: result.txResponse?.data,
        log: result.txResponse?.rawLog,
        hash: result.txResponse?.txhash,
      );
    },
  );
  final hash = result.hash;
  if (hash == null) {
    throw RPCError(
      message: "Unexpected service response. missing tx hash.",
      jsonRpcErrpr: {
        "code": result.code,
        "data": result.data,
        "log": result.log,
      },
    );
  }
  final code = result.code ?? 0;
  if (code != 0) {
    throw RPCError(
      message: result.data ?? "Broadcast transaction failed.",
      errorCode: code,
    );
  }
  return hash;
}