Example #1
0
        internal Order CreateOrder(OrderType orderType, BigInteger expires, BigInteger price, BigInteger amount)
        {
            var amountBigNum     = orderType == OrderType.Buy ? amount / price : amount;
            var amountBaseBigNum = amount * price;
            var contractAddr     = Config.AddressEtherDelta;
            var tokenGet         = orderType == OrderType.Buy ? Config.Token : ZeroToken;
            var tokenGive        = orderType == OrderType.Sell ? Config.Token : ZeroToken;
            var amountGet        = orderType == OrderType.Buy ? amountBigNum : amountBaseBigNum;
            var amountGive       = orderType == OrderType.Sell ? amountBigNum : amountBaseBigNum;
            var orderNonce       = new Random().Next();

            var plainData = new object[] {
                Config.AddressEtherDelta,
                tokenGive,
                amountGet,
                tokenGive,
                amountGive,
                expires,
                orderNonce
            };

            var prms = new[] {
                new Parameter("address", 1),
                new Parameter("address", 1),
                new Parameter("uint256", 1),
                new Parameter("address", 1),
                new Parameter("uint256", 1),
                new Parameter("uint256", 1),
                new Parameter("uint256", 1)
            };

            var pe   = new ParametersEncoder();
            var data = pe.EncodeParameters(prms, plainData);

            var ms        = new MessageSigner();
            var signature = ms.HashAndSign(data, Config.PrivateKey);

            var ethEcdsa = MessageSigner.ExtractEcdsaSignature(signature);

            var order = new Order
            {
                AmountGet    = new HexBigInteger(amountGet),
                AmountGive   = new HexBigInteger(amountGive),
                TokenGet     = tokenGet,
                TokenGive    = tokenGive,
                ContractAddr = contractAddr,
                Expires      = expires,
                Nonce        = orderNonce,
                User         = Config.User,
                V            = ethEcdsa.V,
                R            = ethEcdsa.R.ToHex(true),
                S            = ethEcdsa.S.ToHex(true)
            };

            return(order);
        }
Example #2
0
        public byte[] Encode(object value)
        {
            if (!(value == null || value is object[]))
            {
                throw new Exception("Expected object array of component values to encode");
            }
            var input = value as object[];

            return(parametersEncoder.EncodeParameters(Components, input));
        }
Example #3
0
        public byte[] Encode(object value)
        {
            if (!(value == null || value is object[]))
            {
                return(parametersEncoder.EncodeParametersFromTypeAttributes(value.GetType(), value));
            }

            var input = value as object[];

            return(parametersEncoder.EncodeParameters(Components, input));
        }
Example #4
0
        private static byte[] Encode(IEnumerable <AbiInputParameter> parameters)
        {
            var netherParameters = new List <Parameter>();
            var values           = new List <dynamic>();

            foreach (var parameter in parameters)
            {
                netherParameters.Add(new Parameter(parameter.Definition.AbiType, parameter.Definition.Name));
                values.Add(parameter.Value);
            }

            var encoder = new ParametersEncoder();

            return(encoder.EncodeParameters(netherParameters.ToArray(), values.ToArray()));
        }
Example #5
0
        private static byte[] Encode(AbiInputParameter[] parameters)
        {
            List <Parameter> netherParames = new List <Parameter>();
            List <dynamic>   values        = new List <dynamic>();

            foreach (AbiInputParameter parame in parameters)
            {
                netherParames.Add(new Parameter(parame.Definition.ABIType, parame.Definition.Name));
                values.Add(parame.Value);
            }

            try
            {
                ParametersEncoder encoder = new ParametersEncoder();
                return(encoder.EncodeParameters(netherParames.ToArray(), values.ToArray()));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }