IP Library Granted Patent US 8,041,803
Granted Patent B2
US 8,041,803 · App. 10/159,224 · Granted Oct 18, 2011

Method and system for delivering files in digital file marketplace

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 8,041,803
App. No.
10/159,224
Granted
Oct 18, 2011
Kind
B2
Abstract

A method and system for delivering digital files in a peer-to-peer network comprising a plurality of nodes including at least one server is disclosed. The network includes a plurality of files that are available for accessibility by the nodes in which respective fingerprints are computed for each of the files based on content of the files. The method and system include partitioning each of the files into a plurality of file chunks, and assigning an error detecting code to each of the chunks. The file is then transmitted to a first node from at least one other node by transmitting the chunks of the file to the first node. The method and system further include computing a new error detecting code upon receipt of each chunk by the first node, and comparing the new error detecting code to the assigned error detecting code to verify that each chunk has been transmitted correctly, whereby the entire contents of the file does not have to be received before the first node discovers that the file is corrupt. In a further embodiment of the present invention, the method and system include determining the bandwidth contributed by each node that successfully transmitted a chunk of the file, and paying an owner of each node a fee based on the contributed bandwidth.

Claims (44)

1. A method for obtaining a digital file in a peer-to-peer network, comprising:

receiving a list comprising a plurality of URLs from a server, wherein each of the plurality of URLs identifies a location of a copy of a file on a different one of a plurality of nodes;

receiving a plurality of precalculated error detecting codes from the server, wherein each of the plurality of precalculated error detecting codes corresponds to one of a plurality of file chunks of the file;

concurrently initiating a plurality of requests for ones of the plurality of file chunks of the file, including a first request for a first file chunk from a first node of the plurality of nodes, a second request for a second file chunk from a second node of the plurality of nodes, and a third request for a third file chunk from a third node of the plurality of nodes;

receiving the first file chunk, the second file chunk, and the third file chunk;

calculating new error detecting codes for each of the first file chunk, the second file chunk, and the third file chunk in response to receiving the first, second and third file chunks, respectively;

for each of the first, second, and third file chunks comparing the corresponding new error detecting code to a corresponding precalculated error detecting code from the list, and if the corresponding new error detecting code does not match the corresponding precalculated error detecting code, requesting a corresponding file chunk from one of the plurality of nodes that is a different node from the node from which the corresponding file chunk was originally received.

2. The method of claim 1 further including the step of: for each node that successfully transmitted a chunk of the digital file, determining bandwidth contributed by each node and paying an owner of each node a fee based on the contributed bandwidth.

3. The method of claim 2 further including the steps of: maintaining an error report for each node and designating each node having a total number of reported errors greater than a predetermined threshold as ineligible to serve future digital file requests.

4. The method of claim 1 further comprising partitioning the digital file such that each file chunk of the plurality of file chunks is a fixed sized block.

5. The method of claim 1 further comprising providing a cycle redundancy check (CRC) as an error detecting code.

6. The method of claim 1 wherein the digital file is published for sharing on the network from the second node, the method further including the step of:

computing a respective fingerprint and assigning error detecting codes by the second node.

7. The method of claim 6 further including the step of: uploading business rules associated with the digital file, file metadata, the respective fingerprint, the plurality of file chunks, and the error detecting codes from the second node to the server.

8. The method of claim 7 further including the step of:

storing the file metadata in a query database; and

storing a peer identification (ID) and bandwidth speed of the second node and a URL of the digital file on the second node in a location database.

9. The method of claim 1 further including the steps of:

reassembling the digital file from the plurality of file chunks; and

recomputing a respective fingerprint for the digital file and comparing the respective fingerprint with a fingerprint received from the server to verify the digital file.

10. A non-transitory computer readable medium containing program instructions for receiving a digital file in a peer-to-peer network, the program instructions for:

receiving a list comprising a plurality of URLs from a server, wherein each of the plurality of URLs identifies a location of a copy of a digital file on a different one of a plurality of nodes;

receiving a plurality of precalculated error detecting codes from the first server, wherein each of the plurality of precalculated error detecting codes corresponds to one of a plurality of file chunks of the digital file;

