Anonymity mechanisms in permissioned blockchain networks

A member of a group in a blockchain network may generate a public key and a private key, request a blockchain network group certificate, associated with the private key, from a blockchain network certificate authority, and distribute a private key to members of the group.

BACKGROUND

The present disclosure relates processing of operations on a blockchain network, and more specifically to anonymity in blockchain networks.

Blockchains offer immutability of data by replicating data across all nodes of a network. In order to be able to validate the blockchain, nodes must have access to the complete history of transactions, in which any data on the chain is visible for all participants.

Permissioned blockchains can be seen as an additional blockchain security system, as they maintain an access control layer to allow certain actions to be performed only by certain identifiable participants. For this reason, these blockchains differ from public and private blockchains. Permissioned blockchains provide an additional level of security over typical blockchain systems like Bitcoin, as they require an access control layer.

SUMMARY

Embodiments of the present disclosure include a method, system, and computer program product for anonymity mechanisms in blockchain networks.

Some embodiments of the present disclosure can be illustrated by a method comprising generating, by a member of a group of a blockchain network, a public key and a private key, requesting, by the member, a group certificate, associated with the private key, from a certificate authority, and distributing, by the member, the private key to members of the group.

Some embodiments of the present disclosure can be illustrated by a method comprising receiving, by a member of a group of a blockchain network, a group certificate generated by a certificate authority and a private key associated with the group certificate, and signing, by the member, an operation with the private key associated with the group certificate.

Some embodiments of the present disclosure can also be illustrated by a system comprising a memory, and a processor in communication with the memory, the processor being configured to perform operations comprising generating a public key and a private key, requesting a group certificate, associated with the public and private key, for a group of a blockchain network from a certificate authority for the blockchain network, receiving the group certificate from the certificate authority, sending the public key with the request, and distributing the private key associated with the group certificate to members of the group.

DETAILED DESCRIPTION

Aspects of the present disclosure relate generally to the field of submitting operations in a blockchain network, and more specifically to anonymity mechanisms in permissioned blockchain networks.

The instant features, structures, or characteristics as described throughout this specification may be combined or removed in any suitable manner in one or more embodiments. For example, the usage of the phrases “example embodiments,” “some embodiments,” or other similar language, throughout this specification refers to the fact that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment. Accordingly, appearances of the phrases “example embodiments,” “in some embodiments,” “in other embodiments,” or other similar language, throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined or removed in any suitable manner in one or more embodiments. Further, in the FIGS., any connection between elements can permit one-way and/or two-way communication even if the depicted connection is a one-way or two-way arrow. Also, any device depicted in the drawings can be a different device. For example, if a mobile device is shown sending information, a wired device may also be used to send the information.

In addition, while the term “message” may have been used in the description of embodiments, the application may be applied to many types of networks and data. Furthermore, while certain types of connections, messages, and signaling may be depicted in exemplary embodiments, the application is not limited to a certain type of connection, message, and signaling.

Detailed herein is a method, system, and computer program product that utilize blockchain (e.g., Hyperledger Fabric) channels, and smart contracts that implement logic based on a non-interactive zero knowledge proof.

In some embodiments, the method, system, and/or computer program product utilize a decentralized database (such as a blockchain) that is a distributed storage system, which includes multiple nodes that communicate with each other. The decentralized database includes an append-only immutable data structure resembling a distributed ledger capable of maintaining records between mutually untrusted parties. The untrusted parties are referred to herein as peers or peer nodes. Each peer maintains a copy of the database records and no single peer can modify the database records without a consensus being reached among the distributed peers. For example, the peers may execute a consensus protocol to validate blockchain storage transactions, group the storage transactions into blocks, and build a hash chain over the blocks. This process forms the ledger by ordering the storage transactions, as is necessary, for consistency.

In various embodiments, a permissioned and/or a permission-less blockchain can be used. In a public or permission-less blockchain, anyone can participate without a specific identity (e.g., retaining anonymity). Public blockchains can involve native cryptocurrency and use consensus based on various protocols such as Proof of Work. On the other hand, a permissioned blockchain database provides secure interactions among a group of entities which share a common goal but which do not fully trust one another, such as businesses that exchange funds, goods, information, and the like.

Further, in some embodiments, the method, system, and/or computer program product can utilize a blockchain that operates arbitrary, programmable logic, tailored to a decentralized storage scheme and referred to as “smart contracts” or “chaincodes.” In some cases, specialized chaincodes may exist for management functions and parameters which are referred to as system chaincode. The method, system, and/or computer program product can further utilize smart contracts that are trusted distributed applications which leverage tamper-proof properties of the blockchain database and an underlying agreement between nodes, which is referred to as an endorsement or endorsement policy. Blockchain transactions associated with this application can be “endorsed” before being committed to the blockchain while transactions, which are not endorsed, are disregarded.

An endorsement policy allows chaincode to specify endorsers for a transaction in the form of a set of peer nodes that are necessary for endorsement. When a client sends the transaction to the peers specified in the endorsement policy, the transaction is executed to validate the transaction. After validation, the transactions enter an ordering phase in which a consensus protocol is used to produce an ordered sequence of endorsed transactions grouped into blocks.

In some embodiments, the method, system, and/or computer program product can utilize nodes that are the communication entities of the blockchain system. A “node” may perform a logical function in the sense that multiple nodes of different types can run on the same physical server. Nodes are grouped in trust domains and are associated with logical entities that control them in various ways. Nodes may include different types, such as a client or submitting-client node which submits a transaction-invocation to an endorser (e.g., peer), and broadcasts transaction-proposals to an ordering service (e.g., ordering node).

Another type of node is a peer node which can receive client submitted transactions, commit the transactions and maintain a state and a copy of the ledger of blockchain transactions. Peers can also have the role of an endorser, although it is not a requirement. An ordering-service-node or orderer is a node running the communication service for all nodes, and which implements a delivery guarantee, such as a broadcast to each of the peer nodes in the system when committing/confirming transactions and modifying a world state of the blockchain, which is another name for the initial blockchain transaction which normally includes control and setup information.

In some embodiments, the method, system, and/or computer program product described herein can utilize a chain that is a transaction log that is structured as hash-linked blocks, and each block contains a sequence of N transactions where N is equal to or greater than one. The block header includes a hash of the block's transactions, as well as a hash of the prior block's header. In this way, all transactions on the ledger may be sequenced and cryptographically linked together. Accordingly, it is not possible to tamper with the ledger data without breaking the hash links. A hash of a most recently added blockchain block represents every transaction on the chain that has come before it, making it possible to ensure that all peer nodes are in a consistent and trusted state. The chain may be stored on a peer node file system (e.g., local, attached storage, cloud, etc.), efficiently supporting the append-only nature of the blockchain workload.

The current state of the immutable ledger represents the latest values for all keys that are included in the chain transaction log. Since the current state represents the latest key values known to a channel, it is sometimes referred to as a world state. Chaincode invocations execute transactions against the current state data of the ledger. To make these chaincode interactions efficient, the latest values of the keys may be stored in a state database. The state database may be simply an indexed view into the chain's transaction log, it can therefore be regenerated from the chain at any time. The state database may automatically be recovered (or generated if needed) upon peer node startup, and before transactions are accepted.

Some benefits of the instant solutions described and depicted herein include a method, system, and computer program product for anonymity mechanisms in blockchain networks. The exemplary embodiments solve the issues of reliability, time, and trust by extending features of a database such as immutability, digital signatures, and being a single source of truth. The exemplary embodiments provide a solution submitting operations anonymously in a permissioned blockchain network. The blockchain networks may be homogenous based on the asset type and rules that govern the assets based on the smart contracts.

Blockchain is different from a traditional database in that blockchain is not a central storage, but rather a decentralized, immutable, and secure storage, where nodes may share in changes to records in the storage. Some properties that are inherent in blockchain and which help implement the blockchain include, but are not limited to, an immutable ledger, smart contracts, security, privacy, decentralization, consensus, endorsement, accessibility, and the like, which are further described herein. According to various aspects, the system described herein is implemented due to immutable accountability, security, privacy, permitted decentralization, availability of smart contracts, endorsements and accessibility that are inherent and unique to blockchain.

In particular, the blockchain ledger data is immutable and that provides for an efficient method for processing operations in blockchain networks. Also, use of the encryption in the blockchain provides security and builds trust. The smart contract manages the state of the asset to complete the life-cycle, thus specialized nodes may ensure that blockchain operations with anonymity requirements are able to securely submit operations to the blockchain network. The example blockchains are permission decentralized. Thus, each end user may have its own ledger copy to access. Multiple organizations (and peers) may be on-boarded on the blockchain network. The key organizations may serve as endorsing peers to validate the smart contract execution results, read-set and write-set. In other words, the blockchain inherent features provide for efficient implementation of processing a private transaction in a blockchain network.

One of the benefits of the example embodiments is that it improves the functionality of a computing system by implementing a method for processing a private transaction in a blockchain network. Through the blockchain system described herein, a computing system (or a processor in the computing system) can perform functionality for private transaction processing utilizing blockchain networks by providing access to capabilities such as distributed ledger, peers, encryption technologies, MSP, event handling, etc. Also, the blockchain enables to create a business network and make any users or organizations to on-board for participation. As such, the blockchain is not just a database. The blockchain comes with capabilities to create a network of users and on-board/off-board organizations to collaborate and execute service processes in the form of smart contracts.

The example embodiments provide numerous benefits over a traditional database. For example, through the blockchain the embodiments provide for immutable accountability, security, privacy, permitted decentralization, availability of smart contracts, endorsements and accessibility that are inherent and unique to the blockchain.

Meanwhile, a traditional database may not be useful to implement the example embodiments because a traditional database does not bring all parties on the network, a traditional database does not create trusted collaboration, and a traditional database does not provide for an efficient method of securely and efficiently submitting operations. The traditional database does not provide for a tamper proof storage and does not provide for guaranteed valid transactions. Accordingly, the example embodiments provide for a specific solution to a problem in the arts/field of anonymously submitting operations in a blockchain network.

FIG.1illustrates a logic network diagram100for smart data annotation in blockchain networks, according to example embodiments.

Referring toFIG.1, the example network100includes a node102connected to other blockchain (BC) nodes105representing document-owner organizations. The node102may be connected to a blockchain106that has a ledger108for storing data to be shared110among the nodes105. While this example describes in detail only one node102, multiple such nodes may be connected to the blockchain106. It should be understood that the node102may include additional components and that some of the components described herein may be removed and/or modified without departing from a scope of the node102disclosed herein. The node102may be a computing device or a server computer, or the like, and may include a processor104, which may be a semiconductor-based microprocessor, a central processing unit (CPU), an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and/or another hardware device. Although a single processor104is depicted, it should be understood that the node102may include multiple processors, multiple cores, or the like, without departing from the scope of the node102system. A distributed file storage150may be accessible to processor node102and other BC nodes105. The distributed file storage150may be used to store documents identified in ledger108.

The node102may also include a non-transitory computer readable medium112that may have stored thereon machine-readable instructions executable by the processor104. Examples of the machine-readable instructions are shown as114-118and are further discussed below. Examples of the non-transitory computer readable medium112may include an electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. For example, the non-transitory computer readable medium112may be a Random Access memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a hard disk, an optical disc, or other type of storage device.

The processor104may execute machine-readable instructions114to request a group certificate. As discussed above, the blockchain ledger108may store data110to be shared among the nodes105. The blockchain106network may be configured to use one or more smart contracts that manage transactions for multiple participating nodes. Documents linked to the annotation information may be stored in distributed file storage150. The processor104may execute machine-readable instructions116to receive a group certificate. The processor104may execute machine-readable instructions118to generate a private/public key set.

FIG.2Aillustrates a blockchain architecture configuration200, according to example embodiments. Referring toFIG.2A, the blockchain architecture200may include certain blockchain elements, for example, a group of blockchain nodes202. The blockchain nodes202may include one or more peer nodes204-210(these four nodes are depicted by example only). These nodes participate in a number of activities, such as blockchain transaction addition and validation processes (consensus). One or more of the blockchain nodes204-210may endorse transactions based on an endorsement policy and may provide an ordering service for all blockchain nodes202in the architecture200. A blockchain node204-210may initiate a blockchain authentication and seek to write to a blockchain immutable ledger stored in blockchain layer216, a copy of which may also be stored on an underpinning physical infrastructure214. The blockchain configuration200may include one or more applications224which are linked to application programming interfaces (APIs)222to access and execute stored program/application code220(e.g., chaincode, smart contracts, etc.) which can be created according to a customized configuration sought by participants and can maintain the participant's own state, control the participant's own assets, and receive external information. This can be deployed as a transaction and installed, via appending to the distributed ledger, on all blockchain nodes204-210.

A blockchain base or platform212may include various layers of blockchain data, services (e.g., cryptographic trust services, virtual execution environment, etc.), and underpinning physical computer infrastructure214that may be used to receive and store new transactions and provide access to auditors which are seeking to access data entries. The blockchain layer216may expose an interface that provides access to the virtual execution environment necessary to process the program code220and engage the physical infrastructure214. Cryptographic trust services218may be used to verify transactions such as asset exchange transactions and keep information private.

The blockchain architecture configuration200ofFIG.2Amay process and execute program/application code220via one or more interfaces exposed, and services provided, by blockchain platform212. The code220may control blockchain assets. For example, the code220can store and transfer data, and may be executed by nodes204-210in the form of a smart contract and associated chaincode with conditions or other code elements subject to its execution. As a non-limiting example, smart contracts may be created to execute reminders, updates, and/or other notifications subject to the changes, updates, etc. The smart contracts can themselves be used to identify rules associated with authorization and access requirements and usage of the ledger. For example, document attribute(s) information226may be processed by one or more processing entities (e.g., virtual machines) included in the blockchain layer216. Results228of this processing may include a plurality of linked shared documents. The physical infrastructure214may be utilized to retrieve any of the data or information described herein.

A chaincode may include the code interpretation of a smart contract, with additional features. As described herein, the chaincode may be program code deployed on a computing network, where it is executed and validated by chain validators together during a consensus process. The chaincode receives a hash and retrieves from the blockchain a hash associated with the data template created by use of a previously stored feature extractor. If the hashes of the hash identifier and the hash created from the stored identifier template data match, then the chaincode sends an authorization key to the requested service. The chaincode may write to the blockchain data associated with the cryptographic details.

FIG.2Billustrates an example of a blockchain transactional flow250between nodes of a blockchain (e.g., blockchain106illustrated inFIG.1), in accordance with an example embodiment. Referring toFIG.2B, a general description of the transactional flow250will be given followed by a more specific example. The transactional flow250may include a transaction proposal291sent by an application client node260to a first endorsing peer node281. The first endorsing peer281may verify a client signature and execute a chaincode function to initiate the transaction. The output may include the chaincode results, a set of key/value versions that were read in the chaincode (read set), and the set of keys/values that were written in chaincode (write set). A proposal response292is sent back to the client260along with an endorsement signature, if approved. The client260assembles the endorsements into a transaction payload293and broadcasts it to an ordering service (fourth peer) node284. The ordering service node284then delivers ordered transactions as blocks to all additional peers281-283on the same channel. Before committal to the blockchain, each additional peer281-283may validate the transaction. For example, the peers281-283may check the endorsement policy to ensure that the correct allotment of the peers specified in transaction proposal291have signed the results and authenticated the signatures against the transaction payload293. In some embodiments, one or more of the peers may be manager nodes.

A more specific description of transactional flow250can be understood with a more specific example. To begin, the client node260initiates the transaction291by constructing and sending a request to the first peer node281, which is an endorser. The client260may include an application leveraging a supported software development kit (SDK), which utilizes an available API to generate a transaction proposal. The proposal is a request to invoke a chaincode function so that data can be read and/or written to the ledger (i.e., write new key value pairs for the assets). The SDK may serve as a shim to package the transaction proposal into a properly architected format (e.g., protocol buffer over a remote procedure call (RPC)) and take the client's cryptographic credentials to produce a unique signature for the transaction proposal.

In response, the endorsing peer node281may verify (a) that the transaction proposal is well formed, (b) the transaction has not been submitted already in the past (replay-attack protection), (c) the signature is valid, and (d) that the submitter (client260, in the example) is properly authorized to perform the proposed operation on that channel. The endorsing peer node281may take the transaction proposal inputs as arguments to the invoked chaincode function. The chaincode is then executed against a current state database to produce transaction results including a response value, read set, and write set. However, no updates are made to the ledger at this point. The set of transaction results, along with the endorsing peer node's281signature is passed back as a proposal response292to the SDK of the client260which parses the payload for the application to consume.

In response, the application of the client260inspects/verifies the endorsing peer's281signature and compares the proposal response292to determine if the proposal response292is valid. If the chaincode only queried the ledger, the application would inspect the query response and would typically not submit the transaction to the ordering service node284. If the client application intends to submit the transaction to the ordering service node284to update the ledger, the application determines if the specified endorsement policy has been fulfilled before submitting (i.e., did all peer nodes necessary for the transaction endorse the transaction). Here, the client260may include only one of multiple parties to the transaction. In this case, each client may have their own endorsing node, and each endorsing node may need to endorse the transaction. The architecture is such that even if an application selects not to inspect responses or otherwise forwards an unendorsed transaction, the endorsement policy may still be enforced by peers and upheld at the commit validation phase.

After successful inspection, the client260assembles endorsements into a transaction293and broadcasts the transaction proposal and response within a transaction message to the ordering node284. The transaction293may contain the read/write sets, the endorsing peer's signatures and a channel ID. The ordering node284does not need to inspect the entire content of a transaction in order to perform its operation. Instead, the ordering node284may simply receive transactions from all channels in the network, order them chronologically by channel, and create blocks of transactions per channel.

The blocks of the transaction293are delivered from the ordering node284to all other peer nodes281-283on the channel. Transactions294within the block are validated to ensure any endorsement policy is fulfilled and to ensure that there have been no changes to ledger state for read set variables since the read set was generated by the transaction execution. Transactions294in the block are tagged as being valid or invalid. Furthermore, in operation295each peer node281-283appends the block to the channel's chain, and for each valid transaction the write sets are committed to current state database. An event is emitted to notify the client application that the transaction (invocation)293has been immutably appended to the chain, as well as to notify whether the transaction293was validated or invalidated.

FIG.3Aillustrates an example of a permissioned blockchain network300, in accordance with an example embodiment, which features a distributed, decentralized peer-to-peer architecture. In this example, a blockchain user302may initiate a transaction to a permissioned blockchain304. In this example, the transaction can be a deploy, invoke, or query, and may be issued through a client-side application leveraging an SDK, directly through an API, etc. The network300may provide access to a regulator306, such as an auditor. A blockchain network operator308manages member permissions, such as enrolling the regulator306as an “auditor” and the blockchain user302as a “client.” An auditor may be restricted only to querying the ledger whereas a client may be authorized to deploy, invoke, and query certain types of chaincode.

A blockchain developer310can write chaincode and client-side applications. The blockchain developer310can deploy chaincode directly to the network300through an interface. To include credentials from a traditional data source312in chaincode, the developer310may use an out-of-band connection to access the data. In this example, the blockchain user302connects to the permissioned blockchain304through one of peer nodes314(referring to any one of nodes314a-e). Before proceeding with any transactions, the peer node314(e.g., node314a) retrieves the user's302enrollment and transaction certificates from a certificate authority316, which manages user roles and permissions. In some cases, blockchain users must possess these digital certificates in order to transact on the permissioned blockchain304. Meanwhile, a user attempting to utilize chaincode may be required to verify their credentials on the traditional data source312. To confirm the user's302authorization, chaincode can use an out-of-band connection to this data through a traditional processing platform318.

FIG.3Billustrates another example of a permissioned blockchain network320, in accordance with an example embodiment, which features a distributed, decentralized peer-to-peer architecture. In this example, a blockchain user322may submit a transaction to a permissioned blockchain324. In this example, the transaction can be a deploy, invoke, or query, and may be issued through a client-side application leveraging an SDK, directly through an API, etc. Networks may provide access to a regulator326, such as an auditor. A blockchain network operator328manages member permissions, such as enrolling the regulator326as an “auditor” and the blockchain user322as a “client.” An auditor may be restricted to only querying the ledger whereas a client may be authorized to deploy, invoke, and query certain types of chaincode.

A blockchain developer330writes chaincode and client-side applications. The blockchain developer330can deploy chaincode directly to the network through an interface. To include credentials from a traditional data source332in chaincode, the developer330may use an out-of-band connection to access the data. In this example, the blockchain user322connects to the network through a peer node334(referring to any one of nodes334a-e). Before proceeding with any transactions, the peer node334(e.g., node334a) retrieves the user's enrollment and transaction certificates from a certificate authority336. In some cases, blockchain users must possess these digital certificates in order to transact on the permissioned blockchain324. Meanwhile, a user attempting to utilize chaincode may be required to verify their credentials on the traditional data source332. To confirm the user's authorization, chaincode can use an out-of-band connection to this data through a traditional processing platform338.

In some embodiments of the present disclosure, a blockchain herein may be a permissionless blockchain. In contrast with permissioned blockchains (e.g., blockchains304and324) which require permission to join, anyone can join a permissionless blockchain. For example, to join a permissionless blockchain a user may create a personal address and begin interacting with the network by submitting transactions, and hence adding entries to the ledger. Additionally, all parties have the choice of running a node on the system and employing the mining protocols to help verify transactions.

FIG.3Cillustrates a network350with a transaction being processed by a permissionless blockchain352including a plurality of nodes354, in accordance with an example embodiment. A sender356desires to send payment or some other form of value (e.g., a deed, medical records, a contract, a good, a service, or any other asset that can be encapsulated in a digital record) to a recipient358via the permissionless blockchain352. In some embodiments, each of the sender device356and the recipient device358may have digital wallets (associated with the blockchain352) that provide user interface controls and a display of transaction parameters. In response, the transaction is broadcast throughout the blockchain352to the nodes354(referring to any one of nodes354a-e).

Depending on the blockchain's352network parameters the nodes use verification module360to verify the transaction based on rules (which may be pre-defined or dynamically allocated) established by the permissionless blockchain352creators. For example, this may include verifying identities of the parties involved, etc. The transaction may be verified immediately, or it may be placed in a queue with other transactions and the nodes354determine if the transactions are valid based on a set of network rules.

In structure362, valid transactions are formed into a block and sealed with a lock (hash). This process may be performed by mining nodes among the nodes354. Mining nodes may utilize additional software specifically for mining and creating blocks for the permissionless blockchain352. Each block may be identified by a hash (e.g., 256 bit number, etc.) created using an algorithm agreed upon by the network350. Each block may include a header, a pointer or reference to a hash of a previous block's header in the chain, and a group of valid transactions. The reference to the previous block's hash is associated with the creation of the secure independent chain of blocks.

Before blocks can be added to the blockchain352, the blocks must be validated. Validation for the permissionless blockchain352may include a proof-of-work (PoW) which is a solution to a puzzle derived from the block's header. Although not shown in the example ofFIG.3C, another process for validating a block is proof-of-stake. Unlike the proof-of-work, where the algorithm rewards miners who solve mathematical problems, with the proof of stake, a creator of a new block is chosen in a deterministic way, depending on its wealth, also defined as “stake.” Then, a similar proof is performed by the selected/chosen node.

With mining module364, nodes try to solve the block by making incremental changes to one variable until the solution satisfies a network-wide target. This creates the PoW thereby ensuring correct answers. In other words, a potential solution must prove that computing resources were drained in solving the problem. In some types of permissionless blockchains, miners may be rewarded with value (e.g., coins, etc.) for correctly mining a block.

Here, the PoW process, alongside the chaining of blocks, makes modifications to the blockchain352extremely difficult, as an attacker must modify all subsequent blocks in order for the modifications to one block to be accepted. Furthermore, as new blocks are mined, the difficulty of modifying a block increases, and the number of subsequent blocks increases. With a distribution module366, the successfully validated block is distributed through the permissionless blockchain352and all nodes354add the block to a majority chain which is the permissionless blockchain's352auditable ledger. Furthermore, the value in the transaction submitted by the sender356is deposited or otherwise transferred to the digital wallet of the recipient device358.

FIG.4Aillustrates a blockchain system performing process400of a new block being added to a distributed ledger420, according to example embodiments, andFIG.4Billustrates contents of a new data block structure430for blockchain, according to example embodiments. The new data block430may contain document linking data.

Referring toFIG.4A, clients (not shown) may submit transactions to blockchain nodes411,412, and/or413in process400. Clients may be instructions received from any source to enact activity on the blockchain420. As an example, clients may be applications that act on behalf of a requester, such as a device, person or entity to propose transactions for the blockchain422. The plurality of blockchain peers (e.g., blockchain nodes411,412, and413) may maintain a state of the blockchain network and a copy of the distributed ledger420. Different types of blockchain nodes/peers may be present in the blockchain network including endorsing peers which simulate and endorse transactions proposed by clients and committing peers which verify endorsements, validate transactions, and commit transactions to the distributed ledger420. In this example, each of blockchain nodes411,412, and413may perform a role of endorser node, committer node, or both.

The distributed ledger420includes a blockchain which stores immutable, sequenced records in blocks (e.g. data blocks423-430), and a state database424(current world state) maintaining a current state of the blockchain422. One distributed ledger420may exist per channel and each peer maintains its own copy of the distributed ledger420for each channel of which they are a member. The blockchain422is a transaction log, structured as hash-linked blocks where each block contains a sequence of N transactions. Blocks may include various components such as shown inFIG.4B. The linking (shown by arrows inFIG.4A) of the blocks (e.g. data blocks423-430) may be generated by adding a hash of a prior block's header within a block header of a current block. In this way, all transactions on the blockchain422are sequenced and cryptographically linked together preventing tampering with blockchain data without breaking the hash links. Furthermore, because of the links, the latest block (e.g. data block430) in the blockchain422represents every transaction that has come before it. The blockchain422may be stored on a peer file system (local or attached storage), which supports an append-only blockchain workload.

The current state of the blockchain422and the distributed ledger420may be stored in the state database424. Here, the current state data represents the latest values for all keys ever included in the chain transaction log of the blockchain422. Chaincode invocations execute transactions against the current state in the state database424. To make these chaincode interactions extremely efficient, the latest values of all keys are stored in the state database424. The state database424may include an indexed view into the transaction log of the blockchain422. It can therefore be regenerated from the chain at any time. The state database424may automatically get recovered (or generated if needed) upon peer startup, before transactions are accepted.

Endorsing nodes (411,412, and/or413) receive transactions from clients and endorse the transaction based on simulated results. Endorsing nodes hold smart contracts which simulate the transaction proposals. When an endorsing node endorses a transaction, the endorsing node creates a transaction endorsement which is a signed response from the endorsing node to the client application indicating the endorsement of the simulated transaction. The method of endorsing a transaction depends on an endorsement policy which may be specified within chaincode. An example of an endorsement policy is “the majority of endorsing peers must endorse the transaction.” Different channels may have different endorsement policies. Endorsed transactions are forward by the client application to ordering service410.

The ordering service410accepts endorsed transactions, orders them into a block, and delivers the blocks to the committing peers. For example, the ordering service410may initiate a new block when a threshold of transactions has been reached, a timer times out, or another condition. In the example ofFIG.4A, blockchain node412is a committing peer that has received a new data block430for storage on blockchain422. The first block423in the blockchain422may be referred to as a genesis block which includes information about the blockchain, its members, the data stored therein, etc.

The ordering service410may be made up of a cluster of orderers. The ordering service410does not process transactions, smart contracts, or maintain the shared ledger. Rather, the ordering service410may accept the endorsed transactions and specifies the order in which those transactions are committed to the distributed ledger420. The architecture of the blockchain network may be designed such that the specific implementation of ‘ordering’ (e.g., Solo, Kafka, Byzantine fault-tolerant, etc.) becomes a pluggable component.

