diff --git a/Framework/DiscordRewards/GiveRewardsCommand.cs b/Framework/DiscordRewards/GiveRewardsCommand.cs index dffb4ed..67c611b 100644 --- a/Framework/DiscordRewards/GiveRewardsCommand.cs +++ b/Framework/DiscordRewards/GiveRewardsCommand.cs @@ -3,12 +3,11 @@ public class GiveRewardsCommand { public RewardUsersCommand[] Rewards { get; set; } = Array.Empty(); - public MarketAverage[] Averages { get; set; } = Array.Empty(); public string[] EventsOverview { get; set; } = Array.Empty(); public bool HasAny() { - return Rewards.Any() || Averages.Any() || EventsOverview.Any(); + return Rewards.Any() || EventsOverview.Any(); } } @@ -17,15 +16,4 @@ public ulong RewardId { get; set; } public string[] UserAddresses { get; set; } = Array.Empty(); } - - public class MarketAverage - { - public int NumberOfFinished { get; set; } - public int TimeRangeSeconds { get; set; } - public float Price { get; set; } - public float Size { get; set; } - public float Duration { get; set; } - public float Collateral { get; set; } - public float ProofProbability { get; set; } - } } diff --git a/Tests/CodexTests/UtilityTests/DiscordBotTests.cs b/Tests/CodexTests/UtilityTests/DiscordBotTests.cs index 2896dbb..c327feb 100644 --- a/Tests/CodexTests/UtilityTests/DiscordBotTests.cs +++ b/Tests/CodexTests/UtilityTests/DiscordBotTests.cs @@ -24,7 +24,6 @@ namespace CodexTests.UtilityTests private readonly List rewardsSeen = new List(); private readonly TimeSpan rewarderInterval = TimeSpan.FromMinutes(1); private readonly List receivedEvents = new List(); - private readonly List receivedAverages = new List(); [Test] [DontDownloadLogs] @@ -56,8 +55,6 @@ namespace CodexTests.UtilityTests AssertEventOccurance("Transit: New -> Started", 1); AssertEventOccurance("Transit: Started -> Finished", 1); - AssertMarketAverage(); - foreach (var r in repo.Rewards) { var seen = rewardsSeen.Any(s => r.RoleId == s); @@ -80,28 +77,9 @@ namespace CodexTests.UtilityTests $"Event '{msg}' did not occure correct number of times."); } - private void AssertMarketAverage() - { - Assert.That(receivedAverages.Count, Is.EqualTo(1)); - var a = receivedAverages.Single(); - - Assert.That(a.NumberOfFinished, Is.EqualTo(1)); - Assert.That(a.TimeRangeSeconds, Is.EqualTo(5760)); - Assert.That(a.Price, Is.EqualTo(2.0f).Within(0.1f)); - Assert.That(a.Size, Is.EqualTo(GetMinFileSize().SizeInBytes).Within(1.0f)); - Assert.That(a.Duration, Is.EqualTo(GetMinRequiredRequestDuration().TotalSeconds).Within(1.0f)); - Assert.That(a.Collateral, Is.EqualTo(10.0f).Within(0.1f)); - Assert.That(a.ProofProbability, Is.EqualTo(5.0f).Within(0.1f)); - } - private void OnCommand(string timestamp, GiveRewardsCommand call) { Log($""); - receivedAverages.AddRange(call.Averages); - foreach (var a in call.Averages) - { - Log("\tAverage: " + JsonConvert.SerializeObject(a)); - } receivedEvents.AddRange(call.EventsOverview); foreach (var e in call.EventsOverview) { diff --git a/Tools/BiblioTech/Commands/MarketCommand.cs b/Tools/BiblioTech/Commands/MarketCommand.cs deleted file mode 100644 index 0df58d5..0000000 --- a/Tools/BiblioTech/Commands/MarketCommand.cs +++ /dev/null @@ -1,58 +0,0 @@ -using BiblioTech.Options; -using DiscordRewards; -using System.Globalization; -using Utils; - -namespace BiblioTech.Commands -{ - public class MarketCommand : BaseCommand - { - public override string Name => "market"; - public override string StartingMessage => RandomBusyMessage.Get(); - public override string Description => "Fetch some insights about current market conditions."; - - protected override async Task Invoke(CommandContext context) - { - await context.Followup(GetInsights()); - } - - private string[] GetInsights() - { - var result = Program.Averages.SelectMany(GetInsight).ToArray(); - if (result.Length > 0) - { - result = new[] - { - "No market insights available." - }; - } - return result; - } - - private string[] GetInsight(MarketAverage avg) - { - var timeRange = TimeSpan.FromSeconds(avg.TimeRangeSeconds); - var headerLine = $"[Last {Time.FormatDuration(timeRange)}] ({avg.NumberOfFinished} Contracts finished)"; - - if (avg.NumberOfFinished == 0) - { - return new[] { headerLine }; - } - - return new[] - { - headerLine, - $"Price: {Format(avg.Price)}", - $"Size: {Format(avg.Size)}", - $"Duration: {Format(avg.Duration)}", - $"Collateral: {Format(avg.Collateral)}", - $"ProofProbability: {Format(avg.ProofProbability)}" - }; - } - - private string Format(float f) - { - return f.ToString("F3", CultureInfo.InvariantCulture); - } - } -} diff --git a/Tools/BiblioTech/Program.cs b/Tools/BiblioTech/Program.cs index fc0d944..683ef21 100644 --- a/Tools/BiblioTech/Program.cs +++ b/Tools/BiblioTech/Program.cs @@ -18,7 +18,6 @@ namespace BiblioTech public static AdminChecker AdminChecker { get; private set; } = null!; public static IDiscordRoleDriver RoleDriver { get; set; } = null!; public static ILog Log { get; private set; } = null!; - public static MarketAverage[] Averages { get; set; } = Array.Empty(); public static Task Main(string[] args) { @@ -91,8 +90,7 @@ namespace BiblioTech sprCommand, associateCommand, notifyCommand, - new AdminCommand(sprCommand, replacement), - new MarketCommand() + new AdminCommand(sprCommand, replacement) ); await client.LoginAsync(TokenType.Bot, Config.ApplicationToken); diff --git a/Tools/BiblioTech/Rewards/RewardController.cs b/Tools/BiblioTech/Rewards/RewardController.cs index 99f73ee..c9a19de 100644 --- a/Tools/BiblioTech/Rewards/RewardController.cs +++ b/Tools/BiblioTech/Rewards/RewardController.cs @@ -23,10 +23,6 @@ namespace BiblioTech.Rewards { try { - if (cmd.Averages != null && cmd.Averages.Any()) - { - Program.Averages = cmd.Averages; - } await Program.RoleDriver.GiveRewards(cmd); } catch (Exception ex) diff --git a/Tools/TestNetRewarder/MarketBuffer.cs b/Tools/TestNetRewarder/MarketBuffer.cs deleted file mode 100644 index 0fadf7e..0000000 --- a/Tools/TestNetRewarder/MarketBuffer.cs +++ /dev/null @@ -1,74 +0,0 @@ -using CodexContractsPlugin.ChainMonitor; -using CodexContractsPlugin.Marketplace; -using DiscordRewards; -using System.Numerics; - -namespace TestNetRewarder -{ - public class MarketBuffer - { - private readonly List requestEvents = new List(); - private readonly TimeSpan bufferSpan; - - public MarketBuffer(TimeSpan bufferSpan) - { - this.bufferSpan = bufferSpan; - } - - public void Add(RequestEvent requestEvent) - { - requestEvents.Add(requestEvent); - } - - public void Update() - { - var now = DateTime.UtcNow; - requestEvents.RemoveAll(r => (now - r.Request.FinishedUtc) > bufferSpan); - } - - public MarketAverage? GetAverage() - { - if (requestEvents.Count == 0) return null; - - return new MarketAverage - { - NumberOfFinished = requestEvents.Count, - TimeRangeSeconds = (int)bufferSpan.TotalSeconds, - Price = Average(s => s.Request.Ask.Reward), - Duration = Average(s => s.Request.Ask.Duration), - Size = Average(s => GetTotalSize(s.Request.Ask)), - Collateral = Average(s => s.Request.Ask.Collateral), - ProofProbability = Average(s => s.Request.Ask.ProofProbability) - }; - } - - private float Average(Func getValue) - { - return Average(s => - { - var value = getValue(s); - return (int)value; - }); - } - - private float Average(Func getValue) - { - var sum = 0.0f; - float count = requestEvents.Count; - foreach (var r in requestEvents) - { - sum += getValue(r.Request); - } - - if (count < 1.0f) return 0.0f; - return sum / count; - } - - private int GetTotalSize(Ask ask) - { - var nSlots = Convert.ToInt32(ask.Slots); - var slotSize = (int)ask.SlotSize; - return nSlots * slotSize; - } - } -} diff --git a/Tools/TestNetRewarder/MarketTracker.cs b/Tools/TestNetRewarder/MarketTracker.cs deleted file mode 100644 index 2c0be48..0000000 --- a/Tools/TestNetRewarder/MarketTracker.cs +++ /dev/null @@ -1,79 +0,0 @@ -using CodexContractsPlugin.ChainMonitor; -using DiscordRewards; -using GethPlugin; -using Logging; -using System.Numerics; - -namespace TestNetRewarder -{ - public class MarketTracker : IChainStateChangeHandler - { - private readonly List buffers = new List(); - private readonly ILog log; - - public MarketTracker(Configuration config, ILog log) - { - var intervals = GetInsightCounts(config); - - foreach (var i in intervals) - { - buffers.Add(new MarketBuffer( - config.Interval * i - )); - } - - this.log = log; - } - - public MarketAverage[] GetAverages() - { - foreach (var b in buffers) b.Update(); - - return buffers.Select(b => b.GetAverage()).Where(a => a != null).Cast().ToArray(); - } - - public void OnNewRequest(RequestEvent requestEvent) - { - } - - public void OnRequestFinished(RequestEvent requestEvent) - { - foreach (var b in buffers) b.Add(requestEvent); - } - - public void OnRequestFulfilled(RequestEvent requestEvent) - { - } - - public void OnRequestCancelled(RequestEvent requestEvent) - { - } - - public void OnSlotFilled(RequestEvent requestEvent, EthAddress host, BigInteger slotIndex) - { - } - - public void OnSlotFreed(RequestEvent requestEvent, BigInteger slotIndex) - { - } - - private int[] GetInsightCounts(Configuration config) - { - try - { - var tokens = config.MarketInsights.Split(';').ToArray(); - return tokens.Select(t => Convert.ToInt32(t)).ToArray(); - } - catch (Exception ex) - { - log.Error($"Exception when parsing MarketInsights config parameters: {ex}"); - } - return Array.Empty(); - } - - public void OnRequestFailed(RequestEvent requestEvent) - { - throw new NotImplementedException("being removed"); - } - } -} diff --git a/Tools/TestNetRewarder/Processor.cs b/Tools/TestNetRewarder/Processor.cs index 1572335..d16075c 100644 --- a/Tools/TestNetRewarder/Processor.cs +++ b/Tools/TestNetRewarder/Processor.cs @@ -9,7 +9,6 @@ namespace TestNetRewarder { private readonly RequestBuilder builder; private readonly RewardChecker rewardChecker; - private readonly MarketTracker marketTracker; private readonly EventsFormatter eventsFormatter; private readonly ChainState chainState; private readonly BotClient client; @@ -22,12 +21,10 @@ namespace TestNetRewarder builder = new RequestBuilder(); rewardChecker = new RewardChecker(builder); - marketTracker = new MarketTracker(config, log); eventsFormatter = new EventsFormatter(); var handler = new ChainStateChangeHandlerMux( rewardChecker.Handler, - marketTracker, eventsFormatter ); @@ -40,10 +37,9 @@ namespace TestNetRewarder { chainState.Update(timeRange.To); - var averages = marketTracker.GetAverages(); var events = eventsFormatter.GetEvents(); - var request = builder.Build(averages, events); + var request = builder.Build(events); if (request.HasAny()) { await client.SendRewards(request); diff --git a/Tools/TestNetRewarder/RequestBuilder.cs b/Tools/TestNetRewarder/RequestBuilder.cs index ea06eaa..32b48fb 100644 --- a/Tools/TestNetRewarder/RequestBuilder.cs +++ b/Tools/TestNetRewarder/RequestBuilder.cs @@ -19,7 +19,7 @@ namespace TestNetRewarder } } - public GiveRewardsCommand Build(MarketAverage[] marketAverages, string[] lines) + public GiveRewardsCommand Build(string[] lines) { var result = new GiveRewardsCommand { @@ -28,7 +28,6 @@ namespace TestNetRewarder RewardId = p.Key, UserAddresses = p.Value.Select(v => v.Address).ToArray() }).ToArray(), - Averages = marketAverages, EventsOverview = lines };