static void Main(string[] args) { // NOTE - You can also create an API instance for a specific private net var api = NeoRPC.ForTestNet(); // NOTE - Private keys should not be hardcoded in the code, this is just for demonstration purposes! var privateKey = "a9e2b5436cab6ff74be2d5c91b8a67053494ab5b454ac2851f872fb0fd30ba5e"; Console.WriteLine("*Loading NEO address..."); var keys = new KeyPair(privateKey.HexToBytes()); Console.WriteLine("Got :" + keys.address); // it is possible to optionally obtain also token balances with this method Console.WriteLine("*Syncing balances..."); var balances = api.GetBalancesOf(keys.address, false); foreach (var entry in balances) { Console.WriteLine(entry.Value + " " + entry.Key); } // TestInvokeScript let's us call a smart contract method and get back a result // NEP5 https://github.com/neo-project/proposals/issues/3 api = NeoRPC.ForMainNet(); var redPulse = api.GetToken("RPX"); // you could also create a NEP5 from a contract script hash //var redPulse_contractHash = "ecc6b20d3ccac1ee9ef109af5a7cdb85706b1df9"; //var redPulse = new NEP5(api, redPulse_contractHash); Console.WriteLine("*Querying Symbol from RedPulse contract..."); //var response = api.TestInvokeScript(redPulse_contractHash, "symbol", new object[] { "" }); //var symbol = System.Text.Encoding.ASCII.GetString((byte[])response.result); var symbol = redPulse.Symbol; Console.WriteLine(symbol); // should print "RPX" // here we get the RedPulse token balance from an address Console.WriteLine("*Querying BalanceOf from RedPulse contract..."); //var balance = api.GetTokenBalance("AVQ6jAQ3Prd32BXU5r2Vb3QL1gYzTpFhaf", "RPX"); var balance = redPulse.BalanceOf("AVQ6jAQ3Prd32BXU5r2Vb3QL1gYzTpFhaf"); Console.WriteLine(balance); Console.WriteLine("Press any key to quit..."); Console.ReadKey(); }
private static NeoRPC BaseRpcInstance() { if (Configuration["Neo:Network"] == "Main") { return(NeoRPC.ForMainNet()); } if (Configuration["Neo:Network"] == "Test") { return(NeoRPC.ForTestNet()); } if (Configuration["Neo:Network"] == "AllCode") { return(new NeoFluxNeoRPC(Configuration["Neo:DefaultScanUrl"])); } return(null); }
/// <summary> /// Gets the Neo RPC for the specified network type. Defaults to Testnet /// </summary> /// <param name="type">NetworkType - network to use</param> /// <returns>NeoRPC - the RPC for the requested network</returns> public static NeoRPC GetNeoRPCForType(NetworkType type) { switch (type) { case NetworkType.Mainnet: return(NeoRPC.ForMainNet()); case NetworkType.Testnet: return(NeoRPC.ForTestNet()); case NetworkType.CozTestnet: throw new Exception("COZ Testnet not implemented yet"); case NetworkType.Privnet: return(NeoRPC.ForPrivateNet()); } return(NeoRPC.ForTestNet()); }
static void Main(string[] args) { if (args.Length < 5) { Console.WriteLine("neo-sender <Net> <PrivateKey> <DestAddress> <Symbol> <Amount>"); Console.WriteLine("Net Can be Main, Test or custom URL"); Console.WriteLine("PrivateKey Can be a full hex private key or a WIF private key"); Console.WriteLine("DestAddress Must be a valid Neo address"); Console.WriteLine("Symbol Must be Neo, Gas or any support token (eg: RPX, DBC)"); return; } var keyStr = args[1]; var outputAddress = args[2]; var symbol = args[3]; //"GAS" var amount = decimal.Parse(args[4]); var fromKey = keyStr.Length == 52 ? KeyPair.FromWIF(keyStr) : new KeyPair(keyStr.HexToBytes()); Console.WriteLine($"Sending {amount} {symbol} from {fromKey.address} to {outputAddress}"); var net = args[0].ToLowerInvariant(); NeoAPI api; switch (net) { case "main": api = NeoRPC.ForMainNet(); break; case "test": api = NeoRPC.ForTestNet(); break; default: api = new NeoRPC(net); break; } bool result = false; try { if (api.IsToken(symbol)) { var token = api.GetToken(symbol); result = token.Transfer(fromKey, outputAddress, amount); } else if (api.IsAsset(symbol)) { result = api.SendAsset(fromKey, outputAddress, symbol, amount); } else { Console.WriteLine("Unknown symbol."); Environment.Exit(-1); } } catch { Console.WriteLine("Error executing transaction."); Environment.Exit(-1); } Console.WriteLine("Transaction result: " + result); }