Beersy
BRC-70

Paymail BEEF Transaction

The readable-name payment scheme was built before there was a good way to send verifiable transactions. This updates it to carry the newer self-verifying bundle instead of bare transaction bytes.

Darren Kellenschwilerchanged 1 May 20261 min read
beefrawtx

Summary

Why
A server receiving a transaction had no standard way to also receive the proof data needed to verify it without extra lookups.
What
BRC-70 is a paymail capability extension that lets a sender deliver a BEEF-encoded transaction, instead of plain raw transaction hex, to a receiving paymail server.
How
A paymail server advertises a delivery endpoint under the capability 5c55a7fdb7bb, and a client POSTs a JSON body containing transaction hex, sender metadata, and a payment reference, with the server replying with the accepted transaction ID.

What this lets you do

  • advertise a BEEF delivery endpoint in paymail capabilities
  • send a BEEF transaction to a paymail via POST
  • attach sender metadata like pubkey, signature and a
  • receive back an accepted transaction ID from the server
  • let the receiver run checks without a separate lookup

Written by claude-sonnet-5 from the specification text. Where the two differ, the original is correct.

Reference for an AI

Everything an assistant needs to answer questions about BRC-70 accurately, including what it depends on.

The specification

Abstract

We specify a capability extension which supports the passing of Transactions between hosts. The procedure for service discovery and requesting outputs is not detailed, rather this proposal contains only a recommendation to replace BRC-12 RawTx hex data with BRC-62 BEEF hex data.

Motivation

We propose that p2p destination and receive raw transaction functionality between hosts to include the data required for the to run on the transaction.

BRFCID

A random ID was generated in order to avoid collisions in the capability document of a paymail server.

brfcid: 5c55a7fdb7bb
title: Background Evaluation Extended Format Transaction
author: Darren Kellenschwiler
version: 1.0.0

Specification

Status Note

BRC-70 is a Paymail capability extension and is external to the current bsv-blockchain/ts-sdk / bsv-blockchain/wallet-toolbox BRC-100 wallet implementation. It remains useful for Paymail-specific interoperability, but current SDK/toolbox payment flows should not be expected to expose this capability unless a Paymail integration is added explicitly.

We specify that an endpoint for delivery of transaction data ought to be added to the capabilities object in the .well-known response of a paymail service with the label: 5c55a7fdb7bb.

<!-- capabilities document of the host -->
{
    "capabilities": {
        "5c55a7fdb7bb": "https://paymail.domain.tld/api/v1/beef/{alias}@{domain.tld}",
        <!-- ...others -->
    }
}

Client Request

The sender must replace the {alias} and {domain.tld} placeholders in the URI template provided by capabilities.5c55a7fdb7bb with a valid Paymail . The client must then perform a POST HTTP request with the following body:

{
  "beef": "<beef_transaction_hex>", <!-- note the label is different >
  "metadata": {
    "sender": "<sender_paymail>",
    "pubkey": "<sender_public_key>",
    "signature": "<signature_of_txid>",
    "note": "<optional_human_readable_note>"
  },
  "reference": "<payment_reference>"
}

BEEF transaction hex is a string encoding of the binary format detailed in BRC-62.

Server Response

The server must validate the transaction and respond with the accepted transaction ID and an optional human-readable .

{
  "txid": "<accepted_txid>",
  "note": "<optional_human_readable_note>"
}

Swimlanes

A swimlanes diagram is included here for further clarification: https://swimlanes.io/u/6J2q8QCEb

Was this helpful?

Search Beersy

Search standards by number, title, author or topic