System and methods for data exchange using a distributed ledger
11418342 · 2022-08-16
Assignee
Inventors
Cpc classification
H04L9/3239
ELECTRICITY
H04L2209/805
ELECTRICITY
H04L63/0435
ELECTRICITY
H04L67/12
ELECTRICITY
H04L67/1059
ELECTRICITY
International classification
H04L9/32
ELECTRICITY
H04L9/06
ELECTRICITY
H04L67/12
ELECTRICITY
H04L9/00
ELECTRICITY
Abstract
Systems and methods which provide data exchange using a distributed ledger, wherein data is exchanged off-chain and information for accessing the off-chain data is exchanged through the blockchain, are disclosed. Embodiments may provide a hybrid blockchain data exchange platform storing large amounts of data (e.g., IoT data) in a data server outside of the blockchain, wherein a data consumer may obtain data from the data server using a token obtained from the blockchain. Embodiments of a hybrid blockchain data exchange platform provide for accuracy and security of the data without requiring storage of the full contents of the data within the blockchain, and/or provide data exchange in which the irrefutability of the data exchanged is ensured.
Claims
1. A method for exchange of data from a peer provider to a peer consumer, the method comprising: storing, by a data server for the peer provider, data available for exchange with one or more peer consumers; registering, by the peer provider using a blockchain network, a data service for the data available for exchange; receiving, by the data server or the peer provider from the peer consumer, a request for data of the data available for exchange, wherein the request for data includes a data token of the data service for the data available for exchange obtained by the peer consumer from the blockchain network; verifying, by the data sever or the peer provider using the blockchain network, the data token; providing, by the data server to the peer consumer, requested data of the data available for exchange if the verifying the data token confirms validity of the data token; generating, by the data server or the peer provider, a data structure representative of the data available for exchange; and storing the data structure representative of the data available for exchange to the blockchain network, wherein the storing the data structure to the blockchain network comprises: invoking a fifth smart contract of the blockchain network to save the data structure representative of the data available for exchange in the a distributed ledger of the blockchain network.
2. The method of claim 1, wherein the registering the data service comprises: invoking a first smart contract of the blockchain network to register the data service.
3. The method of claim 2, wherein the data token is obtained by the peer consumer after the peer consumer invokes a second smart contract of the blockchain network to discover the data service registered by peer provider, and after the peer consumer invokes a third smart contract of the blockchain network to request the data token.
4. The method of claim 2, wherein the verifying the data token comprises: invoking a fourth smart contract of the blockchain network to check the validity of the data token provided by the peer consumer.
5. The method of claim 1, wherein the data available for exchange comprises Internet of Things (IoT) data.
6. The method of claim 1, wherein the data token is a security token comprising a digital signature.
7. The method of claim 1, wherein the blockchain network is a permissioned private blockchain network.
8. The method of claim 1, wherein the blockchain network does not include the data server and does not store the data available for exchange, and wherein the providing the requested data by the data server to the peer consumer exchanges the requested data by the data server to the peer consumer off-chain with respect to the blockchain network.
9. The method of claim 1, wherein the data structure representative of the data available for exchange to the blockchain network comprises a Bloom filter for the data available for exchange to the blockchain network.
10. The method of claim 1, wherein the data structure representative of the data available for exchange is made available to the peer consumer by the blockchain network as part of the data service for verifying integrity of the requested data.
11. The method of claim 10, wherein the data structure representative of the data available for exchange is obtained by the peer consumer after the peer consumer invokes a sixth smart contract of the blockchain network as part of operation to verify data of the data available for exchanged obtained from data server by the peer consumer.
12. The method of claim 1, further comprising: encrypting the requested data, wherein the providing the requested data comprises providing an encrypted instance of the requested data to the peer consumer by the data server; generating information for use in the peer consumer extracting the requested data from the encrypted instance of the requested data; and storing the information for use in the peer consumer extracting the requested data and a cryptographic key for the encrypted instance of the requested data to the blockchain network.
13. The method of claim 12, wherein the storing the information for use in the peer consumer extracting the requested data and the cryptographic key to the blockchain network comprises: invoking a seventh smart contract of the blockchain network to save the information for use in the peer consumer extracting the requested data and the cryptographic key in a distributed ledger of the blockchain network.
14. The method of claim 12, wherein the providing the encrypted instance of the requested data to the peer consumer by the data server also provides information for verification of data received from the data server, wherein the cryptographic key is obtained by the peer consumer after the peer consumer generates, using the encrypted instance of the requested data and the information for verification of data received from the data server, corresponding information for use in the peer consumer extracting the requested data and invokes an eighth smart contract of the blockchain network to provide the corresponding information for use in the peer consumer extracting the requested data to the blockchain network.
15. The method of claim 14, wherein the information for use in the peer consumer extracting the requested data comprises a hash value for the encrypted instance of the requested data, and wherein the information for verification of data received from the data server comprises a hash function used to generate the hash value.
16. A hybrid blockchain data exchange system comprising: a data server storing data available for exchange with one or more peer consumers; and a peer provider system configured to register a data service for the data available for exchange using a blockchain network, wherein the hybrid blockchain data exchange system is configured to receive a request from a peer consumer system for data of the data available for exchange stored by the data server, wherein the request for data includes a data token of the data service, wherein the hybrid blockchain data exchange system is configured to use the blockchain network to verify the data token and provide to the peer consumer system requested data of the data available for exchange if the data token is verified, wherein the hybrid blockchain data exchange system is configured to encrypt the requested data as provided to the peer consumer system by the data server, to generate information for use in the peer consumer system extracting the requested data from an encrypted instance of the requested data, and to store the information for use in the peer consumer system extracting the requested data and a cryptographic key for the encrypted instance of the requested data to the blockchain network, and wherein the cryptographic key is obtained by the peer consumer system after the peer consumer system generates, using the encrypted instance of the requested data and the information for verification of data received from the data server, corresponding information for use in the peer consumer system extracting the requested data.
17. The hybrid blockchain data exchange system of claim 16, wherein the data available for exchange comprises Internet of Things (IoT) data.
18. The hybrid blockchain data exchange system of claim 16, wherein the blockchain network is a permissioned private blockchain network.
19. The hybrid blockchain data exchange system of claim 16, wherein the blockchain network does not include the data server and does not store the data available for exchange, and wherein the hybrid blockchain data exchange system is configured to provide the requested data to the peer consumer off-chain with respect to the blockchain network.
20. The hybrid blockchain data exchange system of claim 16, wherein the hybrid blockchain data exchange system is configured to generate a data structure representative of the data available for exchange and to store the data structure representative of the data available for exchange to the blockchain network, and wherein the data structure representative of the data available for exchange is made available to the peer consumer system by the blockchain network as part of the data service for verifying integrity of the requested data.
21. A method for exchange of data by a hybrid blockchain data exchange system from a peer provider to a peer consumer, the method comprising: storing, by a data server for the peer provider, data available for exchange with one or more peer consumers; invoking a first smart contract of a blockchain network by the peer provider to register a data service for the data available for exchange, wherein a data token is obtained by the peer consumer after the peer consumer invokes a second smart contract of the blockchain network to discover the data service registered by peer provider, and after the peer consumer invokes a third smart contract of the blockchain network to request the data token; receiving a request from the peer consumer for data of the data available for exchange, wherein the request for data includes the data token of the data service for the data available for exchange obtained by the peer consumer from the blockchain network; invoking a fourth smart contract of the blockchain network to check validity of the data token provided by the peer consumer; providing, by the data server to the peer consumer, requested data of the data available for exchange if the validity of the data token is confirmed; generating, by the data server or the peer provider, a data structure representative of the data available for exchange; and invoking a fifth smart contract to save the data structure representative of the data available for exchange to the blockchain network, wherein the data structure representative of the data available for exchange is made available to the peer consumer by the blockchain network as part of the data service for verifying integrity of the requested data, and wherein the data structure representative of the data available for exchange is provided to the peer consumer after the peer consumer invokes a sixth smart contract of the blockchain network as part of operation to verify data of the data available for exchanged obtained from data server by the peer consumer.
22. The method of claim 21, further comprising: encrypting the requested data, wherein the providing the requested data comprises providing an encrypted instance of the requested data to the peer consumer by the data server; generating information for use in the peer consumer extracting the requested data from the encrypted instance of the requested data; and invoking a seventh smart contract of the blockchain network to save the information for use in the peer consumer extracting the requested data and a cryptographic key for the encrypted instance of the requested data to the blockchain network, wherein the information for verification of data received from the data server is provided to the peer consumer by the data server with the encrypted instance of the requested data, wherein the cryptographic key is provided to the peer consumer after the peer consumer generates, using the encrypted instance of the requested data and the information for verification of data received from the data server, corresponding information for use in the peer consumer extracting the requested data and invokes an eighth smart contract of the blockchain network to provide the corresponding information for use in the peer consumer extracting the requested data to the blockchain network.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) For a more complete understanding of the present disclosure, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6)
DETAILED DESCRIPTION OF THE INVENTION
(7)
(8) In the example of hybrid blockchain data exchange platform 100 shown in
(9) Peer provider 110 of the exemplary embodiment in
(10) IoT data server 130 of the exemplary embodiment in
(11) Blockchain 150 of embodiments comprises a network of nodes operating cooperatively to form a permissioned private blockchain network. The blockchain system implemented as blockchain 150 is configured to support smart contracts. The smart contracts comprise computer code stored on blockchain 150 containing predetermined rules, wherein when rules are met, the code will be executed. Accordingly, blockchain 150 is operable to perform credible transactions without the help of third parties. Different roles and smart contracts may, for example, be pre-defined by a network administrator or other manager to address various needs, such as roles of peer provider (e.g., IoT data provider) and peer consumer (e.g., IoT data consumer) and smart contracts providing rules and associated code for implementing functions of the hybrid blockchain data exchange platform. Some exemplary smart contracts as may be utilized in implementing embodiments of hybrid blockchain data exchange platform are set forth in the table below.
(12) TABLE-US-00001 Smart Contract Input Record Created in Return Values of Smart Parameters Ledger Contract (SC1) Smart Identity of Identity of Data uuid of the Contract for participant who participant who record IoT Data invokes the contract invokes the contract Service Data filtering Data filtering Registration parameters: data type, parameters: data (for valid time, etc type, valid time, etc peer_provider Data access Data access only) methods (rest, MQTT, methods (rest, etc.) MQTT, etc.) Data uuid of the record { { { peer_identity : peer_identity : data_uuid : data_101 “peer_provider”, “peer_provider”, } data_filtering_parameters: data_filtering_parameters: [“Location”, [“Location”, “20191201,12pm - “20191001,12pm - 1pm”], 1pm”], data_access_methods: data_access_methods: [“rest api”] [“rest api”], } data_uuid : data_101 } (SC2) Smart Identity of Read Operation, no All record created Contract for participant who block created by Smart Contract for IoT IoT Data invokes the contract Data Service Registration Service Data filtering (filtered by filtering Discovery parameters: data type, parameters) (for valid time, etc peer_consumer { Read Operation, no { only) peer_identity : block created peer_identity : “peer_consumer”, “peer_provider”, data_filtering_parameters: data_filtering_parameters: [“Location”] [“Location”, } “20191001,12pm - 1pm”] data_access_methods: [“rest api”], data_uuid : data_101 } ................. (SC3) Smart Identity of Identity of data_access_secret Contract for participant who participant who Requesting Data invokes the contract invokes the contract Access Secret Data uuid of Data uuid of (for the data to be accessed the record peer_consumer Data filtering Nonce only) parameters: data type, (random number) valid time, etc Secret: hash value of data_access_secret and nonce { { { peer_identity : peer_identity : data_access_secret : “peer_consumer”, “peer_consumer”, “data_access_secret” data_uuid : data_101, data_uuid : } data_filtering_parameters: data_101, xxx nonce : nonce } secret : hash(“data_access_secret”, nonce) } (SC4) Smart Identity of Read Operation, no Validity Contract for participant who block created validity of the invokes the contract data_access_secret Data Uuid of checking the data to be accessed (peer_provider Data_access_secret_provided only) { Read Operation, no ** check if peer_identity : block created secret = “peer_provider”, hash(“data_access_secret_provided”, data_uuid : data_101 nonce) data_access_secret_provided : if data_access_secret is “xxxxxxxxxx” valid, return 1** } (SC5) Smart Identity of Identity of bloom uuid of the Contract for participant who participant who record bloom value invokes the contract invokes the contract saving Bloom Filter Bloom value (peer_provider bloom uuid only) of the record { { { peer_identity: peer_identity : bloom_filter_uuid : “peer_provider”, “peer_provider”, bloom_101 bloom_filter : bloom_filter : } bloom_filter bloom_filter, } bloom_filter_uuid : bloom_101 } (SC6) Smart Identity of Read Operation, no validity Contract for participant who block created validity invokes the contract checking Hash value of (peer_consumer data only) Bloom uuid of the record { Read Operation, no { peer_id : block created validity: 1/0 } “peer_consumer”, *** Test if Hash(data_x) is hash_data: an element using Hash(data_x), bloom_filter in (b), if yes, bloom_uuid : return 1 *** bloom_101 } (SC7) Smart Identity of Identity of Status of the Contract for participant who participant who request: Encryption invokes the contract invokes the contract 1: transaction committed Parameters Hash value of Hash value of 2: failed to commit Saving encrypted data encrypted data (peer_provider Encryption Encryption only) key key { { { peer_id : peer_id : Status: 1/0 “peer_provider”, “peer_provider”, } hash_value: hash_value: hash_value, hash_value, key : key key : key } } (SC8) Smart Identity of Identity of Key of the decryption key Contract for participant who participant who Decryption Key invokes the contract invokes the contract Request Hash value of Hash value of (peer_consumer encrypted data encrypted data only) { { { peer_id : peer_id : key: key “peer_consumer”, “peer_consumer”, } hash_value: hash_value: hash_value, hash_value, } }
(13) Hybrid blockchain data exchange platform 100 is configured for facilitating data exchange with respect to a large body of data (e.g., IoT data) using blockchain technology. In operation of hybrid blockchain data exchange platform 100 shown in
(14)
(15) Hybrid blockchain data exchange platform 100 of embodiments of the invention implements a procedure for peer provider 110 to register data and for peer consumer 120 to discover the data. Accordingly, at block 301 of flow 300, peer provider 110 registers a data service corresponding to data of IoT data 131 using blockchain 150, as illustrated by arrow 201 in
(16) At block 302 of flow 300, peer consumer 120 discovers the IoT data service using blockchain 150, as illustrated by arrow 202 in
(17) If peer consumer 120 wishes to consume data of the data service, peer consumer 120 obtains a data service token for the data from blockchain 150 at block 303 of flow 300, as illustrated by arrow 203 of
(18) At block 304 of flow 300, peer consumer 120 requests data of IoT data 131 from IoT data server 130 using the data token, as illustrated by arrow 204 of
(19) At block 305 of flow 300, IoT data server 130 verifies the data token using blockchain 150, as illustrated by arrow 205 of
(20) If the data token is determined to be valid, IoT data server 130 provides the requested data of IoT data 131 to peer consumer 120 at block 306 of flow 300, as illustrated by arrow 206 of
(21) As can be appreciated from the foregoing, operation according to blocks 301-307 cooperate to perform data transfer (exchange of data) from peer provider 110 to peer consumer 120 wherein, although blockchain 150 is used to facilitate the data transfer, the data is exchanged off-chain (i.e., raw IoT data is not directly provided by blockchain 150). Accordingly, widespread discovery of and access to IoT data 131 is provided while issues with respect to long processing times and large blockchain storage space in blockchain 150 are avoided. Although IoT data 131 is provided to peer consumer 120 off-chain, embodiments of hybrid blockchain data exchange platform 100 are nevertheless configured to facilitate verification of the integrity of the data of IoT data 131 exchanged off-chain and/or to ensure the irrefutability of the data exchanged.
(22)
(23) In providing operation for facilitating verification of the integrity of the IoT data according to flow 400A of
(24) At block 402 of flow 400A, peer provider 110 stores the data structure representative of IoT data 131 to blockchain 150. In accordance with embodiments, peer provider 110 may invoke a smart contract (e.g., smart contract SC5 of the examples above) to save the data structure representative of IoT data 131 (e.g., bloom_filter, such as may comprise [Hash(data_1), Hash(data_2) . . . Hash(data_n)]) in the distributed ledger of blockchain 150. IoT data server 130 may also save an identifier (e.g., universally unique identifier (UUID)) of the bloom filter record (e.g., bloom_filter_uuid) for repeated requests. For example, in the case that a peer consumer subsequently requests the same IoT data (e.g., data_1) which has been requested by previously by another peer consumer, the data structure representative of the IoT data (e.g., bloom_filter) and resource identifier (e.g., bloom_filter_uuid) have already saved in the ledger of blockchain 150. Thus, the IoT data server may avoid invoking SC5 to save the bloom value again and may send the resource identifier (e.g., bloom_filter_uuid) and the IoT data (e.g., data_1) directly to the subsequent peer consumer.
(25) In operation according to embodiments, IoT data server 130 may notify peer consumer 120 (e.g., at block 402 of flow 400A) that the data of IoT 131 may be verified. For example, IoT data server 130 may provide a resource identifier (e.g., bloom_filter_uuid) corresponding to a Bloom filter stored by blockchain 150 to peer consumer 120, whereby peer consumer 120 is apprised of the ability to verify the data by having been provided access to the Bloom filter used for this purpose.
(26) The operations of blocks 401 and 402 of flow 400A may be performed as part of the operations of flow 300, or separately. For example, operations of blocks 401 and/or 402 may be performed as part of the operations to provide the data at block 306. Operations of blocks 401 and/or 402 may likewise be performed after the operations of flow 300 have been completed (e.g., after completion of the operations of block 307).
(27) In operation for facilitating verification of the integrity of the IoT data according to flow 400B of
(28) The operations of block 411 of flow 400B may be performed as part of the operations of flow 300, or separately. For example, operations of block 411 may be performed as part of the operations of peer consumer 120 receiving data from IoT data server 130 at block 307. Operations of block 411 may likewise be performed after the operations of flow 300 have been completed (e.g., after completion of the operations of block 307).
(29)
(30) In providing operation for ensuring the irrefutability of the data exchanged according to flow 500A of
encrypted_data=E(data_0+data_1 . . . data_n, key).
(31) At block 502 of flow 500A, information for use in peer consumer 120 extracting the data is generated. Information used in peer consumer 120 extracting the data may, for example, include a representative data structure, such as a hash value, in addition to a cryptographic key, etc. In accordance with embodiments, peer provider 110, or IoT data server 130 operating in cooperation with peer provider 110, may compute a representative data structure (e.g., hash value) for the data to be used by peer consumer 120 in extracting the data. For example, the representative data structure may be computed according to the following:
hash_value=Hash(encrypted_data).
(32) At block 503 of flow 500A, information for use in peer consumer 120 extracting the data is stored within blockchain 150 by peer provider 110. In accordance with embodiments of the invention, peer provider 110 may invoke a smart contract (e.g., smart contract SC7 of the examples above) to save the representative data structure (e.g., hash_value) and a cryptographic key corresponding to the encryption of block 501 in the distributed ledger of blockchain 150. It should be appreciated that the encryption may comprise symmetric encryption (e.g., a same cryptographic key is used for encryption and decryption of the data) or asymmetric encryption (e.g., different cryptographic keys, such as public/private keys, are used for encryption and decryption of the data).
(33) At block 504 of flow 500A, IoT data server 130 provides to peer consumer 120 an instance of encrypted data comprising requested data of IoT data 131, and information for verification of the data received from IoT data server 130. In accordance with embodiments, IoT data server 130, as may be operating in cooperation with peer provider 110, may send encrypted data of IoT data 131 (e.g., encrypted_data generated at block 501 of flow 500A) and a function (e.g., hash function hash_value=Hash(encrypted_data)) from which the representative data structure (e.g., hash_value generated in block 502 of flow 500A) for the encrypted data was generated to peer consumer 120.
(34) The operations of blocks 501-504 of flow 500A may be performed as part of the operations of flow 300, or separately. For example, operations of blocks 501, 502, 503, and/or 504 may be performed as part of the operations to provide the data at block 306. Operations of blocks 501, 502, 503, and/or 504 may likewise be performed at other times in relation to the operations of flow 300.
(35) In operation for ensuring the irrefutability of the data exchanged according to flow 500B of
(36) At block 512 of flow 500B, the information for verification of the data received from IoT data server 130 is used with the encrypted data of IoT data 131 received from IoT data server 130 to generate information for use in peer consumer 120 extracting the data. In accordance with embodiments, peer consumer 120 may utilize the function (e.g., the hash function hash_value=Hash(encrypted_data)) with the encrypted data of IoT data 131 to compute a representative data structure (e.g., hash_value) for the data.
(37) At block 513 of flow 500B, the information for verification of the data received from IoT data server 130 is included in a request for a cryptographic key for the encrypted data of IoT data 131. In accordance with embodiments of the invention, peer consumer 120 may invoke a smart contract (e.g., smart contract SC8 of the examples above) to provide the representative data structure (e.g., hash_value) for the data to blockchain 150 for obtaining a cryptographic key used to decrypt the encrypted data of IoT data 131.
(38) In operation according to embodiments of the invention, blockchain 150 verifies that the representative data structure (e.g., hash_value) stored in the distributed ledger by peer provider 110 and the representative data structure (e.g., hash_value) provided in the request from peer consumer 120 match (i.e., the encrypted data received by peer consumer 120 is the same as the encrypted data generated/provided by peer provider 110 and/or IoT data server 130). Accordingly, peer consumer 120 cannot deny on the data received because no one but one who has received the encrypted data of IoT data 131 (e.g., encrypted_data) can provide the proper representative data structure (e.g., hash_value). Correspondingly, peer provider 110 cannot deny on the data sent because the representative data structure (e.g., hash_value) of the encrypted data has been saved in the distributed ledger of blockchain 150 from processing the request made by peer consumer 120.
(39) If the encrypted data of IoT data 131 received by peer consumer 120 is verified to be the encrypted data of IoT data 131 generated/provided by peer provider 110 and/or IoT data server 130, blockchain 150 provides the requested cryptographic key for the encrypted data of IoT data 131 to peer consumer 120. Thus, at block 514 of flow 500B, peer consumer 120 receives the requested cryptographic key for the encrypted data of IoT data 131. In accordance with embodiments, the representative data structure (e.g., hash_value) provided in the request from peer consumer 120 is compared to the representative data structure (e.g., hash_value) stored in the distributed ledger by peer provider 110 to determine if they match and, if so, the cryptographic key corresponding to the encryption of block 501 stored in blockchain 150 by peer provider 110 is provided to peer consumer 120.
(40) At block 515 of flow 500B, data of IoT data 131 is extracted from the encrypted data by peer consumer 120 using the cryptographic key received from blockchain 150. In accordance with embodiments of the invention, peer consumer 120 decrypts the data of IoT data 131 (e.g., data_0, data_1 . . . data_n) according to the following:
decrypted_data=D(encrypted_data, key).
Thereafter, peer consumer 120 may utilize the data as desired.
(41) The operations of blocks 511-515 of flow 500B may be performed as part of the operations of flow 300, or separately. For example, operations of blocks 511, 512, 513, 514, and/or 515 may be performed as part of the operations to provide the data at block 307. Operations of blocks 511, 512, 513, 514, and/or 515 may likewise be performed at other times in relation to the operations of flow 300.
(42) It should be appreciated that, when implemented in software, the functions of flows 300, 400A, 400B, 500A, and 500B providing aspects hybrid blockchain data exchange of the present invention may comprise code segments to perform the tasks as described herein. The code segments can be stored in a processor readable medium for execution by one or more processors of a processor-based system. The processor readable medium may include any medium that can suitably store and transfer information. Examples of the processor readable medium include an electronic circuit, a semiconductor memory device, a read only memory (ROM), a flash memory, an erasable ROM (EROM), an optical disk, a hard disk, etc. The code segments may be downloaded via computer networks such as a local area network (LAN), a wide area network (WAN), the Internet, an intranet, a cellular communication network, etc.
(43) As can be appreciated from the foregoing exemplary embodiments, concepts of the present invention provide for data exchange using a distributed ledger, wherein data is exchanged off-chain and information for accessing the off-chain data is exchanged through the blockchain. Accordingly, hybrid blockchain implementations avoid storing the bulk of the data within the blockchain and provide solutions well suited for data exchange with respect to very large volumes of data, such as IoT data. It should be appreciated, however, that the concepts herein are not limited to use with respect to exchange of IoT data. For example, embodiments of a hybrid blockchain data exchange platform may be utilized with respect to various large databases, such as banking or merchant transaction records, video on demand libraries, public or governmental data sharing (e.g., map data, statistical data, etc.), document or music file sharing, etc.
(44) Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.