public byte[] GetABIParamsEncodedPacked <T>(T input) { var type = typeof(T); var parametersEncoder = new ParametersEncoder(); var parameterObjects = parametersEncoder.GetParameterAttributeValues(type, input).OrderBy(x => x.ParameterAttribute.Order); var result = new List <byte>(); foreach (var abiParameter in parameterObjects) { var abiType = abiParameter.ParameterAttribute.Parameter.ABIType; var value = abiParameter.Value; result.AddRange(abiType.EncodePacked(value)); } return(result.ToArray()); }
private TypedData GenerateTypedData <T>(T data, Domain domain, string primaryTypeName) { var parameters = _parametersEncoder.GetParameterAttributeValues(typeof(T), data).OrderBy(x => x.ParameterAttribute.Order); var typeMembers = new List <MemberDescription>(); var typeValues = new List <MemberValue>(); foreach (var parameterAttributeValue in parameters) { typeMembers.Add(new MemberDescription { Type = parameterAttributeValue.ParameterAttribute.Type, Name = parameterAttributeValue.ParameterAttribute.Name }); typeValues.Add(new MemberValue { TypeName = parameterAttributeValue.ParameterAttribute.Type, Value = parameterAttributeValue.Value }); } var result = new TypedData { PrimaryType = primaryTypeName, Types = new Dictionary <string, MemberDescription[]> { [primaryTypeName] = typeMembers.ToArray(), ["EIP712Domain"] = ParseDomain(domain).Select(x => x.MemberDescription).ToArray() }, Message = typeValues.ToArray(), Domain = domain }; return(result); }