IP Library Granted Patent US 10,637,920
Granted Patent B2
US 10,637,920 · App. 15/681,237 · Granted Apr 28, 2020

System, method, and computer program product for peer-to-peer event ordering using a two part event identifier

Inventors: Alexander Sherkin (Vaughan, CA); Michael Matovsky (Vaughan, CA)
Assignee: DIGITAL 14 LLC
H04L67/104H04W76/14H04W84/12
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,637,920
App. No.
15/681,237
Granted
Apr 28, 2020
Kind
B2
Abstract

A system, method, and computer program product are provided for peer-to-peer event ordering using a two part event identifier. In use, a peer-to-peer communication channel is established by a first peer device with a second peer device. A current event identifier is initialized at the first peer device, and the second peer device initializes a different current event identifier at the second peer device. A plurality of events are communicated between the first peer device and the second peer device, where the events are each configured to include an event identifier that is the current event identifier of a sender of the event, and where the current event identifier includes two portions that are updated differently when sending and receiving events. Further, the events are ordered by the first peer device, using the event identifier included with each of the events.

Claims (58)

1. A method, comprising:

establishing, by a first peer device, a peer-to-peer communication channel with a second peer device;

initializing, by the first peer device, a current first peer event identifier at the first peer device, wherein the current first peer event identifier at the first peer device includes a first value that is updated each time the first peer device sends an event and a second value that is updated each time the first peer device receives an event,

wherein the second peer device initializes a current second peer event identifier at the second peer device that is different from the current first peer event identifier initialized at the first peer device, and wherein the current second peer event identifier at the second peer device includes a first value that is updated each time the second peer device sends an event and a second value that is updated each time the second peer device receives an event;

communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, a plurality of events configured in accordance with a communication protocol that includes with each event of the plurality of events an event identifier that is the current event identifier of a sender of the event, the communicating including:

for each event of the plurality of events sent by the first peer device to the second peer device, sending, with the event, the current first peer event identifier of the first peer device, and

for each additional event of the plurality of events received by the first peer device from the second peer device, receiving, with the additional event, the current second peer event identifier of the second peer device; and

ordering, by the first peer device, the events in the plurality of events, using the event identifier included with each of the events in the plurality of events.

2. The method of claim 1 , wherein the peer-to-peer communication channel enables the first peer device and the second peer device to communicate without use of an intermediary device.

3. The method of claim 1 , wherein establishing, by the first peer device, the peer-to-peer communication channel with the second peer device includes:

performing, by the first peer device, a peer-to-peer handshake process with the second peer device.

4. The method of claim 3 , wherein the peer-to-peer handshake process determines the current first peer event identifier at the first peer device and the current second peer event identifier at the second peer device.

5. The method of claim 1 , wherein communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, the plurality of events includes:

requesting, by the first peer device, to send an event of the plurality of events to the second peer device, such that the first peer device is the sender of the event;

including as the event identifier with the event of the plurality of events, by the first peer device, the current first peer event identifier at the first peer device;

sending, by the first peer device to the second peer device, over the peer-to-peer communication channel, the event of the plurality of events with the included event identifier;

responsive to sending the event to the second peer device, incrementing, by the first peer device, the second value of the current first peer event identifier at the first peer device.

6. The method of claim 1 , wherein communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, the plurality of events includes:

receiving, by the first peer device, an additional event of the plurality of events from the second peer device, such that the second peer device is the sender of the event;

responsive to receiving the event from the second peer device, setting, by the first peer device, the event identifier included with the event as the current first peer event identifier at the first peer device, and incrementing, by the first peer device, the first value of the current first peer event identifier at the first peer device and setting the second value of the current first peer event identifier at the first peer device to a default value.

7. The method of claim 1 , wherein the event identifier is in a format [x,y], wherein x is the first value and y is the second value.

8. The method of claim 7 , wherein x is a first integer and y is a second integer.

9. The method of claim 8 , wherein x represents the most significant bytes (MSB) of the event identifier and y represents the least significant bytes (LSB) of the event identifier.

10. The method of claim 8 , wherein the current first peer event identifier initialized for the first peer device is [0,0], and wherein the current second peer event identifier initialized for the second peer device is [1,0].

11. The method of claim 1 , wherein ordering, by the first peer device, the events in the plurality of events, using the event identifier included with each of the events in the plurality of events includes:

first, numerically ordering the events based on the first value of the event identifier; and

second, numerically ordering any events with a same value for the first value of the event identifier based on the second value of the event identifier.

12. The method of claim 11 , wherein a greater value is associated with a later event.

