public async void TestChinese() { var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var account = AccountFactory.GetAccount(); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, account.Address, new HexBigInteger(4000000))); var coinService = new CoinService(web3, contractAddress); var input = new RaiseEventMetadataInput { Creator = account.Address, Id = 101, Description = @"中国,China", Metadata = @"中国,China" }; var txn = await coinService.RaiseEventMetadataAsync(account.Address, input, new HexBigInteger(4000000)); var receipt = await pollingService.PollForReceiptAsync(txn); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent.GetAllChanges <MetadataEventEventDTO>(metadataEvent.CreateFilterInput()); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), account.Address.ToLower()); Assert.Equal(101, result.Id); Assert.Equal(@"中国,China", result.Metadata); Assert.Equal(@"中国,China", result.Description); }
/// <summary> /// Function returns all Accounts stored in database /// </summary> /// <returns>List of IAccount object created based on specified type</returns> public List <IAccount> GetAccounts() { try { ////using var context = new DbEconomyContext(); var accounts = new List <IAccount>(); foreach (var a in context.Accounts.Where(a => !a.Deleted)) { var keys = context.Keys .Where(k => !k.Deleted) .Where(k => k.RelatedItemId == a.Id) .ToList(); var bookmarks = context.Bookmarks .Where(b => !b.Deleted) .Where(b => b.RelatedItemId == a.Id) .ToList(); var acc = AccountFactory.GetAccount(new Guid(a.Id), (AccountTypes)a.Type, Guid.Empty, new Guid(a.WalletId), string.Empty, string.Empty, 0); // load keys and key if exist if (keys != null) { // this will load main account key for signing transactions var key = keys.FirstOrDefault(k => k.Id == a.AccountKeyId); if (key != null) { acc.AccountKey = key.Fill(new EncryptionKey("")); } // fill other account keys - messages, etc. foreach (var k in keys) { acc.AccountKeys.Add(k.Fill(new EncryptionKey(""))); } } // load bookmarks if (bookmarks != null) { // fill account bookmarks foreach (var b in bookmarks) { acc.Bookmarks.Add(b.Fill(BookmarkFactory.GetBookmark((BookmarkTypes)b.Type, new Guid(b.Id), b.Name, b.Address))); } } accounts.Add(a.Fill(acc)); } return(accounts); } catch (Exception ex) { log.Error("Cannot get accounts list from Db", ex); return(null); } }
public async void Test() { var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var account = AccountFactory.GetAccount(); var pollingService = new TransactionReceiptPollingService(web3.TransactionManager); var contractAddress = await pollingService.DeployContractAndGetAddressAsync(() => CoinService.DeployContractAsync(web3, account.Address, new HexBigInteger(4000000))); var coinService = new CoinService(web3, contractAddress); var txn = await coinService.MintAsync(account.Address, account.Address, 100, new HexBigInteger(4000000)); var receipt = await pollingService.PollForReceiptAsync(txn); var eventSent = coinService.GetEventSent(); var sent = await eventSent.GetAllChanges <SentEventDTO>(eventSent.CreateFilterInput()); txn = await coinService.RaiseEventMetadataAsync(account.Address, account.Address, 100, "Description", "The metadata created here blah blah blah", new HexBigInteger(4000000)); receipt = await pollingService.PollForReceiptAsync(txn); var metadataEvent = coinService.GetEventMetadataEvent(); var metadata = await metadataEvent.GetAllChanges <MetadataEventEventDTO>( metadataEvent.CreateFilterInput(new BlockParameter(receipt.BlockNumber), null)); var result = metadata[0].Event; Assert.Equal(result.Creator.ToLower(), account.Address.ToLower()); Assert.Equal(100, result.Id); Assert.Equal("The metadata created here blah blah blah", result.Metadata); Assert.Equal("Description", result.Description); }
public async void ShouldDoFullValidation() { var owner = new Nethereum.Web3.Accounts.Account("0xb1939d6c8c73d6aa5ad97873c2f99a2dfc2b4c356acfd5338caff20392d7960d"); var signer = new Nethereum.Web3.Accounts.Account("0xa83369462189d7cc3d2aed78614d0df89f4d9651770fef9fc64b05acf7464a7f"); var guardian = new Nethereum.Web3.Accounts.Account("0xa0f2dd3adc8b79603f92736ac50843f1c5344514505b042369efdab105e9442b"); var immunityCertificate = new ImmunityCertificate(); immunityCertificate.OwnerAddress = owner.Address; immunityCertificate.SignerAddress = signer.Address; immunityCertificate.TestKitId = "TestKit1"; immunityCertificate.PhotoId = "QmbtqAxAnEqumx9k8wx8yxyANpC5vVwvQsdSWUQof9NP2o".DecodeBase58(); immunityCertificate.TestCentreId = "100"; immunityCertificate.Guardians = new System.Collections.Generic.List <string> { guardian.Address }; immunityCertificate.SetExpiryDate(DateTime.Now.AddDays(1000)); var signature = new EthereumMessageSigner().Sign(immunityCertificate.GetHashCertificate(), new EthECKey(signer.PrivateKey)); var signedCertificate = new SignedImmunityCertificate(immunityCertificate, signature); var web3 = _ethereumClientIntegrationFixture.GetWeb3(); //admin deployer var account = AccountFactory.GetAccount(); //simple deployment //var web3 = new Nethereum.Web3.Web3(new Nethereum.Web3.Accounts.Account("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"), "https://ropsten.infura.io/v3/7238211010344719ad14a89db874158c"); var tokenService = await Covid19CertificationService.DeployContractAndGetServiceAsync(web3, new Covid19CertificationDeployment()); var address = tokenService.ContractHandler.ContractAddress; //Add Test Centre var receiptAddTestCentre = await tokenService.UpsertTestCentreRequestAndWaitForReceiptAsync(new TestCentre() { TestCentreId = "100", Invalid = false }); //Add Test Centre Owner var receiptAddTestCentreOwner = await tokenService.UpsertTestCentreOwnerRequestAndWaitForReceiptAsync("100".ToUTF8Bytes(), account.Address, true); //Add Test Centre Certificate Signer var receiptAddTestCentreSigner = await tokenService.UpsertTestCentreCertSignerRequestAndWaitForReceiptAsync(new TestCentreCertSigner() { TestCentreId = "100", SignerAddress = signer.Address, Invalid = false, ExpiryDate = 0 }); var challenge = "testtest"; var challengeSigner = new EthereumMessageSigner(); var signatureOwner = challengeSigner.EncodeUTF8AndSign(challenge, new EthECKey(owner.PrivateKey)); var certificateText = signedCertificate.GenerateFullCertificate(); Assert.True(await tokenService.FullVerificationCertificateChallengeWithSignatureQueryAsync(signedCertificate, challenge, signatureOwner.HexToByteArray(), DateTimeOffset.Now.ToUnixTimeSeconds())); var signatureGuardian = challengeSigner.EncodeUTF8AndSign(challenge, new EthECKey(guardian.PrivateKey)); Assert.True(await tokenService.FullVerificationCertificateChallengeWithSignatureQueryAsync(signedCertificate, challenge, signatureGuardian.HexToByteArray(), DateTimeOffset.Now.ToUnixTimeSeconds())); }
public void CanCreateCreditAccount() { IAccountConfigOptions accountConfigOptions = new CreditAccountConfigOptions { Id = "Test Credit Id", Name = "Test Credit Account" }; var creditAccount = AccountFactory.GetAccount(accountConfigOptions); Assert.NotNull(creditAccount); Assert.Equal("Test Credit Id", creditAccount.Id); }
public async Task DeployAndCallContract_WithEvents() { var abi = @"[{'constant':false,'inputs':[{'name':'val','type':'int256'}],'name':'multiply','outputs':[{'name':'','type':'int256'}],'payable':false,'stateMutability':'nonpayable','type':'function'},{'inputs':[{'name':'multiplier','type':'int256'}],'payable':false,'stateMutability':'nonpayable','type':'constructor'},{'anonymous':false,'inputs':[{'indexed':false,'name':'from','type':'address'},{'indexed':false,'name':'val','type':'int256'},{'indexed':false,'name':'result','type':'int256'}],'name':'Multiplied','type':'event'}]"; var smartContractByteCode = "6060604052341561000f57600080fd5b604051602080610149833981016040528080516000555050610113806100366000396000f300606060405260043610603e5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631df4f14481146043575b600080fd5b3415604d57600080fd5b60566004356068565b60405190815260200160405180910390f35b6000805482027fd01bc414178a5d1578a8b9611adebfeda577e53e89287df879d5ab2c29dfa56a338483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a1929150505600a165627a7a723058201bd2fbd3fb58686ed61df3e636dc4cc7c95b864aa1654bc02b0136e6eca9e9ef0029"; var account = AccountFactory.GetAccount(); var web3 = _ethereumClientIntegrationFixture.GetWeb3(); var multiplier = 2; var receipt = await web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync( abi, smartContractByteCode, account.Address, new HexBigInteger(900000), null, multiplier); var contractAddress = receipt.ContractAddress; var contract = web3.Eth.GetContract(abi, contractAddress); var multiplyFunction = contract.GetFunction("multiply"); var multipliedEvent = contract.GetEvent("Multiplied"); var filterForAll = await multipliedEvent.CreateFilterAsync(); var estimatedGas = await multiplyFunction.EstimateGasAsync(7); var receipt1 = await multiplyFunction.SendTransactionAndWaitForReceiptAsync(account.Address, new HexBigInteger(estimatedGas.Value), null, null, 5); var receipt2 = await multiplyFunction.SendTransactionAndWaitForReceiptAsync(account.Address, new HexBigInteger(estimatedGas.Value), null, null, 7); Assert.Equal(1, receipt1.Status.Value); Assert.Equal(1, receipt2.Status.Value); Assert.False(receipt1.HasErrors()); Assert.False(receipt2.HasErrors()); var logsForAll = await multipliedEvent.GetFilterChanges <MultipliedEvent>(filterForAll); Assert.Equal(2, logsForAll.Count()); }
/// <summary> /// Function returns Account stored in database based on id /// </summary> /// <returns>IAccount object created based on specified type</returns> public IAccount GetAccount(Guid id) { try { //using var context = new DbEconomyContext(); var a = context.Accounts .Where(a => !a.Deleted) .Where(a => a.Id == id.ToString()) .FirstOrDefault(); return(a.Fill(AccountFactory.GetAccount(new Guid(a.Id), (AccountTypes)a.Type, Guid.Empty, new Guid(a.WalletId), string.Empty, string.Empty, 0))); } catch (Exception ex) { log.Error("Cannot get account from Db", ex); return(null); } }
/// <summary> /// Загрузка данных по всем кредитам /// </summary> private static void LoadCredit() { try { string sql = "SELECT * FROM Credits"; int itemcount = 0; Debug.WriteLine("Поток Крдиты"); lock (o) { ConnectionClient.ConOpen(); using (SqlCommand commmand = new SqlCommand(sql, ConnectionClient.connection)) { SqlDataReader reader1 = commmand.ExecuteReader(); itemcount = reader1.Cast <object>().Count(); reader1.Close(); int count = 0; SqlDataReader reader = commmand.ExecuteReader(); while (reader.Read()) { Credits credits = new Credits((int)reader["Id"], (long)reader["AccountNumber"], (decimal)reader["Cash"], (decimal)reader["RepayALoan"], (decimal)reader["AmountIssue"], (int)reader["ClientId"], (int)reader["Rate"], (decimal)reader["MonthlyPayment"], (bool)reader["State"], (int)reader["MonthsPeriod"], (DateTime)reader["OpenDate"], (DateTime)reader["NextDate"], (int)reader["TypeId"]); // Repository.GetCredits.Add(credits); accounts.Add(AccountFactory.GetAccount(credits)); count++; countAccount++; ProgressBar.GetValue("Загрузка счетов", itemcount, count); } } ConnectionClient.ConClose(); } } catch (SqlException e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } catch (Exception e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } finally { ConnectionClient.ConClose(); } }
/// <summary> /// Загрузка данных по всем вкладам /// </summary> private static void LoadDeposit() { try { string sql = "SELECT * FROM Deposit"; int itemcount = 0; lock (o) { ConnectionClient.ConOpen(); using (SqlCommand commmand = new SqlCommand(sql, ConnectionClient.connection)) { SqlDataReader reader1 = commmand.ExecuteReader(); itemcount = reader1.Cast <object>().Count(); reader1.Close(); int count = 0; SqlDataReader reader = commmand.ExecuteReader(); while (reader.Read()) { Deposit deposit = new Deposit((int)reader["Id"], (long)reader["AccountNumber"], (decimal)reader["Cash"], (decimal)reader["DepositAmount"], (int)reader["ClientId"], (bool)reader["State"], (int)reader["MonthsPeriod"], (int)reader["Rate"], (DateTime)reader["OpenDate"], (DateTime)reader["DateClose"], (bool)reader["Capitalization"], (int)reader["TypeId"], (decimal)reader["MoneyEarned"]); // Repository.GetDeposits.Add(deposit); accounts.Add(AccountFactory.GetAccount(deposit)); count++; countAccount++; ProgressBar.GetValue("Загрузка вкладов", itemcount, count); } } ConnectionClient.ConClose(); } } catch (SqlException e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } catch (Exception e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } finally { ConnectionClient.ConClose(); } }
/// <summary> /// Загрузка данных по обычным счетам /// </summary> private static void LoadPersonal() { try { string sql = "SELECT * FROM Personal"; int itemcount = 0; lock (o) { ConnectionClient.ConOpen(); using (SqlCommand commmand = new SqlCommand(sql, ConnectionClient.connection)) { SqlDataReader reader1 = commmand.ExecuteReader(); itemcount = reader1.Cast <object>().Count(); reader1.Close(); int count = 0; SqlDataReader reader = commmand.ExecuteReader(); while (reader.Read()) { Personal personal = new Personal((int)reader["Id"], (long)reader["AccountNumber"], (decimal)reader["Cash"], (int)reader["ClientId"], (DateTime)reader["OpenDate"], (bool)reader["State"], (int)reader["TypeId"]); Repository.GetPersonals.Add(personal); accounts.Add(AccountFactory.GetAccount(personal)); count++; countAccount++; ProgressBar.GetValue("Загрузка счетов", itemcount, count); } } ConnectionClient.ConClose(); } } catch (SqlException e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } catch (Exception e) { errorMes.ErrorSQL(e.Message); ConnectionClient.ConClose(); } finally { ConnectionClient.ConClose(); } }
public async void TestLogging() { var capturingLoggerAdapter = new CapturingLoggerFactoryAdapter(); LogManager.Adapter = capturingLoggerAdapter; var contractByteCode = "0x6060604052604060405190810160405280600a81526020017f4d756c7469706c6965720000000000000000000000000000000000000000000081526020015060016000509080519060200190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061008c57805160ff19168380011785556100bd565b828001600101855582156100bd579182015b828111156100bc57825182600050559160200191906001019061009e565b5b5090506100e891906100ca565b808211156100e457600081815060009055506001016100ca565b5090565b5050604051602080610303833981016040528080519060200190919050505b806000600050819055505b506101e2806101216000396000f360606040526000357c01000000000000000000000000000000000000000000000000000000009004806340490a901461004f57806375d0c0dc14610072578063c6888fa1146100ed5761004d565b005b61005c6004805050610119565b6040518082815260200191505060405180910390f35b61007f6004805050610141565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600f02600301f150905090810190601f1680156100df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610103600480803590602001909190505061012b565b6040518082815260200191505060405180910390f35b60006000600050549050610128565b90565b60006000600050548202905061013c565b919050565b60016000508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156101da5780601f106101af576101008083540402835291602001916101da565b820191906000526020600020905b8154815290600101906020018083116101bd57829003601f168201915b50505050508156"; var abi = @"[{""constant"":true,""inputs"":[],""name"":""getMultiplier"",""outputs"":[{""name"":""d"",""type"":""uint256""}],""type"":""function""},{""constant"":true,""inputs"":[],""name"":""contractName"",""outputs"":[{""name"":"""",""type"":""string""}],""type"":""function""},{""constant"":false,""inputs"":[{""name"":""a"",""type"":""uint256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""uint256""}],""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""uint256""}],""type"":""constructor""}]"; var senderAddress = AccountFactory.Address; var web3 = new Web3.Web3(AccountFactory.GetAccount(), new RpcClient(new Uri("http://localhost:8545"), null, null, null, LogManager.GetLogger <ILog>())); //deploy the contract, including abi and a paramter of 7. var transactionHash = await web3.Eth.DeployContract.SendRequestAsync(abi, contractByteCode, senderAddress, new HexBigInteger(900000), 7); Assert.Contains("eth_getTransactionCount", capturingLoggerAdapter.LoggerEvents[0].MessageObject.ToString()); Assert.Contains("RPC Response: 0x", capturingLoggerAdapter.LoggerEvents[1].MessageObject.ToString()); Assert.Contains("eth_sendRawTransaction", capturingLoggerAdapter.LoggerEvents[2].MessageObject.ToString()); Assert.Contains("RPC Response: " + transactionHash, capturingLoggerAdapter.LoggerEvents[3].MessageObject.ToString()); try { var transactionHash2 = await web3.Eth.DeployContract.SendRequestAsync(abi, contractByteCode, senderAddress, // lower gas new HexBigInteger(90000), 7); } catch (Exception ex) { } Assert.Contains("RPC Response Error: intrinsic gas too low", capturingLoggerAdapter.LoggerEvents[8].MessageObject.ToString()); }
public void AccountFactoryCreatesCorrectAccountTypes() { IEnumerable <IAccountConfigOptions> cfgOptions = new List <IAccountConfigOptions>() { new CreditAccountConfigOptions { Id = "alalalalsls", Name = "CreditAccount 1" }, new MortgageAccountConfigOptions { Id = "dkdlassadlkj", Name = "MortgageAccount 1", Property = "Some Property" }, new CheckingAccountConfigOptions(), new SavingsAccountConfigOptions() }; List <Account> accounts = new List <Account>(); foreach (var cfg in cfgOptions) { accounts.Add(AccountFactory.GetAccount(cfg)); } Assert.IsType <CreditAccount>(accounts[0]); Assert.IsType <MortgageAccount>(accounts[1]); Assert.IsType <CheckingAccount>(accounts[2]); Assert.IsType <SavingsAccount>(accounts[3]); }
public override async Task <string> UpdateAccount(string accountAddress, Guid walletId, AccountTypes type, string name, IDbConnectorService dbservice, bool justInDb = true, string password = "") { //IDbConnectorService dbservice = new DbConnectorService(); if (EconomyMainContext.Wallets.TryGetValue(walletId.ToString(), out var wallet)) { if (wallet.Accounts.TryGetValue(accountAddress, out var accnt)) { accnt.Name = name; if (EconomyMainContext.WorkWithDb) { if (!dbservice.SaveAccount(accnt)) { return("Cannot save account to the Db!"); } } return("OK"); } else { Console.WriteLine("Account not found in actual wallet Accounts. New account will be created."); // cannot be the same account name in one wallet if (wallet.Accounts.Values.FirstOrDefault(a => a.Name == name) == null) { // QT RPC support requires Db too. It creates new addresses in QT and it must be saved somewhere // todo: saving to file or something like that when Db is not on if (EconomyMainContext.WorkWithQTRPC && EconomyMainContext.WorkWithDb) { if (EconomyMainContext.QTRPCClient.IsConnected) { // creating wallet in desktop QT Wallet var accresp = new QTWalletResponseDto(); var keyresp = new QTWalletResponseDto(); var privateKey = string.Empty; if (!justInDb) { var acc = await EconomyMainContext.QTRPCClient.RPCLocalCommandSplitedAsync("getnewaddress", new string[] { name }); accresp = JsonConvert.DeserializeObject <QTWalletResponseDto>(acc); var kr = await EconomyMainContext.QTRPCClient.RPCLocalCommandSplitedAsync("dumpprivatekey", new string[] { accresp.result }); keyresp = JsonConvert.DeserializeObject <QTWalletResponseDto>(kr); } else { if (!string.IsNullOrEmpty(accountAddress)) { accresp = new QTWalletResponseDto() { result = accountAddress } } ; else { accresp = new QTWalletResponseDto() { result = "No Address Filled" } }; } // if success add to list of Accounts of specified wallet if (accresp != null) { var account = AccountFactory.GetAccount(Guid.Empty, type, wallet.Owner, walletId, name, accresp.result, 0); // check if some files with last state already exists var ltxParsed = GetLastAccountProcessedTxs(account.Address); if (ltxParsed != null) { account.LastConfirmedTxId = ltxParsed.LastConfirmedTxId; account.LastProcessedTxId = ltxParsed.LastProcessedTxId; } account.WalletName = wallet.Name; account.StartRefreshingData(EconomyMainContext.WalletRefreshInterval); wallet.Accounts.TryAdd(account.Address, account); wallet.RegisterAccountEvents(account.Address); if (!string.IsNullOrEmpty(privateKey)) { // load and save address private key if was dumped correctly LoadAccountKey(walletId.ToString(), account.Address, privateKey, dbservice, account.Address, password, account.Name + "-key", false, true, false, EncryptionKeyType.AccountKey); } if (EconomyMainContext.WorkWithDb && account != null) { if (!dbservice.SaveAccount(account)) { return("Cannot save new account to the Db!"); } } return("OK"); } else { log.Error("Cannot create account - cannot get correct response from QTWalletRPC!"); return("Cannot create account - cannot get correct response from QTWalletRPC!"); } } else { log.Error("Cannot create account - RPC is not connected, probably not configured!"); return("Cannot create account - RPC is not connected, probably not configured!"); } } else if (!EconomyMainContext.WorkWithQTRPC && justInDb) { // if not work with RPC you must fill address if (!string.IsNullOrEmpty(accountAddress)) { var account = AccountFactory.GetAccount(Guid.Empty, type, wallet.Owner, walletId, name, accountAddress, 0); // check if some files with last state already exists var ltxParsed = GetLastAccountProcessedTxs(account.Address); if (ltxParsed != null) { account.LastConfirmedTxId = ltxParsed.LastConfirmedTxId; account.LastProcessedTxId = ltxParsed.LastProcessedTxId; } account.WalletName = wallet.Name; account.StartRefreshingData(EconomyMainContext.WalletRefreshInterval); wallet.Accounts.TryAdd(account.Address, account); wallet.RegisterAccountEvents(account.Address); if (EconomyMainContext.WorkWithDb && account != null) { if (!dbservice.SaveAccount(account)) { return("Cannot save new account to the Db!"); } } return("OK"); } else { log.Error("Cannot create account - RPC is disabled and accountAddress is empty!"); return("Cannot create account - RPC is disabled and accountAddress is empty!"); } } else if (!EconomyMainContext.WorkWithQTRPC && EconomyMainContext.WorkWithDb && !justInDb) { try { // create new address with NBitcoin library var network = NBitcoin.Altcoins.Neblio.Instance.Mainnet; Key privateKey = new Key(); // generate a random private key PubKey publicKey = privateKey.PubKey; BitcoinSecret privateKeyFromNetwork = privateKey.GetBitcoinSecret(network); var address = publicKey.GetAddress(ScriptPubKeyType.Legacy, network); var account = AccountFactory.GetAccount(Guid.Empty, type, wallet.Owner, walletId, name, address.ToString(), 0); // check if some files with last state already exists var ltxParsed = GetLastAccountProcessedTxs(account.Address); if (ltxParsed != null) { account.LastConfirmedTxId = ltxParsed.LastConfirmedTxId; account.LastProcessedTxId = ltxParsed.LastProcessedTxId; } account.WalletName = wallet.Name; account.StartRefreshingData(EconomyMainContext.WalletRefreshInterval); wallet.Accounts.TryAdd(account.Address, account); wallet.RegisterAccountEvents(account.Address); // load and save address private key LoadAccountKey(walletId.ToString(), address.ToString(), privateKeyFromNetwork.ToString(), dbservice, address.ToString(), password, account.Name + "-key", false, true, false, EncryptionKeyType.AccountKey); if (EconomyMainContext.WorkWithDb && account != null) { if (!dbservice.SaveAccount(account)) { return("Cannot save new account to the Db!"); } } return(account.Address); } catch (Exception ex) { log.Error("Cannot create account - NBitcoin cannot create new address!"); return("Cannot create account - NBitcoin cannot create new address!"); } } else { log.Error("Cannot create account - RPC is disabled, accountAddress is empty!"); return("Cannot create account - RPC is disabled and accountAddress is empty!"); } } else { log.Error("Cannot create account - Name already exists!"); return("Cannot create account - Name already exists!"); } } } else { log.Error("Cannot create account - wallet not found"); return("Cannot create account - wallet not found"); } }
public static Web3.Web3 GetWeb3() { return(new Web3.Web3(AccountFactory.GetAccount())); }
public void FreezeAccount(int accountNumber) { var acc = _factory.GetAccount(accountNumber); acc.Freeze(); }