Skip to content

Commit 673e4fd

Browse files
committed
feat: Add misc section
1 parent da5eecb commit 673e4fd

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/protocol/proof-of-contribution.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,45 @@ struct RequestOrder
255255
bytes sign;
256256
}
257257
```
258+
259+
## Additional protocol concepts
260+
261+
### Tag
262+
263+
The tag specifies the need or the availability of features that go beyond the
264+
specifications of the category. The tag is a requirement when it is part of an
265+
app order, a dataset order or a requester order. On the other hand, the tag in
266+
the workerpool order expresses the availability of the corresponding features.
267+
268+
Tags are 32 bytes (256 bits) long array where each bit corresponds to a feature.
269+
270+
**Pre-defined tags:**
271+
272+
| **Value** | **Description** |
273+
| ------------------------------------------------------------------------------- | ---------------------- |
274+
| `0x0000000000000000000000000000000000000000000000000000000000000001` (`0b0001`) | TEE |
275+
| `0x0000000000000000000000000000000000000000000000000000000000000003` (`0b0011`) | TEE Scone |
276+
| `0x0000000000000000000000000000000000000000000000000000000000000005` (`0b0101`) | TEE Gramine |
277+
| `0x0000000000000000000000000000000000000000000000000000000000000009` (`0b1001`) | TEE TDX |
278+
279+
For orders matching, the worker pool order must enable all bits that enable in
280+
any of the app order, dataset order and requester order. Meaning that if the app
281+
order tag is `0x12 = 0x10 | 0x02`, the dataset order is `0x81 = 0x80 | 0x01` and
282+
the requester order is `0x03 = 0x02 | 0x01`, then the worker pool order must, at
283+
least, have a tag `0x93 = 0x80 | 0x10 | 0x02 | 0x01`.
284+
285+
### Reward kitty
286+
287+
When a task fails, the requester gets a refund and the scheduler loses its
288+
stake. In order to remove an attack vector, the requester does not get any of
289+
the seized stake. If this was a feature, anyone could build a flawed application
290+
that would not reach consensus to drain money from the scheduler. This would
291+
force the scheduler to whitelist all applications thus reducing the usability of
292+
the platform. Seized stake from the scheduler goes into a specific account
293+
called the _reward kitty_. No one controls this account, nor can withdraw from
294+
it. However, the tokens are not burned. Whenever a task finalizes, the scheduler
295+
that organized the execution of this task receives a reward by the requester and
296+
also gets a small part of the reward kitty.
297+
298+
As described in the protocol parameters section, this reward is
299+
`reward = kitty.percentage(KITTY_RATIO).max(KITTY_MIN).min(kitty)`.

0 commit comments

Comments
 (0)