Exit util
matic.js
internally use ExitUtil
for generating proofs. It is a class which has different methods for helping with exit utilities.
buildPayloadForExit¶
It exposes buildPayloadForExit
method which can be used to generate proof.
import { ExitUtil, RootChain, use, Web3SideChainClient } from "@maticnetwork/maticjs";
import { Web3ClientPlugin } from "@maticnetwork/maticjs-web3";
import HDWalletProvider from "@truffle/hdwallet-provider";
import { from, privateKey, RPC } from "./config";
use(Web3ClientPlugin);
const client = new Web3SideChainClient<any>();
// initiate client
await client.init({
// log: true,
network: 'testnet',
version: 'amoy',
parent: {
provider: new HDWalletProvider(privateKey, RPC.parent),
defaultConfig: {
from
}
},
child: {
provider: new HDWalletProvider(privateKey, RPC.child),
defaultConfig: {
from
}
}
});
// create root chain instance
const rootChain = new RootChain(client, <root chain address>);
// create exitUtil Instance
const exitUtil = new ExitUtil(client, rootChain);
// generate proof
const proof = await exitUtil.buildPayloadForExit(
<burn tx hash>,
<log event signature>,
<isFast>
)
Generating proof using a bridge client¶
Every bridge client, including POSClient
exposes the exitUtil
property.
import { POSClient,use } from "@maticnetwork/maticjs"
import { Web3ClientPlugin } from '@maticnetwork/maticjs-web3'
import HDWalletProvider from "@truffle/hdwallet-provider"
// install web3 plugin
use(Web3ClientPlugin);
const posClient = new POSClient();
await posClient.init({
network: 'testnet',
version: 'amoy',
parent: {
provider: new HDWalletProvider(privateKey, mainRPC),
defaultConfig: {
from : fromAddress
}
},
child: {
provider: new HDWalletProvider(privateKey, childRPC),
defaultConfig: {
from : fromAddress
}
}
});
const proof = await posClient.exitUtil.buildPayloadForExit(
<burn tx hash>,
<log event signature>,
<isFast>
)