~/.sui/sui_config/client.yaml
- the Sui client configuration file.
~/.sui/sui_config/sui.keystore
- The Sui keystore file (contains your private key(s)).
0xfa971724b5fb14c2ffc9a959b81cce4d85d457da27e29f793e12428ed71bb922
0xe0b1d6458f349d4bc71ef119694866f1d6ee6915b43f8cc05a5d44a49e3e1f0f
0xa1ec7fc00a6f40db9693ad1415d0c193ad3906494428cf252621037bd7117e29
USDC
for payments. In order to start interacting with the Atoma contract, you need to request USDC
tokens to your (local) active Sui wallet.
In order to do so, you can request Sui testnet USDC
tokens to your (local) active Sui wallet, via the url:
USDC
tokens you currently hold on your wallet:
USDC
uses 6 decimal places, which means that to 1 USDC
is represented logically on the Sui blockchain through an amount of 1000000
.
Task
is assigned a role. Roles can be one of the following values:
Task
on Atoma, specify a model (following HuggingFace name convention), for example:
model-name: meta-llama/Llama-3.3-70B-Instruct
You can specify an optional Security level
for the Task
:
Sampling Consensus
to be executed, allowing for verifiable AI through crypto-economics guarantees).
Task
creator can also specify a minimum node reputation score (minimum 0 and maximum 100).
In the current testnet version, Task
s can only be spawned by the administrator of the Atoma contract. In the future, tasks will be part of Atoma’s governance protocol. Moreover,
tasks can either be public or private. Public tasks can be subscribed by any node on the network (more below), whereas private tasks can only be subscribed by nodes that have been granted access by the administrator,
that is, that have been whitelisted by the administrator.
In order to submit to create a Task, using Atoma’s cli, one simply needs to run:
TaskSmallId
is a wrapper around a u64
number
TASK_BADGE_ID
value is the id within TaskBadge
that can be accessed by querying the wallet owned objects.
NodeBadge
object of the form:
NodeSmallId
is a wrapper around a u64
number
price-per-one-million-compute-units
is the price to which the node is willing to be paid for 1 million compute units. More concretely, in the example above, if task-small-id
1 is a Chat completions
task,
say for meta-llama/Llama-3.3-70B-Instruct
, then the subscribed node is charging a price of 1 USDC
for 1 million (LLM) tokens for the model meta-llama/Llama-3.3-70B-Instruct
.
Stack
s associated to a specific Task
. In order to buy a Stack
, one just needs to run the command:
price
is the price per one million compute units to which the user is willing to pay for. In the example above, assuming that task-small-id
1 refers to a Chat completions
task,
under the meta-llama/Llama-3.3-70B-Instruct
model, then the user is willing to pay 1 USDC
for 1 million compute units (that is, 1 million LLM tokens, roughly words).
Once the Stack
is acquired by the wallet, the wallet will hold a StackBadge
object of the form:
Stack
. The StackSmallId
is a wrapper around a u64
, which can be used to refer to the Stack
later, as we shall see.
Stack
, the nodes can try to settle the Stack
and claim the funds for having provided the compute to the holder of the Stack.
The first step to settle a Stack
is by trying to settle the stack:
committed-stack-proof
and stack-merkle-leaf
can be computed as the Merkle tree root and leaf index corresponding to the whole Stack
history.
In practice, node operators do not need to compute these values themselves, as this is completed addressed within the Atoma node daemon logic.
Once the transaction goes through, a dispute challenge window for the Stack
execution starts, which lasts for two epochs. Within those epochs anyone can dispute the Stack
settlement,
including user holding the original Stack
. Additionally, the Atoma contract can select one or more nodes to attest to the right execution from the original selected node for the Stack
This is relevant, and only required, for our Sampling Consensus protocol. If no security or confidential compute security are associated to the Stack
, then the contract skips this step.
If a node is selected to attest a Stack
execution, it needs to fetch the Stack’s input data, and redo the whole history of execution (that is, running AI inference on the whole stack requests). Once that is done, the node can attest the execution by submitting an on-chain transaction as:
Stack
, the node can finally claim its funds by running the command: