コード例 #1
0
 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}");
     }
 }
コード例 #2
0
 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}");
     }
 }
コード例 #3
0
 private static string GetCallFullName(DisasmMethodCall call)
 {
     if (!string.IsNullOrEmpty(call.ContractName))
     {
         return($"{call.ContractName}.{call.MethodName}");
     }
     else
     {
         return(call.MethodName);
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 private static bool CheckIfCallShouldBeIgnored(DisasmMethodCall call)
 {
     return("gas".Equals(call.ContractName) && (call.MethodName == "AllowGas" || call.MethodName == "SpendGas"));
 }