public (IContainer resolver, ILog logToConsole) GetResolver(IReloadingManager <AppSettings> appSettings) { ContainerBuilder containerBuilder = new ContainerBuilder(); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); containerBuilder.RegisterInstance(appSettings); containerBuilder.RegisterInstance <IBaseSettings>(appSettings.CurrentValue.EthereumCore); containerBuilder.RegisterInstance <ISlackNotificationSettings>(appSettings.CurrentValue.SlackNotifications); containerBuilder.RegisterInstance(appSettings.Nested(x => x.EthereumCore)); containerBuilder.RegisterInstance(appSettings.CurrentValue); var consoleLogger = new LogToConsole(); collection.AddSingleton <ILog>(consoleLogger); RegisterReposExt.RegisterAzureQueues(containerBuilder, appSettings.Nested(x => x.EthereumCore.Db.DataConnString), appSettings.Nested(x => x.SlackNotifications)); RegisterReposExt.RegisterAzureStorages(containerBuilder, appSettings.Nested(x => x.EthereumCore), appSettings.Nested(x => x.SlackNotifications), consoleLogger); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, appSettings.Nested(x => x.EthereumCore.RabbitMq), appSettings.Nested(x => x.EthereumCore.Db.DataConnString), consoleLogger); RegisterDependency.RegisterServices(collection); RegisterDependency.RegisterServices(containerBuilder); containerBuilder.Populate(collection); containerBuilder.RegisterInstance <ILog>(consoleLogger); var resolver = containerBuilder.Build(); resolver.ActivateRequestInterceptor(); return(resolver, consoleLogger); }
static async Task <int> DeployTokenAsync( string settingsUrl, string tokenCfgPath) { #region RegisterDependencies var appSettings = GetCurrentSettingsFromUrl(settingsUrl); ContainerBuilder containerBuilder = new ContainerBuilder(); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); containerBuilder.RegisterInstance(appSettings); containerBuilder.RegisterInstance <IBaseSettings>(appSettings.CurrentValue.EthereumCore); containerBuilder.RegisterInstance <ISlackNotificationSettings>(appSettings.CurrentValue.SlackNotifications); containerBuilder.RegisterInstance(appSettings.Nested(x => x.EthereumCore)); containerBuilder.RegisterInstance(appSettings.CurrentValue); var consoleLogger = new LogToConsole(); collection.AddSingleton <ILog>(consoleLogger); RegisterReposExt.RegisterAzureQueues(containerBuilder, appSettings.Nested(x => x.EthereumCore.Db.DataConnString), appSettings.Nested(x => x.SlackNotifications)); RegisterReposExt.RegisterAzureStorages(containerBuilder, appSettings.Nested(x => x.EthereumCore), appSettings.Nested(x => x.SlackNotifications), consoleLogger); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, appSettings.Nested(x => x.EthereumCore.RabbitMq), appSettings.Nested(x => x.EthereumCore.Db.DataConnString), consoleLogger); RegisterDependency.RegisterServices(collection); RegisterDependency.RegisterServices(containerBuilder); containerBuilder.Populate(collection); containerBuilder.RegisterInstance <ILog>(consoleLogger); var resolver = containerBuilder.Build(); resolver.ActivateRequestInterceptor(); #endregion var web3 = resolver.Resolve <IWeb3>(); var contractService = resolver.Resolve <IContractService>(); var ercInterfaceService = resolver.Resolve <IErcInterfaceService>(); var exchangeContractService = resolver.Resolve <IExchangeContractService>(); var text = File.ReadAllText(tokenCfgPath); var tokenCfg = Newtonsoft.Json.JsonConvert.DeserializeObject <TokenCfg>(text); var addressUtil = new AddressUtil(); if (!exchangeContractService.IsValidAddress(tokenCfg.HotwalletAddress)) { await consoleLogger.WriteInfoAsync(nameof(Main), tokenCfg.ToJson(), $"HotwalletAddress is not a valid address."); return(0); } await consoleLogger.WriteInfoAsync(nameof(Main), "", $"Started Deployment"); foreach (var tokenDescr in tokenCfg.Tokens) { await consoleLogger.WriteInfoAsync(nameof(Main), "", $"Processing {tokenDescr.TokenName}"); if (!BigInteger.TryParse(tokenDescr.InitialSupply, out var initialSupply) || initialSupply == 0) { await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), $"Can't parse initial supply value. It is not a BigInt or zero"); continue; } if (!exchangeContractService.IsValidAddress(tokenDescr.IssuerAddress)) { await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), $"Issuer address is not a valid address."); continue; } var(abi, bytecode) = GetContractDeploymentForTokenType(tokenDescr.TokenType); string address = tokenDescr.TokenType == TokenType.Emissive ? await contractService.CreateContract(abi, bytecode, 4000000, tokenDescr.IssuerAddress, tokenDescr.TokenName, tokenDescr.Divisibility, tokenDescr.TokenSymbol, tokenDescr.Version) : await contractService.CreateContract(abi, bytecode, 4000000, tokenDescr.IssuerAddress, tokenDescr.TokenName, tokenDescr.Divisibility, tokenDescr.TokenSymbol, tokenDescr.Version, initialSupply); await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), $"Deployed at address {address}"); if (tokenDescr.TokenType == TokenType.Emissive) { await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), $"Starting Emission to {tokenCfg.HotwalletAddress}"); var transactionHash = await ercInterfaceService.Transfer(address, addressUtil.ConvertToChecksumAddress(tokenDescr.IssuerAddress), //Should be in SigningService tokenCfg.HotwalletAddress, initialSupply); await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), $"Emission txHash is {transactionHash}. " + $"Waiting for compleation"); WaitForTransactionCompleation(web3, transactionHash); await consoleLogger.WriteInfoAsync(nameof(Main), tokenDescr.ToJson(), "Completed."); } } await consoleLogger.WriteInfoAsync(nameof(Main), "", "Completed processing all tokens."); return(0); }
static void Main(string[] args) { var configurationBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json").AddEnvironmentVariables(); var configuration = configurationBuilder.Build(); var settings = GetCurrentSettings(); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); collection.AddSingleton <IBaseSettings>(settings.CurrentValue.EthereumCore); collection.AddSingleton <ISlackNotificationSettings>(settings.CurrentValue.SlackNotifications); //RegisterReposExt.RegisterAzureLogs(collection, settings.EthereumCore, ""); RegisterReposExt.RegisterAzureQueues(collection, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications)); RegisterReposExt.RegisterAzureStorages(collection, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications)); ServiceProvider = collection.BuildServiceProvider(); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, settings.Nested(x => x.EthereumCore), ServiceProvider.GetService <ILog>()); RegisterDependency.RegisterServices(collection); ServiceProvider = collection.BuildServiceProvider(); var web3 = ServiceProvider.GetService <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"); 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; default: break; } }while (command != "0"); Console.WriteLine("Exited"); }
public static void Main(string[] args) { var exit = false; var configurationBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json").AddEnvironmentVariables(); var configuration = configurationBuilder.Build(); var settings = GetCurrentSettingsFromUrl(); SaveSettings(settings); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); collection.AddSingleton <IBaseSettings>(settings.EthereumCore); collection.AddSingleton <ISlackNotificationSettings>(settings.SlackNotifications); RegisterReposExt.RegisterAzureLogs(collection, settings.EthereumCore, ""); RegisterReposExt.RegisterAzureQueues(collection, settings.EthereumCore, settings.SlackNotifications); RegisterReposExt.RegisterAzureStorages(collection, settings.EthereumCore, settings.SlackNotifications); ServiceProvider = collection.BuildServiceProvider(); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, settings.EthereumCore, ServiceProvider.GetService <ILog>()); RegisterDependency.RegisterServices(collection); EthereumJobs.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(); ServiceProvider = collection.BuildServiceProvider(); ServiceProvider.ActivateRequestInterceptor(); //var lykkeSigningAPI = ServiceProvider.GetService<ILykkeSigningAPI>(); //lykkeSigningAPI.ApiEthereumAddkeyPost(new AddKeyRequest() //{ // Key = "", //}); var service = ServiceProvider.GetService <IErcInterfaceService>(); service.Transfer("0x5adbf411faf2595698d80b7f93d570dd16d7f4b2", settings.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!"); } }
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!"); } }
public static void Main(string[] args) { var exit = false; var configurationBuilder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json").AddEnvironmentVariables(); var configuration = configurationBuilder.Build(); var settings = GetCurrentSettingsFromUrl(); SaveSettings(settings); IServiceCollection collection = new Microsoft.Extensions.DependencyInjection.ServiceCollection(); collection.AddSingleton(settings); collection.AddSingleton <IBaseSettings>(settings.CurrentValue.EthereumCore); collection.AddSingleton <ISlackNotificationSettings>(settings.CurrentValue.SlackNotifications); collection.AddSingleton(settings.Nested(x => x.EthereumCore)); collection.AddSingleton(settings.CurrentValue); var consoleLogger = new LogToConsole(); collection.AddSingleton <ILog>(consoleLogger); RegisterReposExt.RegisterAzureQueues(collection, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications)); RegisterReposExt.RegisterAzureStorages(collection, settings.Nested(x => x.EthereumCore), settings.Nested(x => x.SlackNotifications)); ServiceProvider = collection.BuildServiceProvider(); RegisterRabbitQueueEx.RegisterRabbitQueue(collection, settings.Nested(x => x.EthereumCore), ServiceProvider.GetService <ILog>()); RegisterDependency.RegisterServices(collection); 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(); ServiceProvider = collection.BuildServiceProvider(); ServiceProvider.ActivateRequestInterceptor(); //var lykkeSigningAPI = ServiceProvider.GetService<ILykkeSigningAPI>(); //lykkeSigningAPI.ApiEthereumAddkeyPost(new AddKeyRequest() //{ // Key = "", //}); //var eventService = ServiceProvider.GetService<ITransactionEventsService>(); //eventService.IndexCashinEventsForAdapter("0x1c4ca817d1c61f9c47ce2bec9d7106393ff981ce", // "0x512867d36f1d6ee43f2056a7c41606133bce514fbc8e911c1834eeae80800ceb").Wait(); #region DBE TOKEN //string tokenAddress; //string depositAddress; //Contract contract; //var web3 = ServiceProvider.GetService<IWeb3>(); //{ // var abi = GetFileContent("Erc20DepositContract.abi"); // var bytecode = GetFileContent("Erc20DepositContract.bin"); // depositAddress = // ServiceProvider.GetService<IContractService>() // .CreateContract(abi, bytecode, 4000000) // .Result; //} //{ // var abi = GetFileContent("debtoken.abi"); // var bytecode = GetFileContent("debtoken.bin"); // tokenAddress = // ServiceProvider.GetService<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.GetService<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.GetService <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!"); } }