I’m writing a Smart Contract in PyTeal, so an approval program and a clear program.
After I added some functions, I got this error: invalid : approval program too long. max len 1024 bytes, that let me think approval program couldn’t be longer. For me that’s a problem because I have to add so many lines of code.
Is there a solution to avoid this problem?
EDIT: to be clearer: my code is in approval_program function and I defined some functions out of approval_program.
In approval_program I call these function that I defined out of it.
Situation is even worse: application “gas” cost can be only 700 unit, in contract with passive contract “gas” of 20000.
Separate logic as far as possible: for state manipulation: app, for asset sending logic: contract. And the contract can be enabled/disabled by the app, and vice versa, using transaction groups. See the following great article: AlgoRealm, a NFT Royalty Game | Algorand Developer Portal
I’m not very practical with contracts and apps in this platform.
I’m using a program like this: PyTeal Examples — PyTeal documentation, so the only thing I’m using is an application defined by approval program. I can’t understand the difference between application and contract.
The real question is: my approval_program currently is 30KB and I have to write so many lines more. Is there a way to implement it in-chain? Or Algorand don’t support complex logics like this?
Please try to read the artictle first I referred to.
Yes, there is a way to make applications cooperate, by sharing variables, buit I haven’t tried that yet.
Now is the time to make a framework, to make your example working.
Btw, how could you write 30 K worth of rules? (in TEAL, I think) What kind of rules are that? I am courious…
Actually my work is bachelor’s degree project, in which I try to implement an authentication system, based on biometrics, in-chain. So I tried to manage negative or float values, to avoid using of loops (repeating body n times) and so on.
My logic is (I think) too complex to run in-chain (this is what I want discover).
How are you planning to keep the biometrics secret and to prevent a user to re-use submitted biometrics for authentication?
Note that everything on-chain is completely public to everybody.
In particular, if a user submits their biometrics to a smart contract, they will be displayed to all users.
You might be able to use SNARK / zero-knowledge for that purpose but current limitations on TEAL do not allow for verification of a SNARK.
I know everything involved in smart contract is public, but I don’t pass the biometrics in clear, so I don’t think there is some problem.
The real problem is to know if it is possible to develop a complex logic using smart contract, considering all these problem.
I noticed one thing: my compiled file with the approval program is 1 KB dimension until I don’t add this call: x = calculate_and_check_negative5(negative_t, t, h)
that referred to this: