public void Setup() { _container?.Dispose(); TestUtils.DeleteTestChainData(); var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager( Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"), new RunOptions() )); containerBuilder.RegisterModule <ConfigModule>(); _container = containerBuilder.Build(); _configManager = _container.Resolve <IConfigManager>(); if (TransactionUtils.ChainId(false) == 0) { var chainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.NewChainId; TransactionUtils.SetChainId((int)chainId !, (int)newChainId !); HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException()); } Console.WriteLine($"old chain id: {TransactionUtils.ChainId(false)}, new chain id: {TransactionUtils.ChainId(true)}"); }
private Transaction CreateRegistrationTransaction() { var config = new ServiceNodeRegistrationConfig { ProtocolVersion = (int)ServiceNodeProtocolVersion.INITIAL, Ipv4Address = IPAddress.Parse("127.0.0.1"), Port = 37123, CollateralPubKeyHash = this.walletSecret.PubKeyHash, RewardPubKeyHash = this.walletSecret.PubKeyHash, PrivateKey = this.walletKey, ServiceEndpoint = new Uri("https://redstone.com/test") }; RegistrationToken registrationToken = config.CreateRegistrationToken(this.network); IWalletTransactionHandler walletTransactionHandler = this.node.FullNode.NodeService <IWalletTransactionHandler>(); Transaction transaction = TransactionUtils.BuildTransaction( this.network, walletTransactionHandler, config, registrationToken, WalletName, Account, Password); return(transaction); }
internal TResult Perform <TResult>( IPerformableAction <TResult> action, bool transactional = true) { if (transactional) { using (IBillingContext context = BillingContext.Create()) { using (var transaction = TransactionUtils.CreateTransaction()) { action.DbContext = context; TResult result = action.Perform(); transaction.Complete(); return(result); } } } else { using (IBillingContext context = BillingContext.Create()) { action.DbContext = context; return(action.Perform()); } } }
public void Setup() { _container?.Dispose(); TestUtils.DeleteTestChainData(); _eventData = new Dictionary <UInt256, ByteString>(); var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager( Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"), new RunOptions() )); containerBuilder.RegisterModule <BlockchainModule>(); containerBuilder.RegisterModule <ConfigModule>(); containerBuilder.RegisterModule <StorageModule>(); _container = containerBuilder.Build(); _blockManager = _container.Resolve <IBlockManager>(); _transactionBuilder = _container.Resolve <ITransactionBuilder>(); _stateManager = _container.Resolve <IStateManager>(); _wallet = _container.Resolve <IPrivateWallet>(); _transactionPool = _container.Resolve <ITransactionPool>(); _configManager = _container.Resolve <IConfigManager>(); // set chainId from config if (TransactionUtils.ChainId(false) == 0) { var chainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.NewChainId; TransactionUtils.SetChainId((int)chainId !, (int)newChainId !); HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException()); StakingContract.Initialize(_configManager.GetConfig <NetworkConfig>("network") ?? throw new InvalidOperationException()); CycleDuration = StakingContract.CycleDuration; } }
/// <summary> /// Assigns the transaction info to all elements in this popup. /// </summary> private void AssignTransactionInfo() { var sendTransaction = transactionInfo.Type == TransactionInfo.TransactionType.Send; var valSymbol = sendTransaction ? "-" : "+"; var tradableAsset = tradableAssetManager.GetTradableAsset(transactionInfo.AssetAddress); assetImage.sprite = tradableAsset.AssetImage; valueText.color = sendTransaction ? UIColors.Red : UIColors.Green; transactionHash.text = transactionInfo.TxHash; valueText.text = StringUtils.LimitEnd(valSymbol + SolidityUtils.ConvertFromUInt(transactionInfo.Value, tradableAsset.AssetDecimals).ConvertDecimalToString(), 18, "...") + "<style=Symbol> " + tradableAsset.AssetSymbol + "</style>"; fromAddress.text = transactionInfo.From; toAddress.text = transactionInfo.To; timestampText.text = DateTimeUtils.TimeStampToDateTime(transactionInfo.TimeStamp).GetFormattedDateAndTimeString(true); gasUsedText.text = transactionInfo.GasUsed.ToString(); txCostText.text = (UnitConversion.Convert.FromWei(transactionInfo.GasPrice) * transactionInfo.GasUsed).ConvertDecimalToString() + "<style=Symbol> Ether</style>"; CheckIfContact(transactionInfo.From.ToLower(), fromAddressName); CheckIfContact(transactionInfo.To.ToLower(), toAddressName); TransactionUtils.GetTransactionDetails(transactionInfo.TxHash).OnSuccess(tx => { gasPriceText.SetText(UnitConversion.Convert.FromWei(tx.GasPrice.Value, UnitConversion.EthUnit.Gwei) + "<style=Symbol> Gwei</style>"); gasLimitText.SetText(tx.Gas.Value.ToString()); }); }
public async Task InterceptAsync(IMethodInvocation invocation) { if (!CompensableHelper.IsCompensableMethod(invocation.Method)) { await invocation.ProceedAsync(); return; } CompensableMethodContext compensableMethodContext = new CompensableMethodContext(invocation, _serviceProvider); var isTransactionActive = _transactionManager.IsTransactionActive(); if (!TransactionUtils.IsLegalTransactionContext(isTransactionActive, compensableMethodContext)) { throw new TransactionException($"no available compensable transaction, the method {compensableMethodContext.MethodInfo.Name} is illegal"); } switch (compensableMethodContext.GetMethodRole(isTransactionActive)) { case MethodRole.ROOT: await RootMethodProceed(compensableMethodContext); break; case MethodRole.PROVIDER: await ProviderMethodProceed(compensableMethodContext); break; default: await invocation.ProceedAsync(); break; } }
//Delete Item public void Delete(CreditCard creditCard) { LogRepository logRepository = new LogRepository(); string computerName = logRepository.GetComputerName(); string adminUserGuid = HttpContext.Current.User.Identity.Name.Split(new[] { '|' })[0]; using (TransactionScope ts = TransactionUtils.CreateTransactionScope()) { using (ccdbDC creditCardDatabase = new ccdbDC(ConfigurationManager.ConnectionStrings["CreditCardDatabase"].ConnectionString)) { creditCardDatabase.spDesktopDataAdmin_DeleteCreditCard_v1(creditCard.CreditCardToken); } using (HierarchyDC desktopDatabase = new HierarchyDC(Settings.getConnectionString())) { desktopDatabase.spDesktopDataAdmin_DeleteClientTopUnitCreditCard_v1( creditCard.CreditCardId, adminUserGuid, creditCard.VersionNumber, Settings.ApplicationName(), Settings.ApplicationVersion(), null, computerName, null, null, 13, null, null, null ); } ts.Complete(); } }
public SignatureScript(int blockHeight, string coinbaseAuxFlags, Int64 unixTime, byte extraNoncePlaceholder, string signature) { // cook input signature script. // The txin's prevout script is an arbitrary byte array (it doesn't have to be a valid script, though this is commonly // done anyway) of 2 to 100 bytes. It has to start with a correct push of the block height (see BIP34). var serializedBlockHeight = Serializers.SerializeNumber(blockHeight); var serializedUnixTime = TransactionUtils.GetSerializedUnixDateTime(unixTime); using (var stream = new MemoryStream()) { stream.WriteBytes(serializedBlockHeight); if (coinbaseAuxFlags != null) { stream.WriteBytes(coinbaseAuxFlags.HexToByteArray()); } stream.WriteBytes(serializedUnixTime); stream.WriteByte(extraNoncePlaceholder); Initial = stream.ToArray(); } Final = Serializers.SerializeString(signature); }
public override void Init() { base.Init(); foreach (Transform wallet in savingContainer) { Destroy(wallet.gameObject); } TransactionUtils.UpdateCurrencyRates(() => { var sumSavingUsd = 0f; foreach (var saving in UserDataManager.Savings) { SetSaving(saving); if (saving.currency == Currency.UAH) { sumSavingUsd += saving.count * UserDataManager.DollarRate; } else { sumSavingUsd += saving.count; } } wholeAmount.text = ((int)Math.Round(sumSavingUsd, MidpointRounding.AwayFromZero)).ToString(); }); Inited = true; }
internal void Perform( IPerformableAction action, bool transactional = true) { if (transactional) { using (IBillingContext context = BillingContext.Create()) { using (var transaction = TransactionUtils.CreateTransaction()) { action.DbContext = context; action.Perform(); transaction.Complete(); } } } else { using (IBillingContext context = BillingContext.Create()) { action.DbContext = context; action.Perform(); } } }
public void Setup() { _container?.Dispose(); TestUtils.DeleteTestChainData(); var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager( Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config.json"), new RunOptions() )); containerBuilder.RegisterModule <BlockchainModule>(); containerBuilder.RegisterModule <ConfigModule>(); containerBuilder.RegisterModule <StorageModule>(); _container = containerBuilder.Build(); _blockManager = _container.Resolve <IBlockManager>(); _stateManager = _container.Resolve <IStateManager>(); _wallet = _container.Resolve <IPrivateWallet>(); _transactionPool = _container.Resolve <ITransactionPool>(); _configManager = _container.Resolve <IConfigManager>(); // set chainId from config if (TransactionUtils.ChainId(false) == 0) { var chainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; TransactionUtils.SetChainId((int)chainId !, (int)newChainId !); HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException()); } _validatorStatusManager = new ValidatorStatusManager( _transactionPool, _container.Resolve <ITransactionSigner>(), _container.Resolve <ITransactionBuilder>(), _wallet, _stateManager, _container.Resolve <IValidatorAttendanceRepository>(), _container.Resolve <ISystemContractReader>() ); }
public void ShouldCalculateTransactionHashFromRawSignedTransaction() { var signedTransaction = "0xf86c820cb6844d7c6d0082520894555f28cb24651c3e7dd740219300ae0e67055ad48705543df729c000801ba03908716fb056408ed2dfe94fe9d7d6ddaa68ec23565e12871f45537df8ad9fe0a06074347d7b5dcf58e55649f291cedc645d204778c94b0cfebda48aa469b5e2de"; var expectedhash = "0xd5fd95eb09f0a3a00e4b9ce9cccb09b2323f44b7acb3e60738b716cfe9eb23f8"; var contractAddress = TransactionUtils.CalculateTransactionHash(signedTransaction); Assert.True(expectedhash.IsTheSameHex(contractAddress)); }
internal static EventViewModel FromEvent(Transaction tx, Event evt) { return(new EventViewModel { Kind = evt.EventKind, Content = TransactionUtils.GetEventContent(tx.Block, evt) //todo improve }); }
public void SerializedUnixDateTimeTest() { FinalUnixDateTime.Should().Equal((Int64)1402265775); var serializedUnixTime = TransactionUtils.GetSerializedUnixDateTime(UnixDateTime); serializedUnixTime.ToHexString().Should().Equal("04afe09453"); }
public bool ChangeWorkflowStep(CodeTorch.Core.Workflow workflow, WorkflowNextStep nextStep, string entityIDValue, string comment) { bool success = false; //get current workflow step WorkflowStep currentStep = GetCurrentWorkflowStep(workflow, entityIDValue); //see if next workflowstep is in possible WorkflowNextStep validNextStep = currentStep.PossibleNextSteps. Where(s => s.Code.ToLower() == nextStep.Code.ToLower()).SingleOrDefault(); if (validNextStep != null) { //check comments if ((validNextStep.RequireComment) && (String.IsNullOrEmpty(comment))) { throw new ApplicationException("Comments are required to change to this step"); } else { WorkflowStep step = workflow.GetStepByCode(validNextStep.Code); string userName; userName = UserIdentityService.GetInstance().IdentityProvider.GetUserName(); using (TransactionScope rootScope = TransactionUtils.CreateTransactionScope()) { foreach (BaseWorkflowAction action in step.Actions) { action.Execute(null, workflow.Code, currentStep.Code, validNextStep.Code, entityIDValue, comment, userName); } //update workflow step SetStep(workflow, step, entityIDValue, comment); if (step.UpdateEntityWithStatusCode) { //update existing table status SetEntityStatus(workflow, step, entityIDValue); } success = true; rootScope.Complete(); } } } else { //invalid - someone may have changed status throw new ApplicationException("Status cannot be changed at this time"); } return(success); }
private void SetWholeAmount() { var amountPerMonth = TransactionUtils.AmountPerMonth(true, false); wholeAmount.uahText.text = amountPerMonth.ToString(); wholeAmount.usdText.text = ((int)Math.Round(amountPerMonth / UserDataManager.DollarRate, MidpointRounding.AwayFromZero)) .ToString(); }
private void Draw() { foreach (Transform child in content) { Destroy(child.gameObject); } TransactionUtils.UpdateAllBankTransactions(() => { var monthlyTransaction = GetTransactions(); foreach (var dailyTransaction in monthlyTransaction._transactions) { if (dailyTransaction._transactions.Count == 0 && dailyTransaction.bankTransactions.Count == 0) { continue; } var daySeparator = Instantiate(daySeparatorPref, content); var data = daySeparator.transform.Find("Data"); data.Find("Number").GetComponent <TextMeshProUGUI>().text = dailyTransaction.day.ToString(); var moneySpended = (dailyTransaction._transactions.Sum(payment => payment._count) + dailyTransaction.bankTransactions.Sum(payment => payment.amount)); data.Find("MoneySpent").GetComponent <TextMeshProUGUI>().text = "<color=yellow>" + moneySpended; var allTypeTransactions = new List <TransactionItem.TransactionItemData>(); foreach (var transaction in dailyTransaction._transactions) { allTypeTransactions.Add(new TransactionItem.TransactionItemData { Count = transaction._count, Category = transaction._category, Comment = transaction._comment, Time = transaction.Time, IsBankTransaction = false }); } foreach (var transaction in dailyTransaction.bankTransactions) { allTypeTransactions.Add(new TransactionItem.TransactionItemData { Count = transaction.amount, Category = MonoBankManager.Instance.mccDataBase.GetDescriptionByMccCode(transaction.mcc), Comment = transaction.description, Time = DateTimeOffset.FromUnixTimeSeconds(transaction.time).LocalDateTime, IsBankTransaction = true }); } allTypeTransactions = allTypeTransactions.OrderByDescending(u => u.Time).ToList(); foreach (var transaction in allTypeTransactions) { Instantiate(transactionItemPref, content).GetComponent <TransactionItem>().Init(transaction); } } LayoutRebuilder.ForceRebuildLayoutImmediate(content as RectTransform); }); }
public void Init(OverviewData data) { TransactionUtils.UpdateCurrencyRates(() => { categoryName.text = data.CategoryName; slider.value = data.percentageOfAmount; percentCount.text = $"<color=red>{data.percentageOfAmount}%</color=red>"; var countUsd = Math.Round(data.sum / UserDataManager.DollarRate, 1, MidpointRounding.AwayFromZero); count.text = data.sum.ToString() + "(" + countUsd + ")"; }); }
public static TransactionHomeViewModel FromTransaction(Transaction tx) { return(new TransactionHomeViewModel { Description = TransactionUtils.GetTxDescription(tx), ChainName = tx.Block.ChainName, ChainAddress = tx.Block.ChainAddress, Date = new Timestamp(tx.Timestamp), Hash = tx.Hash }); }
//Add Data From Linked Tables for Display /*public void EditForDisplay(CreditCardClientAccount creditCardClientAccount) * { * CreditCardRepository creditCardRepository = new CreditCardRepository(); * CreditCard creditCard = new CreditCard(); * creditCard = creditCardRepository.GetCreditCard(creditCardClientAccount.CreditCardId); * if (creditCard != null) * { * creditCardClientAccount.CreditCardHolderName = creditCard.CreditCardHolderName; * } * * ClientAccountRepository clientAccountRepository = new ClientAccountRepository(); * ClientAccount clientAccount = new ClientAccount(); * clientAccount = clientAccountRepository.GetClientAccount(creditCardClientAccount.ClientAccountNumber, creditCardClientAccount.SourceSystemCode); * if (clientAccount != null) * { * creditCardClientAccount.ClientAccountName = clientAccount.ClientAccountName; * } * * } */ //Add CreditCard for ClientAccount public void Add(CreditCard creditCard, string can, string ssc) { LogRepository logRepository = new LogRepository(); string computerName = logRepository.GetComputerName(); string adminUserGuid = HttpContext.Current.User.Identity.Name.Split(new[] { '|' })[0]; string maskedCreditCardNumber = creditCard.CreditCardNumber.Substring(creditCard.CreditCardNumber.Length - 4).PadLeft(creditCard.CreditCardNumber.Length, '*'); string maskedCVVNumber = (!string.IsNullOrEmpty(creditCard.CVV)) ? new string('*', creditCard.CVV.Length) : string.Empty; string creditCardToken = ""; //Valid To Date Should Be End Of Month DateTime creditCardValidTo = new DateTime(creditCard.CreditCardValidTo.Year, creditCard.CreditCardValidTo.Month, 1).AddMonths(1).AddDays(-1); using (TransactionScope ts = TransactionUtils.CreateTransactionScope()) { using (ccdbDC creditCardDatabase = new ccdbDC(ConfigurationManager.ConnectionStrings["CreditCardDatabase"].ConnectionString)) { creditCardDatabase.spDesktopDataAdmin_InsertCreditCard_v1(creditCard.CreditCardNumber, creditCard.CVV, ref creditCardToken); } using (HierarchyDC desktopDatabase = new HierarchyDC(Settings.getConnectionString())) { desktopDatabase.spDesktopDataAdmin_InsertClientAccountCreditCard_v1( ssc, can, creditCardToken, maskedCreditCardNumber, maskedCVVNumber, creditCard.CreditCardValidFrom, creditCardValidTo, creditCard.CreditCardIssueNumber, creditCard.CreditCardHolderName, creditCard.CreditCardVendorCode, creditCard.ClientTopUnitGuid, creditCard.CreditCardTypeId, creditCard.ProductId, creditCard.SupplierCode, adminUserGuid, Settings.ApplicationName(), Settings.ApplicationVersion(), null, computerName, null, null, creditCard.ClientSubUnitGuid, null, null ); } ts.Complete(); } }
public static JObject Web3UnsignedTransaction(Transaction tx, bool useNewChainId) { return(new JObject { ["from"] = Web3Data(tx.From), ["gas"] = Web3Number(tx.GasLimit), ["gasPrice"] = Web3Number(tx.GasPrice), ["data"] = Web3Data(tx.Invocation), ["nonce"] = Web3Number(tx.Nonce), ["to"] = tx.To.Buffer.IsEmpty ? null : Web3Data(tx.To), ["value"] = Web3Number(tx.Value), ["chainId"] = TransactionUtils.ChainId(useNewChainId), }); }
public override void Init() { base.Init(); Date.text = UserDataManager.SelectedDate.ToString("MMMM yyyy"); for (var i = 0; i < categoryItems.Count; i++) { categoryItems[i].Init(UserDataManager.Categories[i]); } TransactionUtils.UpdateCurrencyRates(() => { SetWholeAmount(); }); Inited = true; }
public void Setup() { _container?.Dispose(); TestUtils.DeleteTestChainData(); var containerBuilder = new SimpleInjectorContainerBuilder(new ConfigManager( Path.Join(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "config2.json"), new RunOptions() )); containerBuilder.RegisterModule <BlockchainModule>(); containerBuilder.RegisterModule <ConfigModule>(); containerBuilder.RegisterModule <StorageModule>(); _container = containerBuilder.Build(); _configManager = _container.Resolve <IConfigManager>(); _stateManager = _container.Resolve <IStateManager>(); _contractRegisterer = _container.Resolve <IContractRegisterer>(); _privateWallet = _container.Resolve <IPrivateWallet>(); _snapshotIndexer = _container.Resolve <ISnapshotIndexRepository>(); _systemContractReader = _container.Resolve <ISystemContractReader>(); _transactionManager = _container.Resolve <ITransactionManager>(); _transactionBuilder = _container.Resolve <ITransactionBuilder>(); _transactionSigner = _container.Resolve <ITransactionSigner>(); _transactionPool = _container.Resolve <ITransactionPool>(); _blockManager = _container.Resolve <IBlockManager>(); // set chainId from config if (TransactionUtils.ChainId(false) == 0) { var chainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; var newChainId = _configManager.GetConfig <NetworkConfig>("network")?.ChainId; TransactionUtils.SetChainId((int)chainId !, (int)newChainId !); HardforkHeights.SetHardforkHeights(_configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new InvalidOperationException()); } ServiceBinder.BindService <GenericParameterAttributes>(); _apiService = new AccountServiceWeb3(_stateManager, _snapshotIndexer, _contractRegisterer, _systemContractReader, _transactionPool); _transactionApiService = new TransactionServiceWeb3(_stateManager, _transactionManager, _transactionBuilder, _transactionSigner, _transactionPool, _contractRegisterer, _privateWallet); _blockManager.TryBuildGenesisBlock(); }
public IActionResult Create([FromBody] TransInput newTrans) { try { TransactionUtils newTransactionUtils = new TransactionUtils(); long transID = newTransactionUtils.MakeTransaction(newTrans); if (transID > -1) { return(Json(transID)); } return(StatusCode(500, "Couldn't Complete the Transaction!")); } catch (Exception e) { return(StatusCode(500, "Couldn't Complete the Transaction!" + e)); } }
public static TransactionViewModel FromTransaction(Transaction tx) //todo fix vm .From { var vm = new TransactionViewModel(); var disasm = new Disassembler(tx.Script.Decode()); //Todo fix me string description = TransactionUtils.GetTxDescription(tx, vm); vm.ChainAddress = tx.Block.ChainAddress; vm.ChainName = tx.Block.ChainName; vm.BlockHeight = tx.Block.Height; vm.BlockHash = tx.BlockHash; vm.Date = new Timestamp(tx.Block.Timestamp); vm.Hash = tx.Hash; vm.Events = tx.Events.Select(evt => EventViewModel.FromEvent(tx, evt)); vm.Description = description; vm.Instructions = disasm.Instructions; vm.Result = tx.Result; return(vm); }
public void Send(EmailMessage message) { string AddressID = null; using (TransactionScope rootScope = TransactionUtils.CreateTransactionScope()) { message.ID = Guid.NewGuid().ToString(); InsertMailMessage(message); InsertAddress(message, message.From, "FROM"); foreach (EmailAddress address in message.To) { InsertAddress(message, address, "TO"); } foreach (EmailAddress address in message.To) { InsertAddress(message, address, "CC"); } foreach (EmailAddress address in message.To) { InsertAddress(message, address, "BCC"); } foreach (EmailAddress address in message.ReplyTo) { InsertAddress(message, address, "REPLYTO"); } foreach (EmailAttachment attachment in message.Attachments) { InsertAttachment(message, attachment); } rootScope.Complete(); } }
private static TransactionOptions createTransactionOptions(ref IsolationLevel isolationLevel, TimeSpan?timeout) { var transactionOptions = new TransactionOptions(); if (timeout != null) { transactionOptions.Timeout = timeout.Value; } else { transactionOptions.Timeout = new TimeSpan(0, 0, 0, maxTimeout); } var curIs = TransactionUtils.GetCurrentIsolationLevel(); if (curIs != null && curIs != isolationLevel) { isolationLevel = curIs.Value; } transactionOptions.IsolationLevel = isolationLevel; return(transactionOptions); }
public void Start(RunOptions options) { var configManager = _container.Resolve <IConfigManager>(); var blockManager = _container.Resolve <IBlockManager>(); var consensusManager = _container.Resolve <IConsensusManager>(); var validatorStatusManager = _container.Resolve <IValidatorStatusManager>(); var transactionVerifier = _container.Resolve <ITransactionVerifier>(); var validatorManager = _container.Resolve <IValidatorManager>(); var blockSynchronizer = _container.Resolve <IBlockSynchronizer>(); var networkManager = _container.Resolve <INetworkManager>(); var commandManager = _container.Resolve <IConsoleManager>(); var rpcManager = _container.Resolve <IRpcManager>(); var stateManager = _container.Resolve <IStateManager>(); var wallet = _container.Resolve <IPrivateWallet>(); var metricsService = _container.Resolve <IMetricsService>(); var snapshotIndexRepository = _container.Resolve <ISnapshotIndexRepository>(); var localTransactionRepository = _container.Resolve <ILocalTransactionRepository>(); var NodeRetrieval = _container.Resolve <INodeRetrieval>(); var dbContext = _container.Resolve <IRocksDbContext>(); var storageManager = _container.Resolve <IStorageManager>(); var transactionPool = _container.Resolve <ITransactionPool>(); // check if compacting db was started but not finished var dbShrink = _container.Resolve <IDbShrink>(); if (!dbShrink.IsStopped()) { throw new Exception($"Compacting db was started with depth: {dbShrink.GetDbShrinkDepth()}" + " by deleting nodes from old snapshot but was not finished."); } // set chainId from config var chainId = configManager.GetConfig <NetworkConfig>("network")?.ChainId ?? 0; if (chainId == 0) { throw new Exception("chainId is not defined in the config file"); } var newChainId = configManager.GetConfig <NetworkConfig>("network")?.NewChainId ?? 0; if (newChainId == 0) { throw new Exception("newChainId is not defined in the config file"); } Logger.LogInformation($"ChainId {chainId}, newChainId {newChainId}"); TransactionUtils.SetChainId(chainId, newChainId); var version = Assembly.GetEntryAssembly() ! .GetCustomAttribute <AssemblyInformationalVersionAttribute>() .InformationalVersion; Logger.LogInformation($"Version: {version}"); // set cycle and validatorCount StakingContract.Initialize(configManager.GetConfig <NetworkConfig>("network")); // set hardfork heights Logger.LogInformation($"Setting hardfork heights."); var hardforkConfig = configManager.GetConfig <HardforkConfig>("hardfork") ?? throw new Exception("No 'hardfork' section in config file"); HardforkHeights.SetHardforkHeights(hardforkConfig); rpcManager.Start(); if (options.RollBackTo.HasValue) { Logger.LogWarning($"Performing roll back to block {options.RollBackTo.Value}"); var snapshot = snapshotIndexRepository.GetSnapshotForBlock(options.RollBackTo.Value); stateManager.RollbackTo(snapshot); wallet.DeleteKeysAfterBlock(options.RollBackTo.Value); stateManager.Commit(); Logger.LogWarning($"Rollback to block {options.RollBackTo.Value} complete"); } localTransactionRepository.SetWatchAddress(wallet.EcdsaKeyPair.PublicKey.GetAddress()); if (blockManager.TryBuildGenesisBlock()) { Logger.LogInformation("Generated genesis block"); } var genesisBlock = stateManager.LastApprovedSnapshot.Blocks.GetBlockByHeight(0) ?? throw new Exception("Genesis block was not persisted"); Logger.LogInformation("Genesis Block: " + genesisBlock.Hash.ToHex()); Logger.LogInformation($" + prevBlockHash: {genesisBlock.Header.PrevBlockHash.ToHex()}"); Logger.LogInformation($" + merkleRoot: {genesisBlock.Header.MerkleRoot.ToHex()}"); Logger.LogInformation($" + nonce: {genesisBlock.Header.Nonce}"); Logger.LogInformation($" + transactionHashes: {genesisBlock.TransactionHashes.ToArray().Length}"); foreach (var s in genesisBlock.TransactionHashes) { Logger.LogInformation($" + - {s.ToHex()}"); } Logger.LogInformation($" + hash: {genesisBlock.Hash.ToHex()}"); Logger.LogInformation("Current block height: " + blockManager.GetHeight()); Logger.LogInformation($"Node public key: {wallet.EcdsaKeyPair.PublicKey.EncodeCompressed().ToHex()}"); Logger.LogInformation($"Node address: {wallet.EcdsaKeyPair.PublicKey.GetAddress().ToHex()}"); if (options.SetStateTo.Any()) { List <string> args = options.SetStateTo.ToList(); // System.Console.WriteLine(args); ulong blockNumber = 0; if (!(args is null) && args.Count > 0) { blockNumber = Convert.ToUInt64(args[0]); } FastSynchronizerBatch.StartSync(stateManager, dbContext, snapshotIndexRepository, storageManager.GetVersionFactory(), blockNumber); } /* if(blockManager.GetHeight()==0) * FastSynchronizerBatch.StartSync(stateManager, dbContext, snapshotIndexRepository, * storageManager.GetVersionFactory(), 0); */ var networkConfig = configManager.GetConfig <NetworkConfig>("network") ?? throw new Exception("No 'network' section in config file"); metricsService.Start(); networkManager.Start(); transactionVerifier.Start(); commandManager.Start(wallet.EcdsaKeyPair); // pending transactions are restored from pool repository to in-memory storage // it's important to restore pool after transactionVerifier and before blockSynchronizer starts transactionPool.Restore(); blockSynchronizer.Start(); Logger.LogInformation("Synchronizing blocks..."); blockSynchronizer.SynchronizeWith( validatorManager.GetValidatorsPublicKeys((long)blockManager.GetHeight()) .Where(key => !key.Equals(wallet.EcdsaKeyPair.PublicKey)) ); Logger.LogInformation("Block synchronization finished, starting consensus..."); consensusManager.Start(blockManager.GetHeight() + 1); validatorStatusManager.Start(false); System.Console.CancelKeyPress += (sender, e) => { System.Console.WriteLine("Interrupt received. Exiting..."); _interrupt = true; Dispose(); }; while (!_interrupt) { Thread.Sleep(1000); } }
public override void Execute() { var viewType = (CMViewType)Enum.Parse(typeof(CMViewType), ViewType.ToString()); switch (viewType) { case CMViewType.Idle: View = new CMWindow(this); View.ShowDialog(); break; case CMViewType.Close: View.Close(); //SaveSetting(); break; case CMViewType.Closing: //SaveSetting(); break; case CMViewType.PickSinglePipe_Pipe: View.Close(); if (!VLHookHelper.DelegateKeyBoardHook(() => { //业务逻辑处理 //选择符合类型的过滤 var targetType = Model.GetFilter(); Model.TargetIds = new List <ElementId>() { UIDocument.Selection.PickObject(ObjectType.Element, targetType, "请选择管道标注点").ElementId }; if (Model.TargetIds.Count > 0) { ViewType = (int)CMViewType.PickSinglePipe_Location; } })) { ViewType = (int)CMViewType.Idle; } Execute(); break; case CMViewType.PickSinglePipe_Location: if (!VLHookHelper.DelegateKeyBoardHook(() => { ////业务逻辑处理 //var target = Document.GetElement(Model.TargetIds.First()); //var targetLocation = target.Location as LocationCurve; //var p0 = targetLocation.Curve.GetEndPoint(0); //var p1 = targetLocation.Curve.GetEndPoint(1); //var pStart = new XYZ((p0.X + p1.X) / 2, (p0.Y + p1.Y) / 2, (p0.Z + p1.Z) / 2); //var pEnd = new VLPointPicker().PickPointWithLinePreview(UIApplication, pStart); //if (pEnd == null) // ViewType = CMViewType.Idle; //else // ViewType = CMViewType.GenerateSinglePipe; })) { ViewType = (int)CMViewType.Idle; } Execute(); break; case CMViewType.GenerateSinglePipe: if (TransactionUtils.DelegateTransaction(Document, "GenerateSinglePipe", (Func <bool>)(() => { var element = Document.GetElement(Model.TargetIds.First()); var Collection = CMContext.GetCollection(Document); //避免重复生成 由于一个对象可能在不同的视图中进行标注设置 所以还是需要重复生成的 var existedModels = Collection.Data.Where(c => c.TargetIds.Intersect(Model.TargetIds, new ElementIdComparer()) != null); if (existedModels != null) { foreach (var existedModel in existedModels) { Collection.Data.Remove(existedModel); CMContext.Creator.Clear(Document, existedModel); } } CMContext.Creator.Generate(Document, Model, element); Collection.Data.Add(Model); Collection.Save(Document); return(true); }))) { ViewType = (int)CMViewType.PickSinglePipe_Pipe; } else { ViewType = (int)CMViewType.Idle; } Execute(); break; default: throw new NotImplementedException("功能未实现"); } }
/// <summary> /// Signs a transaction using this IWallet. /// </summary> /// <typeparam name="T"> The type of the popup to display the transaction confirmation for. </typeparam> /// <param name="onTransactionSigned"> The action to call if the transaction is confirmed and signed. </param> /// <param name="gasLimit"> The gas limit to use with the transaction. </param> /// <param name="gasPrice"> The gas price to use with the transaction. </param> /// <param name="value"> The amount of ether in wei being sent along with the transaction. </param> /// <param name="addressFrom"> The address of the wallet signing the transaction. </param> /// <param name="addressTo"> The address the transaction is being sent to. </param> /// <param name="data"> The data sent along with the transaction. </param> /// <param name="path"> The path of the wallet to sign the transaction with. </param> /// <param name="displayInput"> The display input that goes along with the transaction request. </param> public void SignTransaction <T>( Action <TransactionSignedUnityRequest> onTransactionSigned, BigInteger gasLimit, BigInteger gasPrice, BigInteger value, string addressFrom, string addressTo, string data, string path, params object[] displayInput) where T : ConfirmTransactionPopupBase <T> { if (signingTransaction) { return; } signingTransaction = true; TransactionUtils.GetAddressTransactionCount(addressFrom).OnSuccess(async txCount => { var currentPopupType = popupManager.ActivePopupType; var transaction = new Transaction( txCount.ToBytesForRLPEncoding(), gasPrice.ToBytesForRLPEncoding(), gasLimit.ToBytesForRLPEncoding(), addressTo.HexToByteArray(), value.ToBytesForRLPEncoding(), data.HexToByteArray(), new byte[] { 0 }, new byte[] { 0 }, (byte)ethereumNetworkSettings.networkType); var signedTransactionData = await GetSignedTransactionData( transaction, path, () => MainThreadExecutor.QueueAction(() => popupManager.GetPopup <T>(true)?.SetConfirmationValues(null, gasLimit, gasPrice, displayInput))).ConfigureAwait(false); signingTransaction = false; if (signedTransactionData == null) { return; } else if (!signedTransactionData.signed) { if (currentPopupType != popupManager.ActivePopupType) { MainThreadExecutor.QueueAction(() => popupManager.CloseActivePopup()); } return; } var transactionChainId = new TransactionChainId( transaction.Nonce, transaction.GasPrice, transaction.GasLimit, transaction.ReceiveAddress, transaction.Value, transaction.Data, new byte[] { (byte)ethereumNetworkSettings.networkType }, signedTransactionData.r, signedTransactionData.s, new byte[] { (byte)signedTransactionData.v }); MainThreadExecutor.QueueAction(() => { onTransactionSigned?.Invoke(new TransactionSignedUnityRequest(transactionChainId.GetRLPEncoded().ToHex(), ethereumNetworkManager.CurrentNetwork.NetworkUrl)); popupManager.CloseAllPopups(); }); }); }