Build a web application
Using a template
fhevmjs is working out of the box and we recommend you to use it. We also provide three GitHub templates to start your project with everything set.
React + TypeScript
You can use this template to start an application with fhevmjs, using Vite + React + TypeScript.
VueJS + TypeScript
You can also use this template to start an application with fhevmjs, using Vite + Vue + TypeScript.
NextJS + Typescript
You can also use this template to start an application with fhevmjs, using Next + TypeScript.
Using directly the library
First, you need to install the library.
# Using npm
npm install fhevmjs
# Using Yarn
yarn add fhevmjs
# Using pnpm
pnpm add fhevmjsfhevmjs uses ESM format. You need to set the type to "module" in your package.json. If your node project use "type": "commonjs" or no type, you can force the loading of the web version by using import { createInstance } from 'fhevmjs/web';
To use the library in your project, you need to load the WASM of TFHE first with initFhevm.
import { initFhevm } from "fhevmjs";
const init = async () => {
await initFhevm(); // Load needed WASM
};Once the WASM is loaded, you can now create an instance. An instance receives an object containing:
chainId(optional): the chainId of the networknetwork(optional): the Eip1193 object provided bywindow.ethereum(used to fetch the public key and/or chain id)networkUrl(optional): the URL of the network (used to fetch the public key and/or chain id)publicKey(optional): if the public key has been fetched separately (cache), you can provide itgatewayUrl(optional): the URL of the gateway to retrieve a reencryptioncoprocessorUrl(optional): the URL of the coprocessor
import { initFhevm, createInstance } from "fhevmjs";
const init = async () => {
await initFhevm(); // Load TFHE
return createInstance({
network: window.ethereum,
gatewayUrl: "https://gateway.zama.ai/",
});
};
init().then((instance) => {
console.log(instance);
});You can now use your instance to encrypt parameters or do a reencryption.
Last updated
Was this helpful?