Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Term to use for 'output' #1

Closed
rbrunner7 opened this issue Aug 1, 2022 · 2 comments
Closed

Term to use for 'output' #1

rbrunner7 opened this issue Aug 1, 2022 · 2 comments

Comments

@rbrunner7
Copy link
Member

rbrunner7 commented Aug 1, 2022

One of the most important terms to decide for a wallet2 rewrite is how to call the "constructs" that carry XMR within transactions. Some of the proposals in this issue here come from a discussion in the #monero-research-lab channel on 2022-07-25.

The "construct" in question is often called output quite in general, and of course especially as the result of a transaction. Right now a Monero transaction can have at most 16 such outputs. The same construct is then called input if it provides XMR to spend in a transaction. With usually no proper superordinate term the use of two terms input and output for the same thing depending on use can certainly be somewhat confusing.

The terms output and input are established in the realm of cryptocurrencies beyond Monero more or less since the beginning and therefore pretty "entrenched".

In current wallet2 code the name of the struct to handle the info of an input/output is called transfer_details, a choice seemingly made already by the original CryptoNote devs back in 2012 or so.

@UkoeHB coined a new term enote for his Seraphis library. enote is in analogy to terms like e-mail on the one hand and banknote on the other hand. An enote has an amount and an owner; it seems prudent to use owner and not destination because that's independent of use.

Another possibility is coin. Wallets that offer functionality to decide exactly which outputs to use as inputs for a transaction to do often speak of offering coin control.

One more proposal from the linked IRC discussion is ledger_entry. That may look attractive until you realize that there are pending transactions and prepared transactions "in transit" e.g. in the form of files for cold signing or multisig where whatever you call what they carry is of course not yet recorded in the ledger / blockchain.

My current personal opinion about this at the time of writing: Despite being well established output together with input is confusing and in lack of a term that encompasses both. transfer is quite unspecific, any you can easily mis-take it to mean a transaction as a whole. coin seems too "non-technical" to me for use in code. The mentioned problems make ledger_entry unattractive. I don't have an idea of my own for a good term. Thus what remains is enote.

In my view enote has one big advantage: It's fresh and not yet "worn out" like other term. Devs seeing it for the first time may puzzle over its meaning but once they know it there is almost no chance for confusion to arise.

I see no problem to use the terms input and output in a limited way, to specify the way a particular enote is used in the context of transaction construction.

@One-horse-wagon
Copy link

eNote would get my vote as it seems a derivation from the words banknote and electronic mail. In other words, electronic bank notes which is what Monero really is. I have always disliked the term--coins.

@rbrunner7
Copy link
Member Author

Seen as decided (we use enote in Seraphis wallet coding) after discussion in the first workgroup meeting

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants