Skip to content

feat: pow-attest oracle implementation (PoW-gated Schnorr DLC, GitHub PR/issue conditions) #158

Description

@zekebuilds-lab

Hey bennyhodl, great work on dlcdevkit. I have been building a PoW-gated Schnorr attestation oracle called pow-attest (https://attest.powforge.dev) and think it would slot in cleanly as a fourth oracle implementation alongside kormir, nostr, and p2p_derivatives.

What pow-attest does

Two condition types supported right now:

  • github_pr_merged -- locks a DLC contract that releases when a specific PR gets merged
  • github_issue_closed -- same idea but for issue close

Registration is PoW-gated (SHA-256 hashcash, difficulty 18). The oracle signs attestations with BIP-340 Schnorr using key 2bc78390c94d8bbb96ac3e6940462ba2812418d871e701c1a845fdb1dfd4a0e5, attestation tag DLC/oracle/attestation/v0. The use case is bug-bounty auto-release: lock funds to a DLC, merge the PR, oracle signs RELEASED.

There is a JS client already shipped (@powforge/attest-client on npm) and I would love to add a Rust client behind a pow-attest feature flag, same shape as p2p_derivatives.rs.

Compatibility questions before I open a PR

I dug into the ddk_manager::Oracle trait and found two things worth asking about:

  1. oracle_announcement_signature -- our /api/v1/bounty/:id/announcement endpoint returns JSON without a Schnorr signature over the OracleEvent TLV. Looking at p2p_derivatives.rs I am not sure if dlcdevkit enforces this or if it is advisory. Happy to add the signature server-side if it is required.

  2. event_descriptor -- our outcomes are binary (RELEASED / PENDING). I am planning to map this to EnumerationEventDescriptor { outcomes: ["RELEASED", "PENDING"] } in the Rust client. Does that look right to you, or would a DigitDecompositionEventDescriptor be more appropriate for the manager internals?

Proposed PR shape

  • ddk/src/oracle/pow_attest.rs (~150 LOC, mirrors p2p_derivatives.rs)
  • ddk/examples/pow_attest.rs (mirrors lightning.rs, swaps KormirOracleClient for PowAttestOracleClient)
  • Feature flag: pow-attest in ddk/Cargo.toml

Happy to answer any questions about the oracle design. Just wanted to check in before surprising you with a PR out of nowhere.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions