Skip to content

Scoring & Admin

Score a data submission against target models. The scoring service downloads model weights and data, runs inference, and returns the results.

async def score(
data_url: str,
models: list[ModelManifest],
target_embedding: list[float],
data: Optional[bytes] = None,
data_checksum: Optional[str] = None,
data_size: Optional[int] = None,
seed: int = 0,
) -> ScoreResult
ParameterTypeRequiredDefaultDescription
data_urlstrYesURL of the submission data
modelslist[ModelManifest]YesModel manifests to score against
target_embeddinglist[float]YesTarget’s embedding vector
databytesNoNoneRaw data (alternative to URL fetch)
data_checksumstrNoNoneExpected data checksum
data_sizeintNoNoneExpected data size
seedintNo0Random seed for reproducibility

Returns: ScoreResult

targets = await client.get_targets(status="open", limit=1)
target = targets[0]
manifests = await client.get_model_manifests(target)
result = await client.score(
data_url="https://storage.example.com/data.bin",
models=manifests,
target_embedding=target.embedding,
)
print(f"Winner: model {result.winner}, distances: {result.distance}")

Check if the scoring service is healthy.

async def scoring_health() -> bool

Returns: boolTrue if the service is reachable

Force-advance the epoch (admin/localnet only).

async def advance_epoch() -> int

Returns: int — the new epoch number

Request test tokens for an address.

async def request_faucet(address: str) -> FaucetResponse
ParameterTypeRequiredDefaultDescription
addressstrYesSOMA address to fund

Returns: FaucetResponse

response = await client.request_faucet(kp.address())
print(f"Status: {response.status}")
for coin in response.coins_sent:
print(f" {coin.id}: {coin.amount} shannons")

Download model weights from the validator proxy network.

async def fetch_model(model_id: str) -> bytes
ParameterTypeRequiredDefaultDescription
model_idstrYesModel object ID

Returns: bytes — raw (encrypted) model weights

Download submission data for a filled target from the validator proxy network.

async def fetch_submission_data(target_id: str) -> bytes
ParameterTypeRequiredDefaultDescription
target_idstrYesTarget object ID

Returns: bytes — raw submission data

Commit a new model in a single call. Handles commitment computation, transaction building, signing, and execution.

async def commit_model(
signer: Keypair,
weights_url: str,
encrypted_weights: bytes,
commission_rate: int,
stake_amount: Optional[int] = None,
) -> str
ParameterTypeRequiredDefaultDescription
signerKeypairYesKeypair to sign the transaction
weights_urlstrYesURL where encrypted weights will be hosted
encrypted_weightsbytesYesEncrypted model weights
commission_rateintYesCommission rate in basis points
stake_amountintNoNoneStake in shannons (uses minimum if omitted)

Returns: str — the assigned model ID

Reveal a previously committed model.

async def reveal_model(
signer: Keypair,
model_id: str,
weights_url: str,
encrypted_weights: bytes,
decryption_key: str,
embedding: list[float],
) -> None
ParameterTypeRequiredDefaultDescription
signerKeypairYesKeypair to sign
model_idstrYesModel ID from commit step
weights_urlstrYesURL of encrypted weights
encrypted_weightsbytesYesEncrypted weights (for checksum)
decryption_keystrYesHex AES-256 decryption key
embeddinglist[float]YesModel embedding vector

Submit data to fill a target.

async def submit_data(
signer: Keypair,
target_id: str,
data: bytes,
data_url: str,
model_id: str,
embedding: list[float],
distance_score: float,
) -> None
ParameterTypeRequiredDefaultDescription
signerKeypairYesKeypair to sign
target_idstrYesTarget to submit to
databytesYesRaw submission data
data_urlstrYesURL where data is hosted
model_idstrYesModel used for scoring
embeddinglist[float]YesData embedding vector
distance_scorefloatYesDistance score (must be ≤ target threshold)

Claim rewards from a filled target.

async def claim_rewards(
signer: Keypair,
target_id: str,
) -> None
ParameterTypeRequiredDefaultDescription
signerKeypairYesKeypair to sign
target_idstrYesTarget to claim from