Dulus
선택한 모델로 데스크톱·터미널에서 동작하는 AI 에이전트, 모델은 Fuel에 호스팅되고 $DULUS로 결제
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Open source tooling for digital parties: binding, scoped, onchain franchise grants. An implementation of Balaji's technodemocracy spec, on Base.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗From magical internet money to magical internet votes.
An implementation of Balaji Srinivasan's technodemocracy spec: digital political parties with binding, scoped, OAuth-style franchise grants. Built on Base.
Each "party" is a binding social smart contract. Joining grants the party president a cryptographically scoped franchise over your wallet: annual dues, slashable stake, delegated voting weight, follow-the-slate. Like Google OAuth, but for political parties.
/contracts)Solidity 0.8.27, Cancun EVM, viaIR, OpenZeppelin v5.
| Contract | Role |
|---|---|
| PartyRegistry | Universal candidacy; party metadata + president |
| NormsRegistry | Versioned norms with content hashes |
| MembershipNFT | Soulbound; minted on franchise grant, burned on revoke |
| Franchise | Typed Scope enum; per-scope revoke; provably bounded slashing |
| Cabinet | Typed Power enum; digital delegation |
| DisputeResolver | Binding verdicts; gates slashMember |
| IVotedNFT | Soulbound on-chain SVG vote receipts |
| Voting | Streaming votes + delegated weight |
| Election | Periodic president elections (365-day term) |
| Treasury | 3 spend lanes: small / voted / 2-of-N emergency |
| Census | Soulbound proof-of-attendance / proof-of-residence stamps |
| AccessGate | Bidirectional NFT-gated real-world access (Chainlink hook) |
10 end-to-end Hardhat tests covering every flow in the spec.
/src)Next.js 14 (App Router), TypeScript, Tailwind, RainbowKit + wagmi (Base + Base Sepolia).
Routes:
/ landing + legitimacy meter
/parties search/sort/filter
/parties/[id] Twitter/Farcaster-style party page
/parties/[id]/dashboard president-only: cabinet, norms, disputes, treasury
/parties/[id]/election streaming election or past results
/parties/[id]/proposals/[pid] vote + I Voted NFT mint screen
/parties/[id]/proposals/new
/parties/new universal candidacy form
/feed global Twitter-like activity stream
/profile multi-party franchises + NFT collection
/join-quiz ideology quiz → party match
# Frontend
pnpm install
pnpm dev
# Contracts
cd contracts
pnpm install
pnpm compile
pnpm test
cd contracts && pnpm install && pnpm compile && pnpm node # terminal 1: local chain
cd contracts && pnpm deploy:local && pnpm e2e:local # terminal 2: deploy + seed + self-test
echo NEXT_PUBLIC_CHAIN=local > .env.local && pnpm dev # terminal 3: app
Connect with Local dev wallet (Hardhat account #1), open a party, hit Apply:
Follow, Fund (test USDC faucet + approve dues), Franchise (grant scopes, vote for
the slate). Each step is a real transaction; the I Voted receipt is a real
soulbound NFT with an onchain SVG. Revoke from your profile. Founding a party
from /parties/new runs createParty, registerFranchise, founder join, and opens
the slate vote.
What is onchain: parties, presidents, member counts, franchise terms, grants, scopes, dues escrow, slate votes, I Voted receipts, revocation. What is still seeded demo content: posts, avatars, ideology vectors, events, the feed, the quiz, elections, the president dashboard.
cd contracts
cp ../.env.example ../.env # set DEPLOYER_PRIVATE_KEY + BASE_SEPOLIA_RPC_URL
pnpm deploy:sepolia # also writes src/lib/chain/deployments.json
Addresses are written to contracts/deployed-addresses.json.
interneta.world: the network state.
The financial crisis of 2008 motivated cryptocurrency. The political crisis of 2024 motivates technodemocracy.
MIT. See LICENSE. Fork it, run your own party, send a pull request.