-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add simulateTransaction endpoint #1610
Conversation
chain/dependencies.go
Outdated
// If any keys are touched during [Execute] while running in [OnchainTransactionExecution] mode that | ||
// are not specified in [StateKeys], the transaction will revert and the max fee will be charged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm this comment was actually not true before. If a state key is read that was not specified, it's up to the action to decide whether to propagate it (usually should).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we revert this if we're able to remove OnchainTransactionExecution
mode?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done.
@@ -101,7 +101,7 @@ func (j *JSONRPCServer) simulate(ctx context.Context, t actions.Call, actor code | |||
if err != nil { | |||
return nil, 0, err | |||
} | |||
recorder := storage.NewRecorder(currentState) | |||
recorder := state.NewRecorder(currentState) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we remove this from vmwithcontracts/
since it can use the general purpose API after this PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
func (j *JSONRPCServer) SimulateTransaction( | ||
req *http.Request, | ||
args *SimulateTransactionArgs, | ||
reply *SimulateTransactionReply, | ||
) error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we start with simulating a single action and providing the additional arguments as needed (actor) ?
In our case, transactions include additional data that we don't need to require from the user. For example, with this API you can only simulate an action from a given address if you can generate a signature from that address.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
genesis/rules.go
Outdated
@@ -152,6 +152,10 @@ func (*Rules) FetchCustom(string) (any, bool) { | |||
return nil, false | |||
} | |||
|
|||
func (*Rules) GetTransactionExecutionMode() chain.TransactionExecutionMode { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason that we need to add this mode to Rules
rather than just tracking what state keys were touched by executing an action?
If we just wrap the current view produced by the VM and run Execute
against it, I don't think that we should need to add key tracking within vmwithcontracts
at all and can remove this extra function on Rules
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done.
api/jsonrpc/server.go
Outdated
type SimulateTransactionArgs struct { | ||
Tx []byte `json:"tx"` | ||
} | ||
|
||
type SimulatedAction struct { | ||
Output []byte `json:"output_b64"` | ||
Error *string `json:"error"` | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we use codec.Bytes
in API responses when passing []byte
values to provide a reasonable JSON output?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
type SimulateTransactionReply struct { | ||
SimulatedActions []SimulatedAction `json:"simulatedActions"` | ||
ReadKeys []string `json:"readKeys"` | ||
WriteKeys []string `json:"writeKeys"` | ||
AllocateKeys []string `json:"allocKeys"` | ||
BlockHeight uint64 `json:"blockheight"` | ||
Error string `json:"error"` | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we reduce the state key fields here down to just state.Keys
and add support for JSON marshal/unmarshal directly to this type?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer to remove BlockHeight
and Error
(in favor of returning the error directly and pushing to the client to handle it) unless there's a clear need to include them in the response.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
if reply == nil { | ||
return errors.New("SimulateTransaction was called with a nil reply object") | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be provided by the server, so we can remove this check and follow the style in the rest of the APIs of not checking if the reply value is nil.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/client.go
Outdated
type SimulatedActionResponse struct { | ||
Output []byte | ||
Error error | ||
} | ||
|
||
type SimulateTransactionResponse struct { | ||
SimulatedActions []SimulatedActionResponse | ||
ReadKeys []string | ||
WriteKeys []string | ||
AllocateKeys []string | ||
BlockHeight uint64 | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we re-use the types specified in server.go
as we do for the existing server/client implementations?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
…ersdk into tsachi/simulate_transaction
|
||
// Marshal encodes a type as bytes. | ||
func (r *Result) Marshal(p *codec.Packer) { | ||
p.PackBytes(r.Value) | ||
p.PackUint64(r.ConsumedFuel) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should use the output parser
OutputParser.Register(&actions.Result{}, nil), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/client.go
Outdated
stateKeys := state.Keys{} | ||
for _, entry := range resp.StateKeys { | ||
hexBytes, err := hex.DecodeString(entry.HexKey) | ||
if err != nil { | ||
return nil, nil, err | ||
} | ||
|
||
stateKeys.Add(string(hexBytes), state.Permissions(entry.Permissions)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rather than adding special handling here - could we implement MarshalJSON
and UnmarshalJSON
on state.Keys
so that we can use the type directly in the response?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
if reply == nil { | ||
return errors.New("SimulateAction was called with a nil reply object") | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we remove this check? This is populated by the server, so there should be no need to check for a nil value here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
} | ||
|
||
actionRegistry := j.vm.ActionRegistry() | ||
rtx := codec.NewReader(args.Action, consts.NetworkSizeLimit) // will likely be much smaller than this |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: let's use len(args.Action)
since we'll never read longer than the actual bytes provided
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
} | ||
|
||
actionRegistry := j.vm.ActionRegistry() | ||
rtx := codec.NewReader(args.Action, consts.NetworkSizeLimit) // will likely be much smaller than this |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is rtx
for read transaction? Could we rename this since it's reading in action bytes now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
if len(actions) != 1 { | ||
return fmt.Errorf("simulateAction expects a single action, %d found", len(actions)) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we remove this check and support handling multiple actions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
for key, permission := range recorder.GetStateKeys() { | ||
reply.StateKeys = append(reply.StateKeys, SimulateStateKey{HexKey: hex.EncodeToString([]byte(key)), Permissions: byte(permission)}) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To support multiple actions, could we return a StateKeys
output per action?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure. done
api/jsonrpc/server.go
Outdated
return err | ||
} | ||
} | ||
for key, permission := range recorder.GetStateKeys() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we also remove the special reply handling by implementing JSON marshalling on the state.Keys
type directly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
if len(actions) == 0 { | ||
return errors.New("simulateAction expects at least a single action, none found") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we move this error definition to a variable at the top of the file? Perhaps errSimulateZeroActions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
// Size is the number of bytes it takes to represent this [Action]. This is used to preallocate | ||
// memory during encoding and to charge bandwidth fees. | ||
func (r *Result) Size() int { | ||
return consts.Uint64Len + consts.Uint32Len + len(r.Value) | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we remove Size()
as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
if err != nil { | ||
return err | ||
} | ||
simulationResult, ok := simulationResultOutput.(*actions.Result) | ||
if !ok { | ||
return errors.New("returned output from SimulateActions was not actions.Result") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we move this error definition to the top of the file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
api/jsonrpc/server.go
Outdated
return err | ||
} | ||
if !actionsReader.Empty() { | ||
return errors.New("tx has extra bytes") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: can we fix the error message here and move the error definition to the top of the file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
state/recorder.go
Outdated
return &Recorder{state: db, changedValues: map[string][]byte{}, stateKeys: map[string][]byte{}, keys: Keys{}} | ||
} | ||
|
||
func (r *Recorder) checkState(ctx context.Context, key []byte) error { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to return the latest value from checkState
since we are going to read it immediately after in both Insert
and GetValue
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
state/recorder.go
Outdated
// The Recorder struct wraps an [Immutable] state object and tracks the permissions used | ||
// against the various keys. The Recorder struct implements the [Mutable] interface, allowing | ||
// it to act as a direct replacement for a database view. | ||
// The Recorder struct maintain the same semantics as tstate_view in regards to the various |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// The Recorder struct maintain the same semantics as tstate_view in regards to the various | |
// The Recorder struct maintains the same semantics as TStateView in regards to the various |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
state/recorder_test.go
Outdated
case 0: // insert into existing entry | ||
randKey := randomKey() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this inserting an existing entry if we are generating a new random key? Same question for the other cases in the fuzz test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you're right. the function is mis-named. it should have been "pickExistingKeyAtRandom".
return nil, database.ErrNotFound | ||
} | ||
|
||
func TestRecorderSideBySideFuzz(t *testing.T) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to use golang fuzzing here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's definitely doable - but would take some time to implement. Would it be ok to use it as is for now and update these to use golang fuzzer in a subsequent PR ?
return tstate.NewView(scope, storage), keys, scope, storage | ||
} | ||
|
||
func TestRecorderInnerFuzz(t *testing.T) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we use golang's existing fuzzing library if we are going to add a fuzz test?
Co-authored-by: aaronbuchwald <[email protected]> Signed-off-by: Tsachi Herman <[email protected]>
Co-authored-by: aaronbuchwald <[email protected]> Signed-off-by: Tsachi Herman <[email protected]>
Co-authored-by: aaronbuchwald <[email protected]> Signed-off-by: Tsachi Herman <[email protected]>
commit b2ad4d3 Author: Tsachi Herman <[email protected]> Date: Sun Nov 3 16:01:37 2024 -0500 support procedural test style for VM-defined workloads (#1667) Signed-off-by: Tsachi Herman <[email protected]> commit dbcc6c9 Author: Richard Pringle <[email protected]> Date: Thu Oct 31 16:42:44 2024 -0400 Update wasmtime-go (#1705) commit 1015ae1 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 31 12:47:45 2024 -0400 Remove HRP + Decimals dead code (#1703) commit 24bacf8 Author: Sam Liokumovich <[email protected]> Date: Wed Oct 30 10:31:38 2024 -0400 Action Test Reusing Store (#1700) commit 1ce6ad8 Author: Richard Pringle <[email protected]> Date: Tue Oct 29 13:23:56 2024 -0400 Don't benchmark serializing parameters (#1697) commit 1c43f7e Author: Sam Liokumovich <[email protected]> Date: Tue Oct 29 13:16:34 2024 -0400 Call Contract Benchmarks (#1696) commit 7bd1a49 Author: nathan haim <[email protected]> Date: Sat Oct 26 20:41:26 2024 +0200 state: Make state.Keys JSON human readable (#1661) Signed-off-by: nathan haim <[email protected]> commit c592a1d Author: rodrigo <[email protected]> Date: Fri Oct 25 14:02:08 2024 -0400 Add `balance` cmd to CLI (#1691) commit 7fac7fa Author: Sam Liokumovich <[email protected]> Date: Fri Oct 25 13:28:52 2024 -0400 Default Contract Manager Implementation (#1687) commit 0459bd4 Author: rodrigo <[email protected]> Date: Fri Oct 25 12:23:04 2024 -0400 Add Getter to `BalanceHandler` (#1685) commit 960b790 Author: containerman17 <[email protected]> Date: Sat Oct 26 00:14:29 2024 +0900 Universal CLI (#1662) Creates a single binary that can be used with any HyperSDK VM, as long as the VM uses standard functionality. Signed-off-by: containerman17 <[email protected]> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Aaron Buchwald <[email protected]> commit ef66271 Author: Richard Pringle <[email protected]> Date: Thu Oct 24 15:45:17 2024 -0400 Move vmwithcontracts out of examples (#1676) commit 3895ff5 Author: Richard Pringle <[email protected]> Date: Thu Oct 24 14:59:57 2024 -0400 Implement NFT example (#1684) commit 82dc621 Author: rodrigo <[email protected]> Date: Thu Oct 24 09:54:31 2024 -0400 Add back `actionID` to `StateKeys()` (#1683) commit cf6d48a Author: Richard Pringle <[email protected]> Date: Wed Oct 23 15:11:25 2024 -0400 Force test-context to be initialized with an actor (#1682) commit 1a3c670 Author: Sam Liokumovich <[email protected]> Date: Wed Oct 23 14:26:09 2024 -0400 Refactor Workload (#1668) Signed-off-by: Sam Liokumovich <[email protected]> Co-authored-by: aaronbuchwald <[email protected]> commit 403bfb3 Author: rodrigo <[email protected]> Date: Tue Oct 22 21:56:25 2024 -0400 Decouple State Manager (#1658) commit 61993f8 Author: Richard Pringle <[email protected]> Date: Mon Oct 21 14:25:25 2024 -0400 Revert "Make Morpheus build script take optional path (#1671)" (#1673) commit 87cf88a Author: aaronbuchwald <[email protected]> Date: Mon Oct 21 12:39:13 2024 -0400 Update min go version to go1.22.8 (#1672) commit 22241f5 Author: Richard Pringle <[email protected]> Date: Fri Oct 18 14:18:53 2024 -0400 Make Morpheus build script take optional path (#1671) commit 0658976 Author: Richard Pringle <[email protected]> Date: Wed Oct 16 18:37:50 2024 -0400 Move runtime tests into contracts-ci (#1666) commit e3d911a Author: Sam Liokumovich <[email protected]> Date: Sun Oct 13 17:45:32 2024 -0400 Remove global variables from spam script (#1659) commit bca7739 Author: Tsachi Herman <[email protected]> Date: Fri Oct 11 11:41:27 2024 -0400 Create SignedTransaction out of the existing Transaction (#1640) commit 6f15b2f Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 20:47:49 2024 -0400 Include Spam Config Defaults (#1657) commit b3713a1 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 20:16:23 2024 -0400 Separate Spam Broadcast Functionality (#1653) commit 182e023 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 18:19:44 2024 -0400 Decouple Spam Functionality from CLI into Throughput Package (#1636) commit b8104ac Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 14:44:08 2024 -0400 Fix incorrect naming of stateless block (#1652) commit 725a589 Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 10:12:59 2024 -0400 Use CreateActionID to give simulated actions unique actionID (#1644) commit 0a2d991 Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 09:57:25 2024 -0400 Update ActionRegistry to ActionCodec (#1650) commit 829b991 Author: containerman17 <[email protected]> Date: Thu Oct 10 22:42:19 2024 +0900 Reflect Marshaler (#1592) Signed-off-by: containerman17 <[email protected]> commit b3c991f Author: Tsachi Herman <[email protected]> Date: Thu Oct 10 09:36:21 2024 -0400 add simulateTransaction endpoint (#1610) Signed-off-by: Tsachi Herman <[email protected]> commit cbb6a33 Author: containerman17 <[email protected]> Date: Thu Oct 10 22:24:22 2024 +0900 Add boolean support to the ABI spec (#1648) Signed-off-by: containerman17 <[email protected]> commit 5d8c590 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 09:21:46 2024 -0400 Remove marshaling from transfer action (#1647) commit b934dbd Author: Joshua Kim <[email protected]> Date: Wed Oct 9 16:52:29 2024 -0400 Remove type alias for Action + Auth + Output Registry (#1547) Signed-off-by: Joshua Kim <[email protected]> commit b5407c9 Author: containerman17 <[email protected]> Date: Thu Oct 10 00:45:38 2024 +0900 Simulate a chain of actions (#1635) commit fee360f Author: Tsachi Herman <[email protected]> Date: Fri Oct 4 11:23:58 2024 -0400 refactor marshalActions implementation (#1631) commit 2cb5530 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 18:49:12 2024 -0400 Add block indexing to Indexer API (#1606) commit f1bcc59 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 18:31:39 2024 -0400 Add JSON marshalling to Result (#1627) commit 2ea784a Author: Richard Pringle <[email protected]> Date: Thu Oct 3 12:54:10 2024 -0400 Implement multisig example (#1581) commit 6bbf236 Author: Richard Pringle <[email protected]> Date: Thu Oct 3 12:43:41 2024 -0400 Update codeowners (#1629) commit 47849d8 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 08:34:51 2024 -0400 Re-mark pubsub tests as flaky (#1625) commit d847132 Author: aaronbuchwald <[email protected]> Date: Wed Oct 2 14:23:24 2024 -0400 Reduce tests.unit.sh timeout value less than CI job (#1623) commit 404e74f Author: aaronbuchwald <[email protected]> Date: Wed Oct 2 14:07:04 2024 -0400 Add JSON marshalling for fee dimensions (#1622) commit 7e53003 Author: Joshua Kim <[email protected]> Date: Wed Oct 2 12:38:34 2024 -0400 Replace usage of `internal/network` with `p2p` (#1613) Signed-off-by: Joshua Kim <[email protected]> commit 79f363e Author: containerman17 <[email protected]> Date: Wed Oct 2 11:53:59 2024 +0900 Standardize decimals (#1620) commit e191c88 Author: Joshua Kim <[email protected]> Date: Tue Oct 1 20:02:30 2024 -0400 Update to [email protected] (#1614) Signed-off-by: Joshua Kim <[email protected]> commit 59c84d7 Author: aaronbuchwald <[email protected]> Date: Tue Oct 1 17:19:17 2024 -0400 Add ExecutedBlock type (#1601) commit 165a455 Author: Tsachi Herman <[email protected]> Date: Tue Oct 1 09:26:32 2024 -0400 validate buffer length prior to calling Uint64 (#1588) commit c24f0d8 Author: rodrigo <[email protected]> Date: Tue Oct 1 09:25:18 2024 -0400 Fix VM-With-Contracts Unit Tests (#1602) commit 8ab9d83 Author: aaronbuchwald <[email protected]> Date: Mon Sep 30 16:57:29 2024 -0400 Minor nits on pubsub implementation (#1593) commit 592cd7a Author: rodrigo <[email protected]> Date: Mon Sep 30 12:46:35 2024 -0400 Remove `StateKeysMaxChunks()` (#1607) commit 3e358c1 Author: aaronbuchwald <[email protected]> Date: Mon Sep 30 12:46:20 2024 -0400 Update ActionBenchmark to use single ExpectedOutput (#1608) commit e78841e Author: Franfran <[email protected]> Date: Mon Sep 30 16:42:00 2024 +0200 Write FIFO cache unit tests (#1201) * write FIFO cache unit tests * invert expected / actual * add limit parameter and cache fail on 0 size * simplify test table and create new test for empty cache * simpler tests by having a limit of 2 * fix test cases * typos * backout uselesss change * add a "not an LRU" test case * use switch in fifo unit tests commit f1150a1 Author: aaronbuchwald <[email protected]> Date: Fri Sep 27 17:46:28 2024 -0400 Update tx indexer to include tx action outputs (#1597) commit 6a3fd63 Author: Joshua Kim <[email protected]> Date: Thu Sep 26 15:44:56 2024 -0400 Remove usage of mockgen (#1591) Signed-off-by: Joshua Kim <[email protected]> commit 49376bd Author: rodrigo <[email protected]> Date: Thu Sep 26 14:39:59 2024 -0400 Fix benchmarks (#1590) commit 77a73ba Author: Richard Pringle <[email protected]> Date: Tue Sep 24 12:38:27 2024 -0400 Ignore gas on mock-function-call (#1585) commit 1bbab7b Author: containerman17 <[email protected]> Date: Tue Sep 24 23:19:18 2024 +0900 Remove special cases for Bytes, add arrays support (#1587) commit 3410599 Author: aaronbuchwald <[email protected]> Date: Mon Sep 23 12:34:55 2024 -0400 Add spam cmd to morpheus readme (#1577) commit dfefd27 Author: aaronbuchwald <[email protected]> Date: Mon Sep 23 12:34:32 2024 -0400 Improve chain comments (#1579) commit 6c15244 Author: Richard Pringle <[email protected]> Date: Fri Sep 20 16:10:21 2024 -0400 Series of changes that improve development (#1583) commit e0a3324 Author: Richard Pringle <[email protected]> Date: Fri Sep 20 13:12:58 2024 -0400 Use repr(packed) with state-keys (#1580) commit 75c6cfd Author: aaronbuchwald <[email protected]> Date: Thu Sep 19 07:58:39 2024 -0400 Separate proposer monitor from vm into internal package (#1574) Signed-off-by: Joshua Kim <[email protected]>
commit b2ad4d3 Author: Tsachi Herman <[email protected]> Date: Sun Nov 3 16:01:37 2024 -0500 support procedural test style for VM-defined workloads (#1667) Signed-off-by: Tsachi Herman <[email protected]> commit dbcc6c9 Author: Richard Pringle <[email protected]> Date: Thu Oct 31 16:42:44 2024 -0400 Update wasmtime-go (#1705) commit 1015ae1 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 31 12:47:45 2024 -0400 Remove HRP + Decimals dead code (#1703) commit 24bacf8 Author: Sam Liokumovich <[email protected]> Date: Wed Oct 30 10:31:38 2024 -0400 Action Test Reusing Store (#1700) commit 1ce6ad8 Author: Richard Pringle <[email protected]> Date: Tue Oct 29 13:23:56 2024 -0400 Don't benchmark serializing parameters (#1697) commit 1c43f7e Author: Sam Liokumovich <[email protected]> Date: Tue Oct 29 13:16:34 2024 -0400 Call Contract Benchmarks (#1696) commit 7bd1a49 Author: nathan haim <[email protected]> Date: Sat Oct 26 20:41:26 2024 +0200 state: Make state.Keys JSON human readable (#1661) Signed-off-by: nathan haim <[email protected]> commit c592a1d Author: rodrigo <[email protected]> Date: Fri Oct 25 14:02:08 2024 -0400 Add `balance` cmd to CLI (#1691) commit 7fac7fa Author: Sam Liokumovich <[email protected]> Date: Fri Oct 25 13:28:52 2024 -0400 Default Contract Manager Implementation (#1687) commit 0459bd4 Author: rodrigo <[email protected]> Date: Fri Oct 25 12:23:04 2024 -0400 Add Getter to `BalanceHandler` (#1685) commit 960b790 Author: containerman17 <[email protected]> Date: Sat Oct 26 00:14:29 2024 +0900 Universal CLI (#1662) Creates a single binary that can be used with any HyperSDK VM, as long as the VM uses standard functionality. Signed-off-by: containerman17 <[email protected]> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Aaron Buchwald <[email protected]> commit ef66271 Author: Richard Pringle <[email protected]> Date: Thu Oct 24 15:45:17 2024 -0400 Move vmwithcontracts out of examples (#1676) commit 3895ff5 Author: Richard Pringle <[email protected]> Date: Thu Oct 24 14:59:57 2024 -0400 Implement NFT example (#1684) commit 82dc621 Author: rodrigo <[email protected]> Date: Thu Oct 24 09:54:31 2024 -0400 Add back `actionID` to `StateKeys()` (#1683) commit cf6d48a Author: Richard Pringle <[email protected]> Date: Wed Oct 23 15:11:25 2024 -0400 Force test-context to be initialized with an actor (#1682) commit 1a3c670 Author: Sam Liokumovich <[email protected]> Date: Wed Oct 23 14:26:09 2024 -0400 Refactor Workload (#1668) Signed-off-by: Sam Liokumovich <[email protected]> Co-authored-by: aaronbuchwald <[email protected]> commit 403bfb3 Author: rodrigo <[email protected]> Date: Tue Oct 22 21:56:25 2024 -0400 Decouple State Manager (#1658) commit 61993f8 Author: Richard Pringle <[email protected]> Date: Mon Oct 21 14:25:25 2024 -0400 Revert "Make Morpheus build script take optional path (#1671)" (#1673) commit 87cf88a Author: aaronbuchwald <[email protected]> Date: Mon Oct 21 12:39:13 2024 -0400 Update min go version to go1.22.8 (#1672) commit 22241f5 Author: Richard Pringle <[email protected]> Date: Fri Oct 18 14:18:53 2024 -0400 Make Morpheus build script take optional path (#1671) commit 0658976 Author: Richard Pringle <[email protected]> Date: Wed Oct 16 18:37:50 2024 -0400 Move runtime tests into contracts-ci (#1666) commit e3d911a Author: Sam Liokumovich <[email protected]> Date: Sun Oct 13 17:45:32 2024 -0400 Remove global variables from spam script (#1659) commit bca7739 Author: Tsachi Herman <[email protected]> Date: Fri Oct 11 11:41:27 2024 -0400 Create SignedTransaction out of the existing Transaction (#1640) commit 6f15b2f Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 20:47:49 2024 -0400 Include Spam Config Defaults (#1657) commit b3713a1 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 20:16:23 2024 -0400 Separate Spam Broadcast Functionality (#1653) commit 182e023 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 18:19:44 2024 -0400 Decouple Spam Functionality from CLI into Throughput Package (#1636) commit b8104ac Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 14:44:08 2024 -0400 Fix incorrect naming of stateless block (#1652) commit 725a589 Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 10:12:59 2024 -0400 Use CreateActionID to give simulated actions unique actionID (#1644) commit 0a2d991 Author: aaronbuchwald <[email protected]> Date: Thu Oct 10 09:57:25 2024 -0400 Update ActionRegistry to ActionCodec (#1650) commit 829b991 Author: containerman17 <[email protected]> Date: Thu Oct 10 22:42:19 2024 +0900 Reflect Marshaler (#1592) Signed-off-by: containerman17 <[email protected]> commit b3c991f Author: Tsachi Herman <[email protected]> Date: Thu Oct 10 09:36:21 2024 -0400 add simulateTransaction endpoint (#1610) Signed-off-by: Tsachi Herman <[email protected]> commit cbb6a33 Author: containerman17 <[email protected]> Date: Thu Oct 10 22:24:22 2024 +0900 Add boolean support to the ABI spec (#1648) Signed-off-by: containerman17 <[email protected]> commit 5d8c590 Author: Sam Liokumovich <[email protected]> Date: Thu Oct 10 09:21:46 2024 -0400 Remove marshaling from transfer action (#1647) commit b934dbd Author: Joshua Kim <[email protected]> Date: Wed Oct 9 16:52:29 2024 -0400 Remove type alias for Action + Auth + Output Registry (#1547) Signed-off-by: Joshua Kim <[email protected]> commit b5407c9 Author: containerman17 <[email protected]> Date: Thu Oct 10 00:45:38 2024 +0900 Simulate a chain of actions (#1635) commit fee360f Author: Tsachi Herman <[email protected]> Date: Fri Oct 4 11:23:58 2024 -0400 refactor marshalActions implementation (#1631) commit 2cb5530 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 18:49:12 2024 -0400 Add block indexing to Indexer API (#1606) commit f1bcc59 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 18:31:39 2024 -0400 Add JSON marshalling to Result (#1627) commit 2ea784a Author: Richard Pringle <[email protected]> Date: Thu Oct 3 12:54:10 2024 -0400 Implement multisig example (#1581) commit 6bbf236 Author: Richard Pringle <[email protected]> Date: Thu Oct 3 12:43:41 2024 -0400 Update codeowners (#1629) commit 47849d8 Author: aaronbuchwald <[email protected]> Date: Thu Oct 3 08:34:51 2024 -0400 Re-mark pubsub tests as flaky (#1625) commit d847132 Author: aaronbuchwald <[email protected]> Date: Wed Oct 2 14:23:24 2024 -0400 Reduce tests.unit.sh timeout value less than CI job (#1623) commit 404e74f Author: aaronbuchwald <[email protected]> Date: Wed Oct 2 14:07:04 2024 -0400 Add JSON marshalling for fee dimensions (#1622) commit 7e53003 Author: Joshua Kim <[email protected]> Date: Wed Oct 2 12:38:34 2024 -0400 Replace usage of `internal/network` with `p2p` (#1613) Signed-off-by: Joshua Kim <[email protected]> commit 79f363e Author: containerman17 <[email protected]> Date: Wed Oct 2 11:53:59 2024 +0900 Standardize decimals (#1620) commit e191c88 Author: Joshua Kim <[email protected]> Date: Tue Oct 1 20:02:30 2024 -0400 Update to [email protected] (#1614) Signed-off-by: Joshua Kim <[email protected]> commit 59c84d7 Author: aaronbuchwald <[email protected]> Date: Tue Oct 1 17:19:17 2024 -0400 Add ExecutedBlock type (#1601) commit 165a455 Author: Tsachi Herman <[email protected]> Date: Tue Oct 1 09:26:32 2024 -0400 validate buffer length prior to calling Uint64 (#1588) commit c24f0d8 Author: rodrigo <[email protected]> Date: Tue Oct 1 09:25:18 2024 -0400 Fix VM-With-Contracts Unit Tests (#1602) commit 8ab9d83 Author: aaronbuchwald <[email protected]> Date: Mon Sep 30 16:57:29 2024 -0400 Minor nits on pubsub implementation (#1593) commit 592cd7a Author: rodrigo <[email protected]> Date: Mon Sep 30 12:46:35 2024 -0400 Remove `StateKeysMaxChunks()` (#1607) commit 3e358c1 Author: aaronbuchwald <[email protected]> Date: Mon Sep 30 12:46:20 2024 -0400 Update ActionBenchmark to use single ExpectedOutput (#1608) commit e78841e Author: Franfran <[email protected]> Date: Mon Sep 30 16:42:00 2024 +0200 Write FIFO cache unit tests (#1201) * write FIFO cache unit tests * invert expected / actual * add limit parameter and cache fail on 0 size * simplify test table and create new test for empty cache * simpler tests by having a limit of 2 * fix test cases * typos * backout uselesss change * add a "not an LRU" test case * use switch in fifo unit tests commit f1150a1 Author: aaronbuchwald <[email protected]> Date: Fri Sep 27 17:46:28 2024 -0400 Update tx indexer to include tx action outputs (#1597) commit 6a3fd63 Author: Joshua Kim <[email protected]> Date: Thu Sep 26 15:44:56 2024 -0400 Remove usage of mockgen (#1591) Signed-off-by: Joshua Kim <[email protected]> commit 49376bd Author: rodrigo <[email protected]> Date: Thu Sep 26 14:39:59 2024 -0400 Fix benchmarks (#1590) commit 77a73ba Author: Richard Pringle <[email protected]> Date: Tue Sep 24 12:38:27 2024 -0400 Ignore gas on mock-function-call (#1585) commit 1bbab7b Author: containerman17 <[email protected]> Date: Tue Sep 24 23:19:18 2024 +0900 Remove special cases for Bytes, add arrays support (#1587) commit 3410599 Author: aaronbuchwald <[email protected]> Date: Mon Sep 23 12:34:55 2024 -0400 Add spam cmd to morpheus readme (#1577) commit dfefd27 Author: aaronbuchwald <[email protected]> Date: Mon Sep 23 12:34:32 2024 -0400 Improve chain comments (#1579) commit 6c15244 Author: Richard Pringle <[email protected]> Date: Fri Sep 20 16:10:21 2024 -0400 Series of changes that improve development (#1583) commit e0a3324 Author: Richard Pringle <[email protected]> Date: Fri Sep 20 13:12:58 2024 -0400 Use repr(packed) with state-keys (#1580) commit 75c6cfd Author: aaronbuchwald <[email protected]> Date: Thu Sep 19 07:58:39 2024 -0400 Separate proposer monitor from vm into internal package (#1574) Signed-off-by: Joshua Kim <[email protected]>
What's in this PR ?
This PR adds the simulateTransaction endpoint to the VM API.
What are the changes in this PR ?
What is left and still need to be implemented in a subsequent PR ?
The existing support of
Simulate
in thevmwithcontracts
remained as is. Removing it while taking advantage of the above would require some additional work that wasn't captured in this PR.