Как стандартный клиент определяет приоритеты транзакций?

Я слышал, что стандартный клиент отдает приоритет транзакциям для ретрансляции, основываясь на биткойн-днях уничтоженных и комиссии, уплаченной за транзакцию, но какая точная формула используется для определения того, какая транзакция имеет более высокий приоритет? То есть, как стандартный клиент определяет приоритет, какую транзакцию отправлять другим узлам в первую очередь?

возможный дубликат Каков алгоритм выбора монет?
@StephenGornick Не дубликат, это относится к ретрансляции транзакций, в то время как тот, который вы связали, относится к приоритизации монет, используемых в транзакциях.
Возможно, вам следует уточнить, что вы подразумеваете под реле . Вас интересует порядок транзакций, которые передаются другим узлам, или порядок (и, возможно, количество), которые учитываются для создания новых блоков?

Ответы (2)

Приоритет транзакции (сумма (возраст монеты в блоках * стоимость монеты в сатоши) по всем входам в транзакции), деленная на размер транзакции в байтах.

Вот случайный пример транзакции, скопированный с http://bitcoincharts.com/bitcoin/txlist/ :

введите описание изображения здесь

Он имеет 2 входа (оба с тех пор были потрачены на другие (подтвержденные) транзакции, что делает эту транзакцию неподтвержденной):

  • один за 0,1005 BTC из блока 165774
  • один за 0,0995 BTC из блока 165777

Он имеет длину 439 байт и приоритет 432 232 688.

На момент написания последнего блока в блокчейне было 175262.

Я суммирую (возраст * значения) для каждой транзакции и делю на размер. Это + 1связано с тем, что транзакции, подтвержденные в новейшем блоке, считаются имеющими возраст 1, а не 0:

>>> current_block = 175262
>>> ((current_block - 165774 + 1) * 0.1005e8 +
     (current_block - 165777 + 1) * 0.0995e8) / 439
432232687.92710704

Как видите, приоритет транзакции будет повышаться по мере нахождения новых блоков.

Это приоритет, который клиент использует, чтобы решить, какие транзакции включать в добытые блоки. Это, скорее всего, то, что кто-то хочет знать, когда они спрашивают о приоритете транзакции.
Согласовано. Отличный ответ, но не на правильный вопрос. Это был бы отличный ответ на этот вопрос, я бы посоветовал вам скопировать его туда и удалить отсюда.
Я думаю, что это расчет, к которому относился вопрос. Просто он не используется, чтобы решить, какие транзакции ретранслировать. При принятии решения о том, какие транзакции ретранслировать, расчет приоритета не производится.

Правила для клиента Bitcoin.org заключаются в том, чтобы сохранять первую транзакцию, в которой был потрачен биткойн-адрес, и отбрасывать ее, не ретранслируя любые другие, которые могут поступить.

Таким образом, приоритет основывается на хронологическом времени прибытия.

Ходили разговоры о вариантах , которые позволили бы замещающей транзакции с более высокой комиссией заменить более раннюю транзакцию, которая еще не была подтверждена.

И есть вектор атаки, описывающий, как можно изменить этот приоритет, чтобы облегчить двойные траты .