public byte[] Encode(params dynamic[] values) { var stream = new MemoryStream(); if (values.Length == _definition.Inputs.Length) { try { var parameters = new AbiInputParameter[values.Length]; for (var index = 0; index < values.Length; index++) { parameters[index] = new AbiInputParameter(_definition.Inputs[index], values[index]); } stream.Append(_definition.Sha3Signature); stream.Append(AbiParameterCoder.EncodeParameter(parameters)); } catch { throw new ArgumentException("input values invalid"); } } else { throw new ArgumentException("values number not match"); } return(stream.ToArray()); }
public static byte[] EncodeConstructorWithParameter(this AbiContractDefinition definition, params dynamic[] values) { if (definition.Constructor == null) { throw new ArgumentException("Constructor has no parameter"); } return(AbiParameterCoder .EncodeParameter(values.Select(t => new AbiInputParameter(definition.Constructor.Inputs[0], t)) .ToArray())); }
public AbiOutputParameter[] Decode(byte[] outputData) { return(AbiParameterCoder.DecodeParameter(_definition.Outputs, outputData)); }