From ea5d145dd93f34edb7e1d3d0d28fd68d6e29b690 Mon Sep 17 00:00:00 2001 From: ThatBen Date: Mon, 5 May 2025 18:15:16 +0200 Subject: [PATCH] randomizes durability properties --- Tools/AutoClient/CodexWrapper.cs | 24 +++++++++++++++++++++--- Tools/AutoClient/LoadBalancer.cs | 4 +++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Tools/AutoClient/CodexWrapper.cs b/Tools/AutoClient/CodexWrapper.cs index 02fcca3e..5e602d2f 100644 --- a/Tools/AutoClient/CodexWrapper.cs +++ b/Tools/AutoClient/CodexWrapper.cs @@ -24,15 +24,16 @@ namespace AutoClient public IStoragePurchaseContract RequestStorage(ContentId cid) { + var (nodes, tolerance) = GetDurability(); var result = Node.Marketplace.RequestStorage(new StoragePurchaseRequest(cid) { CollateralPerByte = app.Config.CollateralPerByte.TstWei(), Duration = GetDuration(), Expiry = TimeSpan.FromMinutes(app.Config.ContractExpiryMinutes), - MinRequiredNumberOfNodes = Convert.ToUInt32(app.Config.NumHosts), - NodeFailureTolerance = Convert.ToUInt32(app.Config.HostTolerance), + MinRequiredNumberOfNodes = nodes, + NodeFailureTolerance = tolerance, PricePerBytePerSecond = GetPricePerBytePerSecond(), - ProofProbability = 15 + ProofProbability = GetProofProbability() }); return result; } @@ -61,5 +62,22 @@ namespace AutoClient return TimeSpan.FromMinutes(i); } + + private (uint, uint) GetDurability() + { + (uint, uint)[] options = [ + (4, 2), + (5, 2), + (10, 5), + (20, 10) + ]; + + return options[r.Next(0, options.Length)]; + } + + private int GetProofProbability() + { + return r.Next(10, 100); + } } } diff --git a/Tools/AutoClient/LoadBalancer.cs b/Tools/AutoClient/LoadBalancer.cs index 89c1056b..750842db 100644 --- a/Tools/AutoClient/LoadBalancer.cs +++ b/Tools/AutoClient/LoadBalancer.cs @@ -44,9 +44,11 @@ namespace AutoClient public void Queue(Action action) { if (queue.Count > 2) log.Log("Queue full. Waiting..."); + var sleep = 0.1; while (queue.Count > 2) { - Thread.Sleep(TimeSpan.FromSeconds(1.0)); + Thread.Sleep(TimeSpan.FromSeconds(sleep)); + sleep *= 2.0; } lock (queueLock)