How to call a non-public variable within a contract? #3782
Answered
by
jochem-brouwer
andreachello
asked this question in
Q&A
-
This example async function getGreeting(vm: VM, contractAddress: Address, caller: Address) {
const sigHash = new Interface(['function greet()']).getSighash('greet')
const greetResult = await vm.evm.runCall({
to: contractAddress,
caller: caller,
origin: caller, // The tx.origin is also the caller here
data: hexToBytes(sigHash),
block,
})
if (greetResult.execResult.exceptionError) {
throw greetResult.execResult.exceptionError
}
const results = AbiCoder.decode(['string'], greetResult.execResult.returnValue)
return results[0]
} doesn't work if instead of using a function i try to put in a variable name. How can I call a variable? |
Beta Was this translation helpful? Give feedback.
Answered by
jochem-brouwer
Nov 2, 2024
Replies: 1 comment 2 replies
-
I don't understand what you mean by "putting a variable name", could you post an example or description what you are trying to do? 😄 |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
No, you cannot do that via
evm.runCall
. It is not possible to read "private" variables within the EVM. But, it is indeed possible outside the EVM viagetStorageAt
RPC calls.