尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Prediction market on Canton/Daml — HackCanton League Season 3, Track 2
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Owarine · 終値 Call the close. Keep your position private. Short price predictions, games and trading agents on Canton Network. Owarine is a private prediction market on Canton, built with Daml. Pick a short price Window, take Up or Down at the venue's firm quote, watch your position, and close early or let the Window settle. Positions are contracts whose stakeholders are the owner and the venue. Games, copyable strategies and bounded agent desks offer other ways into the same markets, on the web and in the native phone app.查看完整 README ↗
Owarine is a private prediction market on Canton, built with Daml. Pick a short price Window, take Up or Down at the venue's firm quote, watch your position, and close early or let the Window settle. Positions are contracts whose stakeholders are the owner and the venue. Games, copyable strategies and bounded agent desks offer other ways into the same markets, on the web and in the native phone app.
Built for HackCanton League Season 3 · Financial Applications. Owarine (終値) means closing price. This prototype uses demo credits with no cash value and DevNet Canton Coin. See what is verified for recorded journeys and current limits.
Active traders who want to call the next price move face a trade-off: public-chain positions expose their activity, while hosted venues require them to trust private settlement rules.
Owarine offers short Up/Down markets, firm quotes, and position contracts shared with the owner and the venue. Canton scopes contract visibility; Daml enforces acceptance, oracle-based outcomes, payouts and refunds. Traders can inspect the rules behind their call while keeping the position private.
Problem, value and current status
One call. Choose Bitcoin and a five-minute Window. The opening print sets the line. Up wins if the closing print is at or above it; Down wins if it is below. Before accepting, read the quote for your size, the cost, fee and possible payout. A winning lot pays one demo credit; a losing lot pays zero. A void returns the stake and fee. A displayed spot price is not itself a settlement print.
| Way in | What you do | Start here |
|---|---|---|
| Predict | Call stocks, crypto, tokenized-stock prices, pre-IPO names or baskets. Read the actual lane hours and source availability. | Markets · trading guide |
| Play | Practice, compete in a duel, or try the chart games. Some games practice locally; others create ledger contracts. | Games · game guides |
| Put a strategy to work | Publish, copy or fade a strategy, or create a desk with allowed instruments and spending limits. Desk practice is paper; a funded mandate is a separate path. | Agents · Desk · desk guide |
| Inspect the result | Follow the opening and closing prints, resolution, payout and receipt. | Proof · Portfolio |
A prediction on a tokenized-stock price does not buy the underlying share. Pooled guest seats are a demo identity, not a durable account for real-money custody.
We are starting with active crypto traders who make short price calls and care about keeping their positions private. Canton builders and early testers can explore the DevNet flow, inspect its rules, and help improve quote clarity and onboarding. Paying customers, pricing and repeat-use demand are still being validated.
Watch the recorded demo on YouTube, or open it on Owarine. The cover is an editorial composition based on a dated Owarine app screen; the artwork itself is not a recording or a transaction receipt.
For an evidence walkthrough now, read the recorded DevNet acceptance: firm quote → acceptance → owner and outsider reads → oracle prints → resolution → settlement. It also includes the void refund, stale refund with operations stopped, and Canton Coin deposit/withdrawal records. Failed attempts are retained alongside the successful runs.
The documentation walkthroughs include eleven captioned recordings of the hosted app, with arrows pointing to the controls used. The first-trade guide records a BTC call reaching settlement; each guide separates what the recording demonstrates from unavailable or untested paths.
This unchanged capture shows the interface at that date. It is separate from the generated banner and cover, and does not prove a newly executed ledger trade.
Your seat · Price sources · Availability
The source data is attested by the venue's oracle parties. Three signers do not make the upstream feeds independent, and Owarine does not claim that every provider's cryptographic update is verified inside Daml. See the price policies, print rules and Daml engine.
Diagram source · Regenerate from docs-site with node scripts/export-readme-architecture.mjs.
The privacy boundary matters. An ordinary position and cash contract name the seat and venue as stakeholders; another party's ledger query does not receive them. The venue sees its counterparties. In this prototype, Noders hosts the parties on one participant and one server ledger user can act for them, so the participant operator and the application server remain trusted. The device key authenticates a seat request; it is not evidence of independently hosted, externally signed parties. Public posts and opted-in records reveal what the user chooses to publish; a duel has both players as stakeholders.
Privacy tests · seat authorization · party-view route · architecture guide
| Piece | Role in Owarine | Code |
|---|---|---|
| Canton Network | Party-scoped contracts and a shared participant on Noders DevNet. | Ledger client · DevNet preflight |
Daml abu-pm-main 0.5.2 | Windows, prices, quotes, positions, cash, settlement, refunds, reserves and resting calls. | Main package |
abu-pm-tickets 0.1.4 | Range, Moonshot, Parlay and Boost contracts. | Tickets |
abu-pm-agents 0.2.2 | Strategies, subscriptions, creator fees and bounded desk mandates. | Agents |
abu-pm-games 0.1.2 | Duel contracts, results and season prizes. | Games |
abu-pm-cc 0.1.1 · CIP-56 | Token-standard Canton Coin deposits, withdrawals and reserve statements. The recorded round trip uses DevNet coin. | Coin rail · rail operations |
abu-pm-seat 0.1.0 | Standing exits and send/accept demo-credit transfers. | Seat package |
The six package versions are in the checked-in source and release files. Deployment and execution are different claims: a package being registered does not prove every feature using it has completed a DevNet journey. Released DARs and hashes · Daml Script tests
Validation summary · This editorial cover illustrates the flow; the dated records below support the technical claims.
Evidence snapshot: 8 October 2026. The complete capability inventory preserves 219 entries and their original states. Its live label means a recorded DevNet run, not uninterrupted availability; it is conservative and some entries still describe older local acceptance.
| Area | Evidence and limit |
|---|---|
| Public website | Hosted app walkthroughs were recorded on 8 October, including a BTC two-minute Up call that settled WON with a 3-credit payout. Status also reported degraded feeds and resolver checks; no uninterrupted-availability or uptime-soak claim is made. |
| First call on DevNet | Recorded 6 October: firm quote, acceptance, owner view, empty outsider view, oracle attestations, resolution, payout, void refund and stale refund while operations were stopped. Acceptance records. |
| Canton Coin rail | Recorded 7 October: 200 test CC faucet, 100 CC deposit, 12.5-credit allowance, 5-credit withdrawal returning 40 CC, and a covered remaining reserve. The 8 October hosted recording separately shows a 20 CC deposit adding 2.5 credits. These are test amounts at each run's listing rate. Acceptance records · balance walkthrough. |
| Broader market lanes, tickets, strategies and games | Daml tests and dated local-sandbox drives exist. Their presence in the product is not a blanket claim of DevNet acceptance. Follow each capability's evidence. |
| Standing exits and credit transfers | Seat package and local drive evidence are present; this documentation pass did not verify the R2 user journey on DevNet. |
| Native phone app | iOS Simulator journeys against a local stack are recorded. Physical-device acceptance, public TestFlight/Android distribution and real push delivery remain unverified here. |
| External integrations | Sensei, X workflows and entitlement-gated price sources depend on working credentials and provider availability. Source adapters are not proof of a live integration. |
| Docs and demo | Source-backed guides, seven Mermaid diagrams and eleven captioned hosted-app walkthroughs are included in the docs app. The README play-button cover opens the website's /demo page; the cover itself does not prove a completed film or ledger journey. |
No MainNet trading, independent security audit, completed user study or production-money readiness is claimed.
| Milestone | Status |
|---|---|
| Canton DevNet web prototype | Available with demo credits and test funds. |
| Native mobile app | In development. |
| TestNet launch | Planned after user testing and improvements to wallet access and reliability. |
Our first distribution plan is hands-on Canton community demos, direct trader trials and walkthroughs shared through @owarine_app. We will measure first-trade completion, repeat use and feedback to guide the next release.
Go-to-market plan · Five-slide pitch · Header artwork provenance
Use Node.js 22+, pnpm 11.24.0, JDK 21, Daml package manager (dpm) / Canton 3.5, and Postgres. Set JAVA_HOME to your JDK and ensure java and dpm are on PATH (the default dpm location is $HOME/.dpm/bin). The Daml packages pin SDK 3.5.2. See the dpm installation guide for tool installation. Clone with full Git history: evidence checks resolve immutable historical objects after internal notes leave the public tree.
Run commands from the repository root. Create an empty local Postgres database and keep its connection URL ready.
pnpm install --frozen-lockfile
cp .env.example .env.local
cp services/ops/.env.example services/ops/.env.local
cp web/.env.example web/.env.local
# Build packages; tests are a separate command.
(cd daml && dpm build --all)
(cd daml/pm-tests && dpm test)
In a second terminal, keep the local Canton sandbox running:
dpm sandbox --json-api-port 7575
Back in the first terminal, allocate parties and seed the venue with six guest seats:
LEDGER_JSON_API_URL=http://127.0.0.1:7575 LEDGER_AUTH_MODE=none \
pnpm --filter @owarine/scripts exec tsx bootstrap-local.ts --seats 6
Fill the copied environment files before starting the services:
| Variable | Where | Local value |
|---|---|---|
DATABASE_URL | web/.env.local and services/ops/.env.local | The same local Postgres connection URL |
LEDGER_JSON_API_URL | Both files | http://127.0.0.1:7575 |
LEDGER_AUTH_MODE | Both files | none |
OWARINE_PARTIES_FILE | Both files | The absolute path to the generated ~/.config/owarine/canton/parties.json; expand ~ to your home directory |
OPS_INTERNAL_SECRET | Both files | The same random secret of at least 32 characters |
OWARINE_SEAT_COOKIE_SECRET | web/.env.local | A separate random secret of at least 32 characters |
OPS_INTERNAL_URL | web/.env.local | http://127.0.0.1:8080 |
OPS_HTTP_PORT | services/ops/.env.local | 8080 (the command otherwise defaults to 8787) |
DRY_RUN | services/ops/.env.local | 0 |
NEXT_PUBLIC_CANTON_NETWORK | web/.env.local | localnet |
NEXT_PUBLIC_APP_ORIGIN | Both files | http://localhost:3000 |
NEXT_PUBLIC_SITE_URL | web/.env.local | http://localhost:3000 |
NEXT_PUBLIC_DOCS_URL | web/.env.local | http://localhost:3153 |
NEXT_PUBLIC_PRICE_FEED_URL | web/.env.local | http://localhost:8080 |
NEXT_PUBLIC_LADDER_URL | web/.env.local | http://localhost:8080 |
Generate each secret with node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))". The database package applies its schema automatically. Ops loads its own environment file before the root file; shell variables take precedence. Optional integrations use the remaining entries in the examples.
In a third terminal, start venue operations and the projector:
pnpm ops:start
In a fourth terminal, start the web app and open localhost:3000:
pnpm dev
Alpaca credentials enable stock lanes; crypto feeders read exchange candles. Optional integrations stay unavailable without their own prerequisites. See the environment examples, ops configuration and builder setup.
pnpm typecheck
pnpm invariants
pnpm test
pnpm build
# The docs app has its own install and content/build checks.
pnpm -C docs-site install --frozen-lockfile
pnpm -C docs-site check
# Keep this running in a separate terminal to view http://localhost:3153.
pnpm -C docs-site dev
Native app setup · DevNet party-file template · DevNet bootstrap
The web/native application and shared interface foundation predate the Canton port. The hackcanton-s3-start tag records that starting point.
The Canton work includes six Daml packages and Daml Script tests, the JSON Ledger API v2 client, Canton market adapter, venue/oracle/resolver/settler operations, seat authentication and authorization, privacy/proof/receipt surfaces, Canton Coin rail, and Canton native-app integration. Inspect the changes with:
git log --oneline hackcanton-s3-start..HEAD
git diff --stat hackcanton-s3-start..HEAD -- daml packages services web mobile
| Looking for | Start here |
|---|---|
| Product guides and source map | Documentation · source map |
| Money rules, privacy and conservation tests | Daml packages · Script tests |
| Quotes, lanes and settlement | Market package · core rules · venue operations |
| Dated verification for human or automated review | Acceptance records · capability inventory |
| Documentation text for automated readers | Run the docs site, then open /llms.txt or /llms-full.txt. Export implementation |
| Brand and editorial asset provenance | Brand · asset manifest |
Maintained by Abubakr Jimoh · MIT license · Third-party notices
| JSON Ledger API v2 | Submission, active-contract reads, command deduplication and the update stream. | Client · generated bindings |
| Next.js · Expo · Postgres | Web, native app, seat leases, projections and journals. | Web · Mobile · Database |