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 fhevmjs
fhevmjs
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?