From 1652956786d73f020de534e935126c64c04eebd9 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 14 Sep 2016 20:21:01 -0400 Subject: Reduce number of buckets in rate limiter, avoiding ones with very low proof of work. This got out of whack when sections were converted to rationals; there were buckets that needed trivial proofs of work, and having these extra buckets increased the total possible throughput. --- CHANGELOG | 7 +++++++ HTTP/ProofOfWork.hs | 2 +- Types/Cost.hs | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7313d5e..6ad3e62 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,10 @@ +keysafe (0.20160915) UNRELEASED; urgency=medium + + * Reduce number of buckets in rate limiter, avoiding ones with very low + proof of work. + + -- Joey Hess Wed, 14 Sep 2016 20:19:43 -0400 + keysafe (0.20160914) unstable; urgency=medium * Fix bug that prevented keysafe --server from running when there was no diff --git a/HTTP/ProofOfWork.hs b/HTTP/ProofOfWork.hs index 35b5ffd..39073b9 100644 --- a/HTTP/ProofOfWork.hs +++ b/HTTP/ProofOfWork.hs @@ -86,7 +86,7 @@ generationTime req = mkProofOfWorkRequirement :: Seconds -> Maybe (RequestID -> ProofOfWorkRequirement) mkProofOfWorkRequirement (Seconds n) - | lz < 1 = Nothing + | lz < 1 || n <= 1 = Nothing | otherwise = Just $ ProofOfWorkRequirement lz its where lz = floor (logBase 2 (fromRational (max 1 (n / s))) :: Double) diff --git a/Types/Cost.hs b/Types/Cost.hs index 474db43..08f98eb 100644 --- a/Types/Cost.hs +++ b/Types/Cost.hs @@ -14,7 +14,10 @@ data Cost op deriving (Show, Eq, Ord) newtype Seconds = Seconds Rational - deriving (Num, Fractional, Eq, Ord, Show) + deriving (Num, Fractional, Eq, Ord) + +instance Show Seconds where + show (Seconds n) = show (fromRational n :: Double) ++ "s" -- | How many CPU cores a single run of an operation can be divided amoung. newtype Divisibility = Divisibility Integer -- cgit v1.2.3