1. Non Fungible and Fungible resources are known first hand by the engine and #scrypto. This is HUGE. You dont need to design behaviors of mint, burn, transfer. They are NOT contracts. These are RESOURCES. This is TRUE native asset first #smartcontract
2. Authorization is built in as a concept and comes in 2 forms. These are simply Fungible/Non Fungible resources. These resources can be used as a form of authorization. In #scrypto, we call them a Proof. Why do we need them? Direct mapping of address => some data is UNSAFE
3. Authorization also lets you fine grain control of resources. #Mint, #burn, restrict #withdraws and #deposits can be owned by another resource that a component or account holds.
4. Authorization also lets you protected actions. In that a certain #resource must be available in order proceed with the action. Again, direct mapping of #addresses is a horrible outdated design
5. #Transaction manifests lets you seamlessly compose several actions as one transaction. Learning transaction manifests will allow one to do really complex actions in one go. This is a huge improvement to user experiences. Ever kept on signing transactions for basic actions? Yep
6. Business logic focused #programming. Knowing the above, I truly believe #scrypto has all the tools for allowing #softwaredevelopers to focus on their business logic rather than some low level abstraction over their #crypto network
1. For authorization, its okay to use one badge for multiple components. You can think of authorization as a login to a service/platform you have in real life. Unless you have another whole service, just use one badge!
2. When creating protected methods, its also okay to use admin rights for components to store. This gives the flexibility that the component is able to call other component methods as well as an admin user (should you want to ofc)