IneryDB Design Goals
Last updated
Last updated
Full Decentralization - IneryDB uses Inery blockchain for its blockchain platform. Consequence of this is that in the background there is a consensus protocol that has two layers consisting of Delegated Proof of Stake and asynchronous Byzantine Fault Tolerance. This provides security from malicious intents, assuring that all transactions on the blockchain are valid. Since the database itself is contained through structures defined in value contracts, there is no possibility for hacking to occur since nothing is stored both locally or server-side, but it is contained in the storage of the blockchain that uses MEM[1] from all of its nodes that users stake in the form of tokens. All of the nodes are operated and owned by a different entity, assuring full decentralization with no single owner, point of control or failure. Legal issues with one node don’t affect other nodes since the goal of Inery, thus with IneryDB also, is such that nodes can and should be located in many countries without restraint. A node can fail, and the others will continue to operate, assuring decentralization and the impossibility of database failure since data has minimum replication across the whole network.
Database Owner Control - With implementation of value contracts, access to databases are allowed only to the owner (or owners) of the value contract where the database and actions upon it are defined. Additional users that can have certain permissions to manipulate that data can be defined by custom permissions. All this is managed through an authorization managed by a set of private key holders that can push actions in the value contract. Blockchain manages and checks every transaction to make sure it is not a duplicate transaction and assures that an output of the resources used for the executed action is not already spent, preventing double-spending of resources. Parallel Performance with High Transaction Rate - IneryDB implementation in application and software development is paramount in its usage. Inery blockchain supporting parallel processing enables high performance and continuous scalability for secure development. This high performance is primarily achieved due to SDPOS (Self-delegated Proof of Stake) and aBFT consensus algorithms. This scalability will enable developers to have their applications on other chain versions that will be interconnected between Themselves. Due to high-speed nature mentioned consensus algorithms, higher transaction rates are achieved that can reach up to 4000 per second, with blocks being made every half a second. This assures an almost instantaneous connection with blockchain through IneryDB, thus reducing the performance impact on software and databases that use IneryDB protocol as a solution. Indexing and Querying Structured Data - IneryDB is a protocol for communication with Inery blockchain as mentioned. Through it, the client is allowed to intuitively structure data for all purposes intended while providing CRUD functionality and much more. IneryDB allows for all common queries(Advanced Filter/Sort, Select, Parameter, Summary, AutoLookup and Action Queries), and in development, it provides the ability for creating and manipulating non-relational databases. Here, it comes with a flexibility since the developer using IneryDB can implement its usage and create a logic that uses its features to create a relational database structure.
Sybil Tolerance - With blockchain networks, there is always a danger when allowing anyone to add their node to the network, and this brings certain concerns that when someone adds so many nodes, they can effectively control the network. This Sybil attack[2] is managed through a huge amount of producer pool and staking requirement of our consensus algorithm, thus making it prohibitively expensive. Portability and accessibility - IneryDB is a protocol that is meant to be used in enterprise software development. Support and applicability of IneryDB is one of the main goals, and its integration into main technologies practices simplicity and usability in all cases of developing database management. This integration includes major programming languages and frameworks like C++, node.JS, PHP, Java, C# etc. Besides these modules, IneryDB will have its own graphical interface representation of database and software that will be usable in desktop, mobile and web environments. The goal is to make IneryDB accessible as much as possible to any client or enterprise while providing all the necessary functionalities and information. This has a full GUI which shall have all the queries, database creation and representation and additional features in a form of available storage, and much more. In the future, IneryDB has sights on complete cross-platform portability, allowing users to import non-relational databases from different solutions into its own database system.