Paymail BEEF Transaction

Deggen (deggen@kschw.com)

Abstract

We specify a paymail capability extension which supports the passing of BEEF 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 counterparty to run SPV on the transaction.

BRFCID

A random ID was generated in order to avoid label 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

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 handle. 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 note.

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

Swimlanes

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

Last updated