Installation
The Datil-test and Datil-dev testnets are now live and are superseding the Manzano and Cayenne testnet respectively.
The Datil mainnet is now live and superseding the Habanero mainnet, ready to store real world assets.
Check out the migration docs to learn how you can start building on the Datil networks today.
Ensure you have the following requirements in place:
- Operating System: Linux, Mac OS, or Windows.
- Development Environment: You'll need an Integrated Development Environment (IDE) installed. We recommend Visual Studio Code.
- Languages: The Lit JS SDK supports JavaScript. Make sure you have the appropriate language environment set up.
- Internet Connection: A stable internet connection is required for installation, updates, and interacting with the Lit nodes.
Installing And Importing The SDK
- general
- server side with nodejs
Install the @lit-protocol/lit-node-client
package, which can be used in both browser and Node environments:
yarn add @lit-protocol/lit-node-client
Use the Lit JS SDK:
import * as LitJsSdk from "@lit-protocol/lit-node-client";
Install the @lit-protocol/lit-node-client-nodejs
, which is for Node environments only:
yarn add @lit-protocol/lit-node-client-nodejs
Use the Lit JS SDK:
import * as LitJsSdk from "@lit-protocol/lit-node-client-nodejs";
You should use at least Node v19.9.0 because of the need for crypto support.
Connection to the Lit Network
The SDK requires an active connection to the Lit nodes to perform most functions (notably, a connection to the Lit nodes is not required if you are just verifying a JWT).
In web apps, this is typically done on first page load and can be shared between all your pages. In NodeJS apps, this is done when when the server starts.
Calling connect()
on the litNodeClient
returns a promise that resolves when you are connected to the Lit network.
SDK installed via NodeJS / serverside usage
In this example stub, the litNodeClient is stored in a global variable app.locals.litNodeClient
so that it can be used throughout the server. app.locals
is provided by Express for this purpose. You may have to use what your own server framework provides for this purpose, instead.
Keep in mind that in the server-side implementation, the client class is named
LitNodeClientNodeJs
.
app.locals.litNodeClient.connect()
returns a promise that resolves when you are connected to the Lit network.
import { LIT_NETWORK } from "@lit-protocol/constants";
app.locals.litNodeClient = new LitJsSdk.LitNodeClientNodeJs({
alertWhenUnauthorized: false,
litNetwork: LIT_NETWORK.Datil,
});
await app.locals.litNodeClient.connect();
The litNodeClient listens to network state, and those listeners will keep your Node.js process running until you explicitly disconnect from the Lit network. To stop the litNodeClient listeners and allow node to exit gracefully, call:
await app.locals.litNodeClient.disconnect();
SDK installed for client side usage
Within a file (in the Lit example repos it will likely be called lit.js
), set up your Lit object.
client.connect()
will return a promise that resolves when you are connected to the Lit Network.
import { LIT_NETWORK } from "@lit-protocol/constants";
const client = new LitJsSdk.LitNodeClient({
litNetwork: LIT_NETWORK.Datil,
});
await client.connect();
To avoid errors from Lit nodes due to stale authSig
, make sure to clear the local storage for authSig
before reconnecting or restarting the client. One way to do this is to disconnect the client first and then reconnect.
The client listens to network state, and those listeners will keep your client running until you explicitly disconnect from the Lit network. To stop the client listeners and allow the browser to disconnect gracefully, call:
await client.disconnect();
Debug Logging and Lit Node Client configuration
The LitNodeClient
object has a number of config params you can pass, documented here: API Docs
For example, to turn off logging, you could set debug
to false
like this: const client = new LitJsSdk.LitNodeClient({debug: false})
Not finding the answer you're looking for? Share your feedback on these docs by creating an issue in our GitHub Issues and Reports repository or get support by visiting our Support page.