Beispiel #1
0
        protected void OnOracleGetPriceCommand(string[] args)
        {
            var apiKey                = _cli.CryptoCompareAPIKey;
            var pricerCGEnabled       = _cli.Settings.Oracle.PricerCoinGeckoEnabled;
            var pricerSupportedTokens = _cli.Settings.Oracle.PricerSupportedTokens.ToArray();


            Console.WriteLine($"Supported tokens:");
            Console.WriteLine($"---------------------------");

            foreach (var token in pricerSupportedTokens)
            {
                Console.WriteLine($"{token.ticker}: {token.cryptocompareId}: {token.coingeckoId}");
            }
            Console.WriteLine($"---------------------------");

            if (pricerCGEnabled)
            {
                var cgprice = CoinGeckoUtils.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, pricerSupportedTokens, Spook.Logger);
                Console.WriteLine($"Oracle Coingecko Price for token {args[0]} is: {cgprice}");
            }
            var price = CryptoCompareUtils.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, apiKey, pricerSupportedTokens, Spook.Logger);

            Console.WriteLine($"Oracle CryptoCompare Price for token {args[0]} is: {price}");

            var gprice = Pricer.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, apiKey, pricerCGEnabled, pricerSupportedTokens, Spook.Logger);

            Console.WriteLine($"Oracle Global Price for token {args[0]} is: {gprice}");
        }
Beispiel #2
0
        private byte[] ReadFromOracle(/*Hash hash, */ string url)
        {
            if (url.StartsWith(interopTag))
            {
                url = url.Substring(interopTag.Length);
                var args = url.Split('/');

                var chainName = args[0];
                args = args.Skip(1).ToArray();

                switch (chainName)
                {
                case "neo":
                    return(OracleUtils.ReadNEO(args));

                default:
                    throw new OracleException("invalid oracle chain: " + chainName);
                }
            }
            else
            if (url.StartsWith(priceTag))
            {
                url = url.Substring(interopTag.Length);
                var symbols = url.Split('/');
                if (symbols.Length != 2)
                {
                    throw new OracleException("invalid oracle price request");
                }

                var baseSymbol  = symbols[0];
                var quoteSymbol = symbols[1];

                if (cryptoCompareAPIKey != null)
                {
                    var price = CryptoCompareUtils.GetCoinRate(baseSymbol, quoteSymbol, cryptoCompareAPIKey);
                    var val   = UnitConversion.ToBigInteger(price, 8);
                    return(val.ToSignedByteArray());
                }

                throw new OracleException("No support for prices");
            }
            else
            {
                throw new OracleException("unknown oracle protocol");
            }
        }