Quick Start
This page will specifically guide you through setting up a project using the Züs JS SDK. For detailed API documentation, please refer to the API Reference.
Install Züs JS SDK
The Züs JS SDK is available as a package on NPM for use with a module bundler:
- NPM
- Yarn
npm install @zerochain/sdk
yarn add @zerochain/sdk
Initialize the SDK
The SDK must be initialized before use. This process includes fetching the appropriate WASM file and then initializing the WASM.
Fetching the WASM
There are two WASM file types available, standard
and enterprise
.
-
Download the appropriate WASM file(s):
-
Upload your WASM file for
wasmBaseUrl
config:-
You can place it in your website’s static assets folder.
-
Example Folder Structure for Static Assets
public/
|--wasm/
| |--zcn.wasm
| |--enterprise-zcn.wasm - In this case, set the
wasmBaseUrl
config to/wasm
.
-
-
Alternatively, you can upload it to a web server or CDN.
- For example, if
wasmBaseUrl
is set tohttps://example.com/wasm
, the WASM files should be located at:https://example.com/wasm/enterprise-zcn.wasm
for the Enterprise WASMhttps://example.com/wasm/zcn.wasm
for the Standard WASM
- For example, if
-
-
Upload the
md5worker.js
file for themd5WorkerUrl
config:-
This is optional if you are not using upload features of the SDK. This includes using SDK methods like
multiUpload
andbulkUpload
. -
Place it in your website’s static assets folder:
Example Folder Structure for Static Assetspublic/
|--md5worker.js- In this case, set the
md5WorkerUrl
config tomd5worker.js
.
- In this case, set the
-
Alternatively, use the CDN URL for the
md5WorkerUrl
config.warningThis is strongly not recommended as it is used only in Zus apps like Vult, Blimp & Chalk and may change in the future, potentially breaking your app.
-
- React (JSX)
- Vanilla JS
import { useWasmLoader } from '@zerochain/sdk/dist/react'
export const App = () => {
const [isWasmLoaded, setIsWasmLoaded] = useState(false)
const loadWasm = useWasmLoader({
onLog: (type, log) => console[type]('WASM LOG:', log.message),
setIsWasmLoaded,
})
// Using useEffect to ensure the `window` object is accessible
useEffect(() => {
loadWasm({
md5WorkerUrl: 'md5worker.js',
wasmBaseUrl: '/wasm', // Or, 'https://example.com/wasm'
})
}, [loadWasm])
// ...
}
import { wasmLoader } from '@zerochain/sdk'
const loadWasm = wasmLoader({
onLog: (type, log) => console[type]('WASM LOG:', log.message),
setIsWasmLoaded: isWasmLoaded => updateMyUI(isWasmLoaded),
})
loadWasm({
md5WorkerUrl: 'md5worker.js',
wasmBaseUrl: '/wasm', // Or, 'https://example.com/wasm'
})
Fetching WASM with Caching Support
The SDK supports caching the WASM file for faster access. This is not enabled by default, but you can modify the loadWasm
config to enable it.
- Set
useCachedWasm
totrue
. - Configure
cacheConfig
based on your WASM file type:- For Enterprise WASM, set
enterpriseGosdkVersion
andenterpriseWasmUrl
. - For Standard WASM, set
standardGosdkVersion
andstandardWasmUrl
.
- For Enterprise WASM, set
- Optionally, set
wasmBaseUrl
as a fallback. (Reference)
loadWasm({
useCachedWasm: true,
cacheConfig: {
enterpriseGosdkVersion: process.env.EGOSDK_VERSION, // Example: '1.18.5'
enterpriseWasmUrl: process.env.EGOSDK_WASM_URL, // Example: 'https://example.com/wasm/enterprise-zcn.wasm'
standardGosdkVersion: process.env.GOSDK_VERSION, // Example: '1.18.17'
standardWasmUrl: process.env.GOSDK_WASM_URL, // Example: 'https://example.com/wasm/zcn.wasm'
},
// Set other options as needed
md5WorkerUrl: 'md5worker.js',
wasmBaseUrl: '/wasm', // Or, 'https://example.com/wasm'
});
Switching between WASM modes
The SDK provides updateWasmMode
for switching between WASM modes.
- First call
updateWasmMode
with the desired WASM mode. - Then call
loadWasm
with the proper config.
- React (TSX)
- TypeScript
import { useWasmLoader } from '@zerochain/sdk/dist/react'
import { updateWasmMode } from '@zerochain/sdk'
export const SwitchWasmMode = () => {
const loadWasm = useWasmLoader({ /** ... */})
const switchWasmMode = (newWasmMode: "normal" | "enterprise") => {
updateWasmMode(newWasmMode)
loadWasm({ /** Your loadWasm config */})
}
// ...
}
import { wasmLoader } from '@zerochain/sdk'
import { updateWasmMode } from '@zerochain/sdk'
const loadWasm = wasmLoader({ /** ... */})
const switchWasmMode = (newWasmMode: "normal" | "enterprise") => {
updateWasmMode(newWasmMode)
loadWasm({ /** Your loadWasm config */})
}
Next Steps
Now that the SDK is initialized, you can start using its methods in your application. Check out the API Reference.
Example: Logging the WASM version
import sdk from '@zerochain/sdk'
async function logWasmVersion() {
const version = await sdk.getGosdkVersion(domain)
console.log('WASM Version:', version)
}