Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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()));
        }
Esempio n. 3
0
 public AbiOutputParameter[] Decode(byte[] outputData)
 {
     return(AbiParameterCoder.DecodeParameter(_definition.Outputs, outputData));
 }