Transactions are written to the distributed ledger420in a consistent order. The order of transactions is established to ensure that the updates to the state database424are valid when they are committed to the network. Unlike a cryptocurrency blockchain system (e.g., Bitcoin, etc.) where ordering occurs through the solving of a cryptographic puzzle, or mining, in this example the parties of the distributed ledger420may choose the ordering mechanism that best suits that network.

When the ordering service410initializes a new data block430, the new data block430may be broadcast to committing peers (e.g., blockchain nodes411,412, and413). In response, each committing peer validates the transaction within the new data block430by checking to make sure that the read set and the write set still match the current world state in the state database424. Specifically, the committing peer can determine whether the read data that existed when the endorsers simulated the transaction is identical to the current world state in the state database424. When the committing peer validates the transaction, the transaction is written to the blockchain422on the distributed ledger420, and the state database424is updated with the write data from the read-write set. If a transaction fails, that is, if the committing peer finds that the read-write set does not match the current world state in the state database424, the transaction ordered into a block may still be included in that block, but it may be marked as invalid, and the state database424may not be updated.

Referring toFIG.4B, the new data block430(also referred to as a data block) that is stored on the blockchain422of the distributed ledger420may include multiple data segments such as a block header440, block data450, and block metadata460. It should be appreciated that the various depicted blocks and their contents, such as new data block430and its contents. Shown inFIG.4Bare merely examples and are not meant to limit the scope of the example embodiments. The new data block430may store transactional information of N transaction(s) (e.g., 1, 10, 100, 500, 1000, 2000, 3000, etc.) within the block data450. The new data block430may also include a link to a previous block (e.g., on the blockchain422inFIG.4A) within the block header440. In particular, the block header440may include a hash of a previous block's header. The block header440may also include a unique block number (e.g. data block423-430), a hash of the block data450of the new data block430, and the like. The block number of the new data block430may be unique and assigned in various orders, such as an incremental/sequential order starting from zero.

The block data450may store transactional information of each transaction that is recorded within the new data block430. For example, the transaction data may include one or more of a type of the transaction, a version, a timestamp, a channel ID of the distributed ledger420, a transaction ID, an epoch, a payload visibility, a chaincode path (deploy transaction), a chaincode name, a chaincode version, input (chaincode and functions), a client (creator) identify such as a public key and certificate, a signature of the client, identities of endorsers, endorser signatures, a proposal hash, chaincode events, response status, namespace, a read set (list of key and version read by the transaction, etc.), a write set (list of key and value, etc.), a start key, an end key, a list of keys, a Merkel tree query summary, and the like. The transaction data may be stored for each of the N transactions.

In some embodiments, the block data450may also store new data462which adds additional information to the hash-linked chain of blocks in the blockchain422. The additional information includes one or more of the steps, features, processes and/or actions described or depicted herein. Accordingly, the new data462can be stored in an immutable log of blocks on the distributed ledger420. Some of the benefits of storing such new data462are reflected in the various embodiments disclosed and depicted herein. Although inFIG.4Bthe new data462is depicted in the block data450, it may also be located in the block header440or the block metadata460. The new data462may include a document composite key that is used for linking the documents within an organization.

The block metadata460may store multiple fields of metadata (e.g., as a byte array, etc.). Metadata fields may include signature on block creation, a reference to a last configuration block, a transaction filter identifying valid and invalid transactions within the block, last offset persisted of an ordering service that ordered the block, and the like. The signature, the last configuration block, and the orderer metadata may be added by the ordering service410. Meanwhile, a committer of the block (such as blockchain node412) may add validity/invalidity information based on an endorsement policy, verification of read/write sets, and the like. The transaction filter may include a byte array of a size equal to the number of transactions in the block data450and a validation code identifying whether a transaction was valid/invalid.

FIG.4Cillustrates an embodiment of a blockchain470for digital content in accordance with the embodiments described herein. The digital content may include one or more files and associated information. The files may include media, images, video, audio, text, links, graphics, animations, web pages, documents, or other forms of digital content. The immutable, append-only aspects of the blockchain serve as a safeguard to protect the integrity, validity, and authenticity of the digital content, making it suitable for use in legal proceedings where admissibility rules apply or other settings where evidence is taken in to consideration or where the presentation and use of digital information is otherwise of interest. In this case, the digital content may be referred to as digital evidence.

The blockchain may be formed in various ways. In some embodiments, the digital content may be included in and accessed from the blockchain itself. For example, each block of the blockchain may store a hash value of reference information (e.g., header, value, etc.) along the associated digital content. The hash value and associated digital content may then be encrypted together. Thus, the digital content of each block may be accessed by decrypting each block in the blockchain, and the hash value of each block may be used as a basis to reference a previous block.

This may be illustrated as follows:

In some embodiments, the digital content may be not included in the blockchain. For example, the blockchain may store the encrypted hashes of the content of each block without any of the digital content. The digital content may be stored in another storage area or memory address in association with the hash value of the original file. The other storage area may be the same storage device used to store the blockchain or may be a different storage area or even a separate relational database. The digital content of each block may be referenced or accessed by obtaining or querying the hash value of a block of interest and then looking up that has value in the storage area, which is stored in correspondence with the actual digital content. This operation may be performed, for example, a database gatekeeper. This may be illustrated as follows:

In the example embodiment ofFIG.4C, the blockchain470includes a number of blocks4781,4782, . . .478Ncryptographically linked in an ordered sequence, where N>1. The encryption used to link the blocks4781,4782, . . .478Nmay be any of a number of keyed or un-keyed Hash functions. In one embodiment, the blocks4781,4782, . . .478Nare subject to a hash function which produces n-bit alphanumeric outputs (where n is 256 or another number) from inputs that are based on information in the blocks. Examples of such a hash function include, but are not limited to, a SHA-type (SHA stands for Secured Hash Algorithm) algorithm, Merkle-Damgard algorithm, HAIFA algorithm, Merkle-tree algorithm, nonce-based algorithm, and a non-collision-resistant PRF algorithm. In another embodiment, the blocks4781,4782, . . . ,478Nmay be cryptographically linked by a function that is different from a hash function. For purposes of illustration, the following description is made with reference to a hash function, e.g., SHA-2.

Each of the blocks4781,4782, . . . ,478Nin the blockchain includes a header, a version of the file, and a value. The header and the value are different for each block as a result of hashing in the blockchain. In some embodiments, the value may be included in the header. As described in greater detail below, the version of the file may be the original file or a different version of the original file.

The first block4781in the blockchain is referred to as the genesis block and includes a header4721, original file4741, and an initial value4761. The hashing scheme used for the genesis block, and indeed in all subsequent blocks, may vary. For example, all the information in the first block4781may be hashed together at one time, or a portion of the information in the first block4781may be separately hashed and then a hash of the separately hashed portions may be performed.

