Juicerkle generates claims and merkle proofs for nana-suckers. For a full walkthrough, see Bridging in Juicebox v4.
To run Juicerkle, you'll need to have a working installation of Go v1.22 or greater.
To configure your server, copy the example config file and add any chains you'd like to support:
# copy the file
cp example.config.json config.json
# edit the file
vim config.jsonThen you can build the binary with go build and run ./juicerkle. It will start a server on http://localhost:8080 by default. To run Juicerkle on a different port, set the PORT environment variable.
To get a proof from Juicerkle, send a POST request to /claims with a specification in the following format:
| Field | JS Type | Description |
|---|---|---|
chainId |
int |
The network ID for the sucker contract being claimed from. |
sucker |
string |
The address of the sucker being claimed from. |
token |
string |
The address of the terminalToken whose inbox tree is being claimed from. |
beneficiary |
string |
The address of the beneficiary we're getting the available claims for. |
For example, the following request:
{
"chainId": 10,
"sucker": "0x5678…",
"token": "0x000000000000000000000000000000000000EEEe",
"beneficiary": "0x1234…" // jimmy.eth
}This request is checking for available claims:
- On Optimism (
chainId10) - For the sucker contract at
0x5678… - In its ETH inbox tree, represented by
JBConstants.NATIVE_TOKEN - For the beneficiary
0x1234…(jimmy.eth)
juicerkle would return an array of BPClaims which can be passed to BPSucker.claim(…).
[
{
Token: "0x000000000000000000000000000000000000eeee",
Leaf: {
Index: 0,
Beneficiary: "0x1234…", // jimmy.eth
ProjectTokenAmount: 1000000000000000000, // 1e18
TerminalTokenAmount: 1000000000000000000, // 1e18
},
Proof: [
[
229, 206, 51, 48, 16, 242, 169, 29, 47, 33, 39, 105, 34, 55, 172, 232,
217, 243, 168, 149, 38, 202, 133, 68, 191, 119, 165, 97, 59, 232, 212,
14,
],
[
33, 40, 178, 36, 156, 7, 175, 252, 47, 196, 238, 239, 170, 52, 239, 153,
66, 111, 173, 24, 113, 164, 25, 185, 54, 47, 170, 32, 232, 56, 97, 254,
],
// More 32-byte chunks…
],
},
// More claims…
];