Skip to content

Instantly share code, notes, and snippets.

@jdogresorg
Last active June 7, 2017 18:44
Show Gist options
  • Save jdogresorg/f9024d48703e425211455b923f23884c to your computer and use it in GitHub Desktop.
Save jdogresorg/f9024d48703e425211455b923f23884c to your computer and use it in GitHub Desktop.
Memo Requirement through Broadcasts
  CIP: 12
  Title: Memo Requirement through Broadcasts
  Authors: Jeremy Johnson
  Discussions-To: https://counterpartytalk.org/t/memo-requirement-through-broadcasts/3147
  Status: Draft
  Type: Standards
  Created: 2017-06-07

Abstract

Any user should be able to mark an address under their control as memo-required. The protocol should track this memo requirement and prevent any sends to the address without a memo.

Motivation

To lessen end user support costs by enforcing a memo requirement at the protcol level.

Rationale

CIP9 allows for specifying a memo in a send transaction, which can reduce the FEES cost for exchanges by allowing customers to make deposits directly to an exchange hot-wallet. The data in the 'memo' field is used to associate a transaction with a specific customer, and removes the requirement that each customer have their own deposit address. However, there is still a non-trivial SUPPORT cost associated with tracking down customer deposits without a memo.

By allowing an exchange to mark their address as memo-required, and rejecting sends without a memo, they are able to reduce their support costs.

Enforcing a memo requirement at the protcol level also has the added benefit that it can discourage predatory behavior by exchanges, such as allowing sends without a memo, and ignoring any support requests by customers who made a deposit without a memo.

Specification

There will be 2 types of 'special' broadcast messages that are used for this; REQUIRE MEMO and DISABLE MEMO.

REQUIRE MEMO

Broadcasting REQUIRE MEMO indicates that a memo should be required for any sends to the broadcasting address.

DISABLE MEMO

Broadcasting DISABLE MEMO indicates that a memo requirement should be removed, and sends without memos should be allowed.

LOCKed broadcast feed

Counterparty has a feature to broadcast the text LOCK to prevent any further broadcasts from that address ever being considered valid. Any broadcasts from a address with a LOCKed broadcast feed will be ignored.

Backwards Compatibility

This is completely backwards compatible with older clients as we're using valid broadcast messages. As described the address data will be excluded from consensus hashes to avoid a split.

Consensus Hashes

The table where the address data is stored and any validation errors of memo broadcast messages are excluded from consensus hashes, to make sure this is optional and can be disabled.

Copyright

This document is placed in the public domain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment