Looking for clarification: Smart Contract vs SDK relevence to Dapp


I’m working on a decentralized app. I’m familiar with software, but anything crypto or decentralized is new to me.

My understanding is that a decentralized app deploys smart contracts through the SDK, and can provide wallet/oracle/other information to the smart contract through SDK tools.

Whats the general role of an SDK and smart contract when it comes to making a dApp?
Differences in uses? Are both always required?

Im certainly open to any information. Thank you.

1 Like

how about have a look www.aeasy.io

a SDK provides the functionality to interact/communicate with the blockchain in an easy way. you don’t necessarily rely on a SDK to interact with the blockchain. you could also write your own code to do so but why would you do that if the SDK already provides all the functionality you need?

a smart contract is a separate piece of software. you can make use of the SDK to deploy a smart contract to the blockchain or to call functions of an existing smart contract that is already deployed on the blockchain.

a “dApp” is more like a usual web-application. but instead of authenticating against a central server you make use of your wallet to login and enable interaction. also a dApp should provide user-friendly interfaces to call smart contracts on the blockchain. therefore a dApp again makes use of the SDK to provide this functionality.

hope this explanation is what you were searching for :slight_smile:

1 Like

Exactly what I needed, thank you.

Should a dApp generally leave the smart contract deployed on the blockchain, or should redeploy it every time?

Just wondering if there is a use case for either, it seems sensible to leave it deployed, especially if its functionality multiple users would regularly access.

well why would you need to have a smart contract deployed on the chain if it shouldn’t be used by multiple parties?

also there is currently no way to “undeploy” the smart contract. in ethereum there is a self-destruct method which isn’t available in aeternity. I think there is a concept which would allow to delete the contract in the future but I think that’s currently not possible.

in case you need to make changes to your smart contract you just deploy a new version of it which references/contains the same state as the old smart contract. you just need to update the contract-address to use in your dApp then


Thank you so much for your patience and assistance, you’ve been very helpful.