// changed from private to public: StopValidator() , IsMining() public void Test_StopValidator() { Assert.AreEqual("wallet_locked", _apiService.StopValidator()); UnlockWallet(true); string money = "2000"; _validatorStatusManager.StartWithStake(Money.Parse(money).ToUInt256()); Assert.AreEqual(true, _apiService.IsMining()); Assert.AreEqual("validator_stopped", _apiService.StopValidator()); // this does not work because this is the only validator; //Assert.AreEqual(false, _apiService.IsMining()); }
/// <summary> /// Stake: /// stake amount /// </summary> /// <param name="arguments"></param> /// <returns>stake tx hash</returns> public string NewStake(string[] arguments) { if (_validatorStatusManager.IsStarted()) { return("ERROR: Withdraw current stake first"); } if (arguments.Length == 0) { _validatorStatusManager.Start(false); } else { _validatorStatusManager.StartWithStake(Money.Parse(arguments[0]).ToUInt256()); } return("Validator is started"); }
public string StartValidatorWithStake(string stake) { if (_privateWallet.GetWalletInstance() is null) { return("wallet_locked"); } Logger.LogDebug("validator start_with_stake command received"); if (_validatorStatusManager.IsStarted()) { return("withdraw previous stake first"); } _validatorStatusManager.StartWithStake(Money.Parse(stake).ToUInt256()); return("validator_started"); }
public void Test_StakeSize() { _blockManager.TryBuildGenesisBlock(); var systemContractReader = _container?.Resolve <ISystemContractReader>() ?? throw new Exception("Container is not loaded"); var tx = TopUpBalanceTx(systemContractReader.NodeAddress(), Money.Parse("3000.0").ToUInt256(), 0, HardforkHeights.IsHardfork_9Active(1)); Assert.AreEqual(OperatingError.Ok, _transactionPool.Add(tx)); GenerateBlocks(1, 1); var balance = _stateManager.CurrentSnapshot.Balances.GetBalance(systemContractReader.NodeAddress()); var placeToStake = Money.Parse("2000.0"); Assert.That(balance > placeToStake, "Not enough balance to make stake"); _validatorStatusManager.StartWithStake(placeToStake.ToUInt256()); Assert.That(_validatorStatusManager.IsStarted(), "Manager is not started"); Assert.That(!_validatorStatusManager.IsWithdrawTriggered(), "Withdraw was triggered from the beggining"); int blockNum = (int)_blockManager.GetHeight(); Assert.IsFalse(HardforkHeights.IsHardfork_9Active((ulong)blockNum)); while (!HardforkHeights.IsHardfork_9Active((ulong)blockNum)) { blockNum++; GenerateBlocks(blockNum, blockNum); } var stake = new Money(systemContractReader.GetStake(systemContractReader.NodeAddress())); // TODO: fix it // Assert.That(stake == placeToStake, $"Stake is not as intended: {stake} != {placeToStake}"); _validatorStatusManager.WithdrawStakeAndStop(); Assert.That(_validatorStatusManager.IsStarted(), "Manager is stopped right after withdraw request"); Assert.That(_validatorStatusManager.IsWithdrawTriggered(), "Withdraw is not triggered"); // Test node is the only vaidator, so it is a next validator always // and it can't withdraw its stake. // GenerateBlocks(50); // Assert.That(!_validatorStatusManager.IsStarted(), "Manager is not stopped"); //_validatorStatusManager.Stop(); }