Public and private ledgers provide different types of solutions since they solve different types of problems. A network implementation can make use of both private and public ledgers with interoperability implemented between them. An example of this is Project Ubin. Many real-world use cases will likely make use of more than one ledger integrated seamlessly. As one starts the evaluation of their own use cases for distributed ledger technology (DLT) adoption, a common issue that will arise early on in the project will be the need to distinguish between public and private permissioned ledgers.
This article attempts to cover the key differences between the two.
A public blockchain network is a permission-less network, which means anyone can join the network (e.g., Ethereum, Bitcoin). It's important to note that permissioned does not mean private -- some of the public networks like Stellar and Sovrin are public permissioned networks. A private permissioned ledger is permissioned, so only selected participants can join the network. (e.g., Hyperledger Fabric, R3’s Corda).
For a public blockchain, all participants participate in all the transactions (i.e., data is replicated to all the nodes in the network). There is no preferential treatment and all users (nodes) are treated equally, and data is shared with everyone. Variants of the applications in such a network use ZKPs (zero-knowledge proofs) to cloak the confidential data (e.g., Mediledger).
Depending upon the permissioned network (e.g., in Corda), only selected participants get to participate in a given transaction for a private permissioned ledger. Data is shared with selective nodes based on the smart-contract logic on the ledger. Since this is a private permissioned ledger, adherence to compliance audit rules is much easier to implement.
Public blockchains are best-suited for crypto-related use cases an...