В чем именно разница между
time
, blocktime
иtimereceived
в информации о транзакции, возвращаемой Bitcoind JSON RPC API? Например:
{
"amount": 0.02,
"blockindex": 45,
"time": 1306179671,
"category": "receive",
"confirmations": 109244,
"timereceived": 1306179671,
"address": "1P5xanGEdgPKYNt4BnATambHpbZ2h89bYv",
"txid": "91eb6cb34b9253cce0ab5da171a0f5aae9d3d36208e23062ba61cd9e21c09a3d",
"blockhash": "0000000000002e65f5cc554e99c352af958a63f4be663627f2c569e5a996a03a",
"account": "",
"blocktime": 1306173564
}
timereceived
когда ваш клиент впервые узнал о сделке. Если вы отправили транзакцию, это время, когда вы отправили транзакцию. Если вы получили транзакцию, значит, ваш клиент впервые увидел транзакцию в сети.
time
может отличаться от timereceived
того, если бы вы впервые узнали о транзакции, увидев ее в блоке. Обычно это происходит, когда ваш клиент какое-то время находился в автономном режиме, и вы попали в цепочку блоков. В этом случае time
будет использоваться временная метка блока, если это кажется разумным. Конкретно:
time
будет такой же, как timereceived
.time
она будет равна времени последней транзакции в кошельке.Время транзакций не меняется даже после реорганизации, и новые транзакции никогда не будут иметь более раннее время, чем существующая транзакция. Так было не всегда (старые версии предпочитали использовать временную метку блока, что обычно является более точным), но текущий метод упрощает безопасную работу с временными метками транзакций.