# Building your Score

The top 32 (as of September 19, 2025) node scores of each epoch enter into the validator list for the next epoch. Validators that are already in the current epoch and make it to the next epoch receive emissions.\
\
Validators who made top 32 but drop out in next epoch receive no emissions, we are currently thinking about how to make this more forgiving to encourage adoption and lower validator risk. If you have suggestions please share.\
\
To build your score you need to produce solutions that are seeded with your validators key. The current protocol level parse of the seed is here <https://github.com/amadeus-robot/node/blob/main/ex/lib/bic/sol.ex> and as of September 19, 2025 its built like so:

```elixir
<<
  epoch::32-little, 
  segment_vr_hash::32-binary,
  node_pk::48-binary,
  node_pop::96-binary,
  solver_pk::48-binary,         # (optional) hint who solved the sol
  nonce::12-binary
>>

seed = <<
  Consensus.chain_epoch()::32-little, 
  Consensus.chain_segment_vr_hash()::32-binary,
  Application.fetch_env!(:ama, :trainer_pk)::48-binary, 
  Application.fetch_env!(:ama, :trainer_pop)::96-binary,
  Application.fetch_env!(:ama, :trainer_pk)::48-binary,
  :crypto.strong_rand_bytes(12)::12-binary
>>

b = Blake3.new()
Blake3.update(b, seed)
<<
   matrix_a::binary-size(16*50240),
   matrix_b::binary-size(50240*16)
>> = Blake3.finalize_xof(b, 16*50240 + 50240*16)
c = MatrixMul.multiply(matrix_a, matrix_b) |> MatrixMul.map_to_binary()
solution = seed <> c

diff_bits = Consensus.chain_diff_bits()
<<leading_zeros::size(diff_bits), _::bitstring>> = hash = Blake3.hash(solution)
if leading_zeros == 0 do
  IO.puts "congratulations, broadcast this now to the network to increase score"
  tx_packed = TX.build(Application.fetch_env!(:ama, :trainer_sk), 
    "Epoch", "submit_sol", [solution])
  TXPool.insert_and_broadcast(tx_packed)
end
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ama.one/validator/building-your-score.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
