From ef555b40a991e64e493fad5a6625bab0b9ef1373 Mon Sep 17 00:00:00 2001 From: AlbertA-Solicy Date: Mon, 18 Sep 2023 16:41:50 +0400 Subject: [PATCH] Created documention --- .ci/documention/Blockchain.md | 33 ++++++++++++++++++++++ .ci/documention/MoreInfo.md | 41 +++++++++++++++++++++++++++ .ci/documention/Workflow.md | 45 ++++++++++++++++++++++++++++++ .ci/documention/pictures/pic1.png | Bin 0 -> 15257 bytes 4 files changed, 119 insertions(+) create mode 100644 .ci/documention/Blockchain.md create mode 100644 .ci/documention/MoreInfo.md create mode 100644 .ci/documention/Workflow.md create mode 100644 .ci/documention/pictures/pic1.png diff --git a/.ci/documention/Blockchain.md b/.ci/documention/Blockchain.md new file mode 100644 index 00000000..f6b713fc --- /dev/null +++ b/.ci/documention/Blockchain.md @@ -0,0 +1,33 @@ +# BigchainDB and Blockchain + +BigchainDB is a powerful technology designed for simplicity and speed, built on the foundation of blockchain technology. Let's explore what makes it special: + +## Fast Transactions with BigchainDB + +BigchainDB, powered by blockchain, is incredibly fast and capable of handling numerous tasks quickly. This makes it perfect for processes that require swift execution. + +## Using BigchainDB in the Cloud + +Leveraging BigchainDB and its blockchain foundation in the cloud offers several benefits: + +### Seamless Expansion + +It easily adapts to your growing needs. + +### Simplified Management + +Maintaining it is straightforward. + +### Access Anywhere + +You can access it from anywhere, providing flexibility. + +# BigchainDB: Power and Security + +BigchainDB, built on blockchain technology, is a versatile solution: + +- Handles High Workloads: Effortlessly manages substantial tasks. +- Exceptional Speed: Maintains rapid performance even under heavy workloads. +- Security and Speed Combined: Offers top-notch security with lightning-fast speed. +- Data Integrity: Your data is secure and guaranteed to be accurate. +- Effortless Data Retrieval: Finding information is easy, simplifying the search process. \ No newline at end of file diff --git a/.ci/documention/MoreInfo.md b/.ci/documention/MoreInfo.md new file mode 100644 index 00000000..35247d32 --- /dev/null +++ b/.ci/documention/MoreInfo.md @@ -0,0 +1,41 @@ + +## Full Decentralization and Byzantine Fault Tolerance + +BigchainDB leverages Tendermint for networking and consensus, providing: + +- Byzantine Fault Tolerance (BFT): The system is highly resilient because Tendermint, the technology behind it, ensures BFT. Even if some nodes misbehave or fail, the network remains secure. +- Local Databases: Each node has its own local MongoDB database. This setup enhances security. If one database is compromised, only that node is affected; others remain unharmed. +- Changing Block Proposers: The system design periodically changes the node responsible for proposing blocks, making it more secure and less predictable. +- True Decentralization: In an ideal BigchainDB 2.0 network, each node is owned and operated by a different entity. This results in full decentralization, with no single owner, controller, or point of failure. +- Global Node Distribution: Nodes should be located in various countries and hosting providers to ensure network robustness. Even if some nodes fail or face issues, the network continues to function. +- High Fault Tolerance: Up to one-third of the nodes can fail or misbehave, and the network will still operate smoothly. The remaining nodes collaborate to make decisions and keep the system running. + +## Immutability + +BigchainDB ensures data immutability using several strategies: + +- No Data Alteration APIs: BigchainDB doesn't provide tools to change or erase stored data, making it resistant to unauthorized modifications. +- Local Copies on Every Node: Each node has its own complete copy of the data in separate MongoDB databases. Even if one node fails, others still have the data, preventing data loss. +- Cryptographic Signatures: Every transaction is cryptographically signed. If someone tries to change a transaction, the signature changes, which can be detected. Even changing the public key is noticeable since all transactions are signed by known nodes. + +## Owner-Controlled Assets + +BigchainDB operates like many other blockchains, where assets are controlled by their owners. + +- User-Defined Assets: BigchainDB allows users to create their own assets as needed, each cryptographically signed by its creator. + +## High Transaction Rate + +BigchainDB is designed to handle a high number of transactions per second, even in challenging conditions. + +## Sybil Tolerance + +In a BigchainDB network, the organization governing the network controls the member list, eliminating the possibility of Sybil attacks. + +## Identity Management + +BigchainDB combines the best of blockchains and databases to provide a secure and scalable solution for managing identities. + +## BigchainDB Transactions + +Creating a BigchainDB transaction is like filling out a form with clear instructions. BigchainDB drivers ensure you follow those instructions to create a valid transaction. \ No newline at end of file diff --git a/.ci/documention/Workflow.md b/.ci/documention/Workflow.md new file mode 100644 index 00000000..145915e2 --- /dev/null +++ b/.ci/documention/Workflow.md @@ -0,0 +1,45 @@ +# Workflow + +![Alt text](./pictures/pic1.png) + + + +## Clients + +Digital Participants: Clients are the digital participants in the BigchainDB network. They're like the people who connect to a digital gathering. + +## Nodes + +Network Components: Nodes serve as essential components in the BigchainDB network, much like the various parts that make up a computer. + +### Validating Nodes + +Verification Enforcers: Validating nodes act as verification enforcers. They ensure transactions meet BigchainDB's rules before accepting them, similar to security personnel checking IDs at a venue. + +### Non-validating Nodes + +Data Replicators: Non-validating nodes replicate data, similar to creating backup copies to ensure information is always available. + +## Transaction Propagation + +Information Flow: Transaction propagation is the way information moves within the network, like how news spreads among friends in a social circle. + +## Consensus Mechanism + +Shared Decision-Making: BigchainDB's consensus mechanism involves shared decision-making, like friends discussing and agreeing on a plan before moving forward. + +## Database Storage + +Information Storage: Data in BigchainDB is stored systematically, similar to organizing a library catalog. + +## Decentralization and Immutability + +Shared Trust and Protection: BigchainDB provides shared trust and protection, like a community coming together to safeguard something important. + +## Smart Contracts + +Automated Actions: Smart contracts automate actions based on predefined conditions, much like a timer turning on lights when it gets dark. + +## Data Querying + +Information Requests: Clients can request information from the BigchainDB database, just as you might ask for directions when exploring a new place. \ No newline at end of file diff --git a/.ci/documention/pictures/pic1.png b/.ci/documention/pictures/pic1.png new file mode 100644 index 0000000000000000000000000000000000000000..b49cd101493455e8cb7216086e72e36ebb4c31b9 GIT binary patch literal 15257 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