diff --git a/.gitignore b/.gitignore index bb5c8d5..3ddc0ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# keys +*.pem + .DS_Store .ruff_cache .vscode diff --git a/storb/constants.py b/storb/constants.py index 2b246db..2783802 100644 --- a/storb/constants.py +++ b/storb/constants.py @@ -13,6 +13,9 @@ PIECE_LENGTH_SCALING = 0.5 PIECE_LENGTH_OFFSET = 8.39 +# Scaling factor for scoring +SCORE_SCALING = 1000 + MAX_UPLOAD_SIZE = 1 * 1024 * 1024 * 1024 * 1024 # 1 TiB # Error correction encoding parameters diff --git a/storb/validator/reward.py b/storb/validator/reward.py index be68e47..d32f345 100644 --- a/storb/validator/reward.py +++ b/storb/validator/reward.py @@ -1,5 +1,7 @@ import numpy as np +from storb.constants import SCORE_SCALING + def get_response_rate_scores( self, @@ -28,9 +30,22 @@ def get_response_rate_scores( uids.append(uid) ret_attempts = max(miner_stats.get("retrieval_attempts", 1), 1) store_attempts = max(miner_stats.get("store_attempts", 1), 1) - retrieval_rate = abs(miner_stats.get("retrieval_successes", 0) / ret_attempts) - store_rate = abs(miner_stats.get("store_successes", 0) / store_attempts) - weighted_rate_sum = (retrieval_rate / 2) + (store_rate / 2) + retrieval_success_rate = abs( + miner_stats.get("retrieval_successes", 0) / ret_attempts + ) + store_success_rate = abs(miner_stats.get("store_successes", 0) / store_attempts) + + retrieval_rate_score = (ret_attempts / SCORE_SCALING) * np.log( + retrieval_success_rate + ) + 1 + store_rate_score = (store_attempts / SCORE_SCALING) * np.log( + store_success_rate + ) + 1 + + retrieval_rate_score = np.clip(retrieval_rate_score, 0, 1) + store_rate_score = np.clip(store_rate_score, 0, 1) + + weighted_rate_sum = (retrieval_rate_score / 2) + (store_rate_score / 2) weighted_rate_sums.append(weighted_rate_sum) uids = np.array(uids)