Table of Contents
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.
| 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 |
Follow these steps to get Sabot running on your local machine.
1. Clone the repository
git clone https://github.com/gian-gg/sabot.git
cd sabot2. Install dependencies
bun install3. Configure the environment
cp .env.example .envEdit .env with your configuration (API keys, database URL, etc.).
4. Set up the database
npx supabase db push5. 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 localhostbun run devThe platform includes tests for both the frontend and the smart contract.
# Frontend
bun test
# Smart contract
cd ../SabotBlockchain/transaction-smart-contract
npx hardhat testThe 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
AgreementLedgercontract 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
| Layer | Technology |
|---|---|
| Blockchain | Lisk Sepolia Testnet |
| Contract language | Solidity |
| Development framework | Hardhat |
| Configuration & scripts | TypeScript |
- 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
Ownablelets the owner updatedevWallet.
- 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 —
ReentrancyGuardprotection.
- Purpose — Automatic verification for
FileDeliverableandServiceescrows. - 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.
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 |
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!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a pull request
Distributed under the MIT License. See LICENSE for details.