CheCko is a browser wallet for the Linera ecosystem built by ResPeer. This repository contains:
- a Quasar + Vue 3 frontend
- a Manifest V3 browser extension runtime
- a Rust/WASM helper used for block and operation serialization
- GraphQL integrations for Linera service and faucet endpoints
The project is designed around a split architecture: the wallet keeps signing and wallet UX in the browser, while chain data and execution-related queries are coordinated through Linera service endpoints.
Today the repository provides:
- browser extension wallet flows
- injected provider access through
window.linera - account request and provider state methods
- GraphQL query, mutation, and subscription plumbing for Linera services
- local persistence for accounts, networks, balances, activities, tokens, and RPC authorization state
- Rust/WASM helpers for operation and block-related encoding work
Current known gaps:
- direct
load chainsupport is not finished - multiple popup handling is still incomplete
- dynamic loading of application bytecode for application-operation serialization is not finished
yarn testis currently a placeholder, not a real test suite
- src Vue UI, pages, components, local stores, RPC bridges, and worker code
- src-bex browser extension runtime, injected provider bridge, background worker, and extension middleware
- wasm Rust crate compiled to WebAssembly for wallet helpers
- src/graphql GraphQL documents
- src/generated generated GraphQL client code
- scripts/create-release.sh browser-extension release packaging and GitHub release upload
- Node.js 20+ recommended
- Yarn 1.x
- Rust toolchain
wasm-packprotocfor builds that require protobuf tooling
Useful setup commands:
yarn install
rustup target add wasm32-unknown-unknown
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | shInstall dependencies:
yarn installRun the web app:
yarn devRun the browser extension in development mode:
yarn bexBuild the WASM helper:
yarn build:wasmGenerate GraphQL types:
yarn graphql:generateLint the repository:
yarn lintBuild the web app:
yarn buildBuild the browser extension:
yarn build:bexThe extension packaging flow produces artifacts under dist/bex/. The release script expects:
dist/bex/Packaged.linera-checko-wallet.zip
After yarn build:bex, load the generated browser-extension output in a Chromium-based browser using developer mode.
The extension currently uses:
- Manifest V3
- a background service worker
- content scripts on
http,https, andfilepages - storage, tabs, and active-tab permissions
See src-bex/manifest.json for the exact manifest.
The extension injects a provider on window.linera.
Example:
const web3 = new Web3(window.linera)
web3.eth
.requestAccounts()
.then((accounts) => {
console.log(accounts)
})
.catch((error) => {
console.error(error)
})Implemented dApp-facing capabilities currently include provider-state, account request, GraphQL query/mutation/subscription routing, balance reads, ping, and gas-estimation plumbing.
The repository currently generates typed GraphQL clients against:
- a Linera service endpoint at
http://api.testnet-conway.rpc.respeer.ai/api/rpc - a faucet endpoint at
https://faucet.testnet-conway.linera.net
See graphql-codegen.ts.
To build and publish a browser-extension release, use:
yarn release:bexThe release script:
- builds the extension unless
SKIP_BUILD=1 - creates or updates a GitHub release
- uploads a versioned extension zip asset
Required environment variable:
GITHUB_TOKEN=...Useful optional variables include RELEASE_REPO, RELEASE_VERSION, RELEASE_TAG, TARGET_COMMITISH, SKIP_BUILD, and PUBLISH_RELEASE.
- The WASM crate lockfile lives at wasm/Cargo.lock and is expected by CI.
yarn testdoes not run a real automated test suite yet.- Some GraphQL and faucet settings are currently repo-configured for testnet-style environments rather than fully parameterized at runtime.
