I am trying to find a way to pass a human-meaningful message when rejecting an application call from a smart contract. Is there one?
Rejecting doesn’t take arguments, and the application logs are not surfaced in the algod exception as far as I can tell. (though I’m “looking” through py-algorand-sdk" - are they?)
This leaves us the option of matching error messages like
logic eval error: assert failed pc=656. Details: pc=656, opcodes=pushbytes 0x0020 // 0x0020
where the pc argument will change if the smart contract changes in any small but meaningful way.
For example if you modify the vrf-oracle smart contract, the expected daemon error messages no longer line up and the service exits
Ideally we should even have options between (pyTEAL) Log(Bytes("Failed to get randomness")) ending up in the error as last_log, as well as Reject(Int(91)) or Reject(Bytes("Failed to get randomness")) accepting an argument to propagate.

