static void Main(string[] args) { var settings = GetCurrentSettings(); var log = new LogToConsole(); ContainerBuilder builder = new ContainerBuilder(); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); collection.AddSingleton <IBaseSettings>(settings.CurrentValue.EthereumCore); collection.AddSingleton <ISlackNotificationSettings>(settings.CurrentValue.SlackNotifications); collection.RegisterServices(); RegisterReposExt.RegisterAzureStorages(builder, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications), log); RegisterReposExt.RegisterAzureQueues(builder, settings.Nested(x => x.EthereumCore.Db.DataConnString), settings.Nested(x => x.SlackNotifications)); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, settings.Nested(x => x.EthereumCore.RabbitMq), settings.Nested(x => x.EthereumCore.Db.DataConnString), log); RegisterDependency.RegisterServices(builder); builder.Populate(collection); ServiceProvider = builder.Build(); ServiceProvider.ActivateRequestInterceptor(); var web3 = ServiceProvider.Resolve <Web3>(); try { var blockNumber = web3.Eth.Blocks.GetBlockNumber.SendRequestAsync().Result; Console.WriteLine($"RPC Works! {blockNumber.Value.ToString()}"); } catch (Exception e) { Console.WriteLine($"Rpc does not work at all! {e.Message}"); } Console.WriteLine($"Type 0 to exit"); Console.WriteLine($"Type 1 to SHOW pending Transactions"); Console.WriteLine($"Type 2 to REPEAT all operation without hash"); Console.WriteLine($"Type 3 to CHECK pending operations"); Console.WriteLine($"Type 4 to SCAN transfer contracts for issues"); Console.WriteLine($"Type 5 to REASSIGN contracts"); Console.WriteLine($"Type 6 to List all sucesful coin events"); Console.WriteLine($"Type 7 to RESUBMIT all succesful coin events(except cashin)"); Console.WriteLine($"Type 8 to RESUBMIT all cashin coin events"); Console.WriteLine($"Type 9 to REMOVE DUPLICATE user transfer wallet locks"); Console.WriteLine($"Type 10 to move from pending-poison to processing"); Console.WriteLine($"Type 11 to PUT EVERYTHING IN PENDING WITH zero dequeue count"); Console.WriteLine($"Type 20 to init starting point for lykkepay indexing"); var command = ""; do { command = Console.ReadLine(); switch (command) { case "1": ShowPendingTransactionsAmount(); break; case "2": OperationResubmit(); break; case "3": OperationCheck(); break; case "4": GetAllFailedAssignments(); break; case "5": StartReassignment(); break; case "6": ListUnPublishedCoinEvents(); break; case "7": ResubmittUnPublishedCoinEventsWithMatches(); break; case "8": ResubmittUnPublishedCoinEventsCashinOnly(); break; case "9": RemoveDuplicateUserTransferWallets(); break; case "10": MoveFromPoisonToProcessing(); break; case "11": MoveFromPendingAndPoisonToProcessing(); break; case "20": InitIndexStartForLykkePay(); break; default: break; } }while (command != "0"); Console.WriteLine("Exited"); }
public static void Main(string[] args) { if (args == null || !args.Any()) { throw new Exception("Specify parameters! url to EtherteumCore service"); } var exit = false; string settingsArg = args.First(); var settings = new SettingsServiceReloadingManager <AppSettings>(settingsArg); SaveSettings(settings); ContainerBuilder containerBuilder = new ContainerBuilder(); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); containerBuilder.RegisterInstance(settings); containerBuilder.RegisterInstance <IBaseSettings>(settings.CurrentValue.EthereumCore); containerBuilder.RegisterInstance <ISlackNotificationSettings>(settings.CurrentValue.SlackNotifications); containerBuilder.RegisterInstance(settings.Nested(x => x.EthereumCore)); containerBuilder.RegisterInstance(settings.CurrentValue); var consoleLogger = new LogToConsole(); collection.AddSingleton <ILog>(consoleLogger); //TODO: Uncomment and fix registrations RegisterReposExt.RegisterAzureQueues(containerBuilder, settings.Nested(x => x.EthereumCore.Db.DataConnString), settings.Nested(x => x.SlackNotifications)); RegisterReposExt.RegisterAzureStorages(containerBuilder, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications), consoleLogger); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, settings.Nested(x => x.EthereumCore.RabbitMq), settings.Nested(x => x.EthereumCore.Db.DataConnString), consoleLogger); RegisterDependency.RegisterServices(collection); RegisterDependency.RegisterServices(containerBuilder); //Lykke.Job.EthereumCore.Config.RegisterDependency.RegisterJobs(collection); //var web3 = ServiceProvider.GetService<Web3>(); //web3.Eth.GetBalance.SendRequestAsync(""); // web3.Eth.Transactions.SendTransaction.SendRequestAsync(new Nethereum.RPC.Eth.DTOs.TransactionInput() //{ // //}).Result; //var key = EthECKey.GenerateKey().GetPrivateKeyAsBytes(); //var stringKey = Encoding.Unicode.GetString(key); GetAllContractInJson(); containerBuilder.Populate(collection); ServiceProvider = containerBuilder.Build(); ServiceProvider.ActivateRequestInterceptor(); //var signApi = ServiceProvider.Resolve<ILykkeSigningAPI>(); //var signed = signApi.ApiEthereumSignPostWithHttpMessagesAsync(new EthereumTransactionSignRequest() //{ // FromProperty = "0x406561F72e25af10fD28b41200FA3D52badC5A21", // Transaction = "f86b8201618483215600830186a094db6ea754f2afb4257b9bea0828771b19504aeac380b844a9059cbb00000000000000000000000033c6b8907d65d5a53cc301c544abf99f2e783242000000000000000000000000000000000000000000000000000000000000000c808080" //}).Result; //var xa = 1; //var lykkeSigningAPI = ServiceProvider.Resolve<ILykkeSigningAPI>(); //var key1 = lykkeSigningAPI.ApiEthereumKeyGetAsync().Result; //var eventService = ServiceProvider.GetService<ITransactionEventsService>(); //eventService.IndexCashinEventsForAdapter("0x1c4ca817d1c61f9c47ce2bec9d7106393ff981ce", // "0x512867d36f1d6ee43f2056a7c41606133bce514fbc8e911c1834eeae80800ceb").Wait(); //#region EmissiveErc223 TOKEN //string tokenAddress = ""; //string depositAddress = ""; //Contract contract; //var web3 = ServiceProvider.Resolve<IWeb3>(); //{ // var abi = GetFileContent("Erc20DepositContract.abi"); // var bytecode = GetFileContent("Erc20DepositContract.bin"); // depositAddress = string.IsNullOrEmpty(depositAddress) ? // ServiceProvider.Resolve<IContractService>() // .CreateContract(abi, // bytecode, // 4000000) // .Result : depositAddress; //} //{ // //address issuer, // //string tokenName, // //uint8 divisibility, // //string tokenSymbol, // //string version // var abi = GetFileContent("EmissiveErc223Token.abi"); // var bytecode = GetFileContent("EmissiveErc223Token.bin"); // tokenAddress = string.IsNullOrEmpty(tokenAddress) ? // ServiceProvider.Resolve<IContractService>() // .CreateContract(abi, // bytecode, // 4000000, // settings.CurrentValue.EthereumCore.EthereumMainAccount, // "LykkeErc223Token", // 18, // "LTE223", // "1.0.0") // .Result : tokenAddress; // contract = web3.Eth.GetContract(abi, tokenAddress); //} //{ // //Transfer to the deposit contract // var erc20Service = ServiceProvider.Resolve<IErcInterfaceService>(); // var balanceOld = erc20Service.GetBalanceForExternalTokenAsync(depositAddress, tokenAddress).Result; // var transactionHash = erc20Service.Transfer(tokenAddress, settings.CurrentValue.EthereumCore.EthereumMainAccount, // depositAddress, System.Numerics.BigInteger.Parse("1000000000000000000")).Result; // WaitForTransactionCompleation(web3, transactionHash); // var balance = erc20Service.GetBalanceForExternalTokenAsync(depositAddress, tokenAddress).Result; // var isPossibleToWithdrawWithTokenFallback = erc20Service.CheckTokenFallback(depositAddress).Result; // var isPossibleToWithdrawToExternal = // erc20Service.CheckTokenFallback("0x856924997fa22efad8dc75e83acfa916490989a4").Result; //} //{ // //Transfer to the account managed by external private key // var toAddress = "0x856924997fa22efad8dc75e83acfa916490989a4"; // var erc20Service = ServiceProvider.Resolve<IErcInterfaceService>(); // var balanceOld = erc20Service.GetBalanceForExternalTokenAsync(toAddress, tokenAddress).Result; // var transactionHash = erc20Service.Transfer(tokenAddress, settings.CurrentValue.EthereumCore.EthereumMainAccount, // toAddress, System.Numerics.BigInteger.Parse("1000000000000000000")).Result; // WaitForTransactionCompleation(web3, transactionHash); // var balance = erc20Service.GetBalanceForExternalTokenAsync(toAddress, tokenAddress).Result; //} //{ // //Transfer to the contract without fallback function // string contractWithoutFallback = "0xd6ff42fa358403e0f9462c08e78c4baea1093945"; // var erc20Service = ServiceProvider.Resolve<IErcInterfaceService>(); // var balanceOld = erc20Service.GetBalanceForExternalTokenAsync(contractWithoutFallback, tokenAddress).Result; // var transactionHash = erc20Service.Transfer(tokenAddress, settings.CurrentValue.EthereumCore.EthereumMainAccount, // contractWithoutFallback, System.Numerics.BigInteger.Parse("1000000000000000000")).Result; // WaitForTransactionCompleation(web3, transactionHash); // var balance = erc20Service.GetBalanceForExternalTokenAsync(contractWithoutFallback, tokenAddress).Result; // var isPossibleToWithdrawWithoutTokenFallback = erc20Service.CheckTokenFallback(contractWithoutFallback).Result; //} //#endregion //#region DBE TOKEN //{ // //var abi = GetFileContent("Erc20DepositContract.abi"); // //var bytecode = GetFileContent("Erc20DepositContract.bin"); // //depositAddress = // // ServiceProvider.Resolve<IContractService>() // // .CreateContract(abi, bytecode, 4000000) // // .Result; //} //{ // var abi = GetFileContent("debtoken.abi"); // var bytecode = GetFileContent("debtoken.bin"); // //tokenAddress = // // ServiceProvider.Resolve<IContractService>() // // .CreateContract(abi, bytecode, 4000000) // // .Result; // contract = web3.Eth.GetContract(abi, tokenAddress); //} //{ // //var unfreezeFunc = contract.GetFunction("unfreeze"); // //var transactionHash = unfreezeFunc.SendTransactionAsync(settings.CurrentValue.EthereumCore.EthereumMainAccount, // // new HexBigInteger(BigInteger.Parse("200000")), new HexBigInteger(0)).Result; //} //{ // var erc20Service = ServiceProvider.Resolve<IErcInterfaceService>(); // var transactionHash = erc20Service.Transfer(tokenAddress, settings.CurrentValue.EthereumCore.EthereumMainAccount, // depositAddress, System.Numerics.BigInteger.Parse("1000000000000000000")).Result; //} //#endregion //#region StatusExamples ////var service = ServiceProvider.GetService<ICoinTransactionService>(); ////{ //// //fail //// var x = service.ProcessTransaction(new Services.Coins.Models.CoinTransactionMessage() //// { //// TransactionHash = "0xf86efe1b8de285b8255519ca7d0ac76088132e6c5306f88dfc27312c6d7127ea", //// }).Result; ////} ////{ //// //ok //// var x = service.ProcessTransaction(new Services.Coins.Models.CoinTransactionMessage() //// { //// TransactionHash = "0xa237230df97a0d6710241597a0186662928afa373c13b8d4eac86f36aa678985", //// }).Result; ////} ////{ //// //fail //// var x = service.ProcessTransaction(new Services.Coins.Models.CoinTransactionMessage() //// { //// TransactionHash = "0xb63ac4f94006cbbfe58a1d651e173c56dc74a45e4d1141ac57fc51a0d4202e95", //// }).Result; ////} ////{ //// //fail //// var x = service.ProcessTransaction(new Services.Coins.Models.CoinTransactionMessage() //// { //// TransactionHash = "0x1df50ee79d0af8b433f7f0be2a84cbb5dc3e29e5822e78b9c6a7ec33d027e286", //// }).Result; ////} ////{ //// //fail //// var x = service.ProcessTransaction(new Services.Coins.Models.CoinTransactionMessage() //// { //// TransactionHash = "0xa3d4c1da523273371fe45c928b9236b353976e7b9e6d2b31e659f7a4c781a764", //// }).Result; ////} //#endregion //0xf86efe1b8de285b8255519ca7d0ac76088132e6c5306f88dfc27312c6d7127ea 0x0 //0xa237230df97a0d6710241597a0186662928afa373c13b8d4eac86f36aa678985 0x1 //0xb63ac4f94006cbbfe58a1d651e173c56dc74a45e4d1141ac57fc51a0d4202e95 //var service = ServiceProvider.Resolve<IErcInterfaceService>(); //service.Transfer("0x5adbf411faf2595698d80b7f93d570dd16d7f4b2", settings.CurrentValue.EthereumCore.EthereumMainAccount, // "0xae4d8b0c887508750ddb6b32752a82431941e2e7", System.Numerics.BigInteger.Parse("10000000000000000000")).Wait(); //var paymentService = ServiceProvider.GetService<IPaymentService>(); // string result = paymentService.SendEthereum(settings.EthereumMainAccount, // "0xbb0a9c08030898cdaf1f28633f0d3c8556155482", new System.Numerics.BigInteger(5000000000000000)).Result; //var coinEv = ServiceProvider.GetService<ICoinEventService>(); //var ev1 = coinEv.GetCoinEvent("0xbfb8d6a561c1a088c347efb989e19cb02c1028b34a337e001b146fd1360dc714").Result; //var ev2 = coinEv.GetCoinEvent("0xa0876a676d695ab145fcf70ac0b2ae02e8b00351a5193352ffb37ad37dce6848").Result; //coinEv.InsertAsync(ev1).Wait(); //coinEv.InsertAsync(ev2).Wait(); //var paymentService = ServiceProvider.GetService<ICoinTransactionService>(); //paymentService.PutTransactionToQueue("0xbfb8d6a561c1a088c347efb989e19cb02c1028b34a337e001b146fd1360dc714").Wait(); //paymentService.PutTransactionToQueue("0xa0876a676d695ab145fcf70ac0b2ae02e8b00351a5193352ffb37ad37dce6848").Wait(); //var pendingOperationService = ServiceProvider.GetService<IPendingOperationService>(); //var op = pendingOperationService.GetOperationAsync("40017691-1656-4d71-a8a6-4187200dca73").Result; //pendingOperationService.CreateOperation(op).Wait(); //var op2 = pendingOperationService.GetOperationAsync("41e19fd5-2660-469b-9315-b768f701e742").Result; //pendingOperationService.CreateOperation(op2).Wait(); while (!exit) { Console.WriteLine("Choose number: "); //Console.WriteLine("1. Deploy main contract from local json file"); Console.WriteLine("2. Deploy main exchange contract"); Console.WriteLine("3. Deploy coin contract using local json file"); Console.WriteLine("4. Deploy transfer"); Console.WriteLine("5. Deploy BCAP Token"); Console.WriteLine("6. Deploy main exchange contract with multiple owners!(Make sure that jobs are stopped)"); Console.WriteLine("7. Add more owners to Main Exchange Contract with multiple owners!(Add addresses with some eth on it)"); Console.WriteLine("9. Deploy And Migrate To NM!(Make sure that jobs are stopped)"); Console.WriteLine("10. Send transaction to MainExchange!(Make sure that jobs are stopped)"); Console.WriteLine("0. Exit"); var input = Console.ReadLine(); switch (input) { case "2": DeployMainExchangeContract().Wait(); break; case "3": //DeployCoinContract().Wait(); break; case "4": DeployTokenTransferContract().Wait(); break; case "0": exit = true; break; case "5": DeployBCAP().Wait(); break; case "6": DeployAndMigrateMainExchangeContractWithMultipleOwners().Wait(); break; case "7": AddOwners().Wait(); break; //case "8": // MigrateAdapter(,).Wait(); // break; case "9": DeployAndMigrateToNM().Wait(); break; case "10": SendTransactionFromMainExchange().Wait(); break; default: Console.WriteLine("Bad input!"); continue; } Console.WriteLine("Done!"); } }