How to upload own profiles with the CLI to Blockstack's storage providers?

There are some storage provider where my profile data could lay. For profiles from, there’s for default a AWS bucket, and so on.

I use Blockstack completely in the CLI. Is it somehow possible to use these providers from the CLI? For example with blockstack upload_profile <storage provider> <id> <profile>?

I know there are some sub commands like set_profile, pub_mutable, ... but I could understand exactly the differences of these and whether somebody matches my case.


1 Like

Hi @vsund,

The put_mutable command is a primitive way for signing and storing data in external storage providers. It uses the storage providers specified in your client.ini under storage_providers=. There currently isn’t a way to override them from the CLI, but I can add that in.

The set_profile command is used for signing and replicating a profile.json file pointed to by your zone file. It actually calls the same methods as put_mutable under the hood. Similarly, it only replicates data to storage providers for which you have specified a storage driver in the config file. If you don’t have a storage driver for the provider (like with a Github gist), you would instead use sign_profile to create a signed profile, and then replicate the signed profile manually.

In 0.14.1, we’re introducing the concept of a datastore to address this concern. You’ll be able to create as many datastores as you like, and fill them with whatever data you want. Each datastore will use a sub-key generated from your data key, and it will use a specific set of storage providers for replicating its data that you specify on creation. You’ll be able to explicitly override which storage provider(s) to use when you upload data. Unlike get_mutable and put_mutable, datastores are hierarchical like filesystems, so you can do things like list or remove collections of data.

1 Like

Does pub_mutable generate a zone file with the providers it used? Or how do I know where I could link to in my zone file?

In 0.14, put_mutable will insert pointers to the data into your profile.json. get_mutable will first fetch your profile, find the datum in the profile, and then fetch and authenticate the data from the pointers.

This is going to be removed in 0.14.1, and will be replaced with datastores (which do not modify the profile.json).

1 Like