Anthill: Private Mutable Key/Value Storage for Autonomi

Hey guys !

I want to talk about something I’m working on right now, it’s a CLI tool and a rust library to use autonomi’s scratchpad a bit like malloc does with the heap.

You can mutably store some key/values and later update them or delete them. The space is reserved in multiple scratchpads, increasing their amount when the storage is scarce. When deleting some key, it frees a block in the corresponding scratchpad that can be reused later for some similarly sized data or smaller.

The CLI tool can be used like this for simple key pairs:

$> anthill store my_key my_value

Or with pipes for files

$> cat ~/some_file | anthill store my_file 

Then you can list your keys

$> anthill list
Stored keys:
- my_file
Usage: 712KB / 4.00 MB (0.1%) - 1 scratchpads managed

Then you can fetch it again

$> anthill fetch my_file > /some/path

Or update it

# edit the file first then
$> cat my_updated_file | anthill update my_file

And finally delete it to free the space for some more data

$> anthill delete my_file

I have a fully working prototype on my local testnet, I still have to test this in the mainnet, but this could empower anybody to have unlimited mutable private key/value storage, as well as a handy API to implement hierarchical storage like for a FS (with the proper driver, we could directly mount that to the linux filesystem, but one step at a time…)

I don’t know if this is a good idea, or if the network is made to be used that way, so I’d love some feedback to know if I should pursue this idea or just leave it.

I’m actually cleaning the implementation and will probably have an alpha version to show to you in the next days :slight_smile:

EDIT: Oh and the most important, scratchpads are pay-once-use-forever. So once you have paid and grown you personal space, it is yours forever and you can use it as you like for free.

25 Likes

It’s a great idea in terms of exploring ways the network types can be used. Definitely worth exploring. What it is useful for will only become apparent when the cost and performance can be factored into applications.

It isn’t clear to me how Autonomi intend this type to be used or how they might try to control that. They might do things like adjust the cost and size but I’m just speculating.

It will be very interesting to see how this goes :+1:

10 Likes

I personally believe that unlimited free updates is a bit too OP if you want a healthy network. I was surprised even that this would be allowed.

I think all write operations should cost, as it mutates the network. Having a cost on write also offers an incentive for the node providers to keep doing their jobs, as it rewards them for hosting hot data.

I’m also very curious to see where this goes :slight_smile:

12 Likes

Most times you don’t want mutable space for storing data. Whether it’s music, movies, documents, you probably want them to stack, or at least have old versions saved as well. So I think people would use other types as well. And if you want data to be public, you also don’t use Scratchpad.


Check out the Dev Forum

5 Likes

And you are absolutely right, but for all the other cases for example where you want (private) volatile/ephemera data, or if you don’t want to waste your storage resources by uploading again and again that 3GB document with a corrected typo :stuck_out_tongue:

Again, totaly right, but you could also implement custom semi-public or private permissions inside a scratchpad if you need it by nesting them and encrypting their private key multiple time with each public key you want to give access to. IMO Scratchpads are one of the most powerful and volatile data type of the network

6 Likes

Sure! I didn’t want to say Scratchpad is not useful, but rather that despite its versatility, other types will still have their share :slight_smile:


Check out the Dev Forum

4 Likes

Versatility ! Thank you that was the word I was looking for :upside_down_face:

3 Likes

Hey guys !

I’m almost there, I’m doing a lot of performance improvements and safeguards and trying to craft the best possible tool for you :stuck_out_tongue:

I think I might be able to make the repo public tonight or tomorrow to find some beta testers, but I’ll add a disclaimer about not trying the mainnet for now.

Also, I was thinking of another name for that tool: MutAnt , for Mutable Ant. What do you think ? Do you have other ideas ?

Thank you :slight_smile:

EDIT: just to tease you a bit

7 Likes

6 Likes

Feel free to use if you like - or make your own /go with no/a different kind of logo =)

6 Likes

I do so I might ! Thank you :slight_smile:

5 Likes