Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
FreeBank는 스코틀랜드 자유은행 전통을 이어가는 신용 창출 드라이브체인입니다
FreeBank: a credit-creation drivechain in the Scottish free-banking tradition — discount houses, bills of exchange, redeemable notes. Live on the eCash beta network as sidechain slot 130.
금융Rust · SvelteGitHub @mbdrivechains온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
FreeBank desktop app: runs a FreeBank node beside your eCash beta node and enforcer (Tauri, Linux + macOS)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The desktop app for the FreeBank credit-creation drivechain (BIP 300/301, slot 130): it sets up and runs a FreeBank node beside an eCash node (its own, BitWindow's, or your own), shows its blocks and peers, and is its wallet. It runs on eCash beta or on easynet, a small test network where it sets everything up itself in minutes; a new computer starts there (v0.6.2). Beta's demo mode (v0.4.4 to v0.6.1), which ran with no eCash node through FreeBank's read-only gateway, has ended.
Download from the releases page:
freebank_<version>_amd64.deb. Double-click it and the software installer does the
rest (or sudo apt install ./freebank_<version>_amd64.deb)..AppImage. Make it executable (chmod +x), then run it..dmg. Drag FreeBank to Applications. The FreeBank node needs macOS 14 or
later on Apple Silicon, and macOS 15 or later on Intel. This build is not notarised yet, so the first
time macOS will refuse to open it: go to System Settings → Privacy & Security and choose Open Anyway.From v0.2.4 on, FreeBank says when a new version is out (and Settings > App updates checks on request). The AppImage
and the Mac app update themselves: Update and restart downloads the new version, checks it and opens it. They take
an update only when the release's SHA256SUMS carries the release key's signature (below) and the package matches its
line there: the same check FreeBank makes before installing the node. The .deb updates with Software Updater once
FreeBank's apt repository is set up, or with the new .deb from the releases page. From
v0.2.9 the app offers to set the repository up (once, and in Settings > App updates): a yes writes
/etc/apt/sources.list.d/freebank.sources through the computer's password prompt, and nothing is added without it;
apt purge freebank takes it out again. apt
checks the repository's own signing key, which the release workflow holds, not the release key. From v0.2.6 a version
reaches the apt repository only after its SHA256SUMS carries the release key's signature, checked again by the
workflow that publishes it (.github/workflows/apt.yml).
Each release lists its files' SHA-256 hashes in SHA256SUMS. From v0.2.0 it is signed with the FreeBank release key
(SHA256SUMS.sig), the same key that signs the FreeBank node's releases. The key's public half is below and is also
published as a signing key on the maintainer's GitHub account
(mblowes), so you can check it from two places:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAi2C9Lpi3gHPva6tlbLE+wdF1Cer3uUnmwZYr6SeRjR FreeBank release signing
fingerprint SHA256:1d0zm9Qb9ZtzDnQHH593fgjAkk7nPqMDG79XyWlyeeY
To verify (OpenSSH 8.1 or later):
echo 'freebank-release ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAi2C9Lpi3gHPva6tlbLE+wdF1Cer3uUnmwZYr6SeRjR' > allowed_signers
ssh-keygen -Y verify -f allowed_signers -I freebank-release -n file -s SHA256SUMS.sig < SHA256SUMS
sha256sum -c --ignore-missing SHA256SUMS
The packages are built by this repository's GitHub workflow from the tagged source, and GitHub records a signed build
attestation for each. Check one with GitHub CLI 2.49 or later, logged in (gh auth login):
gh attestation verify freebank_<version>_amd64.deb --repo mbdrivechains/freebank-app
To review the source, and for what these checks do and don't prove, see VERIFY.md.
Your wallet lives in your own freebankd node, and the app runs it for you.
A new computer starts on easynet (v0.6.2): FreeBank sets it all up in a few minutes, and the easynet faucet gives test coins (below). A computer that has run the app on beta stays on beta.
On a computer that already runs an eCash beta full node and its enforcer (the easiest way is BitWindow in full-node mode on eCash beta), FreeBank finds them, downloads and verifies the newest FreeBank node, asks for the name your blocks carry on the explorer, and starts the node. The Node tab then shows its height against the explorer and its peers. If the node is already running, the app just connects to it.
easynet (v0.5.0), a small public test network on eCash's rules with no value, needs none of that: choose it on the welcome screen or in Settings › Node & connection, and FreeBank downloads easynet's eCash node and enforcer, checks them against the hashes it knows, runs them and syncs in a few minutes. Each network keeps its own wallet, settings and node; switching restarts the app. On easynet, Receive's Get easynet coins (v0.6.1) asks the easynet faucet (https://faucet.ecxfreebank.com) for test coins, and payments link to FreeBank's easynet explorer, https://fbeasy.ecxfreebank.com.
Where FreeBank runs the eCash node and enforcer itself (v0.6.1), it watches them while the app is open: one that stops on its own is noted with what its log said and started again, once an hour at most, and Home says so.
On beta without BitWindow (v0.5.1), setup offers to run eCash beta's node and enforcer itself: it looks for a snapshot first (Ava Chow's at block 965,000, else hers at 935,000), shows the free space against the whole chain (about 890 GB), and can put the blocks on a bigger disk. "Stop and delete" stops it and deletes its chain at any point. Or it can use another computer's eCash node and enforcer, found by IP address or Tailscale name.
Four tabs: Home (balance, Send, Receive, Deposit, Withdraw), Credit (notes, houses, pools, bills), eCash (wallet, bidding) and Node, with Settings behind the gear.
freebankd node via RPC (local / Tailscale / custom)# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Node.js 20+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Tauri CLI + Linux webview deps
cargo install tauri-cli
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
git clone https://github.com/mbdrivechains/freebank-app.git
cd freebank-app
npm install
cargo tauri dev # desktop, hot reload
# or, browser/PWA:
npm run dev # then open http://localhost:5173
npx tauri build # -> src-tauri/target/release/bundle/ (always via the tauri CLI: it bundles the front end)
Releases are built by .github/workflows/release.yml on a vX.Y.Z tag: Linux (.deb, AppImage) on
Ubuntu 22.04, one universal macOS app (Apple Silicon and Intel), and a GitHub Release with checksums.
The wallet needs a running freebankd node with RPC enabled:
# main (RPC 8454); the app reads the node's cookie file, so no password is needed locally
freebankd -daemon
# to reach it from another computer, bind RPC to the Tailscale interface and allow only that client
# (the Security panel then shows RPC as reachable from the network, on purpose):
# -rpcbind=<tailscale-ip> -rpcallowip=<client-tailscale-ip>
The FreeBank node has two networks — main (RPC 8454) and regtest (RPC 18457); easynet has a
build of its own (freebank-easynet, RPC 28454), which the app installs there. Then enter the host/port/credentials in the connect screen.
A browser page can't send RPC directly (CORS). For local development, run the bundled CORS proxy on this computer; it listens on 127.0.0.1 only, answers only the dev origin, and passes on the login the page sends rather than adding one:
python3 proxy.py --rpc-port 8454
┌─────────────────────────────────────────┐
│ Svelte Frontend (+ PWA) │
│ Connect · Notes · Houses · Pools · Bills│
└─────────────────┬───────────────────────┘
Tauri IPC │ or direct fetch (PWA + CORS proxy)
┌─────────────────▼───────────────────────┐
│ Rust Backend (FreeBankClient) │
│ JSON-RPC client (reqwest) │
└─────────────────┬───────────────────────┘
│ JSON-RPC (local / Tailscale / Tor)
┌─────────────────▼───────────────────────┐
│ freebankd (drivechain slot 130) │
│ keys · notes · houses · pools · bills │
└─────────────────────────────────────────┘
In the app: Settings, then Help. Choose a problem, an idea or a security problem, and either:
Security problems go privately: see SECURITY.md.
MIT, see LICENSE.