The second header4721may include one or more initial parameters, which, for example, may include a version number, timestamp, nonce, root information, difficulty level, consensus protocol, duration, media format, source, descriptive keywords, and/or other information associated with original file4741and/or the blockchain. The first header4721may be generated automatically (e.g., by blockchain network managing software) or manually by a blockchain participant. Unlike the header in other blocks4782to478Nin the blockchain, the header4721in the genesis block4781does not reference a previous block, simply because there is no previous block.

The original file4741in the genesis block may be, for example, data as captured by a device with or without processing prior to its inclusion in the blockchain. The original file4741is received through the interface of the system from the device, media source, or node. The original file4741is associated with metadata, which, for example, may be generated by a user, the device, and/or the system processor, either manually or automatically. The metadata may be included in the first block4781in association with the original file4741.

The value4761in the genesis block is an initial value generated based on one or more unique attributes of the original file4741. In some embodiments, the one or more unique attributes may include the hash value for the original file4741, metadata for the original file4741, and other information associated with the file. In one implementation, the initial value4761may be based on the following unique attributes:1) SHA-2 computed hash value for the original file2) originating device ID3) starting timestamp for the original file4) initial storage location of the original file5) blockchain network member ID for software to currently control the original file and associated metadata

The other blocks4782to478Nin the blockchain also have headers, files, and values. However, unlike header4721the first block, each of the headers4722to472Nin the other blocks includes the hash value of an immediately preceding block. The hash value of the immediately preceding block may be just the hash of the header of the previous block or may be the hash value of the entire previous block. By including the hash value of a preceding block in each of the remaining blocks, a trace can be performed from the Nth block back to the genesis block (and the associated original file) on a block-by-block basis, as indicated by arrows480, to establish an auditable and immutable chain-of-custody.

Each of the headers4722to472Nin the other blocks may also include other information, e.g., version number, timestamp, nonce, root information, difficulty level, consensus protocol, and/or other parameters or information associated with the corresponding files and/or the blockchain in general.

The files4742to474Nin the other blocks may be equal to the original file or may be modified versions of the original file in the genesis block depending, for example, on the type of processing performed. The type of processing performed may vary from block to block. The processing may involve, for example, any modification of a file in a preceding block, such as redacting information or otherwise changing the content of, taking information away from, or adding or appending information to the files.

Additionally, or alternatively, the processing may involve merely copying the file from a preceding block, changing a storage location of the file, analyzing the file from one or more preceding blocks, moving the file from one storage or memory location to another, or performing action relative to the file of the blockchain and/or its associated metadata. Processing which involves analyzing a file may include, for example, appending, including, or otherwise associating various analytics, statistics, or other information associated with the file.

The values in each of the other blocks4762to476Nin the other blocks are unique values and are all different as a result of the processing performed. For example, the value in any one block corresponds to an updated version of the value in the previous block. The update is reflected in the hash of the block to which the value is assigned. The values of the blocks therefore provide an indication of what processing was performed in the blocks and also permit a tracing through the blockchain back to the original file. This tracking confirms the chain-of-custody of the file throughout the entire blockchain.

For example, consider the case where portions of the file in a previous block are redacted, blocked out, or pixelated in order to protect the identity of a person shown in the file. In this case, the block including the redacted file may include metadata associated with the redacted file, e.g., how the redaction was performed, who performed the redaction, timestamps where the redaction(s) occurred, etc. The metadata may be hashed to form the value. Because the metadata for the block is different from the information that was hashed to form the value in the previous block, the values are different from one another and may be recovered when decrypted.

In some embodiments, the value of a previous block may be updated (e.g., a new hash value computed) to form the value of a current block when any one or more of the following occurs. The new hash value may be computed by hashing all or a portion of the information noted below, in this example embodiment.a) new SHA-2 computed hash value if the file has been processed in any way (e.g., if the file was redacted, copied, altered, accessed, or some other action was taken)b) new storage location for the filec) new metadata identified associated with the filed) transfer of access or control of the file from one blockchain participant to another blockchain participant

FIG.4Dillustrates an embodiment of a block490which may represent the structure of the blocks in the blockchain (e.g.,470) in accordance with one embodiment. The block, e.g., Blocki, includes a header472i, a file474i, and a value476i.

The header472iincludes a hash value of a previous block Blocki-1and additional reference information, which, for example, may be any of the types of information (e.g., header information including references, characteristics, parameters, etc.) discussed herein. All blocks reference the hash of a previous block except, of course, the genesis block. The hash value of the previous block may be just a hash of the header in the previous block or a hash of all or a portion of the information in the previous block, including the file and metadata.

The file474iincludes a plurality of data, such as Data1, Data2, . . . , Data N in sequence. The data are tagged with Metadata1, Metadata2, . . . , Metadata N which describe the content and/or characteristics associated with the data. For example, the metadata for each data may include information to indicate a timestamp for the data, process the data, keywords indicating the persons or other content depicted in the data, and/or other features that may be helpful to establish the validity and content of the file as a whole, and particularly its use a digital evidence, for example, as described in connection with an embodiment discussed below. In addition to the metadata, each data may be tagged with reference REF1, REF2, . . . , REF N to a previous data to prevent tampering, gaps in the file, and sequential reference through the file.

Once the metadata is assigned to the data (e.g., through a smart contract), the metadata cannot be altered without the hash changing, which can easily be identified for invalidation. The metadata, thus, creates a data log of information that may be accessed for use by participants in the blockchain.

The value476iis a hash value or other value computed based on any of the types of information previously discussed. For example, for any given block, Blocki, the value for that block may be updated to reflect the processing that was performed for that block, e.g., new hash value, new storage location, new metadata for the associated file, transfer of control or access, identifier, or other action or information to be added. Although the value in each block is shown to be separate from the metadata for the data of the file and header, the value may be based, in part or whole, on this metadata in another embodiment.

Once the block490is formed, at any point in time, the immutable chain-of-custody for the file may be obtained by querying the blockchain for the transaction history of the values across the blocks. This query, or tracking procedure, may begin with decrypting the value of the block that is most currently included (e.g., the last (Nth) block), and then continuing to decrypt the value of the other blocks until the genesis block is reached and the original file is recovered. The decryption may involve decrypting the headers and files and associated metadata at each block, as well.

Decryption is performed based on the type of encryption that took place in each block. This may involve the use of private keys, public keys, or a public key-private key pair. For example, when asymmetric encryption is used, blockchain participants or a processor in the network may generate a public key and private key pair using a predetermined algorithm. The public key and private key are associated with each other through some mathematical relationship. The public key may be distributed publicly to serve as an address to receive messages from other users, e.g., an IP address or home address. The private key is kept secret and used to digitally sign messages sent to other blockchain participants. The signature is included in the message so that the recipient can verify using the public key of the sender. This way, the recipient can be sure that only the sender may have sent this message.

Generating a key pair may be analogous to creating an account on the blockchain, but without having to actually register anywhere. Also, every transaction that is executed on the blockchain is digitally signed by the sender using their private key. This signature ensures that only the owner of the account can track and process (if within the scope of permission determined by a smart contract) the file of the blockchain.

