US20210314396A1 - Streaming content via blockchain technology - Google Patents
Streaming content via blockchain technology Download PDFInfo
- Publication number
- US20210314396A1 US20210314396A1 US17/349,815 US202117349815A US2021314396A1 US 20210314396 A1 US20210314396 A1 US 20210314396A1 US 202117349815 A US202117349815 A US 202117349815A US 2021314396 A1 US2021314396 A1 US 2021314396A1
- Authority
- US
- United States
- Prior art keywords
- client
- content
- streaming
- chunks
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000005516 engineering process Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 13
- 238000003491 array Methods 0.000 claims description 5
- 238000013459 approach Methods 0.000 abstract description 4
- 238000005065 mining Methods 0.000 description 44
- 239000003550 marker Substances 0.000 description 17
- 238000012545 processing Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 239000012634 fragment Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008439 repair process Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000007123 defense Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000010025 steaming Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 244000000626 Daucus carota Species 0.000 description 1
- 235000002767 Daucus carota Nutrition 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
- G06Q20/0658—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Definitions
- the present application is related to and/or claims the benefit of the earliest available effective filing date(s) from the following listed application(s) (the “Priority Applications”), if any, listed below (e.g., claims earliest available priority dates for other than provisional patent applications or claims benefits under 35 USC ⁇ 119(e) for provisional patent applications, for any and all parent, grandparent, great-grandparent, etc. applications of the Priority application(s)).
- the present application is related to the “Related Applications,” if any, listed below.
- the present invention relates to a computing environment, and more particularly streaming content utilizing blockchain technology.
- a method that includes a processor and a local storage device accessible by the processor of streaming content to a client.
- a request is received to receive content suitable for access by a streaming application.
- the content is separated into chunks C (C1, C2, . . . , Cn).
- the chunks are uploaded to corresponding blobbers B (B1, B2, . . . , Bn).
- a first pipe is utilized by the blobbers B (B1, B2, . . . , Bn) to download the chunks C (C1, C2, . . . , Cn) into a buffer.
- a second pipe is utilized to convert the downloaded chunks C (C1, C2, . . . , Cn) from the buffer into a byte array A (A1, A2, . . . , An) and the byte array A (A1, A2, . . . , An) is sent to a plurality of streaming services.
- an information handling system including at least one processor executing instructions implementing steps of the method of steaming content to a client.
- a computing program product executing instructions implementing steps of the method of steaming content to a client.
- FIG. 1 illustrates an embodiment of a blockchain system according to the present disclosure
- FIG. 2 depicts an embodiment of a client device
- FIG. 3 depicts an embodiment of a miner system
- FIG. 4 depicts an embodiment of a blobber system
- FIG. 5 depicts a flow of a process that streams content to a client
- FIG. 6 depicts a schematic view of a processing system wherein the methods of this invention may be implemented.
- Blockchain technology is a particular type of distributed database.
- Blockchains can theoretically be used to store any type of data or content, but are particularly well-suited to environments in which transparency, anonymity, and verifiability are important considerations. Examples include financial projects, such as cryptocurrencies, auctions, capital management, barter economies, insurance lotteries, and equity crowd sourcing.
- a blockchain originally block chain, is a growing list of records, called blocks, that are linked using cryptography.
- Each block contains a cryptographic hash of the previous block, a timestamp, and transaction data (generally represented as a Merkle tree).
- the Merkle tree is a hash-based data structure that is a generalization of the hash list. It is a tree structure in which each leaf node is a hash of a block of data, and each non-leaf node is a hash of its children.
- Merkle trees have a branching factor of 2, meaning that each node has up to 2 children.
- a blockchain is resistant to modification of its data. This is because once recorded, the data in any given block cannot be altered retroactively without alteration of all subsequent blocks.
- a blockchain is typically managed by a peer-to-peer network collectively adhering to a protocol for inter-node communication and validating new blocks.
- blockchain records are not unalterable, blockchains may be considered secure by design and exemplify a distributed computing system with high Byzantine fault tolerance.
- a Byzantine fault is a condition of a computer system, particularly distributed computing systems, where components may fail and there is imperfect information on whether a component has failed.
- the blockchain has been described as “an open, distributed ledger that can record transactions between two parties efficiently and in a verifiable and permanent way.”
- a cryptocurrency is not entirely dissimilar from conventional currencies and, like a traditional currency, is essentially a medium of exchange.
- Traditional currencies are represented by a physical object paper currency or minted coins, for example—which is “spent” by physically delivering it in the proper denominations to a recipient in exchange for a good or service.
- Internet is a global computer network providing a variety of information and communication facilities, comprising interconnected networks using standardized communication protocols.
- Internet is not owned by a single entity and it operates without a central governing body.
- the same principles of distributed governance were applied to digital currencies by providing ability to perform digital transactions that existed without support from any underlying institution.
- the digital ledger that records the transactions in a chain using a mathematical hierarchy is called a blockchain.
- the computing time and built in delay in any blockchain platform is dependent on the available computing resources of its nodes. In absence of a role model, a single node has several computing intense tasks that are slow to execute. A slow system becomes vulnerable and becomes open to attacks.
- the current solutions do not allow for client flexibility in developing distributed applications with immutability and finality of transactions on a blockchain platform.
- API application programming interfaces
- network generally refers to a voice, data, or other telecommunications network over which computers communicate with each other.
- server generally refers to a computer providing a service over a network
- client generally refers to a computer accessing or using a service provided by a server over a network.
- server and “client” may refer to hardware, software, and/or a combination of hardware and software, depending on context.
- server and “client” may refer to endpoints of a network communication or network connection, including but not necessarily limited to a network socket connection.
- a “server” may comprise a plurality of software and/or hardware servers delivering a service or set of services.
- host may, in noun form, refer to an endpoint of a network communication or network (e.g., “a remote host”), or may, in verb form, refer to a server providing a service over a network (“hosts a website”), or an access point for a service over a network.
- blockchain network usually means the collection of nodes interacting via a particular blockchain protocol and ruleset. Network nodes are the physical pieces that make up a network. They usually include any device that both receives and then communicates information. But they might receive and store the data, relay the information elsewhere, or create and send data instead.
- asset means anything that can be owned or controlled to produce value.
- asymmetric key encryption also known as “public key encryption,” “public key cryptography,” and “asymmetric cryptography,” means a cryptographic system that uses pairs of mathematically related keys, one public and one private, to authenticate messages.
- the “private key” is kept secret by the sending of a message or document and used to encrypt the message or document.
- the “public key” is shared with the public and can be used to decrypt the message or document.
- ledger means the append-only records stored in a blockchain.
- the records are immutable and may hold any type of information, including financial records and software instructions.
- blockchain means a distributed database system comprising a continuously growing list of ordered records (“blocks”) shared across a network.
- the blockchain functions as a shared transaction ledger.
- transaction means an asset transfer onto or off of the ledger represented by the blockchain, or a logically equivalent addition to or deletion from the ledger.
- blockchain network means the collection of nodes interacting via a particular blockchain protocol and rule set.
- nonce means an arbitrary number or other data used once and only once in a cryptographic operation.
- a nonce is often, but not necessarily, a random or pseudorandom number.
- a nonce will be chosen to be an incrementing number or time stamp which is used to prevent replay attacks.
- block means a record in a continuously growing list of ordered records that comprise a blockchain.
- a block comprises a collection of confirmed and validated transactions, plus a nonce.
- Hashes means a cryptographic algorithm to produce a unique or effectively unique value, properly known as a “digest” but sometimes informally referred to itself as a “hash,” usually from an arbitrary, variable-sized input. Hashes are repeatable and unidirectional, meaning the algorithm always produces the same digest from the same input, but the original input cannot be determined from the digest. A change to even one byte of the input generally results in a very different digest, obscuring the relationship between the original content and the digest.
- SHA256 secure hash algorithm
- mining means the process by which new transactions to add to the blockchain are verified by solving a cryptographic puzzle.
- mining involves collecting transactions reported to the blockchain network into a “block,” adding a nonce to the block, then hashing the block. If the resulting digest complies with the verification condition for the blockchain system (i.e., difficulty), then the block is the next block in the blockchain.
- Miner refers to a computing system that processes transactions. Miners may process transactions by combining requests into blocks.
- a miner has a limited time, for example, 15-50 milliseconds, to produce a block. Not all miners generate blocks. Miners that generate blocks are called “generators.” Miners may be ranked and chosen to perform transactions based on their ranking. Some limited number of miners may be chosen to perform validation. All miners must be registered on the blockchain.
- the mining process involves identifying a block that, when hashed twice with SHA256 yields a number smaller than the given difficulty target. While the average work required increases in inverse proportion to the difficulty target, a hash can always be verified by executing a single round of double SHA-256.
- Messages representing generated blocks are sent to all miners by identifying the block with a block hash, transaction hash, and a signature of the minor producing the block.
- the miners receiving the messages replay the transactions for the block and sign an authentication message. If there is enough miners authenticating the block, consensus ticket it signed. In some embodiments a 2 ⁇ 3+1 agreement or 67% agreement is needed to generate the consensus ticket.
- sharding is a technique in blockchain that seeks to achieve scalability within a blockchain network.
- the process of sharding seeks to split a blockchain network into separate shards, that contain their own data, separate from other shards.
- the term “sharder” refers to a computing system that that keeps tracks of its blockchain history. They are a single source of truth regarding any given transaction.
- transaction fee means a fee imposed on some transactions in a blockchain network. The amount of the transaction fee is awarded to the miner who successfully mines the next block containing that transaction.
- wallet means a computer file or software of a user that allows a user of a blockchain network to store and spend cryptocurrency by submitting transactions to the blockchain network.
- a wallet is usually itself protected by cryptography via a private key.
- Consensus refers to a computational agreement among nodes in a blockchain network as to the content and order of blocks in the blockchain.
- digital signature means a mathematically-based system for demonstrating the authenticity of a message or document by ensuring that it was sent from the identified sender and not tampered with by an intermediary.
- Blockchains generally use asymmetric key encryption to implement digital signatures.
- fork means a split in a blockchain where two different valid successor blocks have been mined and are present in the blockchain, but consensus has not yet been reached as to which fork is correct. This type of fork is also referred to as a “soft fork,” and is automatically resolved by consensus over time.
- a “hard fork” is the forced imposition of a fork by manual intervention to invalidate prior blocks/transactions, typically via a change to the blockchain rules and protocol.
- cryptocurrency is a digital currency that can be used to buy goods and services, but uses an online ledger with strong cryptography to secure online transactions. Much of the interest in these unregulated currencies is to trade for profit, with speculators at times driving prices skyward.
- tokens There are currently many different types of cryptocurrencies offered by many different blockchain implementations. The usage of any given cryptocurrency may be represented herein as “tokens.”
- genesis block means the very first block in a blockchain, that is, the root of the Merkle tree.
- proof-of-stake means a mining system in which the production and verification of a block is pseudo-randomly awarded to a candidate miner, or prioritized list of candidate miners, who have invested a valuable stake in the system which can be collected by the blockchain network if the produced block is later deemed invalid.
- the stake functions as a deterrent against fraudulent blocks.
- proof-of-work means a mining system in which the difficulty of finding a nonce that solves the cryptographic puzzle is high enough that the existence of a block compliant with the verification rules is itself sufficient proof that the block is not fraudulent.
- smart contracts means computer programs executed by a computer system that facilitate, verify, or enforce the negotiation and performance of an agreement using computer language rather than legal terminology. Smart contracts may be verified and executed on virtual computer systems distributed across a blockchain.
- web refer generally to computers programmed to communicate over a network using the HyperText Transfer Protocol (“HTTP”), and/or similar and/or related protocols including but not limited to HTTP Secure (“HTTPS”) and Secure Hypertext Transfer Protocol (“SHTP”).
- HTTP HyperText Transfer Protocol
- HTTPS HyperText Transfer Protocol
- SHTP Secure Hypertext Transfer Protocol
- a “web server” is a computer receiving and responding to HTTP requests
- a “web client” is a computer having a user agent sending and receiving responses to HTTP requests.
- the user agent is generally web browser software.
- erasure code is a forward error correction (FEC) code under the assumption of bit erasures (rather than bit errors), which transforms a message of k symbols into a longer message (code word) with n symbols such that the original message can be recovered from a subset of the n symbols.
- FEC forward error correction
- databases means a computer-accessible, organized collection of data, which may be referred to as “content” in this document.
- Databases have been used for decades to format, store, access, organize, and search data.
- databases were stored on a single storage medium controlled by a single computer processor, such as a fixed disk or disk array.
- databases may also be organized in a “distributed” fashion, wherein the database is stored on a plurality of storage devices, not all of which are necessarily operated by a common processor. Instead, distributed databases may be stored in multiple component parts, in whole or part, dispersed across a network of interconnected computers. “difficulty” means proof-of-work mining, or the expected total computational effort necessary to verify the next block in a blockchain.
- Difficulty is generally determined by the verification rules of the blockchain and may be adjusted over time to cause the blockchain to grow (e.g., new blocks to be verified and added) at a desired rate. For example, in the Bitcoin blockchain network, the difficulty adjusts to maintain a block verification time of about ten minutes across the blockchain network.
- the systems and methods described herein enable a user in a rewards- or points-based system implemented via a blockchain network, to purchase a content according to a terms of a smart contracts. Users can receive, store, and share or send rewards on-demand in exchange for receiving the content. However, the user need not directly use, or even be aware of, the underlying blockchain.
- Described herein are systems and methods for an on-line, verifiable payment system that facilitates both manual and automatic payment with transaction costs as small as fractions of a cent.
- the systems and methods include a financial accounting system that uses smart contract technology and a centralized authority performing blockchain transactions on behalf of multiple independent users, and using bulk processing of transactions to reduce substantially the associated transaction fees, in some cases to fractions of a penny.
- Blobbers are neither responsible nor required to perform mining. In this manner, the load is lightened on the mining network and enables fast transactions on a lightweight blockchain. As the client and blobber interact, the client generates special signed receipts called markers. These markers act like checks that the blobber can later cash in with the blockchain.
- the blobber writes an additional transaction to the blockchain, which redeems the markers for tokens, that is, the platform cryptocurrency, and commits the blobber to a Merkle root matching the data stored.
- the leaves of the Merkle tree must match markers sent from the client, preventing either the client or the blobber from defrauding each other.
- a challenge protocol ensures both that the blobber continues to store the file and continues to be paid for that work.
- the mining network posts a transaction, challenging the blobber to prove that it still possesses the data that it was paid to store.
- the blobber must provide that data, the relevant system metadata, and the client-signed marker to prove that the right data is stored. The blobber is then rewarded or punished accordingly.
- the split-key wallet protocol uses a Boneh-Lynn-Shacham (BLS) signature scheme that is based on bi-linear pairings.
- a pairing defined as e(,), is a bilinear map of 2 groups G1 and G2 in some other group, GT.
- e(,) takes e as arguments points in G1 and G2.
- BLS has:
- the BLS signature scheme may be used to split keys and let users interact using crypto keys via a blockchain. Since the cryptocurrency balance is maintained against these keys, it's very important to protect the private key.
- the private key is split into two secondary keys, storing each of the secondary key on a different device. Signing requires individual signatures from each device. Hence, losing any one device can still protect the primary key.
- one of the secondary keys can be further split into two parts; only one of which is stored on the device and the other may be a simple PIN that the user has to enter each time. This provides an extra layer of protection in case both devices are compromised.
- the split-key wallet protocol makes it easy to generate as many split keys as desired providing the ability for the user to periodically rotate the split keys and in the process change the PIN.
- Some quantity of tokens may be locked.
- support may be provided for selling the cryptocurrency by specifying a name for locks, keys to the locks, how long each key is valid (from seconds to centuries), a number of keys, a price of the keys. Tokens acquired may be “locked” for the time each key is valid.
- clients When clients lock tokens, they are rewarded with an “interest.”
- the interest is newly generated crypto-currency tokens, intended (but not required) for payment of services on the network. These services can be miner compensation for transaction processing, blobber compensation for storage, or transmitted to any other client in exchange for a service; facilitating a lucrative market for building and running distributed applications.
- a client may also offer to lock a greater amount of tokens to ensure that their transaction is accepted by the mining network.
- the token reward protocol creates an economy where the tokens can be used to receive services for “free”—meaning, the client does not lose their initial stake, but still adequately compensates the service provider.
- the systems and methods of a blockchain platform for distributed applications includes separation of roles for a miner and a blobber.
- the message flow model between different parties including a client, a blobber and a miner allows for fast transactions on a lightweight blockchain by lightening the load on a mining network, i.e. a network of one or more miners. Offloading the work to a different group of machines allows for greater specialization in the design and specifications of the machines, allowing for the blockchain platform miners to be optimized for fast transaction handling and blockchain platform blobbers to be efficient at handling data for given transaction types.
- the distributed application is a storage application. Users of the system can request and get storage access without relying on a single source. While the distributed application described herein in detail is a storage application, a person of ordinary skill in the art would understand and apply the same invention disclosure on different types of distributed applications. The use of a distributed storage application is exemplary and not limiting in anyways the scope of the invention.
- a storage protocol applied on the blockchain platform relies on the miners to serve as intermediaries in all storage transactions. Furthermore, the blockchain platform may enforce strict requirements on blobbers and blobbers' machines to ensure a fast and lightweight response time and execution.
- data integrity of the transaction is verified by using hash of a file's contents.
- the data is fragmented in two or more parts and each data part is separately hashed to create a Merkle tree.
- the entire Merkle tree is stored and probabilistically verified.
- the miners store the Merkle root of the stored files.
- the role-based distributed execution using a message flow model on a blockchain platform allows for a flexible and robust model with feedback and evaluation of different parties based on past interactions.
- the blockchain platform involves interaction between two or more clients, who have data that they wish to store, and blobbers who are willing to store that data for a fee. Neither the client nor the blobber necessarily trust one another, so transactions are posted to a blockchain produced by a trusted network of miners, i.e., a trusted mining network.
- the blockchain platform using a message flow model for role-based distributed work seeks to minimize the load on the mining network, so miners are not directly involved in the file transfer between clients and blobbers. Nonetheless, the transactions posted to the blockchain assures clients that their data is stored and gives blobbers confidence that they will be paid for their service; if either party misbehaves, the blockchain platform has the information to help identify cheaters.
- Each client includes an application responsible for encrypting the data.
- the blockchain platform relies on erasure coding, which is also performed by the client. Clients are assumed to have a public/private key pair and a certain amount of tokens. Erasure coding is a method of data protection in which data is broken into fragments, expanded and encoded with redundant data pieces and stored across a set of different locations or storage media.
- a miner works on a central chain of the blockchain platform. For example, in the context of storage, miners are responsible for accepting requests from clients, assigning storage to blobbers, locking client tokens to pay for their storage, and testing that blobbers are actually providing the storage that they claim. A blobber is responsible for providing long-term storage.
- Blobbers only accept requests that have been approved by the mining network, which helps to prevent certain attacks. Blobbers are paid in three ways: (i) When data is read from them, the clients give them special markers that the blobber can redeem for tokens; (ii) When client writes data to them, blobbers get special markers; and (iii) whenever a blobber is storing data, they are randomly challenged to provide special blocks and if these challenges are passed, the mining network rewards the blobber with tokens.
- Protocol Sketch For example, one basic message flow model based on roles on a blockchain platform for a distributed storage application can be broken into five parts.
- clients must use tokens to reserve system resources. These resources include the amount of storage, the number of reads, and the number of writes needed for the data.
- the client's tokens are locked for a set period of time. Once the time has elapsed, the client regains their tokens and loses their storage resources.
- a client may decide to re-lock their tokens to maintain their resources, though the amount of tokens needed may change depending on the economy.
- the mining network connects the clients with the appropriate blobbers and allows them to set up a secure connection.
- the mining network no longer acts as an intermediary between the client and the blobbers.
- the client generates markers to give to the blobber in exchange for access to system resources.
- the blobber collects these markers and redeems them with the mining network once the transaction is complete; this transaction also notifies the blobber that the transaction has finished, and lets the network know that the miner and blobber agree on the data that the blobber is expected to store.
- the markers help resolve disputes in case the client and blobber do not agree on the Merkle root.
- the mining network will periodically challenge the blobber to provide a randomly chosen block of data. These challenges involve a carrot and stick approach; blobbers are punished if they fail the challenge, and blobbers are rewarded with additional tokens when they pass the challenge.
- the blockchain platform ensures that blobbers are paid even when the data is not frequently accessed.
- the client no longer wishes to store a file, they issue a deletion transaction to the network. Once it is finalized, blobbers delete the file and clients may use their storage allocation to store other files.
- Error and Repair One or more error reporting protocols and/or repair protocols work with the basic message flow model based on roles on a blockchain platform for a distributed storage application.
- the error reporting protocol allows both clients and blobbers to report problems to the network. These problems could include either reports of when other clients or blobbers are acting maliciously, or when a system fails or drops from the network unexpectedly.
- a repair protocol arises when a blobber is identified as malicious, drops from the network, or is no longer considered suitable for storing the data that it has.
- the client can read the data from the network, reconstruct the missing fragment of data, and re-upload it to the network.
- the mining network reconstructs a missing slice of the data from any other available slices without involving the client.
- the message flow model for the blockchain platform is robust and resilient to different types of attacks. For example, an outsourcing attack arises when a blobber claims to store data without actually doing so. The attacker's goal in this case is to be paid for providing more storage than is actually available. For example, if Alice is a blobber paid to store filel23, but she knows that Bob is also storing that file, she might simply forward any file requests she receives to Bob.
- the blockchain platform defense against this attack is to require all data requests to go through the mining network. Since the cheater must pay the other blobbers for the data, this attack is not profitable for the cheater. Additionally, the mining network's blockchain gives some accounting information that can be analyzed to identify potential cheaters.
- a Sybil attack is a kind of security threat on an online system where one person tries to take over the network by creating multiple accounts, nodes or computers. This can be as simple as one person creating multiple social media accounts. But in the world of cryptocurrencies, a more relevant example is where somebody runs multiple nodes on a blockchain network.
- Another attack may occur if two blobbers collude, both claiming to store a copy of the same file. For example, Alice and Bob might both be paid to store filel23 and file456. However, Alice might offer to store filel23 and provide it to Bob on request, as long as Bob provides her with file456. In this manner, they may free up storage to make additional tokens.
- collusion attacks are outsourcing attacks that happen using back-channels.
- a Sybil attack in the context of storage is a form of collusion attack where Alice pretends to be both herself and Bob. The concerns are similar, but the friction in coordinating multiple partners goes away.
- the blockchain platform message flow based model requires that the blobbers are assigned randomly for each transaction, helping to further reduce the chance of collusion.
- the blockchain platform uses erasure codes to help defend against unreliable blobbers in a network. Furthermore, the blockchain platform makes demands on the capabilities of blobbers authorized to use the platform. For example, if it repeatedly underperforms expectations, a blabber's reputation may suffer, and risk being dropped from the network.
- a client might attempt to double-spend their tokens to acquire additional resources. However, the client is not given access to its resources until the transaction has been finalized.
- the blockchain platform transactions are designed for rapid finalization, so the delay for the client should be minimal.
- Other attacks such as fraudulent transactions are the purview of the mining protocol and the blockchain platform is well designed with defenses based on its robust implementations of authentication and data integrity modules.
- a replay attack also fails on the blockchain platform with the use of timestamps as one of the fields to assign unique transaction id.
- generation attacks may arise if a blobber poses as a client to store data that they know will never be requested. By doing so, they hoped to be paid for storing this data without actually needing the resources to do so.
- the blockchain platform can defend against generation attacks with a challenge protocol that requires blobbers to periodically provide files that they store.
- Locking System Resources The message flow model for the blockchain platform is robust and resilient in locking system resources and reusing the same when resources are freed. For example, in order to store files, clients must use their tokens to purchase a certain amount of storage for a year. During this period, the clients' tokens are locked and cannot be sold. Likewise, to access or update their data, clients must purchase a certain number of reads and writes. To lock tokens, the client posts a transaction to the mining network.
- the transaction includes the following without limitations: (i) the id of the client (client_id); (ii) the amount of storage (amt_storage); (iii) the number of reads (num_reads); (iv) the number of writes (num_writes); (v) a params field for any additional requirements allowing for flexibility. Only one of amt_storage, num_reads, and num_writes is required, since a client may be locking additional resources to supplement a previous transaction. However, the blockchain platform generally expects a client to lock all three in any transaction.
- the blockchain platform relies on the well-established methods to establish a secure connection with an added layer of security based on the role of the party i.e. the role of a client, a blobber or a miner. Neither the client nor the blobber trust one another, yet the blockchain platform allows both parties acting in its own best interest to nonetheless benefit each other. Any transgressions can be identified by the mining network of the blockchain platform with one or miners having the authority to punish any misbehaving party.
- the blockchain platform performs the following: (i) assign blobbers to handle a client's request; and (ii) to ensure that the mining network knows what data the client wishes to store, allowing the network to police the client's and blobber's behavior.
- the client and the blobber establish a session key between themselves.
- the client and blobber set up a Transport Layer Security (TLS) connection instead of a session key.
- TLS Transport Layer Security
- a possible attack when creating a connection may include that a client might create a transaction on the mining network, but never send the data to the blobber, either as an attempt to damage a blabber's reputation or to prevent a blobber from being paid by other clients.
- the client had to lock up tokens to perform this attack. In essence, they would be paying for storage without using it.
- Blobbers are not challenged by the mining network until they post a transaction to finalize the data exchange.
- Blobbers periodically monitor the blockchain for transactions involving them; if they notice this transaction, they can cancel it using a error reporting protocol.
- a blobber might not respond to the client and refuse to complete the connection. Again, several factors make this attack unlikely: (1) Once the connection is established, the client is expected to send markers. The blobber redeems these markers for tokens, and hence has a vested interest in completing the connection. (2) If the transaction times out, the client can report an error. (3) If the client becomes dissatisfied, they can delete their data from the blobber and reassign it to a different blobber. When this happens, the blobber is no longer paid for storing the data.
- Reads and Writes After establishing a secure connection as described above, the blockchain platform performs reads and writes as described herein. Once a secure connection has been established between the client and the blobber, the client can choose to either read data from the blobber or update data stored with the blobber.
- the blockchain platform for uploading or downloading files requires that the client compensate the blobber. This process is done through the use of special read_marker and write_marker values created by the client.
- Each marker is a pair of a number (i) and a signature, where “i” is a counter starting at 0 that is incremented with each marker sent.
- READ and WRITE are constants included in the signatures denoting whether this is a read_marker or write_marker respectively.
- the format of a read_marker is [READ, trans_id, blobber_id, block_num, i]client.
- the format of a write_marker is [WRITE, trans_id, blobber_id, hash(data), block_num, i]client, where hash(data) is the hash of the current block of data being sent.
- the blobber collects these markers, and when the transaction has either completed or timed out, the blobber writes a transaction to the blockchain effectively cashing in the markers in exchange for tokens. This transaction has the following effects: (i) The blobber is paid in tokens. (ii) The client loses the corresponding number of reads and writes.
- the information stored in the params field in message 1 depends upon the nature of the transaction. If this is a new file storage request, the k and n values for erasure coding must be included, since these settings affect the behavior of the network during challenges. Also, if this is a new file upload or a file update, the client must include the file size, the version number of the file, the fragment_id, chosen by the client, for this fragment of the erasure coded data.
- Markers may serve as an additional authorization tokens, and hence the double-spending problem is a concern.
- Blobbers might attempt to redeem a marker multiple times, or a client might attempt to pay different blobbers with the same marker.
- Each trans_id uniquely identifies the file involved, and the mining network does not accept markers if the trans_id does not match an existing transaction for an open connection.
- the blobber redeems the markers, the connection is considered closed, and so the blobber cannot reuse the markers in a future transaction.
- Each marker must be unique within the redemption transaction, so the blobber is not able to double spend the marker within the transaction either.
- a client might attempt to pay multiple blobbers with the same marker. However, since both trans_id and blobber_id are included in the marker, this attack would fail.
- blobbers pose as clients, it is possible that they could generate markers without reading the data solely as a mechanism to get tokens. However, since the blobber would have to lock tokens to acquire reads, it would in some sense be paying itself with its own tokens.
- Clients might create more markers than the number of reads and writes they have purchased, essentially writing checks that they cannot cash. Clients are expected to track the number of markers that they have used, and therefore are the best ones to hold accountable. On the blockchain platform, if a client exceeds the number of markers that they are authorized to create, the blobber is still paid. However, instead of paying the blobbers in newly-minted tokens, they are paid in tokens taken from the client. Other type of attacks might include a blobber ignoring a client's request for data and simply cash the marker's sent by the client. However, in this case the client would quickly stop sending markers to the blobber, preventing the blobber from receiving additional payment.
- the client would report an error to the network, and might decide to delete their data from the blobber.
- the blobber might send invalid data; however, the client might have the Merkle tree, in which case they would quickly spot the problem and report an error. Regardless, the blobber is expected to store the Merkle tree and can asked to provide it.
- the mining network stores the Merkle root, preventing the blobber from providing a false tree.
- every write_marker includes a hash of the block of data sent, which can serve as a form of proof about what data the blobber received from the client.
- Deleting Files To delete a file, the client posts a transaction to the blockchain deleting the resource. Once the transaction is finalized on the blockchain, the client regains the storage allocation.
- Blobbers are expected to poll the blockchain for these transactions. Once they notice that a file has been deleted, all blobbers storing slices of this data delete its data.
- a client might attempt to get free storage by a distributed denial of service attack (DDoS) the blobbers before they receive the message to delete the data, but the mining network would not approve future read requests.
- Clients might attempt to delete data, but maintain an open connection with blobbers. With this approach, the client would attempt to get free storage without needing to go through the mining network.
- a defense against this attack is that the mining network rejects all requests to delete data when there are open connections. If a blobber fails to close a connection, the client can report the error to the mining network and close the connection that way.
- Nothing on the blockchain platform enforces that the blobbers actually delete the data when asked though a blobber has little economic incentive to keep it. If the client is concerned about the confidentiality of its data, the client can encrypt its data before storage.
- the protocol In order to verify that a blobber is actually storing the data that they claim, the protocol relies on the miners periodically issuing challenge requests to the blobbers.
- the blockchain platform message flow model is also how blobbers are rewarded for storing files, even if the files are not accessed by any clients.
- the mining network is responsible for establishing consensus on whether the blobber has passed the challenge.
- a transaction is posted by the mining network specifying which block of data is requested.
- the blobber sends the data to the mining network as well as the nodes of the Merkle tree needed to calculate the Merkle root.
- a transaction is posted punishing the blobber. Otherwise, a transaction is posted rewarding the blobber with the token. In one embodiment, an update to existing data may be canceled. The blobber might not have the correct data, and so cannot satisfy future challenges. Therefore, these cases are treated as delete transactions.
- Recovering Data There could be scenarios when the blockchain platform needs to recover data.
- the repair operation is performed by the client, who will be required to get the needed slices, regenerate the new slice, and post a new transaction to store the regenerated slice.
- the cost of the transactions to recover the client's data is paid for by the client.
- the blabber's stake may be seized and given to the client to help pay for the recovery.
- the client can adjust the k and n values used in the erasure codes to provide greater resiliency and update the slices of data in sequence.
- the client must initially commit to the Merkle root of the data whenever a file is changed on the network. The result is that the transactions are either data writes or data reads.
- the blockchain platform allows for reads and writes within a given client/blobber exchange. The client indicates the Merkle root is not yet known; when the blobber writes a transaction to cash their markers, they also commit to a Merkle root. The client can write a transaction on the blockchain either approving or contesting the Merkle root.
- the client can rebuild any data lost when a blobber goes offline unexpectedly.
- the client might not always be the best choice for this responsibility. If the client does not connect regularly, there might be a delay before they notice.
- the mining network can initiate transactions to recover the missing fragment of data and reassign it to a different blobber. Any encryption by the client is performed before erasure coding to ensure that the data can be reconstructed without the client's aid.
- the blockchain platform using the message flow model can be used to geographically distribute data to increase the performance and availability of a client's data.
- a client may use encryption, distribute an application to reconstruct the data or use null encryption.
- the blockchain platform supports the ability for a client to stream content from a blobber.
- data blobs are identified by a combination of the client's unique id (client_id) and the client-chosen data_id.
- client_id client's unique id
- client-chosen data_id client-chosen data_id.
- Individual transactions are assigned a trans_id based on the triple of these two fields and a timestamp (T).
- T timestamp
- the timestamp also ensures that each request is fresh and helps defend against replay attacks.
- FIG. 1 depicts a diagram 100 illustrating an example of a blockchain platform based on a message flow model for implementing different distributed applications.
- the environment includes client 1 110 , client 2 112 , . . . , client n 114 .
- the environment includes miner1 120 , miner 2, 122 , . . . , miner n 124 .
- the system includes blobber 1 130 , blobber 2 132 , . . . , blobber n 134 .
- Each client system [ 110 , 112 , . . . , 114 ] may include components to store, update, get, read, write and/or delete requests.
- references to client 110 , client system 110 or client device 110 will be used to indicate any selected client system.
- References to miner 120 or miner system 120 will be used to indicate a selected plurality of miners.
- References to blobber 130 or blobber system 130 will be used to indicate a selected plurality of blobbers.
- any client system may include storage requests.
- a client can implement many types of flexible and distributed applications on the client system 110 using the client aspect of the blockchain platform using a message flow model.
- the miner 120 includes components to process requests from the clients including storage requests. Two or more miners form a mining network.
- the blobber 130 includes components to fulfill storage requests that are initiated by the client 110 and approved by miner 120 .
- Network 140 can be different wireless and wired networks available to connect different computer devices including client and server systems.
- network 140 is publicly accessible on the internet.
- network 140 is inside a secure corporate wide area network.
- network 140 allows connectivity of different systems and devices using a computer-readable medium.
- the blockchain platform using a message flow model allows users on the client system, the blobber or the miner to set privacy settings that allow data to be shared among select family and friends, but the same data is not accessible to the public.
- the blockchain platform using a message flow model allows users on the client system, the blobber or the miner to encrypt data to be shared among select family and friends, but the same data while available cannot be decoded by the public.
- API Application Programming Interface
- XML extensible markup language
- Java/C++ object oriented programming
- Simple web-based tools can be implemented using Application Programming Interface (API) calls, extensible markup language (“XML”) interfaces between different interfaces, Java/C++ object oriented programming or simple web-based tools.
- Different components may also implement authentication and encryption to keep the data and the requests secure.
- FIG. 2 depicts a client device 200 which is an exploded view of a client system 110 shown in FIG. 1 .
- the client has a storage application 210 that interacts with the operating system 260 of the client device 200 .
- the client computing device may have family photos, videos or business-related files for storage.
- the client device 200 may use the Diffie-Hellman key exchange method with another client, for example client 2 112 .
- the Diffie-Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel, such as, network 140 . This key can then be used to encrypt subsequent communications using a symmetric key cipher.
- the client uses a client_id 220 with a Diffie Hellman public and private cryptography keys to establish session keys.
- the client and the blockchain platform uses Transport Layer Security, i.e. symmetric keys are generated for each transaction based on a shared secret negotiated at the beginning of a session.
- the client 200 gets preauthorized tokens 275 for storage allocation on the blockchain platform.
- the storage preferences for the client are coordinated using 270.
- a client's storage preferences 230 include price range, challenge time, data/parity shards, encryption, access times, preferred blobber, preferred miner lists, etc.
- Types of requests 240 include store, update, get, read, write and/or delete requests.
- the data integrity 280 includes techniques to create a hash based on available data, encryption of the data, division of data into fragments, use of erasure codes, Merkle root and Merkle tree creation based on data fragments and a Merkle root list for different types of data.
- a client may use one or more options in different types of combinations to preserve data integrity 280 verification when sending data out on the system to different blobbers on the blockchain platform.
- the client has an option to create its own data_id for selected data.
- the client gets an automatically generated data_id based on different client preferences and parameters of usages.
- a user 290 is shown using the client device 200 .
- the client system includes module to report errors when a blobber does not send an anticipated message.
- the client system monitors the blockchain for different suspicious activities related to its own work.
- FIG. 3 depicts a miner system 300 which is an exploded view of a miner system 120 of FIG. 1 .
- the different components or modules included in a miner system includes a module to process and authorize requests 370 , receive client requests 310 , verify client digital signature 320 , verify whether client is allowed to make a particular request based on allocated storage for a client and availability on the system 330 , allocate blobbers from a matched blobber list 340 , allocate time period to complete the transaction 350 , and confirm transaction 360 on the blockchain platform.
- the miner system includes module to monitor the blockchain for different suspicious activities.
- the miner system includes mechanism to handle error reports received from either a client or a blobber.
- the miner system includes ranking or evaluations for clients and/or blobbers associated with the blockchain platform.
- FIG. 4 depicts a blobber system 400 which is an exploded view of a blobber system 130 of FIG. 1 .
- the different components or modules included in a miner system includes a module to fulfill requests 455 , receive approved and verified client requests 420 , send verification of its own identity for a given transaction 405 , receive data and perform storage 410 , receive approval and challenges from miner for storage 415 , confirm storage to miner and validators 460 , request and receive payment for storage and handling of the requests 450 .
- the blobber performs the required storage requests, that is, fulfills requests 455 , collects validation tickets and submits the validation tickets to miners 435 .
- the miner may challenge the blobber 430 at random.
- the miners pay blobbers from the challenge pool 440 after confirming storage to miner and validators 445 which supports a miner request for payment after which the miner receives payment 450 .
- the blobber system includes a module to report errors when a client does not send an anticipated message.
- the blobber system monitors the blockchain for different suspicious activities related to its own work.
- FIG. 5 depicts a flow of processes that support streaming content to a plurality of clients. Processing commences at 500 and shows the steps taken by a process that receive a request to stream content to a client. The process allows for client pay 510 and/or owner pay 520 .
- the infrastructure for providing the support is provided via a platform software development kit (SDK) 540 .
- Example platforms may include, but are not limited to Android, IOS, MAC, Windows, Web, Browser 530 .
- SDK 540 software is generated to provide platform specific APIS 550 .
- the content is separated into Chunks C (C1, C2, . . . , Cn) assigned to Blobbers B (B1, B2, . . .
- a first pipe is utilized to download the chunks C (C1, C2, . . . , Cn) by the blobbers B (B1, B2, . . . , Bn) into buffer.
- a second pipe is utilized to convert the downloaded chunks C (C1, C2, . . . , Cn) into a byte array A (A1, A2, . . . , An).
- the byte array A (A1, A2, . . . , An) is sent to a plurality of streaming services.
- zboxcli is wrapper to gosdk methods supported by a platform player. Unlike most streaming support, no server is required to supply the content.
- the content is downloaded by blocks where each block chunks may be coming from different blobbers, which are read and converted into a byte array, and sent to a player.
- a first pipe is used to read the content into a buffer and a second pipe is used to read from the buffer.
- each platform or player may utilize two parallel pipes.
- the file may be downloaded utilizing the downloadFileByBlocks method
- inputstream may be used to read the chunked files into the byte array
- AddByteArray may be used to customize the media source for the player.
- downloadFileByBlocks returns file-chunks with correct byte range, using gosdk v1.2.4 and above only.
- getFileMeta, getFileMetaByAuth, and listAllocation returns actuaBlockNumbers and actualFileSize (exclude thumbnail size.
- Components to play video “on fly” may include AVPlayer which is a standard video player for IOS and Mac.
- ZChainPlayerItem extends from PlayerItem (AVKit framework).
- ZChainVideoFile is just a wrapper to communicate between AVPlayer and ZChain.
- AVPlayer is started, ZChainPlayerItem starts chunked download, meantime AvPlayer requests for first chunk of video.
- player receives it through middleware buffer and starts requesting more chunks.
- middleware buffer uses 2 parallel pipes with middleware buffer, one pipe is from AVPlayer to read buffer, second pipe is from ZChain network to write chunks to buffer. If player cannot receive chunk (for example it is still not downloaded), then it will move to STALE state and user will see Video paused.
- STALE player still trying to request chunk few more times, if it's not yet received, then video will be stopped.
- Components to play video “on fly” may include ExoPlayer which is a standard video player for Android.
- ZChainDataSource extends from BaseDataSource (ExoPlayer framework).
- ZChainFile is just a wrapper to communicate between ExoPlayer and ZChain.
- ZBoxCallback is a callback to communicate with gosdk and ZChainDataSource.
- ZChainDataSource starts chunked download, meantime AvPlayer requesting for first chunk of video.
- player receives it through middleware buffer and starts requesting more chunks.
- middleware buffer uses 2 parallel pipes with middleware buffer, one pipe is from ExoPlayer to read buffer, second pipe is from ZChain network to write chunks to buffer.
- FIG. 6 a schematic view of a processing system 600 is shown wherein the methods of this invention may be implemented.
- the processing system 600 is only one example of a suitable system and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, the system 600 can implement and/or performing any of the functionality set forth herein.
- a computer system 612 which is operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the computer system 612 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.
- the computer system 612 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system.
- program modules may include routines, programs, objects, components, logic, data structures, and so on that perform tasks or implement abstract data types.
- the computer system 612 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be in both local and remote computer system storage media including memory storage devices.
- the computer system 612 in the system environment 600 is shown in the form of a general-purpose computing device.
- the components of the computer system 612 may include, but are not limited to, a set of one or more processors or processing units 616 , a system memory 628 , and a bus 618 that couples various system components including the system memory 628 to the processor 616 .
- the bus 618 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association (VESA) local bus, and the Peripheral Component Interconnects (PCI) bus.
- the computer system 612 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by the computer system 612 , and it includes both volatile and non-volatile media, removable and non-removable media.
- the system memory 628 can include computer system readable media in the form of volatile memory, such as random-access memory (RAM) 630 and/or a cache memory 632 .
- the computer system 612 may further include other removable/non-removable, volatile/non-volatile computer system storage media.
- a storage system 634 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”).
- a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”)
- an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media
- each can be connected to the bus 618 by one or more data media interfaces.
- the system memory 628 may include at least one program product having a set (e.g., at least one) of program modules 642 that are configured to carry out the functions of embodiments of the invention.
- a program/utility 640 having the set (at least one) of program modules 642 , may be stored in the system memory 628 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating systems may have one or more application programs, other program modules, and program data or some combination thereof, and may include an implementation of a networking environment.
- the program modules 642 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.
- the computer system 612 may also communicate with a set of one or more external devices 614 such as a keyboard, a pointing device, a display 624 , a tablet, a digital pen, etc. wherein these one or more devices enable a user to interact with the computer system 612 ; and/or any devices (e.g., network card, modem, etc.) that enable the computer system 612 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 622 . These include wireless devices and other devices that may be connected to the computer system 612 , such as, a USB port, which may be used by a tablet device (not shown).
- I/O Input/Output
- the computer system 612 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via a network adapter 620 .
- a network adapter 620 communicates with the other components of the computer system 612 via the bus 618 .
- other hardware and/or software components could be used in conjunction with the computer system 612 . Examples include, but are not limited to microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.
- the present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration
- the computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention
- the computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device.
- the computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.
- a non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing.
- RAM random access memory
- ROM read-only memory
- EPROM or Flash memory erasable programmable read-only memory
- SRAM static random access memory
- CD-ROM compact disc read-only memory
- DVD digital versatile disk
- memory stick a floppy disk
- a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon
- a computer readable storage medium is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network.
- the network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers.
- a network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages.
- the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the blocks may occur out of the order noted in the Figures.
- two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Finance (AREA)
- Power Engineering (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- For purposes of the USPTO extra-statutory requirements, the present application constitutes a utility application related to and claims the benefit of priority from U.S. Provisional Patent Application No. 62/707,177 filed on Oct. 24, 2017.
- If an Application Data Sheet (ADS) has been filed for this application, it is incorporated by reference herein. Any applications claimed on the ADS for priority under 35 U.S.C. §§ 119, 120, 121, or 365(c), and any and all parent, grandparent, great-grandparent, etc. applications of such applications, are also incorporated by reference, including any priority claims made in those applications and any material incorporated by reference, to the extent such subject matter is not inconsistent herewith.
- The present application is related to and/or claims the benefit of the earliest available effective filing date(s) from the following listed application(s) (the “Priority Applications”), if any, listed below (e.g., claims earliest available priority dates for other than provisional patent applications or claims benefits under 35 USC § 119(e) for provisional patent applications, for any and all parent, grandparent, great-grandparent, etc. applications of the Priority application(s)). In addition, the present application is related to the “Related Applications,” if any, listed below.
- The present invention relates to a computing environment, and more particularly streaming content utilizing blockchain technology.
- According to one embodiment of the invention, there is a method that includes a processor and a local storage device accessible by the processor of streaming content to a client. A request is received to receive content suitable for access by a streaming application. The content is separated into chunks C (C1, C2, . . . , Cn). The chunks are uploaded to corresponding blobbers B (B1, B2, . . . , Bn). A first pipe is utilized by the blobbers B (B1, B2, . . . , Bn) to download the chunks C (C1, C2, . . . , Cn) into a buffer. A second pipe is utilized to convert the downloaded chunks C (C1, C2, . . . , Cn) from the buffer into a byte array A (A1, A2, . . . , An) and the byte array A (A1, A2, . . . , An) is sent to a plurality of streaming services.
- According to one embodiment of the invention, there is provided an information handling system including at least one processor executing instructions implementing steps of the method of steaming content to a client.
- According to one embodiment of the invention, there is provided a computing program product executing instructions implementing steps of the method of steaming content to a client.
- The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention will be apparent in the non-limiting detailed description set forth below.
- The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings, wherein:
-
FIG. 1 illustrates an embodiment of a blockchain system according to the present disclosure; -
FIG. 2 depicts an embodiment of a client device; -
FIG. 3 depicts an embodiment of a miner system; -
FIG. 4 depicts an embodiment of a blobber system; -
FIG. 5 depicts a flow of a process that streams content to a client; and -
FIG. 6 depicts a schematic view of a processing system wherein the methods of this invention may be implemented. - Blockchain technology, sometimes also referred to as “blockchain,” is a particular type of distributed database. Blockchains can theoretically be used to store any type of data or content, but are particularly well-suited to environments in which transparency, anonymity, and verifiability are important considerations. Examples include financial projects, such as cryptocurrencies, auctions, capital management, barter economies, insurance lotteries, and equity crowd sourcing.
- A blockchain, originally block chain, is a growing list of records, called blocks, that are linked using cryptography. Each block contains a cryptographic hash of the previous block, a timestamp, and transaction data (generally represented as a Merkle tree). The Merkle tree is a hash-based data structure that is a generalization of the hash list. It is a tree structure in which each leaf node is a hash of a block of data, and each non-leaf node is a hash of its children. Typically, Merkle trees have a branching factor of 2, meaning that each node has up to 2 children.
- By design, a blockchain is resistant to modification of its data. This is because once recorded, the data in any given block cannot be altered retroactively without alteration of all subsequent blocks. For use as a distributed ledger, a blockchain is typically managed by a peer-to-peer network collectively adhering to a protocol for inter-node communication and validating new blocks. Although blockchain records are not unalterable, blockchains may be considered secure by design and exemplify a distributed computing system with high Byzantine fault tolerance. A Byzantine fault is a condition of a computer system, particularly distributed computing systems, where components may fail and there is imperfect information on whether a component has failed. The blockchain has been described as “an open, distributed ledger that can record transactions between two parties efficiently and in a verifiable and permanent way.”
- The technology is perhaps most easily understood through a simple and familiar example, such as “Bitcoin,” a cryptocurrency. A cryptocurrency is not entirely dissimilar from conventional currencies and, like a traditional currency, is essentially a medium of exchange. Traditional currencies are represented by a physical object paper currency or minted coins, for example—which is “spent” by physically delivering it in the proper denominations to a recipient in exchange for a good or service.
- However, for long-distance transactions, such as buying goods or services over the Internet, direct physical delivery is not feasible. Instead, the currency would have to be mailed to the recipient. However, this carries a very high risk of fraud. The recipient may simply keep the money and not deliver the purchased good or service, leaving the buyer without recourse. Instead, on-line transactions are typically carried out using electronic payment systems in which the transaction is processed, validated, and mediated by a trusted third party. This third party may be a bank, as in the case of a debit or credit card, or a third party service functioning as an escrow agent, such as PayPal. Crypto currencies operate on this same principle, except that instead of using a financial institution or other third party to facilitate the transaction, the transaction is verified through a consensus reached via cryptographic proof.
- Internet is a global computer network providing a variety of information and communication facilities, comprising interconnected networks using standardized communication protocols. Internet is not owned by a single entity and it operates without a central governing body. The same principles of distributed governance were applied to digital currencies by providing ability to perform digital transactions that existed without support from any underlying institution. The digital ledger that records the transactions in a chain using a mathematical hierarchy is called a blockchain.
- The current blockchain platform and related applications known to the industry fall short in multiple ways. First, there is no separation of roles on the blockchain based on the role of an entity for a given transaction. Each transaction follows a strict chain of rules and is dependent on its preceding transaction. If one transaction fails, all subsequent transactions on the blockchain become unusable. The computing time and built in delay in any blockchain platform is dependent on the available computing resources of its nodes. In absence of a role model, a single node has several computing intense tasks that are slow to execute. A slow system becomes vulnerable and becomes open to attacks. The current solutions do not allow for client flexibility in developing distributed applications with immutability and finality of transactions on a blockchain platform.
- In order to overcome the deficiencies of the prior art, various methodologies are disclosed where an infrastructure is supplied to enable usage of the disclosed methodology. In an embodiment, application programming interfaces (API) are provided to handle the details where examples are available on the Ochain platform. For this disclosure, high level descriptions of the details are discussed which should be adequate for those with ordinary skill in the art to implement solutions. In this disclosure, support for the identified features may be identified as modules in the blockchain platform with embodiments as described herein embedded in the modules.
- The following definitions generally apply to this disclosure and should be understood in both the context of client/server computing generally, as well as the environment of a blockchain network. These definitions, and other terms used herein, should also be understood in the context of leading white papers pertaining to the subject matter. These include, but are not necessarily limited to, Bitcoin: A Peer-to-Peer Electronic Cash System (Satoshi Nakamoto 2008). It will be understood by a person of ordinary skill in the art that the precise vocabulary of blockchains is not entirely settled, and although the industry has established a general shared understanding of the meaning of the terms, reasonable variations may exist.
- The term “network” generally refers to a voice, data, or other telecommunications network over which computers communicate with each other. The term “server” generally refers to a computer providing a service over a network, and a “client” generally refers to a computer accessing or using a service provided by a server over a network. The terms “server” and “client” may refer to hardware, software, and/or a combination of hardware and software, depending on context. The terms “server” and “client” may refer to endpoints of a network communication or network connection, including but not necessarily limited to a network socket connection. A “server” may comprise a plurality of software and/or hardware servers delivering a service or set of services. The term “host” may, in noun form, refer to an endpoint of a network communication or network (e.g., “a remote host”), or may, in verb form, refer to a server providing a service over a network (“hosts a website”), or an access point for a service over a network. It should be noted that the term “blockchain network” as used herein usually means the collection of nodes interacting via a particular blockchain protocol and ruleset. Network nodes are the physical pieces that make up a network. They usually include any device that both receives and then communicates information. But they might receive and store the data, relay the information elsewhere, or create and send data instead.
- The term “asset” means anything that can be owned or controlled to produce value.
- The term “asymmetric key encryption,” also known as “public key encryption,” “public key cryptography,” and “asymmetric cryptography,” means a cryptographic system that uses pairs of mathematically related keys, one public and one private, to authenticate messages. The “private key” is kept secret by the sending of a message or document and used to encrypt the message or document. The “public key” is shared with the public and can be used to decrypt the message or document.
- The term “ledger” means the append-only records stored in a blockchain. The records are immutable and may hold any type of information, including financial records and software instructions.
- The term “blockchain” means a distributed database system comprising a continuously growing list of ordered records (“blocks”) shared across a network. In a typical embodiment, the blockchain functions as a shared transaction ledger.
- The term “transaction” means an asset transfer onto or off of the ledger represented by the blockchain, or a logically equivalent addition to or deletion from the ledger.
- The term “blockchain network” means the collection of nodes interacting via a particular blockchain protocol and rule set.
- The term “nonce” means an arbitrary number or other data used once and only once in a cryptographic operation. A nonce is often, but not necessarily, a random or pseudorandom number. In some embodiments, a nonce will be chosen to be an incrementing number or time stamp which is used to prevent replay attacks.
- The term “block” means a record in a continuously growing list of ordered records that comprise a blockchain. In an embodiment, a block comprises a collection of confirmed and validated transactions, plus a nonce.
- The term “hash” means a cryptographic algorithm to produce a unique or effectively unique value, properly known as a “digest” but sometimes informally referred to itself as a “hash,” usually from an arbitrary, variable-sized input. Hashes are repeatable and unidirectional, meaning the algorithm always produces the same digest from the same input, but the original input cannot be determined from the digest. A change to even one byte of the input generally results in a very different digest, obscuring the relationship between the original content and the digest. SHA256 (secure hash algorithm) is an example of a widely used hash.
- The term “mining” means the process by which new transactions to add to the blockchain are verified by solving a cryptographic puzzle. In a proof-of-work blockchain network, mining involves collecting transactions reported to the blockchain network into a “block,” adding a nonce to the block, then hashing the block. If the resulting digest complies with the verification condition for the blockchain system (i.e., difficulty), then the block is the next block in the blockchain.
- The term “miner” refers to a computing system that processes transactions. Miners may process transactions by combining requests into blocks. In embodiments, a miner has a limited time, for example, 15-50 milliseconds, to produce a block. Not all miners generate blocks. Miners that generate blocks are called “generators.” Miners may be ranked and chosen to perform transactions based on their ranking. Some limited number of miners may be chosen to perform validation. All miners must be registered on the blockchain. The mining process involves identifying a block that, when hashed twice with SHA256 yields a number smaller than the given difficulty target. While the average work required increases in inverse proportion to the difficulty target, a hash can always be verified by executing a single round of double SHA-256. For the bitcoin timestamp network, a valid proof-of-work is found by incrementing a nonce until a value is found that gives the block's hash the required number of leading zero bits. Once the hashing has produced a valid result, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing the work for each subsequent block. Majority consensus is represented by the longest chain, which required the greatest amount of effort to produce. If a majority of computing power is controlled by honest nodes, the honest chain will grow fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of that block and all blocks after it and then surpass the work of the honest nodes. The probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added.
- Messages representing generated blocks are sent to all miners by identifying the block with a block hash, transaction hash, and a signature of the minor producing the block. The miners receiving the messages replay the transactions for the block and sign an authentication message. If there is enough miners authenticating the block, consensus ticket it signed. In some embodiments a ⅔+1 agreement or 67% agreement is needed to generate the consensus ticket.
- The term “sharding” is a technique in blockchain that seeks to achieve scalability within a blockchain network. The process of sharding seeks to split a blockchain network into separate shards, that contain their own data, separate from other shards.
- The term “sharder” refers to a computing system that that keeps tracks of its blockchain history. They are a single source of truth regarding any given transaction.
- The term “transaction fee” means a fee imposed on some transactions in a blockchain network. The amount of the transaction fee is awarded to the miner who successfully mines the next block containing that transaction.
- The term “wallet” means a computer file or software of a user that allows a user of a blockchain network to store and spend cryptocurrency by submitting transactions to the blockchain network. A wallet is usually itself protected by cryptography via a private key.
- The term “consensus” refers to a computational agreement among nodes in a blockchain network as to the content and order of blocks in the blockchain.
- The term “digital signature” means a mathematically-based system for demonstrating the authenticity of a message or document by ensuring that it was sent from the identified sender and not tampered with by an intermediary. Blockchains generally use asymmetric key encryption to implement digital signatures.
- The term “fork” means a split in a blockchain where two different valid successor blocks have been mined and are present in the blockchain, but consensus has not yet been reached as to which fork is correct. This type of fork is also referred to as a “soft fork,” and is automatically resolved by consensus over time. A “hard fork” is the forced imposition of a fork by manual intervention to invalidate prior blocks/transactions, typically via a change to the blockchain rules and protocol.
- The term “cryptocurrency” (or “crypto”) is a digital currency that can be used to buy goods and services, but uses an online ledger with strong cryptography to secure online transactions. Much of the interest in these unregulated currencies is to trade for profit, with speculators at times driving prices skyward. There are currently many different types of cryptocurrencies offered by many different blockchain implementations. The usage of any given cryptocurrency may be represented herein as “tokens.”
- The term “genesis block” means the very first block in a blockchain, that is, the root of the Merkle tree.
- The term “proof-of-stake” means a mining system in which the production and verification of a block is pseudo-randomly awarded to a candidate miner, or prioritized list of candidate miners, who have invested a valuable stake in the system which can be collected by the blockchain network if the produced block is later deemed invalid. The stake functions as a deterrent against fraudulent blocks.
- The term “proof-of-work” means a mining system in which the difficulty of finding a nonce that solves the cryptographic puzzle is high enough that the existence of a block compliant with the verification rules is itself sufficient proof that the block is not fraudulent.
- The term “smart contracts” means computer programs executed by a computer system that facilitate, verify, or enforce the negotiation and performance of an agreement using computer language rather than legal terminology. Smart contracts may be verified and executed on virtual computer systems distributed across a blockchain.
- The terms “web,” “web site,” “web server,” “web client,” and “web browser” refer generally to computers programmed to communicate over a network using the HyperText Transfer Protocol (“HTTP”), and/or similar and/or related protocols including but not limited to HTTP Secure (“HTTPS”) and Secure Hypertext Transfer Protocol (“SHTP”). A “web server” is a computer receiving and responding to HTTP requests, and a “web client” is a computer having a user agent sending and receiving responses to HTTP requests. The user agent is generally web browser software.
- The terms “erasure code” is a forward error correction (FEC) code under the assumption of bit erasures (rather than bit errors), which transforms a message of k symbols into a longer message (code word) with n symbols such that the original message can be recovered from a subset of the n symbols. The fraction r=k/n is called the code rate.
- The term “database” means a computer-accessible, organized collection of data, which may be referred to as “content” in this document. Databases have been used for decades to format, store, access, organize, and search data. Traditionally, databases were stored on a single storage medium controlled by a single computer processor, such as a fixed disk or disk array. However, databases may also be organized in a “distributed” fashion, wherein the database is stored on a plurality of storage devices, not all of which are necessarily operated by a common processor. Instead, distributed databases may be stored in multiple component parts, in whole or part, dispersed across a network of interconnected computers. “difficulty” means proof-of-work mining, or the expected total computational effort necessary to verify the next block in a blockchain. Difficulty is generally determined by the verification rules of the blockchain and may be adjusted over time to cause the blockchain to grow (e.g., new blocks to be verified and added) at a desired rate. For example, in the Bitcoin blockchain network, the difficulty adjusts to maintain a block verification time of about ten minutes across the blockchain network.
- It will be understood by one of ordinary skill in the art that common parlance in the computing industry refers to a “user” accessing a “site.” This usage is intended to represent technical access to an online server by a user via a user computer. That is, the reference to a “user” accessing a “server” refers to the user manipulating or otherwise causing client software to communicate over a telecommunications network with server software. This also typically means that the user's client software is running on a client computer system and accessing the server computer system remotely. Although it is possible that a user may directly access and use the server via the server hardware, and without use of a client system, this is not the typical use case in a client/server architecture.
- The systems and methods described herein enable a user in a rewards- or points-based system implemented via a blockchain network, to purchase a content according to a terms of a smart contracts. Users can receive, store, and share or send rewards on-demand in exchange for receiving the content. However, the user need not directly use, or even be aware of, the underlying blockchain.
- Described herein are systems and methods for an on-line, verifiable payment system that facilitates both manual and automatic payment with transaction costs as small as fractions of a cent. The systems and methods include a financial accounting system that uses smart contract technology and a centralized authority performing blockchain transactions on behalf of multiple independent users, and using bulk processing of transactions to reduce substantially the associated transaction fees, in some cases to fractions of a penny.
- One key distinction of the disclosed data storage system from other blockchain storage solutions is the separation of the role of mining from that of providing storage. Computers that provide storage are referred to as blobbers. Blobbers are neither responsible nor required to perform mining. In this manner, the load is lightened on the mining network and enables fast transactions on a lightweight blockchain. As the client and blobber interact, the client generates special signed receipts called markers. These markers act like checks that the blobber can later cash in with the blockchain.
- Once the interaction between client and blobber has concluded, the blobber writes an additional transaction to the blockchain, which redeems the markers for tokens, that is, the platform cryptocurrency, and commits the blobber to a Merkle root matching the data stored. The leaves of the Merkle tree must match markers sent from the client, preventing either the client or the blobber from defrauding each other.
- After a file has been stored, a challenge protocol ensures both that the blobber continues to store the file and continues to be paid for that work. The mining network posts a transaction, challenging the blobber to prove that it still possesses the data that it was paid to store. The blobber must provide that data, the relevant system metadata, and the client-signed marker to prove that the right data is stored. The blobber is then rewarded or punished accordingly.
- With the disclosed design, the majority of the work between clients and blobbers happens off-chain. The mining network is only involved enough to ensure that clients pay blobbers for their work and that the blobbers are doing the work that they have been paid to do. This approach assumes that the client is using erasure codes to ensure greater resiliency. While this is not a strict requirement, it does enable a client to recover if a blobber proves to be unreliable.
- In an embodiment, the split-key wallet protocol uses a Boneh-Lynn-Shacham (BLS) signature scheme that is based on bi-linear pairings. A pairing, defined as e(,), is a bilinear map of 2 groups G1 and G2 in some other group, GT. e(,) takes e as arguments points in G1 and G2.
- Pairings that verifies a signature have the form: e(g1, sig)=e(pk, H(m))
(in expanded form: e(g1, sk*H(m))=e(sk*g1, H(m))=e(g1, sk*H(m))
H(m) is hashing a message to a point on an elliptic curve. -
-
- KeyGen—choose a random α. Given generator g1, pk=α*g1
- Sign—σ=α*H(m)∈G2 (in the case of eth2.0)
- Verify(pk,m, σ)—if e(g1, σ)=e(pk, H(m)) return true.
- The BLS signature scheme may be used to split keys and let users interact using crypto keys via a blockchain. Since the cryptocurrency balance is maintained against these keys, it's very important to protect the private key. The private key is split into two secondary keys, storing each of the secondary key on a different device. Signing requires individual signatures from each device. Hence, losing any one device can still protect the primary key. In addition, if desired, one of the secondary keys can be further split into two parts; only one of which is stored on the device and the other may be a simple PIN that the user has to enter each time. This provides an extra layer of protection in case both devices are compromised. The split-key wallet protocol makes it easy to generate as many split keys as desired providing the ability for the user to periodically rotate the split keys and in the process change the PIN.
- With cryptocurrency, some quantity of tokens may be locked. In an embodiment, support may be provided for selling the cryptocurrency by specifying a name for locks, keys to the locks, how long each key is valid (from seconds to centuries), a number of keys, a price of the keys. Tokens acquired may be “locked” for the time each key is valid.
- When clients lock tokens, they are rewarded with an “interest.” The interest is newly generated crypto-currency tokens, intended (but not required) for payment of services on the network. These services can be miner compensation for transaction processing, blobber compensation for storage, or transmitted to any other client in exchange for a service; facilitating a lucrative market for building and running distributed applications. In the event of network congestion, a client may also offer to lock a greater amount of tokens to ensure that their transaction is accepted by the mining network. The token reward protocol creates an economy where the tokens can be used to receive services for “free”—meaning, the client does not lose their initial stake, but still adequately compensates the service provider.
- The systems and methods of a blockchain platform for distributed applications includes separation of roles for a miner and a blobber. The message flow model between different parties including a client, a blobber and a miner allows for fast transactions on a lightweight blockchain by lightening the load on a mining network, i.e. a network of one or more miners. Offloading the work to a different group of machines allows for greater specialization in the design and specifications of the machines, allowing for the blockchain platform miners to be optimized for fast transaction handling and blockchain platform blobbers to be efficient at handling data for given transaction types.
- In one embodiment, the distributed application is a storage application. Users of the system can request and get storage access without relying on a single source. While the distributed application described herein in detail is a storage application, a person of ordinary skill in the art would understand and apply the same invention disclosure on different types of distributed applications. The use of a distributed storage application is exemplary and not limiting in anyways the scope of the invention.
- In one embodiment, a storage protocol applied on the blockchain platform relies on the miners to serve as intermediaries in all storage transactions. Furthermore, the blockchain platform may enforce strict requirements on blobbers and blobbers' machines to ensure a fast and lightweight response time and execution.
- In one embodiment, data integrity of the transaction is verified by using hash of a file's contents. In another embodiment, the data is fragmented in two or more parts and each data part is separately hashed to create a Merkle tree. In one embodiment, the entire Merkle tree is stored and probabilistically verified. In another embodiment, the miners store the Merkle root of the stored files.
- The role-based distributed execution using a message flow model on a blockchain platform allows for a flexible and robust model with feedback and evaluation of different parties based on past interactions. For example, the blockchain platform involves interaction between two or more clients, who have data that they wish to store, and blobbers who are willing to store that data for a fee. Neither the client nor the blobber necessarily trust one another, so transactions are posted to a blockchain produced by a trusted network of miners, i.e., a trusted mining network.
- Players. The blockchain platform using a message flow model for role-based distributed work seeks to minimize the load on the mining network, so miners are not directly involved in the file transfer between clients and blobbers. Nonetheless, the transactions posted to the blockchain assures clients that their data is stored and gives blobbers confidence that they will be paid for their service; if either party misbehaves, the blockchain platform has the information to help identify cheaters.
- Each client includes an application responsible for encrypting the data. The blockchain platform relies on erasure coding, which is also performed by the client. Clients are assumed to have a public/private key pair and a certain amount of tokens. Erasure coding is a method of data protection in which data is broken into fragments, expanded and encoded with redundant data pieces and stored across a set of different locations or storage media. A miner works on a central chain of the blockchain platform. For example, in the context of storage, miners are responsible for accepting requests from clients, assigning storage to blobbers, locking client tokens to pay for their storage, and testing that blobbers are actually providing the storage that they claim. A blobber is responsible for providing long-term storage. Blobbers only accept requests that have been approved by the mining network, which helps to prevent certain attacks. Blobbers are paid in three ways: (i) When data is read from them, the clients give them special markers that the blobber can redeem for tokens; (ii) When client writes data to them, blobbers get special markers; and (iii) whenever a blobber is storing data, they are randomly challenged to provide special blocks and if these challenges are passed, the mining network rewards the blobber with tokens.
- Protocol Sketch. For example, one basic message flow model based on roles on a blockchain platform for a distributed storage application can be broken into five parts. First, clients must use tokens to reserve system resources. These resources include the amount of storage, the number of reads, and the number of writes needed for the data. The client's tokens are locked for a set period of time. Once the time has elapsed, the client regains their tokens and loses their storage resources. Of course, a client may decide to re-lock their tokens to maintain their resources, though the amount of tokens needed may change depending on the economy.
- When clients want to use the resources that they have purchased, they must write a transaction to the network declaring their intent. The mining network connects the clients with the appropriate blobbers and allows them to set up a secure connection.
- Once the connection is established, the mining network no longer acts as an intermediary between the client and the blobbers. During this phase, the client generates markers to give to the blobber in exchange for access to system resources. The blobber collects these markers and redeems them with the mining network once the transaction is complete; this transaction also notifies the blobber that the transaction has finished, and lets the network know that the miner and blobber agree on the data that the blobber is expected to store. In one embodiment, the markers help resolve disputes in case the client and blobber do not agree on the Merkle root.
- After the blobber has completed the transaction, the mining network will periodically challenge the blobber to provide a randomly chosen block of data. These challenges involve a carrot and stick approach; blobbers are punished if they fail the challenge, and blobbers are rewarded with additional tokens when they pass the challenge. The blockchain platform ensures that blobbers are paid even when the data is not frequently accessed. When the client no longer wishes to store a file, they issue a deletion transaction to the network. Once it is finalized, blobbers delete the file and clients may use their storage allocation to store other files.
- Error and Repair. One or more error reporting protocols and/or repair protocols work with the basic message flow model based on roles on a blockchain platform for a distributed storage application. In one embodiment, the error reporting protocol allows both clients and blobbers to report problems to the network. These problems could include either reports of when other clients or blobbers are acting maliciously, or when a system fails or drops from the network unexpectedly.
- In one embodiment, a repair protocol arises when a blobber is identified as malicious, drops from the network, or is no longer considered suitable for storing the data that it has. When needed, the client can read the data from the network, reconstruct the missing fragment of data, and re-upload it to the network. In one embodiment, the mining network reconstructs a missing slice of the data from any other available slices without involving the client.
- Attacks. The message flow model for the blockchain platform is robust and resilient to different types of attacks. For example, an outsourcing attack arises when a blobber claims to store data without actually doing so. The attacker's goal in this case is to be paid for providing more storage than is actually available. For example, if Alice is a blobber paid to store filel23, but she knows that Bob is also storing that file, she might simply forward any file requests she receives to Bob. The blockchain platform defense against this attack is to require all data requests to go through the mining network. Since the cheater must pay the other blobbers for the data, this attack is not profitable for the cheater. Additionally, the mining network's blockchain gives some accounting information that can be analyzed to identify potential cheaters.
- A Sybil attack is a kind of security threat on an online system where one person tries to take over the network by creating multiple accounts, nodes or computers. This can be as simple as one person creating multiple social media accounts. But in the world of cryptocurrencies, a more relevant example is where somebody runs multiple nodes on a blockchain network.
- Another attack may occur if two blobbers collude, both claiming to store a copy of the same file. For example, Alice and Bob might both be paid to store filel23 and file456. However, Alice might offer to store filel23 and provide it to Bob on request, as long as Bob provides her with file456. In this manner, they may free up storage to make additional tokens. In essence, collusion attacks are outsourcing attacks that happen using back-channels. A Sybil attack in the context of storage is a form of collusion attack where Alice pretends to be both herself and Bob. The concerns are similar, but the friction in coordinating multiple partners goes away. The blockchain platform message flow based model requires that the blobbers are assigned randomly for each transaction, helping to further reduce the chance of collusion.
- The blockchain platform uses erasure codes to help defend against unreliable blobbers in a network. Furthermore, the blockchain platform makes demands on the capabilities of blobbers authorized to use the platform. For example, if it repeatedly underperforms expectations, a blabber's reputation may suffer, and risk being dropped from the network.
- In another attack, a client might attempt to double-spend their tokens to acquire additional resources. However, the client is not given access to its resources until the transaction has been finalized. The blockchain platform transactions are designed for rapid finalization, so the delay for the client should be minimal. Other attacks such as fraudulent transactions are the purview of the mining protocol and the blockchain platform is well designed with defenses based on its robust implementations of authentication and data integrity modules. A replay attack also fails on the blockchain platform with the use of timestamps as one of the fields to assign unique transaction id.
- Finally, generation attacks may arise if a blobber poses as a client to store data that they know will never be requested. By doing so, they hoped to be paid for storing this data without actually needing the resources to do so. The blockchain platform can defend against generation attacks with a challenge protocol that requires blobbers to periodically provide files that they store.
- Locking System Resources. The message flow model for the blockchain platform is robust and resilient in locking system resources and reusing the same when resources are freed. For example, in order to store files, clients must use their tokens to purchase a certain amount of storage for a year. During this period, the clients' tokens are locked and cannot be sold. Likewise, to access or update their data, clients must purchase a certain number of reads and writes. To lock tokens, the client posts a transaction to the mining network. For example, the transaction includes the following without limitations: (i) the id of the client (client_id); (ii) the amount of storage (amt_storage); (iii) the number of reads (num_reads); (iv) the number of writes (num_writes); (v) a params field for any additional requirements allowing for flexibility. Only one of amt_storage, num_reads, and num_writes is required, since a client may be locking additional resources to supplement a previous transaction. However, the blockchain platform generally expects a client to lock all three in any transaction.
- A person of ordinary skill in the art would understand that there are well-established methods and techniques to establish a secure digital connection between any two parties on the internet. The blockchain platform relies on the well-established methods to establish a secure connection with an added layer of security based on the role of the party i.e. the role of a client, a blobber or a miner. Neither the client nor the blobber trust one another, yet the blockchain platform allows both parties acting in its own best interest to nonetheless benefit each other. Any transgressions can be identified by the mining network of the blockchain platform with one or miners having the authority to punish any misbehaving party.
- Creating a Connection. In establishing a connection, the blockchain platform performs the following: (i) assign blobbers to handle a client's request; and (ii) to ensure that the mining network knows what data the client wishes to store, allowing the network to police the client's and blobber's behavior. In one embodiment, the client and the blobber establish a session key between themselves. In another embodiment, the client and blobber set up a Transport Layer Security (TLS) connection instead of a session key.
- A possible attack when creating a connection may include that a client might create a transaction on the mining network, but never send the data to the blobber, either as an attempt to damage a blabber's reputation or to prevent a blobber from being paid by other clients. On the blockchain platform, three factors mitigate this attack: (1) The client had to lock up tokens to perform this attack. In essence, they would be paying for storage without using it. (2) Blobbers are not challenged by the mining network until they post a transaction to finalize the data exchange. (3) Blobbers periodically monitor the blockchain for transactions involving them; if they notice this transaction, they can cancel it using a error reporting protocol.
- Similarly, a blobber might not respond to the client and refuse to complete the connection. Again, several factors make this attack unlikely: (1) Once the connection is established, the client is expected to send markers. The blobber redeems these markers for tokens, and hence has a vested interest in completing the connection. (2) If the transaction times out, the client can report an error. (3) If the client becomes dissatisfied, they can delete their data from the blobber and reassign it to a different blobber. When this happens, the blobber is no longer paid for storing the data.
- Reads and Writes. After establishing a secure connection as described above, the blockchain platform performs reads and writes as described herein. Once a secure connection has been established between the client and the blobber, the client can choose to either read data from the blobber or update data stored with the blobber. The blockchain platform for uploading or downloading files requires that the client compensate the blobber. This process is done through the use of special read_marker and write_marker values created by the client. Each marker is a pair of a number (i) and a signature, where “i” is a counter starting at 0 that is incremented with each marker sent. READ and WRITE are constants included in the signatures denoting whether this is a read_marker or write_marker respectively.
- The format of a read_marker is [READ, trans_id, blobber_id, block_num, i]client. The format of a write_marker is [WRITE, trans_id, blobber_id, hash(data), block_num, i]client, where hash(data) is the hash of the current block of data being sent. The blobber collects these markers, and when the transaction has either completed or timed out, the blobber writes a transaction to the blockchain effectively cashing in the markers in exchange for tokens. This transaction has the following effects: (i) The blobber is paid in tokens. (ii) The client loses the corresponding number of reads and writes. (iii) The Merkle root of the data (if it has been updated) is confirmed by the blobber. At this point, the blobber may be challenged to provide the data that they store. Since the blobber is also compensated for passing these challenges, they have a vested interest in completing the operation. Note that future transactions only allow access to the data if there is no discrepancy between the client and the blobber on the Merkle root of the data.
- The information stored in the params field in
message 1 depends upon the nature of the transaction. If this is a new file storage request, the k and n values for erasure coding must be included, since these settings affect the behavior of the network during challenges. Also, if this is a new file upload or a file update, the client must include the file size, the version number of the file, the fragment_id, chosen by the client, for this fragment of the erasure coded data. - Markers may serve as an additional authorization tokens, and hence the double-spending problem is a concern. Blobbers might attempt to redeem a marker multiple times, or a client might attempt to pay different blobbers with the same marker. Each trans_id uniquely identifies the file involved, and the mining network does not accept markers if the trans_id does not match an existing transaction for an open connection. When the blobber redeems the markers, the connection is considered closed, and so the blobber cannot reuse the markers in a future transaction. Each marker must be unique within the redemption transaction, so the blobber is not able to double spend the marker within the transaction either. A client might attempt to pay multiple blobbers with the same marker. However, since both trans_id and blobber_id are included in the marker, this attack would fail.
- If blobbers pose as clients, it is possible that they could generate markers without reading the data solely as a mechanism to get tokens. However, since the blobber would have to lock tokens to acquire reads, it would in some sense be paying itself with its own tokens.
- Clients might create more markers than the number of reads and writes they have purchased, essentially writing checks that they cannot cash. Clients are expected to track the number of markers that they have used, and therefore are the best ones to hold accountable. On the blockchain platform, if a client exceeds the number of markers that they are authorized to create, the blobber is still paid. However, instead of paying the blobbers in newly-minted tokens, they are paid in tokens taken from the client. Other type of attacks might include a blobber ignoring a client's request for data and simply cash the marker's sent by the client. However, in this case the client would quickly stop sending markers to the blobber, preventing the blobber from receiving additional payment. Furthermore, the client would report an error to the network, and might decide to delete their data from the blobber. The blobber might send invalid data; however, the client might have the Merkle tree, in which case they would quickly spot the problem and report an error. Regardless, the blobber is expected to store the Merkle tree and can asked to provide it. The mining network stores the Merkle root, preventing the blobber from providing a false tree.
- In scenarios where a client simply writes data, the blobber might not store the data. However, when redeeming markers, the blobber must confirm the new Merkle root. Therefore, the mining network would be able to catch the blabber's cheating with the challenge protocol. In another scenario, a client might send different data to the blobber that does not match the Merkle root specified in the blockchain, either in a hope to damage the blabber's reputation or to frustrate the blobber by using its resources without paying it. The blobber cannot finalize the transaction, and therefore will not be challenged (and paid) for storing the data. However, the blobber can report the error to the mining network. Furthermore, every write_marker includes a hash of the block of data sent, which can serve as a form of proof about what data the blobber received from the client.
- Deleting Files. To delete a file, the client posts a transaction to the blockchain deleting the resource. Once the transaction is finalized on the blockchain, the client regains the storage allocation.
- Blobbers are expected to poll the blockchain for these transactions. Once they notice that a file has been deleted, all blobbers storing slices of this data delete its data. In some attacks, a client might attempt to get free storage by a distributed denial of service attack (DDoS) the blobbers before they receive the message to delete the data, but the mining network would not approve future read requests. Clients might attempt to delete data, but maintain an open connection with blobbers. With this approach, the client would attempt to get free storage without needing to go through the mining network. A defense against this attack is that the mining network rejects all requests to delete data when there are open connections. If a blobber fails to close a connection, the client can report the error to the mining network and close the connection that way. Nothing on the blockchain platform enforces that the blobbers actually delete the data when asked though a blobber has little economic incentive to keep it. If the client is concerned about the confidentiality of its data, the client can encrypt its data before storage.
- Challenge Request. In order to verify that a blobber is actually storing the data that they claim, the protocol relies on the miners periodically issuing challenge requests to the blobbers. The blockchain platform message flow model is also how blobbers are rewarded for storing files, even if the files are not accessed by any clients. When the blobber passes the challenge, it receives newly minted tokens. The mining network is responsible for establishing consensus on whether the blobber has passed the challenge. A transaction is posted by the mining network specifying which block of data is requested. The blobber sends the data to the mining network as well as the nodes of the Merkle tree needed to calculate the Merkle root. If the mining network reaches consensus that the blobber failed to provide the correct data in the allocated time, a transaction is posted punishing the blobber. Otherwise, a transaction is posted rewarding the blobber with the token. In one embodiment, an update to existing data may be canceled. The blobber might not have the correct data, and so cannot satisfy future challenges. Therefore, these cases are treated as delete transactions.
- Recovering Data. There could be scenarios when the blockchain platform needs to recover data. When a blobber disappears unexpectedly from the network, or when a canceled transaction causes data to be lost, the data needs to be regenerated and stored with another blobber. In one embodiment, the repair operation is performed by the client, who will be required to get the needed slices, regenerate the new slice, and post a new transaction to store the regenerated slice. The cost of the transactions to recover the client's data is paid for by the client. However, if the loss is due to the misbehavior of a blobber, the blabber's stake may be seized and given to the client to help pay for the recovery.
- If a client attempts to update data simultaneously with all blobbers, it is possible that all copies of the data could be deleted. In order to avoid this issue, the client can adjust the k and n values used in the erasure codes to provide greater resiliency and update the slices of data in sequence.
- In one embodiment, the client must initially commit to the Merkle root of the data whenever a file is changed on the network. The result is that the transactions are either data writes or data reads. In one embodiment, the blockchain platform allows for reads and writes within a given client/blobber exchange. The client indicates the Merkle root is not yet known; when the blobber writes a transaction to cash their markers, they also commit to a Merkle root. The client can write a transaction on the blockchain either approving or contesting the Merkle root.
- In one embodiment, the client can rebuild any data lost when a blobber goes offline unexpectedly. The client might not always be the best choice for this responsibility. If the client does not connect regularly, there might be a delay before they notice.
- In one embodiment, when a blobber fails a challenge to provide a block of data, the mining network can initiate transactions to recover the missing fragment of data and reassign it to a different blobber. Any encryption by the client is performed before erasure coding to ensure that the data can be reconstructed without the client's aid.
- Distributed Content Delivery Network. The blockchain platform using the message flow model can be used to geographically distribute data to increase the performance and availability of a client's data. A client may use encryption, distribute an application to reconstruct the data or use null encryption. The blockchain platform supports the ability for a client to stream content from a blobber.
- On the blockchain platform, data blobs are identified by a combination of the client's unique id (client_id) and the client-chosen data_id. Individual transactions are assigned a trans_id based on the triple of these two fields and a timestamp (T). In addition to creating unique ids for transactions, the timestamp also ensures that each request is fresh and helps defend against replay attacks.
- In one embodiment,
FIG. 1 depicts a diagram 100 illustrating an example of a blockchain platform based on a message flow model for implementing different distributed applications. In the example ofFIG. 1 , the environment includesclient 1 110,client 2 112, . . . , client n 114. The environment includesminer1 120,miner miner n 124. The system includesblobber 1 130,blobber 2 132, . . . , blobber n 134. Each client system [110, 112, . . . , 114] may include components to store, update, get, read, write and/or delete requests. Although many clients, miners, and blobbers are supported, references toclient 110,client system 110 orclient device 110 will be used to indicate any selected client system. References tominer 120 orminer system 120 will be used to indicate a selected plurality of miners. References to blobber 130 orblobber system 130 will be used to indicate a selected plurality of blobbers. In an embodiment, any client system may include storage requests. A client can implement many types of flexible and distributed applications on theclient system 110 using the client aspect of the blockchain platform using a message flow model. In the embodiment, theminer 120 includes components to process requests from the clients including storage requests. Two or more miners form a mining network. In the embodiment, theblobber 130 includes components to fulfill storage requests that are initiated by theclient 110 and approved byminer 120. -
Network 140 can be different wireless and wired networks available to connect different computer devices including client and server systems. In an implementation,network 140 is publicly accessible on the internet. In an implementation,network 140 is inside a secure corporate wide area network. In an implementation,network 140 allows connectivity of different systems and devices using a computer-readable medium. In an implementation, the blockchain platform using a message flow model allows users on the client system, the blobber or the miner to set privacy settings that allow data to be shared among select family and friends, but the same data is not accessible to the public. In an implementation, the blockchain platform using a message flow model allows users on the client system, the blobber or the miner to encrypt data to be shared among select family and friends, but the same data while available cannot be decoded by the public. - The messaging and notification between different components can be implemented using Application Programming Interface (API) calls, extensible markup language (“XML”) interfaces between different interfaces, Java/C++ object oriented programming or simple web-based tools. Different components may also implement authentication and encryption to keep the data and the requests secure.
-
FIG. 2 depicts aclient device 200 which is an exploded view of aclient system 110 shown inFIG. 1 . For a distributed storage application implementation, the client has astorage application 210 that interacts with theoperating system 260 of theclient device 200. In an example embodiment, the client computing device may have family photos, videos or business-related files for storage. Theclient device 200 may use the Diffie-Hellman key exchange method with another client, forexample client 2 112. The Diffie-Hellman key exchange method allows two parties that have no prior knowledge of each other to jointly establish a shared secret key over an insecure channel, such as,network 140. This key can then be used to encrypt subsequent communications using a symmetric key cipher. The client uses a client_id 220 with a Diffie Hellman public and private cryptography keys to establish session keys. In one embodiment, the client and the blockchain platform uses Transport Layer Security, i.e. symmetric keys are generated for each transaction based on a shared secret negotiated at the beginning of a session. Theclient 200 gets preauthorized tokens 275 for storage allocation on the blockchain platform. The storage preferences for the client are coordinated using 270. A client'sstorage preferences 230 include price range, challenge time, data/parity shards, encryption, access times, preferred blobber, preferred miner lists, etc. Types ofrequests 240 include store, update, get, read, write and/or delete requests. Thedata integrity 280 includes techniques to create a hash based on available data, encryption of the data, division of data into fragments, use of erasure codes, Merkle root and Merkle tree creation based on data fragments and a Merkle root list for different types of data. A client may use one or more options in different types of combinations to preservedata integrity 280 verification when sending data out on the system to different blobbers on the blockchain platform. In one implementation, the client has an option to create its own data_id for selected data. In one implementation, the client gets an automatically generated data_id based on different client preferences and parameters of usages. A user 290 is shown using theclient device 200. In one implementation, the client system includes module to report errors when a blobber does not send an anticipated message. In one implementation, the client system monitors the blockchain for different suspicious activities related to its own work. -
FIG. 3 depicts aminer system 300 which is an exploded view of aminer system 120 ofFIG. 1 . The different components or modules included in a miner system includes a module to process and authorizerequests 370, receiveclient requests 310, verify clientdigital signature 320, verify whether client is allowed to make a particular request based on allocated storage for a client and availability on thesystem 330, allocate blobbers from a matchedblobber list 340, allocate time period to complete thetransaction 350, and confirmtransaction 360 on the blockchain platform. In one embodiment, the miner system includes module to monitor the blockchain for different suspicious activities. In one embodiment, the miner system includes mechanism to handle error reports received from either a client or a blobber. In one embodiment, the miner system includes ranking or evaluations for clients and/or blobbers associated with the blockchain platform. -
FIG. 4 depicts ablobber system 400 which is an exploded view of ablobber system 130 ofFIG. 1 . The different components or modules included in a miner system includes a module to fulfill requests 455, receive approved and verified client requests 420, send verification of its own identity for a given transaction 405, receive data and perform storage 410, receive approval and challenges from miner for storage 415, confirm storage to miner andvalidators 460, request and receive payment for storage and handling of the requests 450. In an embodiment, after a blobber has received approved and verified client requests 430, the blobber performs the required storage requests, that is, fulfills requests 455, collects validation tickets and submits the validation tickets to miners 435. The miner may challenge the blobber 430 at random. The miners pay blobbers from the challenge pool 440 after confirming storage to miner and validators 445 which supports a miner request for payment after which the miner receives payment 450. In one embodiment, the blobber system includes a module to report errors when a client does not send an anticipated message. In one embodiment, the blobber system monitors the blockchain for different suspicious activities related to its own work. -
FIG. 5 depicts a flow of processes that support streaming content to a plurality of clients. Processing commences at 500 and shows the steps taken by a process that receive a request to stream content to a client. The process allows for client pay 510 and/orowner pay 520. The infrastructure for providing the support is provided via a platform software development kit (SDK) 540, Example platforms may include, but are not limited to Android, IOS, MAC, Windows, Web,Browser 530. Using theplatform SDK 540, software is generated to provide platformspecific APIS 550. Atstep 560, the content is separated into Chunks C (C1, C2, . . . , Cn) assigned to Blobbers B (B1, B2, . . . , Bn). At step 570, a first pipe is utilized to download the chunks C (C1, C2, . . . , Cn) by the blobbers B (B1, B2, . . . , Bn) into buffer. Atstep 580, a second pipe is utilized to convert the downloaded chunks C (C1, C2, . . . , Cn) into a byte array A (A1, A2, . . . , An). Atstep 590, the byte array A (A1, A2, . . . , An) is sent to a plurality of streaming services. - Different platforms may have different implementation. However, for most platforms zboxcli is wrapper to gosdk methods supported by a platform player. Unlike most streaming support, no server is required to supply the content. The content is downloaded by blocks where each block chunks may be coming from different blobbers, which are read and converted into a byte array, and sent to a player. A first pipe is used to read the content into a buffer and a second pipe is used to read from the buffer. Similarly, each platform or player may utilize two parallel pipes. In an embodiment with zboxcli commands, the file may be downloaded utilizing the downloadFileByBlocks method, inputstream may be used to read the chunked files into the byte array, and AddByteArray may be used to customize the media source for the player. In an embodiment, downloadFileByBlocks returns file-chunks with correct byte range, using gosdk v1.2.4 and above only. getFileMeta, getFileMetaByAuth, and listAllocation returns actuaBlockNumbers and actualFileSize (exclude thumbnail size.
- Components to play video “on fly” may include AVPlayer which is a standard video player for IOS and Mac. ZChainPlayerItem extends from PlayerItem (AVKit framework). ZChainVideoFile is just a wrapper to communicate between AVPlayer and ZChain. When AVPlayer is started, ZChainPlayerItem starts chunked download, meantime AvPlayer requests for first chunk of video. When first chunk arrived, player receives it through middleware buffer and starts requesting more chunks. Basically, it uses 2 parallel pipes with middleware buffer, one pipe is from AVPlayer to read buffer, second pipe is from ZChain network to write chunks to buffer. If player cannot receive chunk (for example it is still not downloaded), then it will move to STALE state and user will see Video paused. During STALE state player still trying to request chunk few more times, if it's not yet received, then video will be stopped.
- Components to play video “on fly” may include ExoPlayer which is a standard video player for Android. ZChainDataSource extends from BaseDataSource (ExoPlayer framework). ZChainFile is just a wrapper to communicate between ExoPlayer and ZChain. ZBoxCallback is a callback to communicate with gosdk and ZChainDataSource. When ExoPlayer is started, ZChainDataSource starts chunked download, meantime AvPlayer requesting for first chunk of video. When first chunk arrives, player receives it through middleware buffer and starts requesting more chunks. Basically, it uses 2 parallel pipes with middleware buffer, one pipe is from ExoPlayer to read buffer, second pipe is from ZChain network to write chunks to buffer.
- Referring to
FIG. 6 , a schematic view of aprocessing system 600 is shown wherein the methods of this invention may be implemented. Theprocessing system 600 is only one example of a suitable system and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein. Regardless, thesystem 600 can implement and/or performing any of the functionality set forth herein. In thesystem 600 there is acomputer system 612, which is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with thecomputer system 612 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like. - The
computer system 612 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and so on that perform tasks or implement abstract data types. Thecomputer system 612 may be practiced in distributed cloud computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be in both local and remote computer system storage media including memory storage devices. - As shown in
FIG. 6 , thecomputer system 612 in thesystem environment 600 is shown in the form of a general-purpose computing device. The components of thecomputer system 612 may include, but are not limited to, a set of one or more processors orprocessing units 616, asystem memory 628, and abus 618 that couples various system components including thesystem memory 628 to theprocessor 616. - The
bus 618 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include the Industry Standard Architecture (ISA) bus, the Micro Channel Architecture (MCA) bus, the Enhanced ISA (EISA) bus, the Video Electronics Standards Association (VESA) local bus, and the Peripheral Component Interconnects (PCI) bus. - The
computer system 612 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by thecomputer system 612, and it includes both volatile and non-volatile media, removable and non-removable media. - The
system memory 628 can include computer system readable media in the form of volatile memory, such as random-access memory (RAM) 630 and/or acache memory 632. Thecomputer system 612 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, astorage system 634 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to thebus 618 by one or more data media interfaces. As will be further depicted and described below, thesystem memory 628 may include at least one program product having a set (e.g., at least one) ofprogram modules 642 that are configured to carry out the functions of embodiments of the invention. - A program/
utility 640, having the set (at least one) ofprogram modules 642, may be stored in thesystem memory 628 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating systems may have one or more application programs, other program modules, and program data or some combination thereof, and may include an implementation of a networking environment. Theprogram modules 642 generally carry out the functions and/or methodologies of embodiments of the invention as described herein. - The
computer system 612 may also communicate with a set of one or more external devices 614 such as a keyboard, a pointing device, adisplay 624, a tablet, a digital pen, etc. wherein these one or more devices enable a user to interact with thecomputer system 612; and/or any devices (e.g., network card, modem, etc.) that enable thecomputer system 612 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 622. These include wireless devices and other devices that may be connected to thecomputer system 612, such as, a USB port, which may be used by a tablet device (not shown). Still yet, thecomputer system 612 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via anetwork adapter 620. As depicted, anetwork adapter 620 communicates with the other components of thecomputer system 612 via thebus 618. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with thecomputer system 612. Examples include, but are not limited to microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc. - The present invention may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
- The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
- Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
- Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
- Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
- These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
- While particular embodiments have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/349,815 US20210314396A1 (en) | 2017-10-24 | 2021-06-16 | Streaming content via blockchain technology |
US17/497,902 US20220029815A1 (en) | 2017-10-24 | 2021-10-09 | Streaming content via blockchain technology |
US17/672,842 US11979490B2 (en) | 2017-10-24 | 2022-02-16 | Non-fungible token blockchain processing |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762707177P | 2017-10-24 | 2017-10-24 | |
US15/994,946 US11165862B2 (en) | 2017-10-24 | 2018-05-31 | Systems and methods of blockchain platform for distributed applications |
US17/349,815 US20210314396A1 (en) | 2017-10-24 | 2021-06-16 | Streaming content via blockchain technology |
Related Parent Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/994,946 Continuation-In-Part US11165862B2 (en) | 2017-10-24 | 2018-05-31 | Systems and methods of blockchain platform for distributed applications |
US15/994,946 Division US11165862B2 (en) | 2017-10-24 | 2018-05-31 | Systems and methods of blockchain platform for distributed applications |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/497,902 Continuation-In-Part US20220029815A1 (en) | 2017-10-24 | 2021-10-09 | Streaming content via blockchain technology |
US17/672,842 Continuation-In-Part US11979490B2 (en) | 2017-10-24 | 2022-02-16 | Non-fungible token blockchain processing |
Publications (1)
Publication Number | Publication Date |
---|---|
US20210314396A1 true US20210314396A1 (en) | 2021-10-07 |
Family
ID=66170201
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/994,946 Active 2038-12-10 US11165862B2 (en) | 2017-10-24 | 2018-05-31 | Systems and methods of blockchain platform for distributed applications |
US16/027,248 Active 2039-02-07 US10986177B2 (en) | 2017-10-24 | 2018-07-03 | Systems and methods of self-forking blockchain protocol |
US17/349,556 Active 2039-03-30 US11757988B2 (en) | 2017-10-24 | 2021-06-16 | Add and drop blobbers in blockchain |
US17/349,779 Pending US20210320973A1 (en) | 2017-10-24 | 2021-06-16 | Transferring content via proxy re-encryption |
US17/349,833 Active 2039-06-29 US11930100B2 (en) | 2017-10-24 | 2021-06-16 | Fund conversion between blockchains |
US17/349,815 Abandoned US20210314396A1 (en) | 2017-10-24 | 2021-06-16 | Streaming content via blockchain technology |
US17/349,748 Active 2039-05-31 US11785079B2 (en) | 2017-10-24 | 2021-06-16 | Free storage protocol for blockchain platform |
Family Applications Before (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/994,946 Active 2038-12-10 US11165862B2 (en) | 2017-10-24 | 2018-05-31 | Systems and methods of blockchain platform for distributed applications |
US16/027,248 Active 2039-02-07 US10986177B2 (en) | 2017-10-24 | 2018-07-03 | Systems and methods of self-forking blockchain protocol |
US17/349,556 Active 2039-03-30 US11757988B2 (en) | 2017-10-24 | 2021-06-16 | Add and drop blobbers in blockchain |
US17/349,779 Pending US20210320973A1 (en) | 2017-10-24 | 2021-06-16 | Transferring content via proxy re-encryption |
US17/349,833 Active 2039-06-29 US11930100B2 (en) | 2017-10-24 | 2021-06-16 | Fund conversion between blockchains |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/349,748 Active 2039-05-31 US11785079B2 (en) | 2017-10-24 | 2021-06-16 | Free storage protocol for blockchain platform |
Country Status (1)
Country | Link |
---|---|
US (7) | US11165862B2 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210375409A1 (en) * | 2018-10-19 | 2021-12-02 | Longenesis Ltd. | Systems and methods for blockchain-based health data validation and access management |
US11303733B2 (en) * | 2018-02-15 | 2022-04-12 | Axell Corporation | Server apparatus, client apparatus, and data processing system |
US20220197983A1 (en) * | 2020-12-17 | 2022-06-23 | Asynchronous Art, Inc, | Systems and methods for creating and managing programmable art |
US20220253821A1 (en) * | 2019-05-24 | 2022-08-11 | nChain Holdings Limited | Streaming portions of data over a side channel |
US11778167B1 (en) | 2022-07-26 | 2023-10-03 | Insight Direct Usa, Inc. | Method and system for preprocessing optimization of streaming video data |
TWI818344B (en) * | 2021-11-01 | 2023-10-11 | 神達數位股份有限公司 | Method and system for video data managing |
US11849242B2 (en) | 2021-12-29 | 2023-12-19 | Insight Direct Usa, Inc. | Dynamically configured processing of a region of interest dependent upon published video data selected by a runtime configuration file |
US11961273B2 (en) | 2021-12-29 | 2024-04-16 | Insight Direct Usa, Inc. | Dynamically configured extraction, preprocessing, and publishing of a region of interest that is a subset of streaming video data |
US12047443B2 (en) | 2019-05-24 | 2024-07-23 | Nchain Licensing Ag | Malleability of transactions for inclusion in a blockchain |
US12093941B2 (en) | 2019-05-24 | 2024-09-17 | Nchain Licensing Ag | Multi-input transactions |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10841337B2 (en) | 2016-11-28 | 2020-11-17 | Secureworks Corp. | Computer implemented system and method, and computer program product for reversibly remediating a security risk |
US10552556B2 (en) * | 2017-08-03 | 2020-02-04 | Liquineq AG | System and method for performance testing of scalable distributed network transactional databases |
US11165862B2 (en) * | 2017-10-24 | 2021-11-02 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
US11379832B2 (en) * | 2018-12-07 | 2022-07-05 | 0Chain, LLC | Systems and methods of blockchain for transaction rewards on token locking |
US20210217002A1 (en) * | 2017-10-24 | 2021-07-15 | 0Chain Corp. | Blockchain content purchasing protocol |
US10790982B2 (en) | 2017-10-27 | 2020-09-29 | Secureworks Corp. | Systems and methods for block chain authentication |
US10735470B2 (en) | 2017-11-06 | 2020-08-04 | Secureworks Corp. | Systems and methods for sharing, distributing, or accessing security data and/or security applications, models, or analytics |
US11836720B2 (en) * | 2018-03-12 | 2023-12-05 | The Pen | Infinitely scalable cryptocurrency system with fast, secure verification |
WO2019204905A1 (en) * | 2018-04-22 | 2019-10-31 | Interbit Ltd. | Method and system for hosting a new blockchain using an existing blockchain node |
WO2019222842A1 (en) * | 2018-05-23 | 2019-11-28 | Yroo Inc. | Method and apparatus for decentralized information mining of online content |
US11556874B2 (en) * | 2018-06-11 | 2023-01-17 | International Business Machines Corporation | Block creation based on transaction cost and size |
US10771240B2 (en) * | 2018-06-13 | 2020-09-08 | Dynamic Blockchains Inc | Dynamic blockchain system and method for providing efficient and secure distributed data access, data storage and data transport |
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
US10747609B1 (en) * | 2018-07-10 | 2020-08-18 | Wells Fargo Bank, N.A. | Systems and methods for blockchain repair assurance tokens |
WO2020018898A1 (en) | 2018-07-20 | 2020-01-23 | Ezblock Ltd. | Blockchain sharding with parallel threads |
US10671308B2 (en) * | 2018-08-07 | 2020-06-02 | International Business Machines Corporation | Private and fault-tolerant storage of segmented data |
US10671315B2 (en) | 2018-08-17 | 2020-06-02 | Bank Of America Corporation | Blockchain architecture for selective data restore and migration |
US11424938B1 (en) * | 2018-09-06 | 2022-08-23 | Fall Guy Llc | Credentialed miners for a blockchain |
KR102130062B1 (en) * | 2018-09-18 | 2020-07-03 | 엔에이치엔 주식회사 | A method for establishing agreement between nodes in a Blockchain network and a Blockchain system |
CN110400221B (en) * | 2018-09-29 | 2021-09-10 | 腾讯科技(深圳)有限公司 | Data processing method, system, storage medium and computer equipment |
US10778603B2 (en) * | 2018-10-11 | 2020-09-15 | Citrix Systems, Inc. | Systems and methods for controlling access to broker resources |
WO2020081076A1 (en) * | 2018-10-17 | 2020-04-23 | Hewlett-Packard Development Company, L.P. | Apparatus and method for dynamic sharding of concurrent blockchains |
US11184423B2 (en) * | 2018-10-24 | 2021-11-23 | Microsoft Technology Licensing, Llc | Offloading upload processing of a file in a distributed system using a key that includes a hash created using attribute(s) of a requestor and/or the file |
US10929816B2 (en) * | 2018-10-29 | 2021-02-23 | Advanced Messaging Technologies, Inc. | Systems and methods for message transmission and retrieval using blockchain |
US20200143372A1 (en) * | 2018-11-02 | 2020-05-07 | Vite Labs Limited | Methods for decentralized digital asset transfer and smart contract state transition |
US10671515B1 (en) * | 2018-11-30 | 2020-06-02 | Bank Of America Corporation | Recording and playback of electronic event sequence in a distributed ledger system |
EP3566397B1 (en) * | 2018-12-13 | 2021-07-28 | Advanced New Technologies Co., Ltd. | Performing a change of primary node in a distributed system |
CN110178340B (en) * | 2018-12-13 | 2021-05-18 | 创新先进技术有限公司 | Recovery processing of network nodes in distributed systems |
MX2019008861A (en) * | 2018-12-13 | 2019-09-11 | Alibaba Group Holding Ltd | Achieving consensus among network nodes in a distributed system. |
US12120192B2 (en) | 2018-12-18 | 2024-10-15 | Rokfin, Inc. | Surge protection for scheduling minting of cryptographic tokens |
US11720913B2 (en) | 2018-12-18 | 2023-08-08 | Rokfin, Inc. | Cryptographic-token minting scheduler |
US11017329B2 (en) * | 2018-12-18 | 2021-05-25 | Rokfin, Inc. | Dampening token allocations based on non-organic subscriber behaviors |
KR102137784B1 (en) * | 2018-12-24 | 2020-07-24 | 주식회사 지비시코리아 | System Providing Mergers and Acquisitions Service based on Block Chain and Method for operating the same |
US11546348B2 (en) * | 2018-12-27 | 2023-01-03 | Silver Rocket Data Technology (Shanghai) Co., Ltd. | Data service system |
CN110046901B (en) * | 2018-12-28 | 2020-06-30 | 阿里巴巴集团控股有限公司 | Credibility verification method, system, device and equipment of alliance chain |
JP6882474B2 (en) * | 2018-12-29 | 2021-06-02 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | Systems and methods for detecting replay attacks |
US10681083B2 (en) | 2018-12-29 | 2020-06-09 | Alibaba Group Holding Limited | System and method for detecting replay attack |
JP6905059B2 (en) | 2018-12-29 | 2021-07-21 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | Systems and methods for detecting replay attacks |
US10735464B2 (en) | 2018-12-29 | 2020-08-04 | Alibaba Group Holding Limited | System and method for detecting replay attack |
US11301460B2 (en) * | 2019-01-24 | 2022-04-12 | Peoplebrowsr Inc. | Platform for creating and using actionable non-fungible tokens (KNFT) |
US11824864B2 (en) | 2019-01-31 | 2023-11-21 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT) |
US11811769B2 (en) | 2019-01-31 | 2023-11-07 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger |
US11899817B2 (en) | 2019-01-31 | 2024-02-13 | Salesforce, Inc. | Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information |
US11177962B2 (en) * | 2019-02-05 | 2021-11-16 | Visa International Service Association | Optimizations for verification of interactions system and method |
EP3706383A1 (en) * | 2019-03-07 | 2020-09-09 | UVUE Limited | System and method for implementing consensus in distributed ledger arrangement |
CN113169957B (en) * | 2019-04-12 | 2023-03-24 | 杭州锘崴信息科技有限公司 | Personal medical data security sharing and ownership decentralized ownership system |
WO2020215083A1 (en) * | 2019-04-19 | 2020-10-22 | Coinbase, Inc. | Systems and methods for blockchain administration |
US11038771B2 (en) * | 2019-04-26 | 2021-06-15 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a metadata driven rules engine on blockchain using distributed ledger technology (DLT) |
EP3639232B1 (en) | 2019-04-26 | 2021-07-07 | Advanced New Technologies Co., Ltd. | Anti-replay attack authentication protocol |
CN110099055A (en) * | 2019-04-29 | 2019-08-06 | 北京工业大学 | Internet of Things service architecture based on lightweight block chain node |
US11995647B2 (en) | 2019-04-30 | 2024-05-28 | Salesforce, Inc. | System and method of providing interoperable distributed and decentralized ledgers using consensus on consensus and delegated consensus |
CN110324406B (en) * | 2019-06-03 | 2022-07-26 | 网宿科技股份有限公司 | Method for acquiring business data and cloud service system |
CN110166567B (en) * | 2019-06-04 | 2021-10-08 | 长春理工大学 | Block chain-based Internet of things resource sharing method and system |
CN112132573B (en) * | 2019-06-24 | 2024-05-31 | 鄢华中 | Electronic signature and electronic contract system for removing CA (CA) Key based on blockchain |
SG11202002416RA (en) * | 2019-06-26 | 2020-04-29 | Alibaba Group Holding Ltd | Improved anti-replay device based on memory space interchange |
US10944624B2 (en) * | 2019-06-28 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Changing a master node in a blockchain system |
CN112003703B (en) * | 2019-06-28 | 2023-08-22 | 创新先进技术有限公司 | Method and device for transmitting authenticatable message across chains |
CN110334065B (en) * | 2019-07-11 | 2022-02-11 | 中国联合网络通信集团有限公司 | File processing method and system |
US11676135B2 (en) * | 2019-07-19 | 2023-06-13 | Ebay Inc. | Blockchain consensus protocol using predictive proof of metrics |
CN110618968A (en) * | 2019-08-13 | 2019-12-27 | 数字视觉云(北京)科技发展有限公司 | Media asset storage system based on ipfs |
US11301845B2 (en) * | 2019-08-19 | 2022-04-12 | Anchor Labs, Inc. | Cryptoasset custodial system with proof-of-stake blockchain support |
US11165787B2 (en) * | 2019-08-26 | 2021-11-02 | Bank Of America Corporation | System for authorization of electronic data access and processing functions within a distributed server network |
CN114946152A (en) * | 2019-08-30 | 2022-08-26 | 康奈尔大学 | Decentralized techniques for authenticating data in transport layer security and other contexts |
CN114600420A (en) | 2019-09-27 | 2022-06-07 | 斯凯维公司D/B/A阿索尼 | Pruning entries in a tamper-resistant data storage device |
US11954681B2 (en) * | 2019-09-30 | 2024-04-09 | Southeast University | Blockchain-enhanced open internet of things access architecture |
US11381589B2 (en) * | 2019-10-11 | 2022-07-05 | Secureworks Corp. | Systems and methods for distributed extended common vulnerabilities and exposures data management |
CN110851794A (en) * | 2019-11-07 | 2020-02-28 | 腾讯科技(深圳)有限公司 | Media file uplink method and device, storage medium and electronic device |
WO2020035090A2 (en) | 2019-11-08 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Lightweight decentralized application platform |
CA3098240A1 (en) | 2019-11-08 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | System and method for blockchain-based decentralized application development |
US11468044B2 (en) | 2019-11-25 | 2022-10-11 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
US11750392B1 (en) | 2019-12-10 | 2023-09-05 | Hiro Systems Pbc | Authenticated index data structure with back-pointers |
CN111131206B (en) * | 2019-12-13 | 2021-11-02 | 西安邮电大学 | Excitation method in block chain consensus mechanism |
US11522877B2 (en) | 2019-12-16 | 2022-12-06 | Secureworks Corp. | Systems and methods for identifying malicious actors or activities |
CN110990490B (en) * | 2019-12-19 | 2023-09-01 | 京东科技信息技术有限公司 | Method, device, equipment and medium for checking in blockchain network |
US20230091451A1 (en) * | 2019-12-26 | 2023-03-23 | Sivira Inc. | Application Collaboration Method, Computer Readable Medium, and Application Collaboration System |
CN111294234B (en) * | 2020-01-17 | 2022-07-29 | 麦科思(苏州)数据科技有限公司 | Parallel block chain fragmentation method based on intelligent contract optimization model |
CN111275406B (en) * | 2020-02-13 | 2023-07-28 | 布比(北京)网络技术有限公司 | Blockchain transaction contract auditing method, device, computer equipment and storage medium |
US20210303427A1 (en) * | 2020-03-26 | 2021-09-30 | Rohde & Schwarz Gmbh & Co. Kg | System for testing a blockchain enabled device-under-test |
CN111522790B (en) * | 2020-04-21 | 2023-11-14 | 昆明大棒客科技有限公司 | IPFS data transaction method, device and equipment based on BigBang Core block chain electronic commerce template |
CN111563278B (en) * | 2020-05-09 | 2023-11-28 | 电子科技大学 | Improved stock right authorization proving method |
CN111414434B (en) * | 2020-05-20 | 2021-09-03 | 华北电力大学 | Block chain-based data transaction management network, transaction device and storage medium |
US11588834B2 (en) | 2020-09-03 | 2023-02-21 | Secureworks Corp. | Systems and methods for identifying attack patterns or suspicious activity in client networks |
WO2022072626A1 (en) * | 2020-10-01 | 2022-04-07 | Rokfin, Inc. | Dampening token allocations based on non-organic subscriber behaviors |
CN112261145B (en) * | 2020-10-22 | 2022-07-12 | 中国联合网络通信集团有限公司 | New block chain generation method and device |
CN112182114A (en) * | 2020-10-28 | 2021-01-05 | 网易(杭州)网络有限公司 | Data processing method and device based on block chain and server equipment |
CN112529703B (en) * | 2020-11-23 | 2023-09-01 | 中国联合网络通信集团有限公司 | Method and device for selecting accounting node of blockchain |
CN112417052B (en) * | 2020-12-03 | 2021-08-20 | 腾讯科技(深圳)有限公司 | Data synchronization method, device, equipment and storage medium in block chain network |
US11683173B2 (en) * | 2020-12-08 | 2023-06-20 | International Business Machines Corporation | Consensus algorithm for distributed ledger technology |
CN112600682B (en) * | 2020-12-09 | 2022-01-18 | 四川大学 | Block chain consensus method and device based on delegation interest certification algorithm |
US11983284B2 (en) * | 2021-01-19 | 2024-05-14 | Arm Cloud Technology, Inc. | Consent management methods |
US11528294B2 (en) | 2021-02-18 | 2022-12-13 | SecureworksCorp. | Systems and methods for automated threat detection |
CN113315753A (en) * | 2021-04-25 | 2021-08-27 | 国网浙江省电力有限公司电力科学研究院 | Block data credibility recovery method based on coding technology |
CN113254171B (en) * | 2021-06-17 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | Method for quitting cross-chip transaction, block chain system and main chain node |
CN113489692B (en) * | 2021-06-22 | 2023-04-07 | 河北工业大学 | Block chain access control model method based on main side chain cooperation |
US20220414703A1 (en) * | 2021-06-23 | 2022-12-29 | Phinge Corporation | Systems and methods for providing a rewards-based incentive for not using a device |
US11140256B1 (en) | 2021-06-23 | 2021-10-05 | Phinge Corporation | System and method of preventing an unintentional action from being performed on a device |
US11282174B1 (en) | 2021-06-23 | 2022-03-22 | Phinge Corporation | System and method of providing privacy by blurring images of people in unauthorized photos and videos |
US11232514B1 (en) | 2021-06-23 | 2022-01-25 | Phinge Corporation | System and method of providing auctions and real-time bidding for users of platforms operating on a rewards-based, universal, integrated code base |
US20230015789A1 (en) * | 2021-07-08 | 2023-01-19 | Vmware, Inc. | Aggregation of user authorizations from different providers in a hybrid cloud environment |
US12034751B2 (en) | 2021-10-01 | 2024-07-09 | Secureworks Corp. | Systems and methods for detecting malicious hands-on-keyboard activity via machine learning |
US20230145257A1 (en) * | 2021-11-05 | 2023-05-11 | Caerus Institute Llc | Patent licensing distributed ledger infrastructure and method thereof |
CN114091009B (en) * | 2021-11-19 | 2024-07-23 | 四川启睿克科技有限公司 | Method for establishing safety link by using distributed identity mark |
CN113824742B (en) * | 2021-11-23 | 2022-02-01 | 湖南兆物信链科技集团有限公司 | Cross-chain communication authorization system based on block chain |
US11706225B1 (en) | 2022-05-02 | 2023-07-18 | Bank Of America Corporation | System for source independent but source value dependent transfer monitoring |
US12015623B2 (en) | 2022-06-24 | 2024-06-18 | Secureworks Corp. | Systems and methods for consensus driven threat intelligence |
US20240095730A1 (en) * | 2022-09-20 | 2024-03-21 | Veiovia Limited | Externally validated proof of work for appending a block record to a blockchain with a data broker server |
US20240232926A9 (en) * | 2022-10-20 | 2024-07-11 | Sin Ping Fok | Recognition-based reward automatic cash redemption methods and systems to process qualifying food purchases |
KR102708405B1 (en) * | 2023-02-28 | 2024-09-23 | 서울대학교산학협력단 | Blockchain system using state trie-node and its mining method |
KR102708412B1 (en) * | 2023-02-28 | 2024-09-23 | 서울대학교산학협력단 | System for improving performance of blockchain state database using state trie-node and mining method thereof |
CN117032565B (en) * | 2023-07-25 | 2024-06-07 | 申浪信息科技(江苏)有限公司 | File security management system based on block chain technology |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010037408A1 (en) * | 2000-01-25 | 2001-11-01 | Thrift Philip R. | Media framework systems |
US20050033880A1 (en) * | 2003-08-07 | 2005-02-10 | Ali Corporation | USB-based host-to-host networking method |
US20130073691A1 (en) * | 2011-06-17 | 2013-03-21 | Alibaba Group Holding Limited | File Processing Method, System and Server-clustered System for Cloud Storage |
US20150019191A1 (en) * | 2011-03-07 | 2015-01-15 | Rockwell Automation Technologies, Inc. | Industrial simulation using redirected i/o module configurations |
US20170185339A1 (en) * | 2015-12-28 | 2017-06-29 | Nanning Fugui Precision Industrial Co., Ltd. | System for implementing improved parity-based raid method |
US20180352268A1 (en) * | 2017-06-06 | 2018-12-06 | Linius (Aust) Pty Ltd. | Systems and mehtods of content transaction consensus |
US20190124146A1 (en) * | 2017-10-24 | 2019-04-25 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
US20190334698A1 (en) * | 2018-04-30 | 2019-10-31 | General Electric Company | Incentivized decentralized augmented reality |
US20200204804A1 (en) * | 2017-12-12 | 2020-06-25 | Google Llc | Transcoding Media Content Using An Aggregated Quality Score |
US20210216612A1 (en) * | 2020-01-15 | 2021-07-15 | International Business Machines Corporation | Blockchain digital rights management streaming library |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654908B1 (en) * | 2000-04-29 | 2003-11-25 | Hewlett-Packard Development Company, L.P. | Method for and system producing shared usage of intercommunication fabric error logging registers in a multiprocessor environment |
US7207060B2 (en) * | 2001-10-18 | 2007-04-17 | Nokia Corporation | Method, system and computer program product for secure ticketing in a communications device |
US10231077B2 (en) * | 2007-07-03 | 2019-03-12 | Eingot Llc | Records access and management |
US9875510B1 (en) * | 2015-02-03 | 2018-01-23 | Lance Kasper | Consensus system for tracking peer-to-peer digital records |
US20180240107A1 (en) * | 2015-03-27 | 2018-08-23 | Black Gold Coin, Inc. | Systems and methods for personal identification and verification |
US9397985B1 (en) * | 2015-04-14 | 2016-07-19 | Manifold Technology, Inc. | System and method for providing a cryptographic platform for exchanging information |
CN106911641A (en) * | 2015-12-23 | 2017-06-30 | 索尼公司 | For authorizing the client terminal device for accessing, server unit and access control system |
WO2018039312A1 (en) * | 2016-08-23 | 2018-03-01 | BBM Health LLC | Blockchain-based mechanisms for secure health information resource exchange |
US20180091316A1 (en) * | 2016-09-26 | 2018-03-29 | Shapeshift Ag | System and method of providing a multi-validator oracle |
CN109691008B (en) * | 2016-10-03 | 2022-06-14 | 维萨国际服务协会 | Network topology |
US10523421B2 (en) * | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US11095449B2 (en) * | 2016-12-16 | 2021-08-17 | Visa International Service Association | System and method for securely processing an electronic identity |
US10225078B2 (en) * | 2017-02-09 | 2019-03-05 | International Business Machines Corporation | Managing a database management system using a blockchain database |
US10637669B2 (en) * | 2017-02-24 | 2020-04-28 | Guardtime Sa | Data and data lineage control, tracking, and verification |
WO2018165472A1 (en) * | 2017-03-08 | 2018-09-13 | Ip Oversight Corporation | System and method for creating commodity asset-secured tokens from reserves |
WO2018175666A1 (en) * | 2017-03-21 | 2018-09-27 | Dappsters, LLC | Blockchain systems and methods |
US11146380B2 (en) * | 2017-08-03 | 2021-10-12 | Parity Technologies Ltd. | Methods and systems for a heterogeneous multi-chain framework |
CN110914852A (en) * | 2017-08-05 | 2020-03-24 | 普罗克鲁斯科技有限公司 | Method and system for securing blockchains using transaction attestation |
US20210217002A1 (en) * | 2017-10-24 | 2021-07-15 | 0Chain Corp. | Blockchain content purchasing protocol |
US11379832B2 (en) * | 2018-12-07 | 2022-07-05 | 0Chain, LLC | Systems and methods of blockchain for transaction rewards on token locking |
US11171791B2 (en) * | 2019-01-15 | 2021-11-09 | 0Chain, LLC | Systems and methods of aggregate signing of digital signatures on multiple messages simultaneously using key splitting |
US11586765B2 (en) * | 2017-10-24 | 2023-02-21 | Ochain, Llc | Blockchain based privacy compliance platform |
US11556874B2 (en) * | 2018-06-11 | 2023-01-17 | International Business Machines Corporation | Block creation based on transaction cost and size |
US20200258605A1 (en) * | 2019-02-07 | 2020-08-13 | Elaine Blechman | Electronic health records management using wireless communication |
US11593321B2 (en) * | 2019-03-06 | 2023-02-28 | 0Chain Corp. | Systems and methods of self-administered protocols on a blockchain platform |
EP3619670A4 (en) * | 2019-04-08 | 2020-05-06 | Alibaba Group Holding Limited | Product promotion using smart contracts in blockchain networks |
WO2021016219A1 (en) * | 2019-07-19 | 2021-01-28 | Dan Kikinis | Non-cryptographic immutable distributed ledger technology |
US11854005B2 (en) * | 2019-09-09 | 2023-12-26 | TBOL, Inc. | Embedded data transaction exchange platform |
US12020061B2 (en) * | 2021-04-07 | 2024-06-25 | Reza Fatahi | System and method for meta-transactional interoperability of decentralized computing networks |
-
2018
- 2018-05-31 US US15/994,946 patent/US11165862B2/en active Active
- 2018-07-03 US US16/027,248 patent/US10986177B2/en active Active
-
2021
- 2021-06-16 US US17/349,556 patent/US11757988B2/en active Active
- 2021-06-16 US US17/349,779 patent/US20210320973A1/en active Pending
- 2021-06-16 US US17/349,833 patent/US11930100B2/en active Active
- 2021-06-16 US US17/349,815 patent/US20210314396A1/en not_active Abandoned
- 2021-06-16 US US17/349,748 patent/US11785079B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010037408A1 (en) * | 2000-01-25 | 2001-11-01 | Thrift Philip R. | Media framework systems |
US20050033880A1 (en) * | 2003-08-07 | 2005-02-10 | Ali Corporation | USB-based host-to-host networking method |
US20150019191A1 (en) * | 2011-03-07 | 2015-01-15 | Rockwell Automation Technologies, Inc. | Industrial simulation using redirected i/o module configurations |
US20130073691A1 (en) * | 2011-06-17 | 2013-03-21 | Alibaba Group Holding Limited | File Processing Method, System and Server-clustered System for Cloud Storage |
US20170185339A1 (en) * | 2015-12-28 | 2017-06-29 | Nanning Fugui Precision Industrial Co., Ltd. | System for implementing improved parity-based raid method |
US20180352268A1 (en) * | 2017-06-06 | 2018-12-06 | Linius (Aust) Pty Ltd. | Systems and mehtods of content transaction consensus |
US20190124146A1 (en) * | 2017-10-24 | 2019-04-25 | 0Chain, LLC | Systems and methods of blockchain platform for distributed applications |
US20200204804A1 (en) * | 2017-12-12 | 2020-06-25 | Google Llc | Transcoding Media Content Using An Aggregated Quality Score |
US20190334698A1 (en) * | 2018-04-30 | 2019-10-31 | General Electric Company | Incentivized decentralized augmented reality |
US20210216612A1 (en) * | 2020-01-15 | 2021-07-15 | International Business Machines Corporation | Blockchain digital rights management streaming library |
Non-Patent Citations (1)
Title |
---|
web.archive.org, "User's guide: MP4 Signature Format: Documentation & Recovery Example", 10/03/2017, 1 Page. (Year: 2017) * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11303733B2 (en) * | 2018-02-15 | 2022-04-12 | Axell Corporation | Server apparatus, client apparatus, and data processing system |
US20210375409A1 (en) * | 2018-10-19 | 2021-12-02 | Longenesis Ltd. | Systems and methods for blockchain-based health data validation and access management |
US20220253821A1 (en) * | 2019-05-24 | 2022-08-11 | nChain Holdings Limited | Streaming portions of data over a side channel |
US12093941B2 (en) | 2019-05-24 | 2024-09-17 | Nchain Licensing Ag | Multi-input transactions |
US12095859B2 (en) | 2019-05-24 | 2024-09-17 | Nchain Licensing Ag | Malleability of transactions for inclusion in a blockchain |
US12047443B2 (en) | 2019-05-24 | 2024-07-23 | Nchain Licensing Ag | Malleability of transactions for inclusion in a blockchain |
US20220197983A1 (en) * | 2020-12-17 | 2022-06-23 | Asynchronous Art, Inc, | Systems and methods for creating and managing programmable art |
TWI818344B (en) * | 2021-11-01 | 2023-10-11 | 神達數位股份有限公司 | Method and system for video data managing |
US11849240B2 (en) | 2021-12-29 | 2023-12-19 | Insight Direct Usa, Inc. | Dynamically configured processing of a region of interest dependent upon published video data selected by a runtime configuration file |
US11961273B2 (en) | 2021-12-29 | 2024-04-16 | Insight Direct Usa, Inc. | Dynamically configured extraction, preprocessing, and publishing of a region of interest that is a subset of streaming video data |
US11849241B2 (en) | 2021-12-29 | 2023-12-19 | Insight Direct Usa, Inc. | Dynamically configured processing of a region of interest dependent upon published video data selected by a runtime configuration file |
US11849242B2 (en) | 2021-12-29 | 2023-12-19 | Insight Direct Usa, Inc. | Dynamically configured processing of a region of interest dependent upon published video data selected by a runtime configuration file |
US12106536B2 (en) | 2021-12-29 | 2024-10-01 | Insight Direct Usa, Inc. | Dynamically configured extraction, preprocessing, and publishing of a region of interest that is a subset of streaming video data |
US12106535B2 (en) | 2021-12-29 | 2024-10-01 | Insight Direct Usa, Inc. | Dynamically configured extraction, preprocessing, and publishing of a region of interest that is a subset of streaming video data |
US11778167B1 (en) | 2022-07-26 | 2023-10-03 | Insight Direct Usa, Inc. | Method and system for preprocessing optimization of streaming video data |
US12108024B2 (en) | 2022-07-26 | 2024-10-01 | Insight Direct Usa, Inc. | Method and system for preprocessing optimization of streaming video data |
Also Published As
Publication number | Publication date |
---|---|
US11930100B2 (en) | 2024-03-12 |
US11785079B2 (en) | 2023-10-10 |
US11165862B2 (en) | 2021-11-02 |
US20190124146A1 (en) | 2019-04-25 |
US11757988B2 (en) | 2023-09-12 |
US20210314395A1 (en) | 2021-10-07 |
US20210320972A1 (en) | 2021-10-14 |
US10986177B2 (en) | 2021-04-20 |
US20190123892A1 (en) | 2019-04-25 |
US20210320973A1 (en) | 2021-10-14 |
US20210314397A1 (en) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210314396A1 (en) | Streaming content via blockchain technology | |
US20210217002A1 (en) | Blockchain content purchasing protocol | |
US11637709B2 (en) | Split-key wallet access between blockchains | |
US11979490B2 (en) | Non-fungible token blockchain processing | |
US20220029815A1 (en) | Streaming content via blockchain technology | |
US11182787B2 (en) | System and method for scaling blockchain networks with secure off-chain payment hubs | |
Lee et al. | Inclusive fintech: blockchain, cryptocurrency and ICO | |
US11676117B2 (en) | Blockchain compliance verification network | |
KR102347022B1 (en) | The encrypted data sharing system based on block chain and IPFS(InterPlanetary File System) | |
US11599858B2 (en) | Blockchain settlement network | |
CN113728351A (en) | Trusted certification transactions in blockchain systems | |
US20230087360A1 (en) | Stake pool of a system digital asset-backed data interaction system | |
CN110458560B (en) | Method and apparatus for transaction verification | |
US20220311611A1 (en) | Reputation profile propagation on blockchain networks | |
US20220172198A1 (en) | Real-time blockchain settlement network | |
US20230370275A1 (en) | Verification system for proving authenticity and ownership of digital assets | |
Maharjan | Performance analysis of blockchain platforms | |
CN113994628A (en) | Streaming of partial data over side channels | |
US20230419274A1 (en) | Fully Collateralized Automated Market Maker | |
Kulkarni | Learn Bitcoin and Blockchain: Understanding blockchain and Bitcoin architecture to build decentralized applications | |
Mei | Blockchain, Bitcoin, and the Digital Economy | |
US20240249275A1 (en) | Group signatures for a smart wallet on a blockchain platform | |
US20230419285A1 (en) | NFT Enforcement Control System | |
US12093951B1 (en) | Systems and methods for verification and enablement of financial instruments | |
US20240370865A1 (en) | Method and System to Implement an NFT Architecture Framework for Bitcoin Inscriptions, Ordinals and Smart Contracts Interworking with a Cross-Chain Communications Network of Bridges, Substrates, and Parachains, Off-Chain IPFS Decentralized Smart Contract Storage, Zero Trust Security Framework, Bitcoin NFT Tokenization, Bitcoin NFT Copyright Ownership and Validation using DRM, Open AI Applications for Smart Contracts, and WebRTC-QUIC Secure Video and Messaging Communications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: 0CHAIN CORP., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BASU, SASWATA;AUSTIN, THOMAS HOWARD, DR;REEL/FRAME:056568/0963 Effective date: 20210608 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |