Example #1
0
        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());
         }
     }
 }
Example #4
0
        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;
            }
        }
Example #7
0
        //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);
        }
Example #9
0
        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();
         }
     }
 }
Example #11
0
        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));
        }
Example #13
0
 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");
        }
Example #15
0
        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);
        }
Example #16
0
        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();
        }
Example #17
0
        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);
            });
        }
Example #18
0
 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();
            }
        }
Example #21
0
 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),
     });
 }
Example #22
0
 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;
 }
Example #23
0
        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();
        }
Example #24
0
 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);
        }
Example #28
0
        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);
            }
        }
Example #29
0
        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("功能未实现");
            }
        }
Example #30
0
    /// <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();
            });
        });
    }