13. The method of claim 1 , wherein a unique event identifier is included with each event of the plurality of events.

14. A non-transitory computer readable medium storing computer code executable by a processor to perform a method comprising:

establishing, by a first peer device, a peer-to-peer communication channel with a second peer device;

initializing, by the first peer device, a current first peer event identifier at the first peer device, wherein the current first peer event identifier at the first peer device includes a first value that is updated each time the first peer device sends an event and a second value that is updated each time the first peer device receives an event,

wherein the second peer device initializes a current second peer event identifier at the second peer device that is different from the current first peer event identifier initialized at the first peer device, and wherein the current second peer event identifier at the second peer device includes a first value that is updated each time the second peer device sends an event and a second value that is updated each time the second peer device receives an event;

communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, a plurality of events configured in accordance with a communication protocol that includes with each event of the plurality of events an event identifier that is the current event identifier of a sender of the event, the communicating including:

for each event of the plurality of events sent by the first peer device to the second peer device, sending, with the event, the current first peer event identifier of the first peer device, and

for each additional event of the plurality of events received by the first peer device from the second peer device, receiving, with the additional event, the current second peer event identifier of the second peer device; and

ordering, by the first peer device, the events in the plurality of events, using the event identifier included with each of the events in the plurality of events.

15. The non-transitory computer readable medium of claim 14 , wherein establishing, by the first peer device, the peer-to-peer communication channel with the second peer device includes:

performing, by the first peer device, a peer-to-peer handshake process with the second peer device.

16. The non-transitory computer readable medium of claim 15 , wherein the peer-to-peer handshake process determines the current first peer event identifier at the first peer device and the current second peer event identifier at the second peer device.

17. The non-transitory computer readable medium of claim 14 , wherein communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, the plurality of events includes:

requesting, by the first peer device, to send an event of the plurality of events to the second peer device, such that the first peer device is the sender of the event;

including as the event identifier with the event of the plurality of events, by the first peer device, the current first peer event identifier at the first peer device;

sending, by the first peer device to the second peer device, over the peer-to-peer communication channel, the event of the plurality of events with the included event identifier;

responsive to sending the event to the second peer device, incrementing, by the first peer device, the second value of the current first peer event identifier at the first peer device.

18. The non-transitory computer readable medium of claim 14 , wherein communicating, between the first peer device and the second peer device over the peer-to-peer communication channel, the plurality of events includes:

receiving, by the first peer device, an event of the plurality of events from the second peer device, such that the second peer device is the sender of the event;

responsive to receiving the event from the second peer device, setting, by the first peer device, the event identifier included with the event as the current first peer event identifier at the first peer device, and incrementing, by the first peer device, the first value of the current first peer event identifier at the first peer device and setting the second value of the current first peer event identifier at the first peer device to a default value.

19. An apparatus, comprising:

a computer processor of a first peer device for:

establishing a peer-to-peer communication channel with a second peer device;

initializing, by the first peer device, a current first peer event identifier at the first peer device, wherein the current first peer event identifier at the first peer device includes a first value that is updated each time the first peer device sends an event and a second value that is updated each time the first peer device receives an event,

wherein the second peer device initializes a current second peer event identifier at the second peer device that is different from the current first peer event identifier initialized at the first peer device, and wherein the current second peer event identifier at the second peer device includes a first value that is updated each time the second peer device sends an event and a second value that is updated each time the second peer device receives an event;

communicating, with the second peer device over the peer-to-peer communication channel, a plurality of events configured in accordance with a communication protocol that includes with each event of the plurality of events an event identifier that is the current event identifier of a sender of the event, the communicating including:

for each event of the plurality of events sent by the first peer device to the second peer device, sending, with the event, the current first peer event identifier of the first peer device, and

for each additional event of the plurality of events received by the first peer device from the second peer device, receiving, with the additional event, the current second peer event identifier of the second peer device; and

ordering the events in the plurality of events, using the event identifier included with each of the events in the plurality of events.

20. The apparatus of claim 19 , wherein the event identifiers are utilized to make the communication protocol a secure communication protocol.

Assignments (3)
CHANGE OF NAME Recorded Nov 7, 2025
From: DIGITAL 14 - L.L.C.
To: KATIM L.L.C.
Reel/Frame 072834/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2020
From: DARK MATTER LLC
To: DIGITAL 14 LLC
Reel/Frame 052089/0184 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2018
From: SHERKIN, ALEXANDER; MATOVSKY, MICHAEL
To: DARK MATTER L.L.C.
Reel/Frame 044931/0621 →
Continuity (1)
Related Publication 20190058760A1 · Feb 21, 2019