Availability | Type of Blockchain | Transactions Per Second (Single Chain) | Transaction Confirmation | Data Privacy Compliance | Right to be Forgotten | User Registration: Secured and Trusted Access | ||
---|---|---|---|---|---|---|---|---|
ParallelChain Enterprise 2.0 | Now | Private | 120,000+ TPS | ~0.003 second | GDPR-friendly | Multi-Biometrics | ||
ParallelChain Enterprise 1.0 | Now | Private | 100,000+ TPS | 0.01 second | GDPR-friendly | Two-Factor Authentication + Biometrics | ||
![]() | Corda | Now | Private | 800+ TPS | "Near instant" | Two-Factor Authentication | ||
Hyperledger Fabric | Now | Consortium | 3,500+ TPS | 0.1 second | Two-Factor Authentication | |||
Ethereum 2.0 | >2022 | Public | 1,000 TPS | 5,000 seconds | N/A |
Data Storage
Use ParallelChain Enterprise as an immutable and tamper-proof data storage relay, for mission-critical and sensitive data.
Our unique Proof-of-Immutability (PoIM) algorithm and privacy-protected data validation adds an additional layer of security to your company's data.
Data Protection Under Work-From-Home
Productive 'Work From Home' invariably necessitates moving sensitive company data out of the office, increasing the risk of data leaks.
PreventiveChain solves this
PreventiveChain authenticates the current user of the computer and blocks data extraction and screen capture. Captured data is immutably persisted in ParallelChain®.
Time-Consuming and Error-Prone KYC Process
Institutions struggle to perform KYC efficiently and keep the KYC data updated and protected.
eKYC-Chain and PreventiveChain solve this
eKYC-Chain digitizes the KYC process and achieves higher efficiency and reliability with anti-spoofing facial recognition, real-time selfie-to-photo-ID matching, KYC data management. Coupled with PreventiveChain, KYC officers can perform their duties even when working from home.
Slow Settlement Time
To meet acceptable security standards, stock trades have to go through a long settlement process.
ChattelChain solves this
High throughput on the ParallelChain® protocol and smart contracts on ChattelChain bring instant settlement trading compliant with international security standards.
Lack of Workplace Accountability
Parties working on a single project disagree about who is responsible for the successful completion of tasks, or failure to meet requirements.
ApprovalChain solves this
Each activity in a process is immutably documented in ParallelChain®, while the ApprovalChain app ensures that tasks are signed off as completed per requirement only when agreement is reached.
Data are Lost Due to Accidents or Malicious Activity
Data generated by vehicles or IoT systems become irretrievable when the physical devices are lost or damaged, while cloud solutions leave the data tampering issue unsolved.
ParallelChain® solves this
ParallelChain® provides immutable persistence of data, representing a ‘virtual black-box’ that is undamageable and tamper-proof.
package commercialpaper
import (
"digital-transaction/pco/parallelcore-apps/apps/commercial-paper/contract/paper"
"fmt"
engine "parallelcore-smartcontract-sdk-go/smartcontract_engine"
"strconv"
"strings"
)
// MySC smart contract instance
type MySC struct{}
// Initialize does nothing in this case
func (sc MySC) Initialize(tr engine.Transaction, in []byte) ([]byte, error) {
return nil, nil
}
// Handle calls do<ACTION> on invocation of this
// smart contract.
func (sc MySC) Handle(tr engine.Transaction, in []byte) ([]byte, error) {
args := strings.Split(string(in), " ")
action := args[0]
switch action {
case "List":
paperStrRepr, err := doList(paper.TransactionContext{Transaction: tr})
if err != nil {
return nil, err
}
return paperStrRepr, nil
case "Issue":
faceValue, err := strconv.Atoi(args[5])
if err != nil {
return nil, fmt.Errorf("faceValue should be an integer. Received: %s
Error: %v", args[5], err)
}
err = issue(paper.TransactionContext{Transaction: tr}, IssueArgs{args[1], args[2], args[3], args[4], faceValue})
if err != nil {
return nil, err
}
return []byte(fmt.Sprintf("Paper successfully issued")), nil
case "Buy":
price, err := strconv.Atoi(args[5])
if err != nil {
return nil, fmt.Errorf("price should be an integer. Received: %s
Error: %v", args[5], err)
}
err = buy(paper.TransactionContext{Transaction: tr}, BuyArgs{args[1], args[2], args[3], args[4], price, args[6]})
if err != nil {
return nil, err
}
return []byte(fmt.Sprintf("Paper successfully bought")), nil
case "BuyRequest":
price, err := strconv.Atoi(args[5])
if err != nil {
return nil, fmt.Errorf("price should be an integer. Received: %s
Error: %v", args[5], err)
}
err = buyRequest(paper.TransactionContext{Transaction: tr}, BuyRequestArgs{args[1], args[2], args[3], args[4], price, args[6]})
if err != nil {
return nil, err
}
return []byte(fmt.Sprintf("Paper successfully requested")), nil
case "Transfer":
err := transfer(paper.TransactionContext{Transaction: tr}, TransferArgs{args[1], args[2], args[3]})
if err != nil {
return nil, err
}
return []byte(fmt.Sprintf("Paper successfully transfered")), nil
}