rpcpool / yellowstone-grpc

solana geyser grpc service
GNU Affero General Public License v3.0
312 stars 112 forks source link

Last account update for current slot. #322

Open SerK0 opened 7 months ago

SerK0 commented 7 months ago

Sometime there are several updates for account in a slot. Would be great to have flag/notification about ending of slot updates for account. Is there a way to get this data from streamer?

For example:

  1. slot = 1, account = x, write_version=1, date, is_last_update=False
  2. slot = 1, account = x, write_version=8, date, is_last_update=False
  3. slot = 1, account = x, write_version=14, date, is_last_update=True
linuskendall commented 7 months ago

The update with the highest version is the last one in slot.

On Sun, 14 Apr 2024 at 20:37, SerK0 @.***> wrote:

Sometime there are several updates for account in a slot. Would be great to have flag/notification about ending of slot updates for account. Is there a way to get this data from streamer?

For example:

  1. slot = 1, account = x, write_version=1, date, is_last_update=False
  2. slot = 1, account = x, write_version=8, date, is_last_update=False
  3. slot = 1, account = x, write_version=14, date, is_last_update=True

— Reply to this email directly, view it on GitHub https://github.com/rpcpool/yellowstone-grpc/issues/322, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABHOYRKUUZIAWFJVCEK6JMDY5KLUVAVCNFSM6AAAAABGGG5EESVHI2DSMVQWIX3LMV43ASLTON2WKOZSGI2DEMRRGI2TKNI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

SerK0 commented 7 months ago

Yes, bigger write version, fresher update. But question a little bit different, how to understand that this one update is the last one and I should not wait for another one?

fanatid commented 7 months ago

geyser interface does not provide such information you can assume that stream is finished when block meta message is received

SerK0 commented 7 months ago

I realized that block meta comes slowly, for example:

Timestamp - Slot number - Update order 1713183053.118703 - Slot: 260262935 - update 1 1713183053.1275694 - Slot: 260262935 - update 1 1713183053.3360858 - Slot: 260262935 - Blockmeta received

1713183056.801951 - Slot: 260262942 - update 1 1713183056.981968 - Slot: 260262942 - Blockmeta received

1713183078.8877778 - Slot: 260262991 - update 1 1713183079.219065 - Slot: 260262991 - Blockmeta received

Blockmeta comes like 100-300ms later after update. Is it possible to understand that streamer won't push messages more? Maybe I can get some message queue to realize that there is no messages?

fanatid commented 7 months ago

Maybe I can get some message queue to realize that there is no messages?

no, you can't, check geyser interface, please.

you do not receive block meta with delay, you receive it when the bank is frozen, but account updates are received while the new bank is processed (this is the benefit of the geyser)