The JavaScript library provides CyberConnect
class which includes functions to allows users to control their decentralized identity(DIDs) and social graph data. The library encapsulates the complex authentication logic (authenticate to Ceramic Network) into easy-to-use functions.
CyberConnect API.
npm install @cyberlab/cyberconnect
or
yarn add @cyberlab/cyberconnect
import CyberConnect, {
Env,
Blockchain,
} from '@cyberlab/cyberconnect';
const cyberConnect = new CyberConnect({
namespace: 'CyberConnect',
env: Env.Production,
chain: Blockchain.ETH,
provider: provider,
signingMessageEntity: 'CyberConnect' || your entity,
});
namespace
- Your applciation name.env
- (optional) Env decides the endpoints. Now we havestaging
andproduction
. (The default value isEnv.Production
).chain
- (optional) The blockchain you want to connect with. Now we supportethereum
andsolana
. (The default isBlockchain.ETH
).provider
- The corresponding provider of the given chain.signingMessageEntity
- (optional) Use to describe the entity users sign their message with. Users will see it when authorizing in the walletI authorize ${signingMessageEntity} from this device using signing key:
. The default entity isCyberConnect
.
See Solana for Solana demo.
The authenticate()
includes two signs for AuthProvider
and Capi10Link.
All users should sign for AuthProvider
every session.
Only first time users need to sign for Capi10Link
and it may takes 5-10 seconds.
Only authenticate once if call cyberconnect.authenticate()
multiple time.
You can run cyberconnect.authenticate()
somewhere before doing connect
to do the authentication first, then the user doesn't need to sign when calling connect
.
You can also call connect
directly, then the user have to sign during the function call.
await cyberConnect.authenticate();
cyberConnect.connect(targetAddr, alias, connectionType);
targetAddr
- The target wallet address to connect.alias
- (optional) Alias for the target address.connectionType
- (optional) The type of the connection. The default value isConnection.FOLLOW
. See Connection Type for more details.
cyberConnect.disconnect(targetAddr);
targetAddr
- The target wallet address to disconnect.
cyberConnect.batchConnect(targetAddrs, connectionType);
targetAddrs
- A list of wallet addresses to connect.connectionType
- (optional) The type of the connection. The default value isConnection.FOLLOW
. See Connection Type for more details.
cyberConnect.setAlias(targetAddr, alias);
targetAddr
- The target wallet address to disconnect.alias
- The alias for the target address.
You can create different types of connections for different purposes.
E.g: You can like a NFT by creating a "LIKE" connection from you to the NFT.
import { ConnectionType } from '@cyberlab/cyberconnect';
cyberConnect.connect(targetAddr, alias, ConnectionType.LIKE);
Those types we support: FOLLOW
, LIKE
, REPORT
, WATCH
and VOTE
Note: Only one type connection can be created from one to another, which means you can't create both "FOLLOW" connection and "LIKE" connection from you to "Ryan".
You can get Solana provider from @solana/wallet-adapter-react
import { useWallet } from '@solana/wallet-adapter-react';
const solanaProvider = useWallet();
Note: You need to pass chainRef
when you connect to Solana. Now we have three options: Solana.SOLANA_MAINNET_CHAIN_REF
, Solana.SOLANA_DEVNET_CHAIN_REF
and Solana.SOLANA_TESTNET_CHAIN_REF
import CyberConnect, {
Env,
Blockchain,
Solana,
} from 'npm install @cyberlab/cyberconnect';
const cyberConnect = new CyberConnect({
namespace: 'CyberConnect',
env: Env.Production,
chain: Blockchain.ETH,
provider: solanaProvider,
chainRef: Solana.SOLANA_MAINNET_CHAIN_REF,
});
We are happy to accept small and large contributions, feel free to make a suggestion or submit a pull request.