Developers: now is the best time to learn web3, but it can be overwhelming. Here's some tips to get started.
A thread ๐งต
Don't worry if not everything is 100% web3 at the beginning. Build something, you can always make it more web3 later.
Build the frontend in a language you already know, you can interact with (deploy, call, read) smart contracts and the blockchain in almost any language.
Smart contracts are essentially a set of lambdas/functions, with the bonus that any code that updates state, does so in a transaction safe way. Each smart contract has its own state/data that these functions can update. Anyone can view a contracts state.
You can add any write permissions you like to your smart contract using code, by simply checking the account key that is calling the function, and then using code to decide whether that account is allowed.
An account on the blockchain is a kind of identity, but you don't have to be limited to one (similar to how you can have multiple accounts on Twitter). Each account has a private key, that is used to sign transactions to prove they are legit. Never share your private key.
You can interact with smart contracts in any language, but to create your own you will need to learn either solidity (similar to JS) or rust. Don't worry, smart contract code is usually only a small part of your dapp, and the language is easy to pick up.
It's actually best practice to keep your contract code short and concise, as the more code, the more open to vulnerabilities it is.
Remember, anyone can read your smart contract, and people actively look to exploit them.
For solidity, consider using @0xPolygon instead of @ethereum for your first project, it's 100% compatible but with lower fees. For rust, try @Polkadot.
@openzeppelin can help reduce the boilerplate for your solidity smart contracts. It's a library you can import that handles lots of common use cases (e.g. ERC-20 tokens, NFTs, permissions).
There are a bunch of other developer tools to help with developing your smart contracts locally on your machine - here are two great options:
@HardhatHQ - hardhat.org/
Foundry - github.com/foundry-rs/foundry -
For live, use @AlchemyPlatform or @POKTnetwork for your connection to the blockchain. Don't try and host your own node.
Use @ipfs + @Filecoin or @arweaveteam for web3 file/data storage (e.g. where you would normally use AWS S3)
Use @graphprotocol if you need to query data from the blockchain at speed (especially if that data is historic).
To deploy your smart contract, you need to buy your blockchain's currency, and have access to the public and private key to the account that you deposit to.
Avoid buying from Coinbase, as that will mean you have to pay twice (once to buy, and again to transfer to a wallet).
If you want to understand more of the core concepts of the blockchain and different protocols, then I recommend this YouTube channel - youtube.com/c/Finematics