{"id":22646398,"url":"https://github.com/fireblocks/fireblocks-liquid-collective","last_synced_at":"2026-03-04T08:01:07.183Z","repository":{"id":211142631,"uuid":"728327995","full_name":"fireblocks/Fireblocks-Liquid-Collective","owner":"fireblocks","description":"Fireblocks scripts to interact with Liquid Collective Protocol","archived":false,"fork":false,"pushed_at":"2025-06-25T14:18:28.000Z","size":470,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-24T17:36:18.996Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://liquidcollective.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fireblocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-06T17:50:33.000Z","updated_at":"2024-02-05T18:46:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"91a4120b-bf72-4fc8-b320-d793761aefa2","html_url":"https://github.com/fireblocks/Fireblocks-Liquid-Collective","commit_stats":null,"previous_names":["fireblocks/fireblocks-alluvial-integration","fireblocks/fireblocks-liquid-collective"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fireblocks/Fireblocks-Liquid-Collective","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2FFireblocks-Liquid-Collective","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2FFireblocks-Liquid-Collective/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2FFireblocks-Liquid-Collective/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2FFireblocks-Liquid-Collective/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fireblocks","download_url":"https://codeload.github.com/fireblocks/Fireblocks-Liquid-Collective/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2FFireblocks-Liquid-Collective/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30075906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-09T06:10:25.381Z","updated_at":"2026-03-04T08:01:07.057Z","avatar_url":"https://github.com/fireblocks.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Liquid Staking with Liquid Collective\n\n## What is Liquid Collective?\n\nLiquid Collective is a liquid staking standard focusing on security.\n\nIn order to interact with the Liquid Collective protocol, your address needs to be added to an approved allowlist via the Fireblocks team. Please reach out to Fireblocks support or your Account Manager to get your address(s) added.\n\nOnce your wallet address(s) are added, you will be able to stake and redeem ETH, by interacting with the Liquid Collective smart contract.\n\nThe Liquid Collective issues a receipt token, LsETH. For more information on LsETH, checkout the [LsETH docs page](https://docs.liquidcollective.io/eth/tokenomics/lseth).\n\n## Github repo usage\n\nTo use the functions, uncomment the line that calls each function. For example, if you'd like to run `createRedeemRequest()`, be sure it is uncommented, and run:\n\n```node app.js```\n\n## Stake ETH\n\nUsing the console, either in a whitelisted external address, or a one-time address, create a transfer and\nsend desired ETH to stake to:\n\n[Mainnet](https://etherscan.io/tokenholdings?a=0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549) or here on [Goerli Testnet](https://goerli.etherscan.io/address/0x3ecCAdA3e11c1Cc3e9B5a53176A67cc3ABDD3E46).\n\nNote the Liquid Collective uses a TUP Proxy pattern, so the proxy contract (where you interact) will be different from implementation contract. Below is a table of the Proxy vs. implementation contracts:\n\n| Ethereum Network | Proxy                                      | Implementation                             |\n| ---------------- | ------------------------------------------ | ------------------------------------------ |\n| Goerli           | 0x3ecCAdA3e11c1Cc3e9B5a53176A67cc3ABDD3E46 | 0xF32fC26C9604a380c311e7eC0c5E545917e7934f |\n| Mainnet          | 0x8c1BEd5b9a0928467c9B1341Da1D7BD5e10b6549 | 0x48D93d8C45Fb25125F13cdd40529BbeaA97A6565 |\n\nTODO Eric to add screenshot Transfer and LsETH in wallet. \n\n## Unstaking\n\nUnstaking will require two separate smart contract calls.\n\n1. Submitting a Redeem Request\n2. Claim Request Redeem once the redemption is ready for claiming.\n\n*Redeem Request:*\n\nWhen submitting a Redemption request, a redeem request ID will be returned. The best way to retrieve this ID is by opening a websocket server to listen for contract events emitted from the RedeemManager. We've added a websocket file that you can use for testing `websocket.js`. The `websocket.js` uses an Infura websocket API, you can use Infura or any other provider that extends websocket access.\n\nThe websocket will point to the Redeem Manger contract. Below are the contract address details:\n\n| Ethereum Network | Proxy                                      | Implementation                             |\n| ---------------- | ------------------------------------------ | ------------------------------------------ |\n| Goerli           | 0x0693875efbF04dDAd955c04332bA3324472DF980 | 0x653b549554669a06bb9e260b9f2c0a54f5d7e722 |\n| Mainnet          | 0x080b3a41390b357Ad7e8097644d1DEDf57AD3375 | 0x423ce5282c460eed5fe0786b4d47d2c2a4ef3721 |\n\nAfter configuring `websocket.js` , start your websocket by running:\n\n```js\nnode websocket.js\n```\n\nThe websocket app will listen for the following events:\n- RequestedRedeem\n- ReportedWithdrawal\n- SatisfiedRedeemRequest\n- ClaimedRedeemRequest\n\nIn a separate terminal (leaving your websocket app running),uncomment and call the function `createRedeemRequest`. Be sure that the amount to claim, and the contract address is updated accordingly.\n\nBe sure the smart contract is whitelisted, and you should see it execute in the fireblocks console as it fires. Approve the transaction using your mobile device.\n\nIn your `app.js` you should see a transaction hash returned. In your `websocket.js` terminal you should see a redeem request event emitted, containing the redemption request ID. Below is an example response.\n\n```json\nRequestedRedeem event\nOwner of redeem \u003cWALLET ADDRESS\u003e\nHeight 4980971589444881813\nAmount of LsETH to redeem 10000000\nMaximum amount of ETH to redeem 10212074\nRequest Redeem ID 18\n```\n\nKeep this ID, example of 18. It will take at least 24hours for the redemption request to be resolved. You can check the status of the redemption request by calling the function resolveRedeemRequest(). Add your redeem request ID to the array and call the function. Any number greater than 0, means your redemption is satisfied (partially or fully). The number returned is the withdrawal event ID and is used when making a claim.\n\n*Claiming*:\n\nUncomment and call the function `createClaimRedeemRequest`. Be sure that the request ID and withdrawal ID is updated with the values from the above API endpoint.\n\nSee the smart contract function execute and your ETH balance reflect the claim successfully!\n\nTODO Eric to add screenshot of console. \n\n## Links/Resources\n\n- Postman link\n- [Fireblocks web3 provider](https://github.com/fireblocks/fireblocks-web3-provider/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Ffireblocks-liquid-collective","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffireblocks%2Ffireblocks-liquid-collective","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Ffireblocks-liquid-collective/lists"}