@zktx/sui-passkey-kit
Installation
bash
npm install @zktx/sui-passkey-kit
bash
yarn add @zktx/sui-passkey-kit
Usage
tsx
import { SuiClientProvider, WalletProvider } from "@mysten/dapp-kit";
import { getFullnodeUrl } from "@mysten/sui/client";
import { SuiPasskey } from "@zktx/sui-passkey-kit";
function App() {
const NETWORK = "testnet";
return (
<SuiPasskey network={NETWORK}>
<SuiClientProvider
networks={{
testnet: { url: getFullnodeUrl("testnet") },
devnet: { url: getFullnodeUrl("devnet") },
}}
defaultNetwork={NETWORK}
>
<WalletProvider>{/* Your App Components Here */}</WalletProvider>
</SuiClientProvider>
</SuiPasskey>
);
}
export default App;
SuiPasskey Props
network
: Mainnet, Testnet, and Devnet.
SuiPasskey Hooks
useSuiPasskey
typescript
import { useDisconnectWallet } from '@mysten/dapp-kit';
import { useSuiPasskey } from '@zktx.io/sui-passkey-kit';
export const Home = () => {
const { mutate: disconnect } = useDisconnectWallet();
const { read, write, reset } = useSuiPasskey();
const handleLoad = () => {
console.log(read());
/*
{
rp: {
name: 'localhost',
id: 'localhost',
},
user: {
name: '...',
displayName: 'Sui Passkey',
},
credentialId: '...',
publicKey: '...',
}
*/
}
const handleWrite = () => {
write({
rp: {
name: 'localhost',
id: 'localhost',
},
user: {
name: '...',
displayName: 'Sui Passkey',
},
credentialId: '...',
publicKey: '...',
})
disconnect();
}
const handleReset = () => {
reset();
disconnect();
}
const handleDisconnect = () => {
disconnect();
}
return <>
<div>
<button onClick={handleLoad}>Read Data</button>
<button onClick={handleWrite}>Write Data</button>
<button onClick={handleReset}>Reset Data</button>
<button onClick={handleDisconnect}>Disconnect</button>
</div>
</>
}
This hook provides methods to manage Passkey data:
read()
: Retrieves the stored Passkey data, including the public key and credential details.write(data)
: Stores Passkey data locally. Ensure the public key is securely stored; overwriting or deleting this key makes recovery impossible.reset()
: Permanently clears all stored Passkey data. Executing this action deletes the data irreversibly.
Important Security Considerations
- Executing
reset()
permanently deletes stored Passkey data. - Always securely store and back up the public key obtained at the initial creation of the passkey to prevent irreversible loss.
The Sui Passkey Provider facilitates a secure and user-friendly Web3 experience while ensuring proper key management practices.