Kinto SDK is a JavaScript library that allows applications to connect to the Kinto Wallet. Kinto is an Ethereum Layer 2 (L2) solution designed to provide fast and cost-efficient transactions. This SDK provides methods to connect a Kinto Wallet, send transactions, and create new wallets.
The Kinto SDK has been designed with the following principles in mind:
-
No Dependencies: The SDK is built without external dependencies to minimize its size and maximize security. This ensures that it doesn't rely on any third-party libraries.
-
No UI: The SDK does not provide any user interface components. This allows app developers the flexibility to design their own UI and remain unopinionated about the user experience.
-
No Web3 Packages: The SDK is agnostic to specific Ethereum libraries. You can use any library you prefer, such as
viem
,ethers
, orweb3js
. The SDK itself doesn't require any of these packages.
You can install the Kinto SDK via npm:
npm install kinto-web-sdk
Before using the Kinto SDK, ensure you have completed the following steps:
-
Kinto Wallet: You need to have a Kinto wallet. Create an account by visiting Kinto Onboarding.
-
Developer Account: Create a developer account, deploy a contract, and create the application. Use your main contract address as the app address. Visit Kinto Developers to get started.
To use the Kinto SDK, you need to initialize it with your application's address.
import { createKintoSDK } from 'kinto-web-sdk';
const appAddress = 'your-app-address';
const kintoSDK = createKintoSDK(appAddress);
To connect to the Kinto Wallet, use the connect
method. This method opens a modal for the user to connect their wallet.
kintoSDK.connect()
.then((accountInfo) => {
console.log('Connected account info:', accountInfo);
})
.catch((error) => {
console.error('Failed to connect:', error);
});
To send transactions, use the sendTransaction
method. This method accepts an array of transaction objects.
const transactions = [
{
to: '0xRecipientAddress',
value: '1000000000000000000', // 1 ETH in wei`
data: '0x'
}
];
kintoSDK.sendTransaction(transactions)
.then((hash) => {
console.log('Transaction successful, hash:', hash);
})
.catch((error) => {
console.error('Transaction failed:', error);
});
To create a new wallet, use the createNewWallet
method. This method opens a popup for the user to create a new wallet in Kinto website. Alternatively, you can instruct users to visit Kinto to create an account.
kintoSDK.createNewWallet()
.then(() => {
console.log('New wallet created successfully');
})
.catch((error) => {
console.error('Failed to create new wallet:', error);
});
Starts a connection with a logged-in Kinto Wallet and returns the account information.
Returns: Promise<KintoAccountInfo>
Sends transactions through the Kinto Wallet.
txs
: An array of transaction objects.
Returns: Promise<void>
Opens a popup for the user to create a new wallet.
Returns: Promise<void>
export interface AppMetadata {
parent: `0x${string}`;
paymasterBalance: number;
tokenId: number;
dsaEnabled: boolean;
rateLimitPeriod: number;
rateLimitNumber: number;
gasLimitPeriod: number;
gasLimitCost: number;
name: string;
devEOAs: string[];
appContracts: string[];
}
export interface KintoAccountInfo {
exists: boolean;
approval?: boolean;
walletAddress?: `0x${string}`;
app: AppMetadata;
appKey?: `0x${string}`;
}
export interface TxCall {
to: `0x${string}`;
data: `0x${string}`;
value: bigint;
}
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
This project is licensed under the MIT License. See the LICENSE file for details.
For more information about Kinto, visit docs.kinto.xyz.