concurrently initiating a plurality of requests for ones of the plurality of file chunks of the digital file, including a first request for a first file chunk from a first node of the plurality of nodes, a second request for a second file chunk from a second node of the plurality of nodes, and a third request for a third file chunk from a third node of the plurality of nodes;

receiving the first file chunk, the second file chunk, and the third file chunk;

calculating new error detecting codes for each of the first file chunk, the second file chunk, and the third file chunk in response to receiving the first, second, and third file chunks, respectively;

for each of the first, second, and third file chunks, comparing the corresponding new error detecting code to a corresponding precalculated error detecting code from the list, and if the corresponding new error detecting code does not match the corresponding precalculated error detecting code, requesting a corresponding file chunk from one of the plurality of nodes that is a different node from the node from which the corresponding file chunk was originally received.

11. The non-transitory computer readable medium of claim 10 further including the instruction of: for each node that successfully transmitted a chunk of the digital file, determining bandwidth contributed by each node and paying an owner of each node a fee based on the contributed bandwidth.

12. The non-transitory computer readable medium of claim 11 further including the instructions of: maintaining an error report for each node and designating each node having a total number of reported errors greater than a predetermined threshold as ineligible to serve future digital file requests.

13. The non-transitory computer readable medium of claim 10 further including the instruction of: partitioning the digital file such that each file chunk of the plurality of file chunks is a fixed sized block.

14. The non-transitory computer readable medium of claim 10 further including the instruction of: providing a cycle redundancy check (CRC) as the error detecting code.

15. The non-transitory computer readable medium of claim 10 wherein the digital file is published for sharing on the network from the second node, the computer readable medium further including the instruction of: computing a respective fingerprint and assigning error detecting codes by the second node.

16. The non-transitory computer readable medium of claim 15 further including the instruction of: uploading business rules associated with the digital file, file metadata, the respective fingerprint, the plurality of file chunks, and the error detecting codes from the second node to the server.

17. The non-transitory computer readable medium of claim 16 further including the instruction of:

storing the file metadata in a query database; and

storing a peer identification (ID) and bandwidth speed of the second node and a URL of the digital file on the second node in a location database.

18. A method for receiving a digital file in a peer-to-peer network, the method comprising the steps of:

receiving a list comprising a plurality of URLs from a server, wherein each URL in the list identifies a corresponding node of a plurality of nodes that contains a copy of the digital file, wherein the digital file is partitioned into a plurality of file chunks on each of the plurality of nodes, and each of the plurality of file chunks has a corresponding error detecting code maintained on the server;

receiving a second list comprising a plurality of corresponding error detecting codes from the server;

eliminating at least one URL from the list of URLs based on an identifier indicating the node corresponding to the at least one URL is unreliable;

sorting the list to place each URL in the list in an order according to a bandwidth speed associated with each of the corresponding nodes; and

initiating a download of distinct chunks from a second plurality of nodes corresponding to a plurality of successive URLs in the list; and

upon receipt of the distinct chunks, computing a new error detecting code and comparing the new error detecting code to the corresponding error detecting code to verify that each distinct chunk has been downloaded correctly; and

requesting a chunk from a different node from an initial node from which the chunk was received if the new error detecting code associated with the chunk does not match the corresponding error detecting code associated with the chunk.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2021
From: IP3 2019, SERIES 400 OF ALLIED SECURITY TRUST I
To: ZAMA INNOVATIONS LLC
Reel/Frame 057407/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 18, 2019
From: QURIO HOLDINGS, INC.
To: IP3 2019, SERIES 400 OF ALLIED SECURITY TRUST I
Reel/Frame 051318/0692 →
CHANGE OF ADDRESS Recorded Jul 13, 2006
From: QURIO HOLDINGS, INC.
To: QURIO HOLDINGS, INC.
Reel/Frame 017921/0730 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2005
From: YAGA, INC.
To: QURIO HOLDINGS, INC.
Reel/Frame 016361/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2002
From: YU, CHEE; GARDNER, GREG; VIADYANATHAN, VIJAY; DIAS, ANTONIO; KITZE, CHRISTOPHER A.
To: YAGA, INC.
Reel/Frame 013141/0582 →