Estoy leyendo "Mastering Bitcoin escrito por Andreas" y encontré esta explicación de la minería.
Las transacciones se agregan al nuevo bloque, priorizadas por las transacciones con la tarifa más alta primero y algunos otros criterios.
Fuente: [ Mastering Bitcoins: Mining Transactions in Blocks ]
Quiero saber cuáles son algunos otros criterios. Y quiero ver el código fuente donde el sistema prioriza primero las transacciones con la tarifa más alta y algunos otros criterios.
Supongo que el código está en miner.cpp
. Pero no entiendo la línea exacta.
https://github.com/bitcoin/bitcoin/blob/master/src/miner.cpp
El código que estás buscando está en CreateNewBlock
.
La forma habitual en que se agregan transacciones a un bloque es ordenándolas por prioridad. La prioridad de una entrada es el valor que se gasta en la entrada multiplicado por el número de confirmaciones que tiene. La prioridad de una transacción es la suma de todas las prioridades de las entradas. Ver esta línea :
dPriority += (double)nValueIn * nConf;
Las transacciones se agregan a un vector de prioridad de transacción :
vector<TxPriority> vecPriority;
Luego se ordenan según su prioridad :
TxPriorityCompare comparer(fSortedByFee);
std::make_heap(vecPriority.begin(), vecPriority.end(), comparer);
Y una por una, las transacciones se verifican para que sean válidas y luego se agregan al bloque , hecho por orden de prioridad, la prioridad más alta primero:
while (!vecPriority.empty())
...
// Added
pblock->vtx.push_back(tx);
zona