Identity (Viem/Wagmi)
For a live demo of the identity integration (using development identity contracts), visit: Demo Identity App
Contracts
production: {
celo: "https://celoscan.io/address/0xC361A6E67822a0EDc17D899227dd9FC50BD62F42",
fuse: "https://explorer.fuse.io/address/0x2F9C28de9e6d44b71B91b8BA337A5D82e308E7BE",
},
staging: {
celo: "https://celoscan.io/address/0x0108BBc09772973aC27983Fc17c7D82D8e87ef4D",
fuse: "https://explorer.fuse.io/address/0xb0cD4828Cc90C5BC28f4920Adf2Fd8F025003D7E",
},
development: {
celo: "https://celoscan.io/address/0xF25fA0D4896271228193E782831F6f3CFCcF169C",
fuse: "https://explorer.fuse.io/address/0x1e006225cff7d37411db28f652e0Da9D20325eBb",
}
Installation
To integrate identity-sdk
into your project, you can easily install it from npm:
npm install @goodsdks/citizen-sdk
or if you prefer using Yarn:
yarn add @goodsdks/citizen-sdk
Available Methods in the Identity SDK:
getWhitelistedRoot(account: Address): Promise<{ isWhitelisted: boolean; root: Address }>
getIdentityExpiryData(account: Address): Promise<IdentityExpiryData>
generateFVLink(popupMode?: boolean, callbackUrl?: string, chainId?: number): Promise<string>
submitAndWait(params: SimulateContractParameters, onHash?: (hash:
0x${string}) => void): Promise<any>
calculateIdentityExpiry(lastAuthenticated: bigint, authPeriod: bigint): IdentityExpiry
Using the Wagmi SDK
The Identity SDK is built on top of Wagmi
and provides a React hook for interacting with the Identity smart contracts. It abstracts the complexity of blockchain interactions, making it easier to integrate identity functionalities into your React applications.
Initialization
First, ensure that you have set up Wagmi
in your React application. Then, import and use the useIdentitySDK
hook as shown below.
import React from 'react';
import { WagmiProvider } from 'wagmi';
import { useIdentitySDK } from '@goodsdks/citizen-sdk';
const IdentityComponent = () => {
const identitySDK = useIdentitySDK('production');
const checkWhitelistedRoot = async (account: string) => {
try {
const { isWhitelisted, root } = await identitySDK.getWhitelistedRoot(account);
console.log(`Is Whitelisted: ${isWhitelisted}, Root: ${root}`);
} catch (error) {
console.error(error);
}
};
return (
<div>
<button onClick={() => checkWhitelistedRoot('0xYourEthereumAddress')}>
Check Whitelisted Root
</button>
</div>
);
};
const App = () => (
<WagmiProvider>
<IdentityComponent />
</WagmiProvider>
);
Using the Viem SDK
The Viem SDK provides a set of utility functions to interact directly with the Identity smart contracts. It is suitable for backend services or environments where React is not used.
Initialization
import { PublicClient, WalletClient } from "viem"
import { initializeIdentityContract, IdentitySDK } from "./viem-sdk"
const publicClient = new PublicClient({
/* configuration */
})
const walletClient = new WalletClient({
/* configuration */
})
const contractAddress = "0xYourContractAddress"
const identitySDK = new IdentitySDK(publicClient, walletClient, "production")
References
Last updated
Was this helpful?