EIP 758: ERC-NN Subscriptions and filters for completed transactions (DRAFT)

Return to Ethereum ERCs

Note: The following is an excerpt from the official Ethereum site. It is provided here as a convenience and is not authoritative. Refer to the original document as the authoritative reference.

Data sheet for Subscriptions and filters for completed transactions

Title	Subscriptions and filters for completed transactions
Author	Jack Peterson
Status	Draft
Created	2017-11-09
Description	http://eips.ethereum.org/EIPS/eip-758
Specification	http://eips.ethereum.org/EIPS/eip-758#Specification
Category	Interface

Simple Summary

Provide a way for external callers to be notified of completed transactions, and access the return data of functions executed when a transaction is mined.

Abstract

When a new transaction is submitted successfully to an Ethereum node, the node responds with the transaction’s hash. If the transaction involved the execution of a contract function that returns data, the data is discarded. If the return data is state-dependent, which is common, there is no straightforward way for the caller to access or compute the return data. This EIP proposes that callers should be able to subscribe to (or poll for) completed transactions. The Ethereum node sends the return data to the caller when the transactions are sealed.

Motivation

External callers presently have no way of accessing return data from Ethereum, if the function was executed via eth_sendTransaction or eth_sendRawTransaction RPC request. Access to function return data is in many cases a desirable feature. Making return data available to external callers also addresses the inconsistency between internal callers, which have access to return data within the context of the transaction, and external callers, which do not. Presently, a common workaround is to log the return data, which is bad for several reasons: it contributes to chain bloat, imposes additional gas costs on the caller, and can result in unused logs being written if the externally called function involves other (internal) function calls that log their return data. While implementing the original version of this EIP, it was decided to expand this functionality slightly to allow for external callers to be notified of their completed transactions even in the case where there is no return data. This could be either because the method called doesn’t return a value, or because the transaction is a simple transfer of value.