FIG.5, illustrated is a high-level block diagram of an example computer system501that may be used in implementing one or more of the methods, tools, and modules, and any related functions, described herein (e.g., using one or more processor circuits or computer processors of the computer), in accordance with embodiments of the present disclosure. In some embodiments, the major components of the computer system501may comprise one or more CPUs502, a memory subsystem504, a terminal interface512, a storage interface516, an I/O (Input/Output) device interface514, and a network interface518, all of which may be communicatively coupled, directly or indirectly, for inter-component communication via a memory bus503, an I/O bus508, and an I/O bus interface unit510.

The computer system501may contain one or more general-purpose programmable central processing units (CPUs)502A,502B,502C, and502D, herein generically referred to as the CPU502. In some embodiments, the computer system501may contain multiple processors typical of a relatively large system; however, in other embodiments the computer system501may alternatively be a single CPU system. Each CPU502may execute instructions stored in the memory subsystem504and may include one or more levels of on-board cache.

System memory504may include computer system readable media in the form of volatile memory, such as random access memory (RAM)522or cache memory524. Computer system501may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system526can be provided for reading from and writing to a non-removable, non-volatile magnetic media, such as 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”), or an optical disk drive for reading from or writing to a removable, non-volatile optical disc such as a CD-ROM, DVD-ROM or other optical media can be provided. In addition, memory504can include flash memory, e.g., a flash memory stick drive or a flash drive. Memory devices can be connected to memory bus503by one or more data media interfaces. The memory504may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of various embodiments.

