You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Issue created by jeff-aion (on Thursday May 10, 2018 at 16:03 GMT)
One of the topics discussed in #4 and #6 is that of heap limit nondeterminism.
We need an answer to this problem since it is otherwise possible to construct a contract which would only work on some nodes, based on heap geometries they have chosen. This problem would be further exasperated as concurrent contract execution is enabled.
The core of the problem is that the real limit of memory to a Java process is based on live objects, not allocated objects. This value cannot be truly known at any point.
Therefore, we must impose some restriction which can be known. A possibility is the abstract cost of allocates issued directly from within the contract code. This is something a contract writer could reason about, would be a deterministic function of the execution path taken, could be measured along the same lines of much of our bytecode-level instrumentation, and would be isolated from implementation details of the JVM or our runtime.
The text was updated successfully, but these errors were encountered:
Comment by jeff-aion (on Thursday Oct 11, 2018 at 15:56 GMT)
Moving this out to TestNet milestone since this might still be worth considering but we don't yet have a good stress test. I suspect that we won't pursue this but we should at least document on thoughts on the matter.
Issue created by jeff-aion (on Thursday May 10, 2018 at 16:03 GMT)
One of the topics discussed in #4 and #6 is that of heap limit nondeterminism.
We need an answer to this problem since it is otherwise possible to construct a contract which would only work on some nodes, based on heap geometries they have chosen. This problem would be further exasperated as concurrent contract execution is enabled.
The core of the problem is that the real limit of memory to a Java process is based on live objects, not allocated objects. This value cannot be truly known at any point.
Therefore, we must impose some restriction which can be known. A possibility is the abstract cost of allocates issued directly from within the contract code. This is something a contract writer could reason about, would be a deterministic function of the execution path taken, could be measured along the same lines of much of our bytecode-level instrumentation, and would be isolated from implementation details of the JVM or our runtime.
The text was updated successfully, but these errors were encountered: