private static byte[] GetByteArrayArg(DisasmMethodCall call, int argumentNumber) { try { return(call.Arguments[argumentNumber].AsByteArray()); } catch (Exception e) { throw new Exception($"{GetCallFullName(call)}: Error: Cannot get description for argument #{argumentNumber + 1} [String]: {e.Message}"); } }
private static Timestamp GetTimestampArg(DisasmMethodCall call, int argumentNumber) { try { return(call.Arguments[argumentNumber].AsTimestamp()); } catch (Exception e) { throw new Exception($"{GetCallFullName(call)}: Error: Cannot get description for argument #{argumentNumber + 1} [Timestamp]: {e.Message}"); } }
private static string GetCallFullName(DisasmMethodCall call) { if (!string.IsNullOrEmpty(call.ContractName)) { return($"{call.ContractName}.{call.MethodName}"); } else { return(call.MethodName); } }
private static bool CompareCalls(DisasmMethodCall call1, DisasmMethodCall call2, params int[] argNumbersToCompare) { // Compare contract and method names. if (GetCallFullName(call1) != GetCallFullName(call2)) { return(false); } for (int i = 0; i < argNumbersToCompare.Length; i++) { // Compare all arguments as strings. if (call1.Arguments[argNumbersToCompare[i]].AsString() != call2.Arguments[argNumbersToCompare[i]].AsString()) { return(false); } } return(true); }
private static bool CheckIfCallShouldBeIgnored(DisasmMethodCall call) { return("gas".Equals(call.ContractName) && (call.MethodName == "AllowGas" || call.MethodName == "SpendGas")); }