======= 2.2.2.3.4 Software ======= [[dido:public:ra:1.2_views:2_tech_views:2-nodenet:3_nodearch| return to Node Architecture ]] By their very nature, DIDOs are run on distributed, decentralized computers that require software to operate. The DIDO software itself can be classified as ancillary data and therefore can be distributed just like data to each DIDO [[dido:public:ra:xapend:xapend.a_glossary:n:node|node]]. The DIDO software could include [[dido:public:ra:xapend:xapend.a_glossary:s:smart_contract]], [[dido:public:ra:xapend:xapend.a_glossary:d:dapp]], scripts, containers, and DIDO [[dido:public:ra:xapend:xapend.a_glossary:c:cli| command line interface (CLI)]] commands. Smart contracts are programs actually stored on the [[dido:public:ra:xapend:xapend.a_glossary:b:blockchain|blockchain]], and "triggered" to execute when a set of conditions are met. dApps are [[dido:public:ra:xapend:xapend.a_glossary:a:application|applications]] that don't reside on the blockchain but interact with the blockchain. dApps are used to communicate with smart contacts, and consequently with blockchain. In other words, dApps can be considered as “blockchain-enabled” application, and smart contracts provide easy access the blockchain. This division of responsibilities is similar to the traditional separation used in [[dido:public:ra:xapend:xapend.a_glossary:w:webapp]] between the user-front-end (i.e., [[dido:public:ra:xapend:xapend.a_glossary:c:client]]) and the backed (i.e., [[dido:public:ra:xapend:xapend.a_glossary:s:server]]). Contract development is concerned with managing agreements or transactions. There are many non-functional benefits of dApps such as: * [[dido:public:ra:1.4_req:2_nonfunc:20_maintainability | Maintainability ]] * [[dido:public:ra:1.4_req:2_nonfunc:10_portability | Portability]] * [[dido:public:ra:1.4_req:2_nonfunc:16_scalability | Scalability ]] * [[dido:public:ra:1.4_req:2_nonfunc:05_interoperability | Interoperability]]
{{ :dido:public:ra:1.2_views:2_tech_views:2-nodenet:3_nodearch:screen_shot_2021-05-24_at_4.13.19_pm.png?400 |}} The Relationship Between the dApp, the Smart Contract and the blockchain
* **Note:** Not only is the data deployed on the blockchain, the smart contract itself is deployed on the blockchain. Therefore, before the Smart Contract can be used, it must be deployed to the blockchain. With slight modification, the dApp could interact with any system regardless of it is a [[dido:public:ra:xapend:xapend.a_glossary:d:distsystem|distributed system]] or not as long as the [[dido:public:ra:xapend:xapend.a_glossary:i:interface|interface]] remains the same. /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~