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

[Narwhal] additional consensus clean up #3

Open
wants to merge 1,791 commits into
base: main
Choose a base branch
from

Conversation

akichidis
Copy link

Description

Some additional clean up on top of https://github.com/MystenLabs/sui/pull/14462/files

Test Plan

CI


If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.

Type of Change (Check all that apply)

  • user-visible impact
  • breaking change for a client SDKs
  • breaking change for FNs (FN binary must upgrade)
  • breaking change for validators or node operators (must upgrade binaries)
  • breaking change for on-chain data layout
  • necessitate either a data wipe or data migration

Release notes

pchrysochoidis and others added 30 commits October 10, 2023 11:21
## Description 

* it seems that cmdk command still does some filtering/sorting (even
with shouldFilter=false) and invokes the default scoring functions that
with 0x00000 and then adding more 0 delays exponentially until it
crashes

<img width="971" alt="Screenshot 2023-10-09 at 14 26 59"
src="https://github.com/MystenLabs/sui/assets/10210143/1c675d01-a2aa-4ed0-8f3d-dad527ef2372">


* this just uses a custom filter function to avoid using the default one
for scoring


Before



https://github.com/MystenLabs/sui/assets/10210143/81adea75-aa4a-4f60-bb3f-a129f9779819


After



https://github.com/MystenLabs/sui/assets/10210143/bcb71aba-b68b-4983-9de0-82b8a09e5342



