Documentation about the Astral Protocol Core Package.
The @astralprotocol/core package is a Typescript NPM package that is responsible for any CRUD operations performed on the DID Documents. This includes the creation of DID Documents, loading the DID Documents, as well as updating them. The package also has utilities that enable the creation of the collision resistant GeoDID IDs, a custom **** did-resolver that enables DID Resolution, as well as pinning features for storing the Documents on IPFS or FFS. This package is meant to be used in conjunction with the @astralprotocol/contracts **** and @astralprotocol/subgraph **** packages. However, the package can also be used independently if the user does not want to rely on the Ethereum network.
This package is not responsible for persistence of the documents (mappings, etc.), the created DID Documents are persisted through IPFS/FFS, and the metadata regarding the DID Documents are persisted through the subgraph and smart contracts.
Set up a local Powergate Client
In order to store the GeoDIDs created by the core package, you will need to start up a local Powergate client or connect to an existing hosted client. Below will be a brief overview on how to setup a local Powergate client on your system. Further information is available at: https://github.com/textileio/powergate.
In order to setup the Powergate Client locally on your system you must have Docker, Docker-Compose, and Go 1.16 installed.
In your terminal, create a new directory and clone the Powergate repo into it:
git clone https://github.com/textileio/powergate.git
After you clone the repo, enter the following commands:
cd powergate/docker
make localnet
For more
information regarding Powergate's Localnet mode, please refer to their documentation: https://github.com/textileio/powergate#localnet-mode
Check an implementation of core package:
API for the @astralprotocol/core package
Creates a new AstralClient Instance to utilize the following functions.
new AstralClient(_ethAddress, _endpoint?);
Name | Type | Attributes | Description |
---|---|---|---|
Creates a GenesisGeoDID Document. This creates a new root node for the linked data structure.
async createGenesisGeoDID(_typeOfGeoDID: string): Promise<IDocumentInfo>{}
Type | Description |
---|---|
Creates a Child GeoDIDDocument. This creates a child node for an existing linked data structure.
async createChildGeoDID(_typeOfGeoDID: string, _parentID: string, _path: string): Promise<IDocumentInfo>{}
Name | Type | Attributes | Description |
---|---|---|---|
Type | Description |
---|---|
Pins the Document to IPFS or FFS via Powergate.
async pinDocument(_documentInfo: IDocumentInfo, _token?: string): Promise<IPinInfo>{}
Loads the Document by the DocID and the Powergate Auth token associated with it.
async loadDocument(_docId: string, _token: string): Promise<ILoadInfo>{}
Name | Type | Attributes | Description |
---|---|---|---|
Type | Description |
---|---|
Name | Type | Attribute | Description |
---|---|---|---|
Type | Description |
---|---|
_ethAddress
string
REQUIRED
The Ethereum Address of the user.
_endpoint
string
OPTIONAL
The Graph Endpoint. Already has a default value that can be overloaded with another endpoint.
Name
Type
Attributes
Description
_typeOfGeoDID
GeoDidType
REQUIRED
The type of Genesis GeoDID you want to create. OfType GeoDidType.
IDocumentInfo
Returns info regarding the Document Type, like the geodidid and the Document Itself.
_typeOfGeoDID
GeoDidType
REQUIRED
The type of Genesis GeoDID you want to create. OfType GeoDidType.
_parentID
string
REQUIRED
The Parent GeoDID ID of this new Child GeoDID
_path
string
REQUIRED
The path that will be appended to the Parent GeoDID ID
DocumentInfo
Returns information regarding the Document, like the GeoDID ID and the contents of the Document.
_documentInfo
IDocumentInfo
REQUIRED
The Info related to the Document that is required for pinning.
_token
string
OPTIONAL
The Auth Token of the Powergate Instance that you want to pin the document on. If you don't have one yet, the client will automatically create a new one for you and return it for you to save.
IPinInfo
Returns information regarding the Pin, like the GeoDID ID, cid, Powergate Auth token, and the pinDate.
_docId
string
REQUIRED
The GeoDID id of the DID Document.
_token
string
REQUIRED
The Auth Token for the Powergate Instance that the Document in stored on.
ILoadInfo
Returns information regarding the Load, like the DocumentInfo as well as the Powergate Instance that the Document was pinned on.