Hey there,
My bachelor thesis will be related to Algorand and I need to develop a banking application, for people who are interested here is my topic description:
Some questions came up while doing my research and I’d be happy if someone answered all of them. Thanks in advance!
1Q: In this video Algorand Blockchain Core Protocol Overview - YouTube at the 3:30 mark it is said that if a node receives multiple block proposals, the node will compare the vrf proof of each and keep the one with the lowest proof/hash. What does this mean (lowest hash/proof) and what does it represent? Does this signify who won the “lottery” first?
2Q: Here The Algorand Blockchain Explained regarding the recovery mode, where a new creator to build a block must be selected if the previous had fraudulent transactions in his block, does the process start from the beginning or do you take just the second node with the second “lowest vrf proof” to propose?
3Q: Is TEAL still not Turing-complete or this was in the past?
4Q: If ABI was so important for the SCs (smart contract) to know how to properly communicate with each other, then how did things function before the ABI? Did you have to notify others every time you create a SC about its existence, or everyone who wants to communicate with your SC had to see first its internal structure?
5Q: ARCs: Algorand Requests for Comments, with Ethereum it is called ERC. What is the meaning of the name? It is not self-explanatory in my opinion, that’s why I am curious… This just represents standards, right? For example ARC4 is the standard that explains the ABI
6Q: What are dynamic and short-lived smart contracts on Algorand? Can you give me some examples? What is a scalable and extendable smart contract?
7Q: Can we use the “note” field in Inner-transactions?
8Q: A clear state call allows us to remove any local storage connected with the smart contract, why do we need such functionality? I mean if the local state of this account is important for the smart contract and suddenly this account clears its state and relationship with the SC, won’t that cause some problems? If close-out is saying that accounts can’t remove the local state, there is a reason, and doing the opposite should have some consequences, right?
9Q: I know we have a maximum of 16 K-V pairs per opted-in account? If I write before deployment:
local byteslices = 7
local integers = 8
Does this mean I have permission to write up to 7 byteslices and 8 integers per opt-in account?
How many k-v pairs can an account store? If it is opted-in to 200 SCs for example, then the max is 3200 local k-v pairs, but does this go to infinity, are there any limits? Also does the same apply to the smart contract? Can it have an infinite number of accounts opted-in?
10Q: Can a stand-alone account see its local states connected with the different SC it has opted-in to?
11Q: Global storage is stored in the creator account, so that account is responsible for the global storage minimum balance? When an account opt-in, it is responsible for the minimum balance of local storage? So if the creator is responsible for the min balance of the smart contract that he creates, what happens if the account runs out of funds? Will the SC then be still active, or to activate the SC, the min balance should be restored?
12Q: If the smart contract is deleted, are the global state and local state associated with the SC also deleted? How exactly do we delete something from the blockchain, weren’t all records immutable? Why is an “app delete” function possible at all then?
13Q: Smart contract details - Algorand Developer Portal I couldn’t understand exactly how the whole reading of the scratch space functions. We have a group of transactions that we send from one contract to another and also we write something in the scratch space, then the contract we are calling can read the scratch space? Is this the only way that Algorand allows smart contracts to send data to each other, is this the equivalent to data payload in Ethereum? How about the note field in a transaction? Can it be used to control how the called smart contract proceeds with its logic?
14Q: Can it be said that the account array and application array are never empty because on Int(0) we have the sender of the transaction and the current application id respectively?
15Q: Can we mimic/imitate Inheritance behavior in Algorand? I know that traditional inheritance is not possible, but how can we replace it?
16Q: Are there any examples of dApps that implement the proxy pattern and self upgradable smart contracts that I can look into, I will need this for my dApp, can you please send me some links?
I know that the questions are a lot, but I will be grateful to anyone that took the time to respond to all of them! Please send me links to any documentation or demos that can help answer my questions. It is not needed to even explain it to me in detail, just send me a link where there is information! Thanks in advance again!