Skip to content
gian-ggPublic

About

Your third-party safety layer for verified, transparent, and scam-free online transactions.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

427 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sabot logo

Sabot

A third-party safety layer for peer-to-peer transactions — verified, transparent, and scam-free.

Contributors Forks Stargazers Issues License

Status Next.js Last commit

Sabot on Medalist

Report Bug · Request Feature


Table of Contents

About

Sabot is a composable platform for peer-to-peer transaction verification. It offers clear transaction lifecycles, invite-and-accept flows, and structured UI primitives that make it easy to extend or re-implement. Acting as a third-party safety layer, Sabot ensures verified, transparent, and scam-free online transactions.

Features

Feature Description
Blockchain Escrow Comprehensive smart contract integration for secure fund management
Oracle Verification Decentralized dispute resolution with oracle-based verification
Arbiter Management Democratic arbiter selection and dispute resolution workflows
Real-time Status Tracking Live updates for escrow status and deliverable tracking
Enhanced Security Multi-layer security with access controls and reentrancy protection

Built With

Vercel Next.js TypeScript Ethereum Lisk shadcn/ui Tailwind CSS Lucide Icons Google Gemini

(back to top)

Getting Started

Follow these steps to get Sabot running on your local machine.

Prerequisites

Installation

1. Clone the repository

git clone https://github.com/gian-gg/sabot.git
cd sabot

2. Install dependencies

bun install

3. Configure the environment

cp .env.example .env

Edit .env with your configuration (API keys, database URL, etc.).

4. Set up the database

npx supabase db push

5. Set up the blockchain (optional)

For full escrow functionality, deploy the smart contract locally:

cd ../SabotBlockchain/transaction-smart-contract
npm install
npx hardhat run scripts/deploy-local.ts --network localhost

Running the Application

bun run dev

Testing

The platform includes tests for both the frontend and the smart contract.

# Frontend
bun test

# Smart contract
cd ../SabotBlockchain/transaction-smart-contract
npx hardhat test

(back to top)

Smart Contract

The smart contract lives in its own repository: transaction-smart-contract. It provides a token-based (SBT) system for creating immutable agreements and managing multi-deliverable escrow.

Sabot integrates with it for secure escrow management:

  • Smart Contract — Deployed AgreementLedger contract with advanced escrow functionality
  • Oracle System — Decentralized verification for dispute resolution
  • Token Economics — ERC-20 token integration with fee distribution
  • Security — Multi-layer security with access controls and reentrancy protection

Tech Stack

Layer Technology
Blockchain Lisk Sepolia Testnet
Contract language Solidity
Development framework Hardhat
Configuration & scripts TypeScript

Token & Agreement System

  • SBT Utility Token — An ERC20-like token built directly into the contract.
  • User Registration — registerUser() grants new users 100 SBT.
  • Agreement Creation — createAgreement() lets two registered users create an immutable, timestamped agreement.
  • Fee Mechanism — 10 SBT from each party (20 SBT total) per agreement: 80% (16 SBT) goes to devWallet, 20% (4 SBT) is burned.
  • Reporting System — reportIssue() lets parties create on-chain reports for disputes.
  • Admin Controls — OpenZeppelin Ownable lets the owner update devWallet.

Escrow System

  • Deliverable Types — Crypto (ETH), BankTransfer, FileDeliverable, PhysicalItem, Service, and Hybrid.
  • ETH Locking — Securely locks ETH for crypto-based escrows.
  • Hash-Based Verification — Cryptographic hashes for non-crypto deliverables.
  • Dual Confirmation — Both parties must confirm completion before funds are released.
  • Proof Submission — Parties can submit proof of delivery or completion.
  • Mutual Arbiter Selection — Disputes require both parties to approve an arbiter.
  • Arbiter Resolution — Arbiters can resolve disputes by release, refund, or split.
  • Fee Structure — 2% platform fee on successful completion; 1% arbiter fee for dispute resolution.
  • Expiration Handling — Automatic refund to the initiator if an escrow expires.
  • Cancellation — Initiators can cancel pending escrows.
  • Security — ReentrancyGuard protection.

Oracle Verification System

  • Purpose — Automatic verification for FileDeliverable and Service escrows.
  • Authorization — authorizeOracle() (owner-only) manages oracle addresses.
  • Submission — submitOracleVerification() lets authorized oracles submit results, auto-confirming for the submitting party when verified.
  • Advisory Role — Assists confirmation but does not control release; arbiter decisions always take precedence.

(back to top)

Documentation

All project documentation lives in the docs directory.

Section Contents
Introduction Getting started and product vision
Architecture Application architecture and design
Developer Guide Setup, architecture, and contribution guidelines for developers
User Guide How to use the application

(back to top)

Contributing

Suggestions are welcome — fork the repo and open a pull request, or open an issue with the enhancement label. Don't forget to give the project a star!

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a pull request

Contributors

Contributors

License

Distributed under the MIT License. See LICENSE for details.

(back to top)

About

Your third-party safety layer for verified, transparent, and scam-free online transactions.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Contributors

Languages