Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

merkledrop source realm

Package merkledrop is an idiomatic gno.land port of the classic Solidity MerkleDistributor airdrop (Uniswap's contrac...

Overview

Package merkledrop is an idiomatic gno.land port of the classic Solidity MerkleDistributor airdrop (Uniswap's contract, OpenZeppelin's MerkleProof).

A fixed merkleRoot commits to a set of (address, amount) allocations. A recipient proves membership by supplying the sibling hashes on the path from their leaf up to the root. Each address may claim exactly once.

Leaf and node hashing use crypto/sha256 (available in the gno stdlib), the same primitive Solidity distributors use via keccak — here sha256 keeps the off-chain tree builder trivially reproducible. Internal nodes hash the two children in sorted order (the OpenZeppelin "commutative" scheme), so proofs carry no left/right flags.

Example
1leaf   = sha256(addr.String() + "|" + amount)
2node   = sha256(min(a,b) || max(a,b))

Balances are pure accounting (uint64); no real coin moves — there is no msg.value on gno, so this models the allocation ledger only.

Functions 5

func AmountClaimed

Action
1func AmountClaimed(claimer address) uint64
source

AmountClaimed returns how much the address has already claimed (0 if none).

func Claim

crossing Action
1func Claim(cur realm, amount uint64, proof string)
source

Claim proves the caller is entitled to `amount` via `proof` (comma-separated hex sibling hashes) and marks the allocation claimed. Panics on a bad proof or a double claim. Mirrors MerkleDistributor.claim (msg.sender is the caller).

func HasClaimed

Action
1func HasClaimed(claimer address) bool
source

HasClaimed reports whether the address already claimed.

func Render

1func Render(path string) string
source

Render shows the committed root, aggregate stats, and the list of claimers.

func Verify

Action
1func Verify(claimer address, amount uint64, proof string) bool
source

Verify reports whether (claimer, amount, proof) resolves to merkleRoot. Pure and read-only — safe to call from tests and Render.

Imports 8

  • bytes stdlib
  • chain stdlib
  • chain/runtime/unsafe stdlib
  • crypto/sha256 stdlib
  • encoding/hex stdlib
  • gno.land/p/nt/avl/v0 package
  • strconv stdlib
  • strings stdlib

Source Files 2