You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: dapps.asciidoc
+11-11
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,11 @@ Unlike a traditional application, a Decentralized Application (DApp) does not be
12
12
13
13
A typical DApp stack would consist of Front-end, Back-end and Data Storage. There are many advantages to creating a DApp that a typical centralized architecture could not provide:
14
14
15
-
1) Resiliency: Having the businesslogic written on a smart contract means that a DApp backend will be fully distributed and managed on the Blockchain. Unlike deploying an application on a centralized server, a DApp will have no downtime and will continue to persist as long as the Blockchain is still operating.
15
+
1) Resiliency: Having the business-logic written on a smart contract means that a DApp backend will be fully distributed and managed on the Blockchain. Unlike deploying an application on a centralized server, a DApp will have no downtime and will continue to persist as long as the Blockchain is still operating.
16
16
17
-
2) Transparency: The open source nature of a DApp allows anybody to fork the code and have the same application running on the Blockchain. On the same note, any interaction with the Blockchain will be stored forever and anyone with a copy of the Blockchain can gain access to it. Notice that it may not be possible to de-compile the bytecodes into source and fully understand the contract's code. Developers who seek to offer full transparency about the contract behavior must publish the source code for users to read, compile and verify.
17
+
2) Transparency: The open source nature of a DApp allows anyone to fork the code and have the same application running on the Blockchain. On the same note, any interaction with the Blockchain will be stored forever and anyone with a copy of the Blockchain can gain access to it. It’s worth noting that it may not be possible to de-compile the bytecodes into source and fully understand the contract's code. Developers who seek to offer full transparency about the contract behavior must publish the source code for users to read, compile and verify.
18
18
19
-
3) Censorship Resistance: As long as a user has access to an Ethereum node, he/she will always be able to interact with a DApp without interference from a centralized control. No service provider or even the owner of the smart contract could alter the code once it is deployed on the network.
19
+
3) Censorship Resistance: As long as a user has access to an Ethereum node, the user will always be able to interact with a DApp without interference from a centralized control. No service provider, or even the owner of the smart contract, could alter the code once it is deployed on the network.
20
20
21
21
[[components_of_a_dapp_sec]]
22
22
=== Components of a DApp
@@ -28,18 +28,18 @@ TODO: add paragraph
28
28
[[blockchain_smart_contracts_sec]]
29
29
==== Blockchain (Smart Contracts)
30
30
31
-
The smart contract is used to store the business logic, the state and the computation of your decentralized application, think of it as a serverside component in a regular application.
31
+
The smart contract is used to store the business logic, the state and the computation of your decentralized application; think of a smart contract as a server-side component in a regular application.
32
32
33
-
One advantage of deploying serverside logic on Ethereum smart contracts is that you could build a more complex architecture where a smart contract could read and write data off one another. After deploying your smart contract, your business logic could well be used by many other developers in the future, without ever requiring you to manage and maintain the code.
33
+
One advantage of deploying server-side logic on Ethereum smart contracts is that you could build a more complex architecture in which a smart contract could read and write data off one another. After deploying your smart contract, your business logic could well be used by many other developers in the future, without ever requiring you to manage and maintain the code.
34
34
35
35
One major problem of running smart contract as core business logic functionality is the inability to change the code once it is deployed. Furthermore a really large monolithic smart contract may cost a lot of gas to deploy and function. Therefore some applications may choose to have off chain computation and external data source. Keep in mind however, that having core business logic of the DApp be dependent on external data or server would mean your users will have to trust these externalities.
36
36
37
37
[[front_end_web_ui_cec]]
38
38
==== Front end (Web User Interface (UI))
39
39
40
-
Unlike the business logic of the DApp that requires a developer to understand EVM and new languages such as Solidity, the client side interface of a DApp uses basic web front end technologies (HTML, CSS, JavaScript). This allows a regular web developer to utilize tools, libraries and frameworks they are used to. Interactions with the DApp such as signing messages, sending transactions and key management are often done through the browser itself using tools such as Mist browser or the Metamask browser extension.
40
+
Unlike the business logic of the DApp that requires a developer to understand EVM and new languages such as Solidity, the client side interface of a DApp uses basic web front end technologies (HTML, CSS, JavaScript). This allows a traditional web developer to utilize the tools, libraries and frameworks they are familiar with using on a regular basis. Interactions with the DApp such as signing messages, sending transactions and key management are often conducted through the browser itself using tools such as Mist browser or the Metamask browser extension.
41
41
42
-
Although it is possible to create a mobile DApp as well, currently there are no best practices to create mobile DApps front-ends due to the lack of mobile clients that can serve as a light client with key management functionality.
42
+
Although it is possible to create a mobile DApp as well, currently there are no best practices to create mobile DApp front-ends due to the lack of mobile clients that can serve as a light client with key management functionality.
43
43
44
44
[[data_storage_sec]]
45
45
==== Data storage
@@ -49,7 +49,7 @@ Due to high gas costs, smart contracts are currently not suited to store large a
49
49
The hashes of the content are often stored as bytes within the smart contract, using key value mapping. The asset would then be retrieved through your front end applications calling on the smart contract for urls of each asset.
There are many different Development frameworks and libraries written in many languages which allows for better Developer experience in creating and deploying a DApp.
112
+
There are many different Development frameworks and libraries written in many languages which allows for better developer experience in creating and deploying a DApp.
113
113
114
114
[[truffle_sec]]
115
115
==== Truffle
@@ -147,15 +147,15 @@ With Embark you can:
147
147
* Easily manage complex systems of interdependent contracts.
148
148
149
149
** Decentralized storage (IPFS)
150
-
* Easily store & retrieve data on the DApp through EmbarkJS. Including uploading and retrieving files.
150
+
* Easily store & retrieve data on the DApp through EmbarkJS, including uploading and retrieving files.
151
151
* Deploy the full application to IPFS or Swarm.
152
152
153
153
154
154
** Decentralized Communication (Whisper, Orbit)
155
155
* Easily send/receive messages through channels in P2P through Whisper or Orbit.
156
156
157
157
** Web Technologies
158
-
* Integrate with any web technology including React, Foundation, etc..
158
+
* Integrate with any web technology including React, Foundation, etc.
159
159
* Use any build pipeline or tool you wish, including grunt, gulp and webpack.
160
160
161
161
Getting started & documentation; https://embark.readthedocs.io
0 commit comments