Skip to content
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

Merged
merged 29 commits into from
Oct 10, 2024
Merged

Conversation

tsachiherman
Copy link
Contributor

@tsachiherman tsachiherman commented Sep 30, 2024

What's in this PR ?

This PR adds the simulateTransaction endpoint to the VM API.

What are the changes in this PR ?

  • The Recorder struct from the vmwithcontracts example was moved into the core of the hyper-sdk.
  • Added simulateTransaction endpoint to the API server/client

What is left and still need to be implemented in a subsequent PR ?

The existing support of Simulate in the vmwithcontracts remained as is. Removing it while taking advantage of the above would require some additional work that wasn't captured in this PR.

@tsachiherman tsachiherman marked this pull request as ready for review September 30, 2024 20:33
Comment on lines 241 to 242
// 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.
Copy link
Collaborator

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).

Copy link
Collaborator

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?

Copy link
Contributor Author

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)
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 266 to 270
func (j *JSONRPCServer) SimulateTransaction(
req *http.Request,
args *SimulateTransactionArgs,
reply *SimulateTransactionReply,
) error {
Copy link
Collaborator

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.

Copy link
Contributor Author

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 {
Copy link
Collaborator

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

Comment on lines 240 to 247
type SimulateTransactionArgs struct {
Tx []byte `json:"tx"`
}

type SimulatedAction struct {
Output []byte `json:"output_b64"`
Error *string `json:"error"`
}
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 249 to 256
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"`
}
Copy link
Collaborator

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?

Copy link
Collaborator

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 274 to 276
if reply == nil {
return errors.New("SimulateTransaction was called with a nil reply object")
}
Copy link
Collaborator

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 240 to 251
type SimulatedActionResponse struct {
Output []byte
Error error
}

type SimulateTransactionResponse struct {
SimulatedActions []SimulatedActionResponse
ReadKeys []string
WriteKeys []string
AllocateKeys []string
BlockHeight uint64
}
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@tsachiherman tsachiherman marked this pull request as draft October 1, 2024 19:57
@tsachiherman tsachiherman marked this pull request as ready for review October 2, 2024 13:30
state/recorder.go Show resolved Hide resolved
Comment on lines 149 to 154

// Marshal encodes a type as bytes.
func (r *Result) Marshal(p *codec.Packer) {
p.PackBytes(r.Value)
p.PackUint64(r.ConsumedFuel)
}
Copy link
Collaborator

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),
instead of adding explicit marshal functions here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 262 to 270
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))
}
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 264 to 266
if reply == nil {
return errors.New("SimulateAction was called with a nil reply object")
}
Copy link
Collaborator

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

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

actionRegistry := j.vm.ActionRegistry()
rtx := codec.NewReader(args.Action, consts.NetworkSizeLimit) // will likely be much smaller than this
Copy link
Collaborator

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

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

actionRegistry := j.vm.ActionRegistry()
rtx := codec.NewReader(args.Action, consts.NetworkSizeLimit) // will likely be much smaller than this
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 277 to 279
if len(actions) != 1 {
return fmt.Errorf("simulateAction expects a single action, %d found", len(actions))
}
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 303 to 305
for key, permission := range recorder.GetStateKeys() {
reply.StateKeys = append(reply.StateKeys, SimulateStateKey{HexKey: hex.EncodeToString([]byte(key)), Permissions: byte(permission)})
}
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure. done

return err
}
}
for key, permission := range recorder.GetStateKeys() {
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 270 to 271
if len(actions) == 0 {
return errors.New("simulateAction expects at least a single action, none found")
Copy link
Collaborator

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

Copy link
Contributor Author

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)
}

Copy link
Collaborator

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?

Copy link
Contributor Author

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")
Copy link
Collaborator

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return err
}
if !actionsReader.Empty() {
return errors.New("tx has extra bytes")
Copy link
Collaborator

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?

Copy link
Contributor Author

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 Show resolved Hide resolved
return &Recorder{state: db, changedValues: map[string][]byte{}, stateKeys: map[string][]byte{}, keys: Keys{}}
}

func (r *Recorder) checkState(ctx context.Context, key []byte) error {
Copy link
Collaborator

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 ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

// 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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// 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

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 80 to 81
case 0: // insert into existing entry
randKey := randomKey()
Copy link
Collaborator

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

Copy link
Contributor Author

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) {
Copy link
Collaborator

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?

Copy link
Contributor Author

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) {
Copy link
Collaborator

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?

aaronbuchwald
aaronbuchwald previously approved these changes Oct 9, 2024
state/recorder.go Outdated Show resolved Hide resolved
state/recorder.go Outdated Show resolved Hide resolved
state/recorder.go Outdated Show resolved Hide resolved
Co-authored-by: aaronbuchwald <[email protected]>
Signed-off-by: Tsachi Herman <[email protected]>
tsachiherman and others added 4 commits October 9, 2024 11:07
@tsachiherman tsachiherman enabled auto-merge (squash) October 9, 2024 17:35
@aaronbuchwald aaronbuchwald merged commit b3c991f into main Oct 10, 2024
17 checks passed
joshua-kim added a commit that referenced this pull request Nov 4, 2024
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]>
joshua-kim added a commit that referenced this pull request Nov 4, 2024
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create an API that enables you to simulate execution of an action and see what state keys it touches.
2 participants