ParsedSmartContractRequest.fromJson constructor
ParsedSmartContractRequest.fromJson(
- Map<
String, dynamic> json, - AbiFunctionFragment? fragment
Implementation
factory ParsedSmartContractRequest.fromJson(
Map<String, dynamic> json, AbiFunctionFragment? fragment) {
if (json['Error'] != null) {
return ParsedSmartContractRequest._error(json);
}
final result = Map<String, dynamic>.from(json['result']);
if (!result.containsKey('result') || result['result'] != true) {
return ParsedSmartContractRequest._error(json);
}
final List<Map<String, dynamic>> contractRevertErrors =
List<Map<String, dynamic>>.from(json['transaction']['ret']);
for (final i in contractRevertErrors) {
if (i.isNotEmpty) {
return ParsedSmartContractRequest._error(json);
}
}
List<dynamic>? decodeResult;
if (json.containsKey('constant_result') && fragment != null) {
final outputs = List.from(json['constant_result']);
if (outputs.isEmpty) {
decodeResult = [];
} else {
try {
decodeResult =
fragment.decodeOutput(BytesUtils.fromHexString(outputs.first));
} catch (_) {
decodeResult = null;
}
}
}
return ParsedSmartContractRequest._(
respose: json,
transactionRaw:
TransactionRaw.fromJson(json['transaction']['raw_data']),
energyUsed: json['energy_used'],
outputResult: decodeResult);
}