public async Task ClearProposalByLibAsync(Hash blockHash, long blockHeight) { var proposalIdList = _proposalProvider.GetAllProposals(); var result = await _contractReaderFactory.Create(new ContractReaderContext { BlockHash = blockHash, BlockHeight = blockHeight, ContractAddress = await GetParliamentContractAddressAsync(new ChainContext { BlockHash = blockHash, BlockHeight = blockHeight }) }).GetNotVotedPendingProposals .CallAsync(new ProposalIdList { ProposalIds = { proposalIdList } }); if (result == null) { return; } foreach (var proposalId in proposalIdList.Except(result.ProposalIds)) { if (!_proposalProvider.TryGetProposalCreatedHeight(proposalId, out var h) || h > blockHeight) { continue; } Logger.LogDebug($"Clear proposal {proposalId} by LIB hash {blockHash}, height {blockHeight}"); _proposalProvider.RemoveProposalById(proposalId); } }
public void AddProposalTest() { var proposalId = HashHelper.ComputeFrom("ProposalId"); var blockHeight = 10; _proposalProvider.AddProposal(proposalId, blockHeight); var exist = _proposalProvider.TryGetProposalCreatedHeight(proposalId, out var height); exist.ShouldBeTrue(); height.ShouldBe(blockHeight); var lowerHeight = blockHeight - 1; _proposalProvider.AddProposal(proposalId, lowerHeight); exist = _proposalProvider.TryGetProposalCreatedHeight(proposalId, out height); exist.ShouldBeTrue(); height.ShouldBe(blockHeight); }