closes [APPS-1772](https://mysten.atlassian.net/browse/APPS-1772)

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
…unt (#14138)

## Description 

| before | after |
| -- | -- |
| <img width="363" alt="Screenshot 2023-10-06 at 12 34 39"
src="https://github.com/MystenLabs/sui/assets/10210143/ffe17b26-3d4f-4b8d-a921-18bad28d102f">
| <img width="363" alt="Screenshot 2023-10-06 at 12 29 17"
src="https://github.com/MystenLabs/sui/assets/10210143/4a050a75-dc2e-4835-84c8-bed2d91155ee">
|
| <img width="363" alt="Screenshot 2023-10-06 at 12 33 55"
src="https://github.com/MystenLabs/sui/assets/10210143/5a99505a-5a86-41a3-aafa-9a669905f701">
| <img width="363" alt="Screenshot 2023-10-06 at 12 33 10"
src="https://github.com/MystenLabs/sui/assets/10210143/17809a4e-7dc6-4ab1-8a10-f192156a3d62">
|

closes [APPS-1808](https://mysten.atlassian.net/browse/APPS-1808)

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

* adds support for v1 requests for test faucet

closes [APPS-1751](https://mysten.atlassian.net/browse/APPS-1751)

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Modifying the sui-benchmark suite in order to allow us to run benchmarks
with multiple traffic profiles instead of only one constant rate as we
currently do. That will allow us to simulate load of variable traffic
(and type of txes etc) instead of constant one. To achieve this the
`Bench` cli subcommand was extended to provide all the arguments as
vectors allowing us to set multiple "benchmark groups" , where the
properties of each benchmark group are all the values of the specified
vector position. More information about this on the `options.rs` file.

To achieve the above we build workloads for each "benchmark group" and
then we initialise all those once. Then a bench workers schedule task
has been introduced to coordinate running each benchmark group. Each
group is defined to run for a specified `duration`. That allow us to do
things like `run with 1K tx/s for 100 seconds, then run with 500 tx/s
for 80seconds...` . Similarly we can configure further the groups to run
a benchmark like `run with 1K tx/s for 100 seconds with 50% shared & 50%
owned transactions , then run with 500 tx/s for 80 seconds with 80% own
transactions and 20% adversarial transactions`.

Also, the benchmark groups will run in _a round robin fashion_. For
example, if we do configure a benchmark with 3 groups, then after the
last group is run, it will go again and start from the beginning - first
group. That allow us with minimal configuration (just defining a few
groups) to run repetitive traffic patterns and test the system's
behaviour. If a group is defined with duration `unbounded` then that
will run for the rest of the benchmark (so someone needs to be careful
with the setup). From a software perspective the `BenchWorker`s created
for each group are re-used during the round robin so no need to do any
re-setup while running or spend excessive resources . The only thing
that is managed is the tasks that are spawn and complete.

**Backwards compatibility:** the cli parameter changes are backwards
compatible so existing CI jobs won't break. Existing CI jobs will
basically run with default settings having only one benchmark group.

## Test Plan 

An example of running a benchmark test that defines 2 benchmark groups
where we want to test spiked traffic:
* 1000 tx/sec for 360sec (100% shared objects)
* 2000 tx/sec for 120sec (100% shared objects)

the **bench** sub-command line parameters look like:
```
--num-of-benchmark-groups 2 \
--in-flight-ratio 30,30 \
--num-workers 24,32 \
--target-qps 1000,2000 \
--shared-counter 100,100 \
--transfer-object 0,0 \
--delegation 0,0 \
--shared-counter-hotness-factor 50,50 \
--batch-payment 0,0 \
--batch-payment-size 100,100 \
--adversarial 0,0
--adversarial-cfg 0-1.0,0-1.0 \
--shared-counter-max-tip 0,0 \
--duration 360s,120s
```

as we can see on the above parameters we can configure all the arguments
independently for each benchmark group and those will get respected on
each run.

on the graph bellow we can see the `input traffic to consensus` is
following the benchmark setup alternating between the 2 traffic profiles
for the respective defined durations:

<img width="716" alt="Screenshot 2023-10-03 at 00 28 59"
src="https://github.com/MystenLabs/sui/assets/17335598/86564a64-deac-4738-83b9-ffc7aeea6075">


---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Changing value of incorrect gas budget to use doc variable.

## Test Plan 

Local

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
…4169)

## Description 

* connect inputs accept either of the fields for compatibility but
workspace should be used
* other UI labels renames
* example app use workspace

| before | after |
| -- | -- |
| <img width="359" alt="Screenshot 2023-10-09 at 16 32 37"
src="https://github.com/MystenLabs/sui/assets/10210143/fa989234-cb97-4d2b-9675-9d4c33fe88b6">
| <img width="359" alt="Screenshot 2023-10-09 at 16 17 16"
src="https://github.com/MystenLabs/sui/assets/10210143/a738b0c0-4186-4bb3-81cb-d61e1fe71dba">
|
| <img width="359" alt="Screenshot 2023-10-09 at 16 32 41"
src="https://github.com/MystenLabs/sui/assets/10210143/3d77e401-9f38-4a4d-a9e4-dc826b1ddedf">
| <img width="359" alt="Screenshot 2023-10-09 at 16 17 25"
src="https://github.com/MystenLabs/sui/assets/10210143/1cb96586-5e4e-4126-9efb-0bf80132e271">
|

closes [APPS-1745](https://mysten.atlassian.net/browse/APPS-1745)

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
Enables export of tracing span data via OTLP. Can be viewed with
grafana/tempo:

<img width="1169" alt="image"
src="https://github.com/MystenLabs/sui/assets/103447440/d2ef596f-e785-47af-b205-e8b1ae6d144a">

Commits:
- OTLP tracing
- Enable tracing via admin server
- Local grafana instance via docker
- Add tracing to execution path
- Update docs
- Update Cargo.lock
## Description 

This PR adds a new feature flag in the protocol config to enable effects
v2 (devnet only at the moment).
When effects v2 is enabled, the system will start emitting effects v2
type.
This is done inside TemporaryStore, where depending on the feature flag,
we call different constructors of TransactionEffects.
The previous attempt did not properly gate this change under the feature
flag, which is fixed by this PR (see the second commit in this PR).
In order to be compatible with effects v1 (under old protocol), we need
to reconstruct all the different v1 fields.
These code can be cleaned up once we cut a new sui-execution version.

## Test Plan 

CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Describe the changes or additions included in this PR.

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

This marks some packages as side-effect free now that we shouldn't have
any imports that create side-effects without exporting the references,
which makes it work fine in testing.

I only marked packages that we are actively developing (which is why I
didn't include wallet-kit and suins-toolkit packages) and that I was
somewhat familiar with (which is why I didn't include ledger, deepbook,
move-binary-format) as being side-effect free.

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
…e chain / exposing errors / etc. (#14181)

## Description 

This PR does a little polish on the signing hooks for a few things I
noticed were off. The most notable change here is that we're making the
`chain` arg optional as we should just infer the active chain from the
account. This keeps parity with the wallet-kit implementation

## Test Plan 
- CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
Fixes an issue where data could be missing when using query_transaction
when the transaction data itself isn't present on the node, due to
pruning, requiring us to fallback to the kvstore.
Added new version for NW `Certificate` which Includes new
`AggregateSignatureState`. This holds `AggregateSignatureBytes` but with
the added layer to specify if the signature was verified via a leader,
verified directly, unverified or unsigned. This will be used to take
advantage of the certificate chain that is formed via the DAG by only
verifying the leaders of the certificate chain when they are fetched
from validators during catchup.

This is gated by a protocol feature flag so this PR should have no
effect yet. Still testing the [followup
PR](ef48f56)
which will include the usage of `CertificateV2`, but sharing here to
provide more context for these changes.
## Description 

It seems this optimization is unlikely to come back, so removing the
remaining scaffolding.

## Test Plan 

CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

metrics to count sigs, currently we just care about zklogin and multisig
## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Adds MovePackage type.
~~Seems DB is broken so currently using RPC 1.0~~
More examples and MoveModule will follow in subs PRs as the results are
bland otherwise

## Test Plan 

Manual

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

This PR does a few cleanups for ConsensusHandler:
1. Move all the code that are consensus-independent into the function
inside epoch_store. This allows us to get rid of this strange
CommitBatch thing, as well as opens up an interface for other code to
call (e.g. if we want to benchmark the system with a dummy consensus)
2. Move the tx oredering code into its own file for clarity
3. Insert roots at the end to reduce dup entries.

## Test Plan 

CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Try to exercise the consensus path in the single node benchmark.
There are two modes: noop and direct.

## Test Plan 

CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 
Adding a benchmark to measure validator signing transaction performace
in the single node benchmark suite.

Sample output:

```
cargo run --release --bin sui-single-node-benchmark -- move --component txn-signing

2023-10-10T16:08:05.023632Z  INFO sui_single_node_benchmark::benchmark_context: Creating 500001 accounts and 1000002 gas objects
2023-10-10T16:08:06.430838Z  INFO sui_single_node_benchmark::benchmark_context: Initializing validator
2023-10-10T16:08:10.306098Z  INFO sui_single_node_benchmark::benchmark_context: Programmable Move Transaction Generator: Creating 500001 transactions
2023-10-10T16:08:11.236391Z  INFO sui_single_node_benchmark::execution: Sample transaction: SenderSignedData([SenderSignedTransaction { intent_message: IntentMessage { intent: Intent { scope: TransactionData, version: V0, app_id: Sui }, value: V1(TransactionDataV1 { kind: ProgrammableTransaction(ProgrammableTransaction { inputs: [Object(ImmOrOwnedObject((0xff01000000000000000000000000000000000000000000000000000000000000, SequenceNumber(1), o#3Wy9EiapZQKhT8rAyQMyrNNYY16hUSJdqhwetB92C4pu))), Pure([184, 159, 82, 182, 144, 220, 83, 194, 8, 51, 15, 138, 44, 214, 190, 240, 85, 19, 16, 201, 173, 213, 246, 216, 58, 70, 65, 252, 110, 209, 66, 161]), Pure([0, 0, 0, 0, 0, 0, 0, 0])], commands: [MakeMoveVec(None, [Input(0)]), MoveCall(ProgrammableMoveCall { package: 0x22b99c7c24f1fe4e0ba3a3b65b120f85fc3923fcf9111ddc75caa54150604920, module: Identifier("benchmark"), function: Identifier("merge_input_coins"), type_arguments: [], arguments: [Result(0)] }), TransferObjects([Result(1)], Input(1)), MoveCall(ProgrammableMoveCall { package: 0x22b99c7c24f1fe4e0ba3a3b65b120f85fc3923fcf9111ddc75caa54150604920, module: Identifier("benchmark"), function: Identifier("run_computation"), type_arguments: [], arguments: [Input(2)] })] }), sender: 0xb89f52b690dc53c208330f8a2cd6bef0551310c9add5f6d83a4641fc6ed142a1, gas_data: GasData { payment: [(0xff00000000000000000000000000000000000000000000000000000000000000, SequenceNumber(1), o#9tCQKCfifCQzaicSPdBpWyPKVD6fJFcKatKoHn9TyBEn)], owner: 0xb89f52b690dc53c208330f8a2cd6bef0551310c9add5f6d83a4641fc6ed142a1, price: 1000, budget: 5000000000 }, expiration: None }) }, tx_signatures: [Signature(Ed25519SuiSignature(Ed25519SuiSignature([0, 124, 197, 41, 122, 155, 114, 67, 77, 13, 124, 161, 104, 88, 199, 110, 40, 181, 128, 92, 5, 144, 52, 28, 230, 159, 225, 27, 88, 94, 74, 10, 49, 189, 110, 178, 7, 46, 169, 154, 72, 167, 128, 132, 104, 166, 96, 142, 46, 92, 11, 217, 238, 201, 121, 206, 109, 215, 229, 219, 52, 157, 237, 154, 4, 98, 34, 97, 21, 172, 104, 110, 152, 8, 19, 17, 185, 26, 203, 149, 57, 52, 64, 167, 160, 214, 216, 121, 224, 126, 86, 237, 26, 8, 57, 116, 90])))] }])
2023-10-10T16:08:11.236431Z  INFO sui_single_node_benchmark::benchmark_context: Started signing 500001 transactions. You can now attach a profiler
2023-10-10T16:08:23.669227Z  INFO sui_single_node_benchmark::execution: Transaction signing finished in 12.432s, TPS=40218.87065637066
```

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

---------

Co-authored-by: Zhe Wu <[email protected]>
## Description 


https://sui-typescript-docs-git-mh-dapp-kit-wallet-docs-mysten-labs.vercel.app/dapp-kit

## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

---------

Co-authored-by: William Robertson <[email protected]>
## Description 

Continuation of #14164
This will allow the simulator feed data into indexer etc

## Test Plan 

N/A

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
wlmyng and others added 23 commits October 25, 2023 22:55
)

## Description 

Modify querying mechanism for epoch.transactionBlockConnection per
feedback. Query now completes under 2 seconds (previously would run >10
or forever). Previously, to fetch transactions for an epoch, we made a
query for transactions whose checkpoint_sequence_number were between the
first and last checkpoint ids of the epoch. Even though this filtering
is done on an index, the filer causes some slowness if the distance
between the two checkpoints are significant enough since we order the
results by tx_sequence_number. This change fetches the first
tx_sequence_number from the first checkpoint and the last
tx_sequence_number from the last checkpoint, so now the filtering and
ordering are both done on tx_sequence_number

## Test Plan 

manually run same queries

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and publish to npm
yourself or [setup this action to publish
automatically](https://github.com/changesets/action#with-publishing). If
you're not ready to do a release yet, that's fine, whenever you add more
changesets to main, this PR will be updated.


# Releases
## @mysten/[email protected]

### Minor Changes

- d4d9c92: Upgrade dapp-kit and the scaffold applications to
react-query v5

### Patch Changes

-   Updated dependencies [d4d9c92]
-   Updated dependencies [fb0ce34]
-   Updated dependencies [09c1030]
-   Updated dependencies [e057809]
-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Minor Changes

- d4d9c92: Upgrade dapp-kit and the scaffold applications to
react-query v5
- fb0ce34: Add global connection status info and change the hook
interface of `useCurrentWallet` to
return an object to encapsulate connection info together. To migrate:

    Before:
    const currentWallet = useCurrentWallet();

    After:
    const { currentWallet } = useCurrentWallet();

### Patch Changes

-   09c1030: fix pagination in useSuiClientInfiniteQuery
-   e057809: Fix typing of data for useSuiClientInfiniteQuery
-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Minor Changes

-   b9afb55: adds "transfer to object" (receivingRef) support

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]
    -   @mysten/[email protected]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]

## @mysten/[email protected]

### Patch Changes

-   Updated dependencies [d4d9c92]
-   Updated dependencies [fb0ce34]
-   Updated dependencies [09c1030]
-   Updated dependencies [e057809]
-   Updated dependencies [b9afb55]
    -   @mysten/[email protected]
    -   @mysten/[email protected]

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Description 

https://mysten.atlassian.net/browse/APPS-1736
- Update to get larger clickable areas on header section


![image](https://github.com/MystenLabs/sui/assets/127577476/35b298b0-6b58-4059-9c4b-7f81543a7041)


## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
…ect stores (#14388)

## Description 

We want to allow object download without authentication from certain
remote stores with free egress i.e. cloudflare, wasabi, etc. This PR
adds a new downloader module which allows us to do that for S3, GCS, etc
Next step would be to integrate it in sui tool and let users benefit
from it.

## Test Plan 

Added unit test. Also tested with S3 and found it to be working
## Description 

Support constants in constants.

## Test Plan 

Added new tests

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [x] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration


### Release notes

The error for using const-in-const changed to point at the feature
gating.
- Remove allow(dead_code) annotations in a few places
- Registr WriteApi which forwards to a fullnode
- implements the get_total_transactions api
## Description 

Extend sui-tool snapshot downloader to download, verify and restore from
formal snapshot. Note that if `--verify` is set to true, only protocol
versions where `commit_root_state_digest` is true are eligible, as this
relies on root state hash commitment at end of epoch.

The following tasks are orchestrated:

* Performing checkpoint summary sync (with verification) to the end of
the target epoch via archival store
* Downloading all snapshot object refs 
* Checksumming all object refs to verify there is no discrepancy between
the object store manifest and the contents
* Accumulating all object refs and comparing against consensus
checkpoint commitment (root state hash). This protects against restoring
from a compromised snapshot and ensures that the state after restore is
consistent with the network
* Downloading and loading into perpetual store the end of epoch live
object set contents from the snapshot
* Setting other critical state necessary for node to startup and join
the network (create committee store, create epoch start configuration,
set checkpoint watermarks, etc)

## Test Plan 

1. Run the following to perform snapshot restore

```
GCS_SNAPSHOT_SERVICE_ACCOUNT_FILE_PATH=<path> AWS_ARCHIVE_ACCESS_KEY_ID=<key> AWS_ARCHIVE_SECRET_ACCESS_KEY=<key> AWS_ARCHIVE_REGION=us-west-2 sui-tool download-db-snapshot --epoch 125 --genesis /opt/sui/config/genesis.blob --formal --network testnet --path /opt/sui/db/authorities_db/full_node_db --num-parallel-downloads 50
```
2. Startup `sui-node` and observe that node is able to execute
checkpoints successfully and ultimately reconfig to the next epoch.

```
[00:07:01] ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 977 out of 977 .ref files done
[03:34:42] ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 10670050/10670050(Checkpoint summary download is complete)
[00:02:36] ██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 977 out of 977 ref files checksummed (Checksumming complete)
[02:20:05] ██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 977 out of 977 ref files accumulated (Accumulation complete)
[02:20:05] ████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ 977 out of 977 .obj files done (Objects download complete)
2023-10-11T02:35:15.060244Z  INFO sui_archival::reader: Terminating the manifest sync loop                                           
2023-10-11T02:35:15.060334Z  INFO sui_tool: Formal snapshot state verification complete!
2023-10-11T02:35:15.468872Z  INFO sui_storage::mutex_table: Stopping mutex table cleanup!
2023-10-11T02:35:15.510039Z  INFO sui_storage::mutex_table: Stopping mutex table cleanup!
2023-10-11T02:35:19.644477Z  INFO sui_tool: Successfully restored state from snapshot at end of epoch 125

ubuntu@fullnode-compat-test-03:/opt/sui/db/authorities_db/full_node_db$ systemctl status sui-node
● sui-node.service - Sui Node
     Loaded: loaded (/etc/systemd/system/sui-node.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-10-11 02:39:26 UTC; 6s ago
   Main PID: 344206 (sui-node)
      Tasks: 110 (limit: 308692)
     Memory: 1.1G (high: 246.0G max: 251.0G swap max: 0B available: 244.8G)
        CPU: 7.651s
     CGroup: /system.slice/sui-node.service
             └─344206 /opt/sui/bin/sui-node --config-path /opt/sui/config/sui-node.yaml

ubuntu@fullnode-compat-test-03:/opt/sui/db/authorities_db/full_node_db$ curl -s http://localhost:9184/metrics | grep 'current_epoch '
current_epoch 126
ubuntu@fullnode-compat-test-03:/opt/sui/db/authorities_db/full_node_db$ curl -s http://localhost:9184/metrics | grep 'last_executed_checkpoint '
last_executed_checkpoint 10678488
ubuntu@fullnode-compat-test-03:/opt/sui/db/authorities_db/full_node_db$ curl -s http://localhost:9184/metrics | grep 'last_executed_checkpoint '
last_executed_checkpoint 10679365

# after some time
ubuntu@fullnode-compat-test-03:/opt/sui/db/authorities_db/full_node_db$ curl -s http://localhost:9184/metrics | grep 'current_epoch '
current_epoch 129
```

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Simple refactor that splits querying into two parts, building the query
and actually executing it. This is done to support making an explain
call on the query fragment before every query is actually executed

## Test Plan 

Manually ran all of our examples

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

---------

Co-authored-by: oxade <[email protected]>
- added support for enums and other remaining types
- simplified macro
## Description 

- Add SUINS name resolver for object page
- https://mysten.atlassian.net/browse/APPS-1715

<img width="1409" alt="Screenshot 2023-10-25 at 8 56 14 PM"
src="https://github.com/MystenLabs/sui/assets/127577476/27187e1a-b1ee-473c-94ab-801c02d6d975">


## Test Plan 

How did you test the new or updated feature?

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

- Fixed bug with OTW checks
- Improved init error messages

## Test Plan 

- Added tests

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [X] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

This release fixes a bug in the Sui mode of the Move compiler that
categorized certain structs erroneously as one-time witnesses.
## Description 

Follow up on small nits on PR that accidentally didn't get landed.

## Test Plan 

Same as before.

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

add limit on number of variables

## Test Plan 

manual, unit coming soon

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

- Report unused mutable references
- The system is quite exhaustive and reports even locally created
mutable references. It piggy-backs on the borrow checker but globally
collects usages instead of keeping it in the abstract state. This is
done mostly for simplicity
- A mutable reference is considered unused if:
  - It is mutated
- It is passed to a function (since freeze removes any subtyping issues)
  - It is returned 
- Copies share the same abstract reference ID

## Test Plan 

- Added new tests

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [X] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

With this change, Move will now suggest switching mutable references
`&mut` to immutable ones `&` when the reference is not modified, or
passed somewhere where the mutability is required.
This can be suppressed for parameters by prefixing the parameter name
with an underscore `_`.
## Description 

Bound the number of fragment definitions

## Test Plan 

Manual, coming up
---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

Remove read-write-set analysis as it's no longer needed.

## Test Plan 

Make sure existing tests still pass

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

GET request on `{url}/schema` will now return the pretty schema,

## Test Plan 

Manual

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description 

This PR enhances our current system overload detection to also include
the scenario where the transactions depending on an object are not great
in the count, but lengthy in execution. More precisely, we keep track of
how long each transaction has been in the execution queue and use this
age as a proxy for the hotness of the object when determining whether to
reject a transaction or not.

I also added a field in the node config to make this threshold
configurable and easier to test. We can also move other similar numbers
here as well.

## Test Plan 

Added a test.

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [x] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes

Enhance our validators' protection mechanism against congestion to stop
accepting transactions when one of the following happens:
- There are long-running transactions waiting for execution in a certain
object's queue
- There are a large number of transactions waiting in a certain object's
queue, or in general
## Description 

This allows easier integration with other consensus algorithms and data
structures.

The only logic change is to enable LeaderSchedule by default instead of
gating on protocol config, which should produce no behavior difference.

## Test Plan 

CI

---
If your changes are not user-facing and not a breaking change, you can
skip the following section. Otherwise, please indicate what changed, and
then add to the Release Notes section as highlighted during the release
process.

### Type of Change (Check all that apply)

- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration

### Release notes
## Description

Move tests are run as part of the Rust tests for the Sui Framework, but
they should also be run when there are only Move changes.

Surfaced because a recent PR (#14429) Moved some Move tests causing CI
to fail on `main`, and this wasn't picked up because diff tests hadn't
been run.

## Test Plan

CI
@mwtian mwtian changed the base branch from narwhal-cleanup-ls to main October 27, 2023 14:47
Copy link

This PR is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@github-actions github-actions bot added the Stale label Dec 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.