Код:
3368 uint64 nBlockSize = 1000;
3369 INT nBlockSigOps = 100;
3370 в то время как (! mapPriority.empty ())
3371 {
3372 // Возьмите наивысший приоритет транзакции от очереди приоритета
3373 двойная dPriority = - (* mapPriority.begin ()) в первую очередь.;
3374 CTransaction& Тх = * (* mapPriority.begin ()) второй.
3375 mapPriority.erase (mapPriority.begin ());
3376
3377 // Ограничение размера
3378 неподписанных INT nTxSize = :: GetSerializeSize (ТХ, SER_NETWORK);
3379 если (nBlockSize + nTxSize >= MAX_BLOCK_SIZE_GEN)
3380 Продолжать;
3381 INT nTxSigOps = tx.GetSigOpCount ();
3382 если (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS)
3383 Продолжать;
3384
3385 // Плата за транзакции требуется зависит от размера блока
3386 BOOL fAllowFree = (nBlockSize + nTxSize < 4000 || dPriority > МОНЕТЫ * 144/250);
3387 Int64 nMinFee = tx.GetMinFee (nBlockSize, fAllowFree);
Последние несколько строк здесь, относятся к одной из правил свободной сделки: если размер рассчитывает новый ТХ < 4000, то он имеет право не обращать плату ТХ.3369 INT nBlockSigOps = 100;
3370 в то время как (! mapPriority.empty ())
3371 {
3372 // Возьмите наивысший приоритет транзакции от очереди приоритета
3373 двойная dPriority = - (* mapPriority.begin ()) в первую очередь.;
3374 CTransaction& Тх = * (* mapPriority.begin ()) второй.
3375 mapPriority.erase (mapPriority.begin ());
3376
3377 // Ограничение размера
3378 неподписанных INT nTxSize = :: GetSerializeSize (ТХ, SER_NETWORK);
3379 если (nBlockSize + nTxSize >= MAX_BLOCK_SIZE_GEN)
3380 Продолжать;
3381 INT nTxSigOps = tx.GetSigOpCount ();
3382 если (nBlockSigOps + nTxSigOps >= MAX_BLOCK_SIGOPS)
3383 Продолжать;
3384
3385 // Плата за транзакции требуется зависит от размера блока
3386 BOOL fAllowFree = (nBlockSize + nTxSize < 4000 || dPriority > МОНЕТЫ * 144/250);
3387 Int64 nMinFee = tx.GetMinFee (nBlockSize, fAllowFree);
Я хотел бы отметить первую строку, которая инициализирует nBlockSize до 1000. Это означает, что есть только 3000 байт, зарезервированных для свободных сделок, не 4K, как часто утверждается.
dPriority для ОГО вычисляются как сумма по всем входным сделкам раз входной величины его глубины, деленный на размере TX в байтах. Это по сравнению с выше 144/250, в единицах Bitcoins. 250 о размере простой сделки, так, чтобы иметь право не ТХ сборов за пределами области 3000 байт, средняя глубина входов раз значения ОГО должна быть > 144 ВТС (более сложных операций со многими входами). Если это так, то функция GetMinFee () позволяет до 27К пространства.
Особый случай представляет собой операцию с входом (ы) не в блоках. Они не способствуют приоритета, как если глубина == 0. Если все входы не в блоках, то dPriority будет равен нулю, и ТХ может перейти в блок только тогда, когда его предшественники попали в блок.
Если кто-то посылает кучу сделок быстро, так что каждый из них зависит от того, раньше, то все, но, возможно, первый будет иметь dPriority нуль. При отсутствии ТХ сборов, только около 12 может попасть в зону свободной оК. Если есть другие сделки вокруг, там будет место для меньше.
Я вижу картину блоков около 3.1K в размере приблизительно 12 сделки. Также имеются сообщения цепочек операций, каждый зависит от предыдущего, попадая в последовательные блоки, по одному на каждый блок. Это может быть потому, что с каждым новым блоком (только) следующий ТХ в цепи становится ненулевым dPriority.