Who first used the term on a forum, mailing list or other public venue?
The earliest post I could find mentioning "coinbase" on bitcoin talk was on June 21, 2010 by user Laszlo:
https://bitcointalk.org/index.php?topic=198.msg1640#msg1640
I'm looking to trace back to the "original specification" of the coinbase transaction, if there is one.
As alluded to by Antoine Poinsot, it seems the original specification is the isCoinBase
method of a CTransaction
object, as well as in its checkTransaction
method:
class CTransaction
{
public:
int nVersion;
vector<CTxIn> vin;
...
bool IsCoinBase() const
{
return (vin.size() == 1 && vin[0].prevout.IsNull());
}
...
bool CheckTransaction() const
{
...
if (IsCoinBase())
{
if (vin[0].scriptSig.size() < 2 || vin[0].scriptSig.size() > 100)
return error("CTransaction::CheckTransaction() : coinbase script size");
}
...
return true;
}
...
}
Which I take to mean "The coinbase transaction shall be a standard transaction with exactly one null input transaction where the input scriptSig size is in the range 2 to 100 bytes."
Here, "null" is defined as a COutPoint
object with hash==0 and n==-1:
class COutPoint
{
public:
uint256 hash;
unsigned int n;
...
bool IsNull() const { return (hash == 0 && n == -1); }
...
}