# Store/Get

### Store/get operations

Once the DHT is formed, all participants can `dht.store` key-value pairs in the DHT and `dht.get` them by key:

```python
# first node: store a key-value pair for 600 seconds
store_ok = dht.store('my_key', ('i', 'love', 'hypertensor'),
                     expiration_time=get_dht_time() + 600)

# second node: get the value stored by the first node
value, expiration = dht2.get('my_key', latest=True)
assert value == ('i', 'love', 'hypertensor')
```

As you can see, each value in a subnet DHT is associated with an expiration time, computed current `get_dht_time()` with some offset. This expiration time is used to clean up old data and resolve write conflicts: DHT nodes always prefer values with a higher expiration time and may delete any value past its expiration.
