npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

zendetsu

v0.1.0

Published

> This program is currently deployed on Solana Devnet. Mainnet deployment is in progress.

Downloads

96

Readme

Zendetsu Protocol

This program is currently deployed on Solana Devnet. Mainnet deployment is in progress.

Zendetsu is a trustless escrow protocol built on Solana. The core idea is simple — two parties want to transact but neither wants to go first. Zendetsu holds the funds on-chain and releases them only when the conditions both parties agreed to are met. No middleman, no bank, no lawyer needed.

The protocol is open source and built for developers. Integrate it into your dApp using @zende/sdk and your users get trustless escrow without you having to write a single Rust instruction. Escrow and trustless settlement are foundational to almost every dApp being built today — marketplaces, freelance platforms, gaming, DAOs, DeFi. Most teams end up rebuilding this from scratch every time. Zendetsu solves it once for the entire Solana ecosystem.

Program ID: GuDNhDbxfmpAt3zDg9TSPdzAYvARifeFTqUhQRtsmjuC (Devnet)

SDK: npm install @zende/sdknpmjs.com/package/@zende/sdk

Site: zendetsu.vercel.app

Author: @web3pr0digydev

Escrow Modes

| Mode | How it works | |---|---| | Simple | Depositor locks funds. Both parties confirm and funds release instantly. If the timelock expires, the recipient can claim without waiting for the depositor. | | Milestone | Funds split across milestones by percentage. Depositor approves each one. Reject 3 times and the escrow auto-escalates to dispute. | | Timed | Funds release automatically at a set Unix timestamp. Recipient calls claim_release after the timer with no confirmation needed. | | MultiParty | Multi-sig escrow for group arrangements. Majority confirmation triggers release. |

Instructions

| Instruction | Who calls it | What it does | |---|---|---| | initialize_escrow | Depositor | Creates escrow and funds dual vaults (main and fee) | | confirm_release | Depositor or Recipient | Confirms release — both confirmed means instant payout | | claim_release | Recipient | Claims after timelock expires or release_at passes | | cancel_escrow | Depositor | Cancels and refunds — blocked once recipient joins | | ping | Either party | Resets inactivity timer | | claim_inactivity | Recipient | Claims if depositor goes inactive past timeout | | dispute_escrow | Either party | Freezes escrow and opens dispute | | resolve_dispute | Authority | Resolves with full payout to either party or a custom split | | approve_milestone | Depositor | Releases proportional funds for a milestone | | reject_milestone | Depositor | Increments rejection count and auto-disputes at the limit |

Architecture

Each escrow creates two PDAs. The Vault holds the principal amount going to the recipient. The Fee Vault holds the platform fee, paid out to treasury on settlement. Separating them at deposit time means fee collection is atomic with escrow creation and user funds never mix with protocol revenue.

Speed settings (Standard, Express, Instant) let both parties agree to shorten the timelock. One party alone cannot force it — both have to signal it.

Disputes go to a designated authority wallet which can send full funds to either side or split by any percentage.

Running the Tests

# Install dependencies
yarn install

# Build the program
anchor build

# Deploy to devnet
anchor program deploy

# Run the full test suite (17 tests)
anchor test --skip-deploy

All 17 tests cover initialization, confirmation flows, cancel, ping, dispute, partial splits, milestone approve/reject, and timed release.

Project Structure

programs/zendetsu/src/
├── lib.rs                  # Program entry point and instruction routing
├── state/                  # Escrow account structs and enums
├── instructions/
│   ├── initialize.rs
│   ├── confirm.rs
│   ├── claim.rs
│   ├── cancel.rs
│   ├── ping.rs
│   ├── inactivity.rs
│   ├── dispute.rs
│   ├── resolve.rs
│   └── milestone.rs
├── errors.rs
└── constants.rs
sdk/                        # TypeScript SDK — npm install @zende/sdk
tests/
└── zendetsu.ts             # Full integration test suite

Part of the Zende ecosystem. Trustless escrow for anything that needs one.