# Distributed Ledger Technology Review and Decentralized Applications Development Guidelines
## 5 Discussion and Development Guidelines
### Decentralization of Design  
The main steps required for decentralizing a centralized system by designing decentralized applications are detailed below discussing their role and specific technological requirements (see Figure 8). \begin{table}
\begin{tabular}{c c c c c c} \hline \hline  & **Implementation** & **Deposit Mechanism** & **Withdraw Mechanism** & **Trusted Enities** & **Chain** \\  & **Level** & & & & & **Independence** \\ \hline Central Exchange & Escrow & TX to a central authority & TX to a central authority & Central Authority & Yes \\ MultiSig & Escrow & TX to a multi-signature & TX to a multi-signature & TX to a multi-signature & N Delegates & Yes \\ Federation [138] & Federation & federation & federation & & \\ Entangled Chain & Protocol Layer & SPV Proof from the main chain & - & Dependent on the withdraw & Mining rate restriction \\
[140] & Network \& & SPV Proof from the main chain & SPV Proof from the sidechain & Sidechain miners & Yes \\
[121, 122] & Protocol Layer & + proof of block validity & + proof of block validity & Sidechain miners & Yes \\  & Network \& & SPV Proof from the main chain & SPV Proof from the sidechain & Sidechain miners & Yes \\ Drivechain [142] & Protocol Layer & + proof of block validity & + miners votes & & \\  & & & SPV Proof from the sidechain & & \\ Hybrid Models & Network \& & SPV Proof from the main chain & + proof of block validity & Sidechain miners + & Yes \\
[123] & Protocol Layer & + proof of block validity & + miners votes & Notaries & \\  & & & + multi-signature notaries & & \\ Plasma [62] & Network \& & & Direct withdraw & Central Authority, N & Yes \\  & Protocol Layer & & + Fault Proofs & Delegates & \\ Lightning Network, & Scalability Tier & Solution & Atomic Swap & Atomic Swap & None & Yes \\ \hline \hline \end{tabular}
\end{table} 
Table 8: Ledger to Ledger interoperability approaches. * _Understanding the existing system design and business model._ An exhaustive understanding of the business is required to design a decentralized application. Good knowledge of the business model and rules that govern the domain, as well as of the architecture used in the centralized implementation, are prerequisites for starting the sequence of steps required to achieve a consistent and well-documented decentralized solution. One needs to identify the functional and non-functional requirements that need to be addressed for ensuring the completeness of the design. Most of the time, a complete and sound list of requirements can be obtained by holding several interview sessions with the future stakeholders of the system. * _Identify potential challenges for each tier._ Once the functional and non-functional requirements are clearly defined, the challenges that can arise once mapping the model on a decentralized solution can already be identified. We classify the challenges based on the tiers identified at the level of architecture. Protocol and Network Tier challenges: What is the targeted network level, public or private? Does the system need to hide the transactional information? Is selective disclosure a requirement of the business? Etc. Scalability Tier challenges: Are the scalability requirements higher than what the Protocol and Network Tier solutions can offer? Are the scalability requirements targeting storage, throughput, or computation? * _Determine potential tradeoffs._ Depending on the set of challenges identified, there might be situations where not all the requirements can be successfully ensured by the DLT solutions. In such situations, a tradeoff needs to be made. Most of the time, the application scalability may be affected while incorporating the reliability, immutability, and consensus properties ensured by a DLT. Furthermore, by outsourcing components of the system to the Scalability Tier, another tradeoff regarding the actual decentralization must be done since most of the Scalability Tier solution requires a trusted party to oversee the outsourced component.