One or more programs/utilities528, each having at least one set of program modules530may be stored in memory504. The programs/utilities528may include a hypervisor (also referred to as a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating systems, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Programs528and/or program modules530generally perform the functions or methodologies of various embodiments.

Although the memory bus503is shown inFIG.5as a single bus structure providing a direct communication path among the CPUs502, the memory subsystem504, and the I/O bus interface510, the memory bus503may, in some embodiments, include multiple different buses or communication paths, which may be arranged in any of various forms, such as point-to-point links in hierarchical, star or web configurations, multiple hierarchical buses, parallel and redundant paths, or any other appropriate type of configuration. Furthermore, while the I/O bus interface510and the I/O bus508are shown as single respective units, the computer system501may, in some embodiments, contain multiple I/O bus interface units510, multiple I/O buses508, or both. Further, while multiple I/O interface units are shown, which separate the I/O bus508from various communications paths running to the various I/O devices, in other embodiments some or all of the I/O devices may be connected directly to one or more system I/O buses.

It is noted thatFIG.5is intended to depict the representative major components of an exemplary computer system501. In some embodiments, however, individual components may have greater or lesser complexity than as represented inFIG.5, components other than or in addition to those shown inFIG.5may be present, and the number, type, and configuration of such components may vary.

Permissioned blockchain networks (e.g., hyperledger fabric blockchain networks) operate on a system of verifying credentials before operations are processed on a blockchain network. In the context of permissioned blockchain it may first seems contradictory to think of anonymity. A party needs to have their permission verified to perform or submit an operation (e.g., a query, a transaction, etc.) to a permissioned network. The verification normally requires some sort of identification. Thus, the verification may present issues when a party desires anonymity. However, for some implementations, (e.g., enterprise tokens in a consortium), anonymity becomes essential.

Some systems have implemented systems that have a certificate authority verify identities of a client and provide a certificate, without a client identifier, for a proof in the submission of an operation. Although this method may hide identity of the submitter, systems using this method still have a certificate authority with records indicating which clients submits which operations. The challenge is, how can anonymity be guaranteed while still allowing parties to be able to authenticate who is submitting a transaction. Therefore, a method for providing an anonymity within a blockchain network group is provided.

In some embodiments, the members of the group generate a private/public key set. In some embodiments, a group certificate is issued to members (e.g., clients, users, client node260, user302, user322, sender356, etc.) of a group. For example, the group certificate may identify a specific group of client nodes, but not any client individually. In some embodiments, the private key is associated with the group certificate in such a way that singing an operation with a group the private key may prove possession of the group certificate. For example, the private key may be used to sign an operation with the group certificate and the private key may be used to verify that signature was made by a member with the proper credentials (i.e., the group certificate). In some embodiments, each member of the group may submit an operation anonymously by using the same private key associated with the group certificate, available to all members of the group, to sign an operation for submission to a blockchain network (e.g., blockchain network100,300, or320). Since each of the members of the group may have submitted the same operation signed with the same group the same group private key associated with the certificate using, the operation can be verified to have come from the group, but not which member of the group submitted the operation. For example, the proposed method provides a solution in which earned tokens may only be known to each owner. Unlike other options, the proposed method may be easily extended into existing blockchain infrastructure.

FIG.6is a flowchart of an example process600of setting up an anonymity mechanism in a blockchain network, in accordance with embodiments of the present disclosure. Process600is performed by a processor (e.g., processor502connected to the various components ofFIG.5) on a blockchain network (e.g., blockchain network100,300, or320) or in communication with a blockchain network (e.g., blockchain network100,300, or320).

Process600begins at operation602, where a member receives a unique certificate. In some embodiments a certificate authority (e.g., certificate authority316or336) issues unique certificates to one or more members (e.g., a client, for example user302or user322). In some embodiments, the unique certificate is associated with a unique private/public key set for the member. In some embodiments, the unique private key can be used to sign requests and can be verified with the unique public key. In some embodiments, the unique certificate is generated using the unique public key such. In some embodiments, the unique certificate identifies the members individually. In some embodiments, the unique certificate identifies the members as a member of a group. For example, member A is identified as auditor A (e.g., a node designated as an accounting client) and identified as belonging to a group of auditors. In some embodiments, the unique certificate is an identity certificate and or a membership certificate. In some embodiments, the members of the group can be all clients or some of the clients of the blockchain network. For example, the blockchain network may have auditors and accountants, and the auditors can be included in a first group, the accountants in a second group, and both the accountants and the auditors in a third group. In an alternative example, the blockchain network may have auditors and accountants, but only the auditors can be included in a group. In some embodiments, the members of the group can be changed by a controlling authority for the group. For example, a controlling member of the group a third party in charge of the group, such as certificate authority316or the regulator306, is able to add have a group certificate revoked by the certificate authority. For example, if members of the group are undergoing maintenance, the group certificate is revoked and a new one may not be issued until the maintenance is complete. In some embodiments, the members of the group can be determined by a member of the group that requests a group certificate in operation606(below). Other methods of forming and/or defining a group may be possible.

In some embodiments, a list of members in the group can be stored (e.g., on distributed file storage150or ledger DB108) and maintained by a controlling entity (e.g., certificate authority316or the regulator306). Following the example from above, the certificate authority may identify a specific auditor in the group of auditors by a serial number or other specific identifier. In some embodiments, a revocation list can be kept. For example, the certificate authority may keep a list of members who are no longer part of the group.

The process600continues at operation604where the member generates a private/public key set. In some embodiments, the certificate provides a set of attributes is digitally signed with a signature that cannot be forged and the private key is cryptographically bound to the certificate.

The process600continues at operation606where a group certificate is requested from the certificate authority. In some embodiments, the requesting is performed by a member of the group. In some embodiments, the request is accompanied by the public key of the private/public key set. In some embodiments, the same member that requests the group certificate generates the private/public key set (in operation604). In some embodiments, a first member requests the group certificate and a second member in the group generates the private/public key set (in operation604). For example, a member of the group may request a group certificate from an authority. In some embodiments, a group member submitting the request may use the unique private key, associated with the unique certificate, to sign the request. In some embodiments, a third party may (e.g., regulator306, operator308, etc.) that is not a part of the group may request a group certificate for the group. For example, regulator306may decide what clients to include in a group and requests that certificate authority316provide the members of the group a certificate. In some embodiments, only one group certificate can be valid for a given group at a time. However, in other embodiments, multiple certificates can be valid at a given time. For example, the system may allow a set number of group certificates for a given group. In some embodiments, each group certificate can be restricted to use with certain types of operations. In some instances, some operations by their given nature may prevent anonymity or reduce the anonymity and thus their use may need to be restricted to prevent a member from submitting a non-anonymous operation request. For example, if an auditor A submits a transaction proposal with information I, where auditor A is the only member of the group that has access to information I, the transaction proposal may not be anonymous. In some embodiments, several groups may operate on a blockchain network, each with a different set of allowed operations. For example, auditors are in an auditor group which is allowed to submit auditing operations, and accountants are in an accounting group which is allowed to submit accounting operations. In some embodiments, a member can be a member of multiple groups in a blockchain network. For example, member A is a member of groups X and Y, but not Z.

The process600continues at operation608where a member receives the group certificate. In some embodiments, the certificate authority sends the group certificate directly to a group member. In some embodiments, the group member is the requesting member. In some embodiments, the certificate authority only sends the group certificate to one group member and that group member sends the group certificate to the other members of the group. In some embodiments, the group certificate is not provided to anyone outside the group and the certificate authority. In some embodiments, the group certificate can be stored in a centralized location (e.g., distributed file storage150or ledger DB108). In some embodiments, the group certificate can be stored or distributed in an encrypted state. For example, a requesting member of the group may encrypt and store the group certificate on ledger DB108for other members of the group to retrieve. In some embodiments, one group member may request the group certificate from another member of the group.

In some embodiments, after a first request for a group certificate, where the group certificate has not been revoked, subsequent requests for a group certificate can be directed to the first group certificate. For example, group member A request a group certificate and is provide group certificate A. If subsequently group member B request a group certificate, the certificate authority may direct group member B to request group certificate A from group member A. Thus, in some embodiments, only one group certificate can be valid at any given time for any given group.

In some embodiments, by using group keys and group certificates, no entity, besides the one generating the group proof, may determine which member of the group generated the group proof because all members of the group may use the same secret key and group certificate to generate a group proof.

In some embodiments, the certificate authority inserts the public key into the group certificate. In some embodiments, the group certificate is signed by the certificate authority. In some embodiments, the group certificate is generated in such a way that the public key cannot be separated from the group certificate, but the certificate authority can validate the certificate.

The group certificate is associated with the private key, and the private key can be used as a proof of possession of the group certificate for the submission of an operation. In some embodiments, a group proof is the signing of an operation by a using a group private key associated with the group certificate. The public key is used to verify the operation was signed using the private key by a member, possessing both the private key and the group certificate, without revealing the group certificate or the private key to any of the blockchain nodes processing the transaction. In some embodiments, the group proofs demonstrate the possession of a private key and the corresponding group certificate without revealing the identity of the member that submitted the group proof since any member of the group could have submitted the same operation using the same private key and group certificate. In some embodiments, the knowledge given with the group proof can be varied. For example, some group proofs may contain a group identity, and other may just contain a group proof that is verifiable with a valid public key. Only giving members access to the private key and the group certificate, only members may make a valid group proof that can be verified with the corresponding public key.

The process600continues at operation610where the member distributes the private key to the other members of the group. In some embodiments, the member sends the private key to the other members. In some embodiments, the member encrypts the private key and stores it on the distributed ledgers, e.g., shared data110. In some embodiments, the private key is kept secret from everyone but the other members of the group. In some embodiments, the private key is only valid as long as it is kept secret among the members of the group. In some embodiments, the public key is distributed in a typical manner. For example, the public key is stored on the distributed ledger in an unencrypted state. In some embodiments, the distribution is performed before operation606. In some embodiments, the distribution can be contemporaneous with distributing the group certificate to the other members of the group.

FIG.7is a flowchart of an example method700submitting an operation anonymously in a blockchain network, in accordance with embodiments of the present disclosure. The method700is performed by a processor on a blockchain network or in communication with a blockchain network.

Process700begins with operation702where a member receives a group certificate. In some embodiments, the group certificate can be received from a certificate authority (e.g., certificate authority316). In some embodiments, the group certificate is associated to the private key (received in operation704). In some embodiments, the requesting party provides the group certificate to the other group members. For example, if member A requests the group certificate, member A may send the group certificate to the other members of the group. In some embodiments, the group certificate is encrypted and stored on a storage system that all members can access (e.g., distributed file storage150or ledger DB108). In some embodiments, only one member of the group initially receives the group certificate, and other members of the group may request the group certificate from a member that has received the group certificate. For example, if member A requests and receives the group certificate, member B may ask member A for the group certificate. Member C could then request the group certificate from member A or member B.

Process700continues with operation704, where a member receives a private/public key set. In some embodiments, each member of the group must agree on the private/public key set. For example, the private/public key set may not be enacted and distributed to the group until all members of the group agree on the private/public key set. In some embodiments, use of the private/public key set may constitute agreement. In some embodiments, members may not need to agree on a private/public key set. Each group member may simply use the private/public key set. For example, for a group consisting of members A, B, and C, members A and B may use a private/public key set that member C has not yet agreed on. In some embodiments, there may not be a recorded agreement of the private/public key set for each member of the group. In some embodiments, the distribution or receiving of the private/public key set may include storing the private/public key set such that all members have access to the private/public key set. For example, distribution may include storing the key set on a storage system (e.g., distributed file storage150or ledger DB108) all members have access to.

Process700continues with operation706, where a member signs an operation using a private key associated with the group certificate. In some embodiments, the signing of an operation results in a group proof, as described above. Public and private keys are an integral component of blockchain networks that are part of a larger field of cryptography. In some instances, using a public/private key set allows data to be transition from one state to another while making reversing the process nearly impossible, and in the process, proving possession of a secret without exposing that secret. The product is subsequently a one-way mathematical function, which makes it ideal for validating the authenticity of something (i.e., a transaction) because it cannot be forged. In some embodiments, the group certificate is used, along with the secret key to sign an operation. In some embodiments, all members of the group have access to the group certificate and the private key. In some embodiments, only the certificate authority and the group members have access to the group certificate. In some embodiments, only the group members have access to the private key

Process700continues with operation708where a member submits the signed operation. In some embodiments, the peers and/or the certificate authority use the public key to verify that the operation was signed with the group certificate. In some embodiments, after verification, the peers endorse the operation. More details on verification and endorsement are provided inFIG.2B.