broadcastTransaction method
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;
}