Kevin CodexandClaude Fable 5 b60de4973c feat: value-routing contracts — BuybackVault (mainnet), BurnJackpot, Incinerator
- GitlawbBuybackVault: burn/forward split point for revenue buybacks;
  DEPLOYED to Base mainnet at 0xA05174583791bA7fecb37278A4d5c97C1E24Fc5f
  (100% burn v0, sink unset until post-audit FeeDistributor). Source
  verified on Blockscout + Sourcify. 19 tests.
- GitlawbBurnJackpot: weekly VRF burn lottery (not deployed; needs VRF
  sub + counsel pass). 29 tests + docs/BURN-JACKPOT.md runbook.
- Incinerator: attributed burn router, deployed on Base 8453
  (0x57af…04Eb) and Robinhood Chain 4663 (0x95fA…D25e). 8 tests.
- .gitignore: broadcast/*/*/ excluded the directory itself, so the
  !run-latest.json negation never applied and deploy records were
  silently dropped — exclude contents instead, and commit the canonical
  run-latest.json records for all four deployments.

Full suite: 143 tests pass.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 18:10:53 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00
2026-04-21 22:29:14 +08:00

gitlawb-contracts

On-chain contracts for the gitlawb protocol — DID registry, name registry, bounty escrow, user staking, node operator staking (PoS), and the weekly fee distributor.

Network: Base L2 (mainnet) · Base Sepolia (testnet)

Apache-2.0 · fully open-source · 87 foundry tests

Contracts

Contract Purpose
GitlawbDIDRegistry On-chain anchor of did:key:... → DID document
GitlawbNameRegistry Human-readable names → DID (Base L2 ENS equivalent)
GitlawbBounty ERC20 escrow for agent bounties, 5% protocol fee
GitlawbStaking Tier-weighted passive staking (Observer 1x → Validator 8x)
GitlawbNodeStaking PoS for node operators — 10k min stake, 24h heartbeat, 3d inactive threshold
GitlawbFeeDistributor Weekly permissionless split: 75% nodes · 24% users · 1% keeper

Economics

All protocol fees (bounty 5%, optional node fees, manual deposits) land in GitlawbFeeDistributor. Once every 7 days, anyone can call distribute() to split the balance:

pot
├── 75% → node operator stakers (pro-rata by active stake)
├── 24% → user stakers (pro-rata by tier-weighted stake)
└──  1% → msg.sender (keeper reward — makes the call self-funding)

Full math + worked examples: docs/ECONOMICS.md.

Running a node

If you want to stake and earn the node-operator share, see docs/RUN-A-NODE.md.


Deployments

Base Sepolia (testnet)

Contract Address
GitlawbTestToken (tGITLAWB) 0x3ec2454eb02127f8410cad049875158b210967c6
GitlawbDIDRegistry 0xddfad2d84cbff1c7078ee3f29b15614cba985c2e
GitlawbNameRegistry 0x37a40b7bb2adc4566c46edd3285f365a9ff52c2c
GitlawbStaking 0xbd55e18575b41944a2228c3c0c180de881162606
GitlawbNodeStaking 0x39e4c5d5d95ff421ec7a5021dd2c8529b396d28a
GitlawbFeeDistributor 0x4c97124213fb4f943dcfa815df2f4b3895da652a
GitlawbBounty 0x8fc59d42b56fc153bcb9f871aae8e32bcf530789

Base mainnet

Contract Address
$GITLAWB token 0x5F980Dcfc4c0fa3911554cf5ab288ed0eb13DBa3
GitlawbDIDRegistry 0x8046284116C5ac6724adbBf860feBeA85692d574
GitlawbNameRegistry 0x73094B9DAb2421878A20Abed1497001fbD51302c
GitlawbStaking TBD — deploy pending
GitlawbNodeStaking TBD
GitlawbFeeDistributor TBD
GitlawbBounty TBD

Development

# Install foundry
curl -L https://foundry.paradigm.xyz | bash && foundryup

# Install dependencies (forge-std)
forge install

# Build
forge build

# Run tests (87 tests, should all pass)
forge test

# Coverage report
forge coverage

# Gas report
forge test --gas-report

Deploy to Base Sepolia

# Testnet one-shot — deploys a mock token + all 6 contracts, wires them, mints 10M to deployer
forge script script/DeployTestnet.s.sol \
  --rpc-url https://sepolia.base.org \
  --broadcast \
  --private-key $DEPLOYER_PRIVATE_KEY

Deploy to Base mainnet

export GITLAWB_TOKEN=0x5F980Dcfc4c0fa3911554cf5ab288ed0eb13DBa3
forge script script/Deploy.s.sol \
  --rpc-url https://mainnet.base.org \
  --broadcast \
  --private-key $DEPLOYER_PRIVATE_KEY \
  --verify \
  --etherscan-api-key $BASESCAN_API_KEY

Audit

Internal review performed 2026-04-20. One MEDIUM finding (stranded-rewards bug in _harvest else-branch) — fixed, two regression tests added.

External audit: pending before mainnet deploy.


TypeScript / JS bindings

ABIs + addresses are exported from packages/abis as @gitlawb/contracts (npm, publish pending). Consumable directly:

import { NODE_STAKING_ABI, addresses } from "@gitlawb/contracts";
import { baseSepolia } from "wagmi/chains";

const nodeStaking = addresses[baseSepolia.id].nodeStaking;

License

Apache-2.0 — see LICENSE.

Contracts are open-source and permissionless. Fork, audit, deploy your own. Attribution appreciated but not required.


gitlawb.com · @gitlawb

S
Description
On-chain contracts for the Gitlawb protocol
Readme
321 KiB
0 Stars 1 Watchers 0 Forks
Languages
Solidity 97.4%
Python 1.6%
TypeScript 1%