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

Sync mainnet #8

Merged
merged 164 commits into from
Aug 12, 2024
Merged

Sync mainnet #8

merged 164 commits into from
Aug 12, 2024

Conversation

Giems
Copy link

@Giems Giems commented Aug 12, 2024

No description provided.

lxfind and others added 30 commits July 11, 2024 18:55
## Description 

Describe the changes or additions included in this PR.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…stenLabs#18611)

## Description 

Update Deterministic Sui Build to compile a statically-linked binary.
StageX uses `musl` for compiling `sui-node`. 

In order for this to run the `sui-node` binary directly on glibc-based
linux macines, it must be statically linked.

## Test plan 

Cherry-pick commit to `testnet` branch and test on a private testnet.

* build docker image
* extract `sui-node` binary
* confirm statically linked (run `file` on mac, `ldd` on linux)
* upload to baremetal test server + run
* check build is still deterministic from github action build, linux
machine, macOS machine

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description 
Sui v1.30.0 Version Bump

## Test plan 
👀
## Description 

- Added transactional tests around specific underlying config behavior 
- Cannot yet add config specific tests as those APIs are not `public`

## Test plan 

- New tests 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: ronny-mysten <[email protected]>
## Description 

There is already a orchestrator, no need to create new one in the test.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…atures (MystenLabs#18298)

## Description 

In this PR we introduce a way to order validators to request signatures
according to their voting power. This is useful for signatures to be
verified on ethereum because the # of signatures do impact the gas cost
there significantly.


## Test plan 

deploying on a testnet bridge node to test.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description 

Some test setups call [`[setup(),
setup()]`](https://github.com/MystenLabs/sui/blob/9c588e14f284a8feb10f29791f32ad6bb3f36ae4/sdk/typescript/test/e2e/coin-with-balance.test.ts#L22)
which can cause a race on accessing the tmp `config.yaml` (which happens
in the same tmp directory). This change ensures `setup()` is creates
`config.yaml` in unique directories.

This issue is probably what caused the flakiness in
[CI](https://github.com/MystenLabs/sui/actions/runs/9897466376/job/27342099106#step:10:2279),
note the:

```
Cannot open wallet config file at "/tmp/client.yaml
```

## Test plan 

Tested locally that running the test creates separate directories and
passes.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
Updated broken link with correct link to url of Current Tags section of
the Sui NPM registry.

## Description 

Existing link was broken. I navigated to the correct url and replaced
the link with that url
(https://www.npmjs.com/package/@mysten/sui?activeTab=versions).

## Test plan 

How did you test the new or updated feature?
I double-checked that the url is correct.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK: 

Screenshot shows the current broken link/url:
![Screenshot 2024-07-12
003147](https://github.com/user-attachments/assets/d7cbf4ba-b54b-47d3-b568-f170b39f7f5c)
## Description 

Fixes broken nav on small screens. Jira
[DOCS-383](https://mysten.atlassian.net/browse/DOCS-383) for more info.
Also applies tailwind to some styles, which should eventually be used
exclusively.


[docs/site/src/components/GetStartedLink/index.tsx](https://github.com/MystenLabs/sui/pull/18546/files#diff-ed1e3e4e3d31a916f33152c76fae5faaa7fad41c38d7436f441e0d977f33ac72):
Removed the logic that controls the display of the Get Started link on
the home page to its own component. This should make changing the
location the link navigates to easier and to change the logic behind
visible/hidden and other updates. Should make updates easier because
only need to change the component reference of the docusaurus component
instead of the related logic.


[docs/site/src/components/ThemeToggle/index.tsx](https://github.com/MystenLabs/sui/pull/18546/files#diff-3951ee509e2800c54d91ed3424884e59ce6fd2dd8a8d2e71963223728cdad832):
Removed the logic for showing or hiding the default theme switcher from
the default docusaurus component. Moved to its own component to better
support docusaurus updates in the future. Also makes replacing the
default switcher in the future easier.

deleted components from `theme/Navbar`: These components were swizzled
from docusaurus theme but only added a style in some cases and didn't
change anything in others. The Navbar component was ejected with all its
children even though it didn't need to be. The Navbar component (and its
children) are labeled as `not safe` for swizzling. This means that
updates to docusaurus can break any changes made to these components, so
should only be ejected and changed when necessary and requires checking
for updates.


[docs/site/src/theme/Navbar/index.js](https://github.com/MystenLabs/sui/pull/18546/files#diff-a62ab467816eb68ede0469822b5ed6637ff9af29ab3c5cb3831ccf1b321d5db4):
This component was ejected from Docusaurus 2.x. The changes here are
just what docusaurus updated the component to. And now that I type this,
I realize that I can just delete it so that the default component gets
used instead of the custom one. This means only the default component
`Navbar/Content` is changed by just adding references to the two
components mentioned previously (as opposed to the 5 or 6 components
that were ejected originally).

Styles: Styles were changed where necessary. If a style was updated,
then it was also updated to use tailwind syntax. Two styles were used to
remove the need for swizzling default docusaurus components, which as
mentioned comes at the cost of maintenance). This approach was necessary
because docusaurus reuses a lot of general classes for its components or
creates dynamic ones that are suffixed by the relative path to the
component.
- This style selects the wrapper around the search bar so that the "get
started" button on the home page displays next to the search. Prevents
having to eject Navbar/Search component just to add a class.
    ```
    [class^="navbarSearchContainer"] {
      @apply min-[997px]:flex min-[997px]:gap-4
    }  
    ```
- This style selects the theme switch (light/dark). Prevents having to
make an additional update to the Navbar/Content component.
    ```
    button[title^="Switch between dark and light mode"] {
      @apply !text-white hover:bg-sui-blue-primary
    }
    ```

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…committee `bridge_should_try_to_finalize_committee` (MystenLabs#18019)

## Description 

Updated: we decided to introduce a protocol parameter to determine when
bridge committee happens. This gives us more flexibility to include
validators. As a result, we don't need the original change of threshold
any more. Together with the new parameter, the old default value 7500
still acts as the minimal voting power threshold


------------------

Old description:


Previously the 75% minimal stake is too low to include most validators.
This PR changes it to 90%.

I have two commits in this PR:
* the first commit sets the value by distinguish chain id - if it's
testnet, then use 7500, otherwise 9000. This is safe because on mainnet
we haven't enabled registration yet.
* the second commit uses a different approach with protocol config.
Basically it adds a `minimal_threshold_for_bridge_committee` field and
is set to 90% after the added version. In this way we don't need to
differentiate chain ids. It's safe for testnet because this value won't
be needed post committee initialization.

I like the 2nd commit better because the code is cleaner.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description 

Make indexer, GraphQL, faucet hosts configurable. When using Docker, due
to the way it sets up a network interface for the container, the
services need to bind to 0.0.0.0 to be able to be accessed from outside
the container. This PR enables configurable hosts for these three
services via optional flags:
- `--indexer-host 0.0.0.0`
- `--faucet-host 0.0.0.0`
- `--graphql-host 0.0.0.0`

If no host flag is provided, it will use the default `0.0.0.0` one.

In addition, I found a bug where if the `default_value` is not provided,
calling `unwrap_or_default` will return value 0 (if that field is an
int). For example, if we call `--with-graphql`, the indexer port would
have been set to 0 because the `default_missing_value` is only set when
the flag is passed, but not when it is not passed, which is the case
here due `with-indexer` being implicit enabled.

This supersedes MystenLabs#14701 and should close MystenLabs#14701.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [x] CLI: Changed `sui start` to allow configurable hosts for indexer
(`--indexer-host `), GraphQL (`--graphql-host `), and faucet
(`--faucet-host`) services. This will enable to use `sui start` from a
Docker container. By default, all services start with `0.0.0.0` host.
- [ ] Rust SDK:
## Description 

The ValidatorTxFinalizer gets called whenever a transaction is signed on
a validator. It would then sleep for a min, wake up and check if the tx
has already been executed, if not, use authority aggregator to finalize
it.

## Test plan 

Added unit tests to cover various cases:
1. Basic flow
2. Epoch change
3. Tx already executed
---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…ties -> AuthorityCapabilitiesV1 (MystenLabs#18583)

Quick refactoring to prepare for adding AuthorityCapabilitiesV2, which
will include the digest of ProtocolConfig for each supported version.
## Description 

Disable debug symbols when running `cargo llvm-cov` as it seems the CI
run is OOM-ing when building `sui-e2e-tests`.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description 

A README for the tic-tac-toe app example, derived from:

https://github.com/MystenLabs/multisig_tic-tac-toe/blob/main/README.md

And updates to the docs for the tic-tac-toe app example to reflect
changes to
modernise the guide and bring all its source code into the `sui`
mono-repo.

This is the last major example that lived in the `sui_programmability`
directory.

## Test plan 

:eyes:

## Stack

- MystenLabs#18525 
- MystenLabs#18526 
- MystenLabs#18557 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: Ronny Roland <[email protected]>
…stenLabs#18595)

## Description

Replace all references to Move packages in `sui_programmability` with
equivalents in `./examples/move`, in preparation for deleting the
programmability directory.

In the process, I also:

- removed the tic-tac-toe example from the Sui SDK, as it has been
replaced by a more full-featured E2E example.
- ported some modernised versions of the `basics` packages into the new
`examples/move/basics` for use in tests.

## Test plan

CI and,

```
sui$ cargo simtest
```

## Stack

- MystenLabs#18525 
- MystenLabs#18526 
- MystenLabs#18557 
- MystenLabs#18558 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: Ronny Roland <[email protected]>
…ystenLabs#18609)

## Description

Port over the following examples from sui_programmability/examples:

- crypto/sources/ecdsa.move
- crypto/sources/groth16.move
- ~games/sources/drand_lib.move~
- ~games/sources/drand_based_lottery.move~
- ~games/sources/drand_based_scratch_card.move~
- games/sources/vdf_based_lottery.move

Modernising and cleaning them up in the process:

- Applying wrapping consistently at 100 characters, and cleaning up
comments.
- Removing unnecessary use of `entry` functions, including returning
values instead of transfering to sender in some cases.
- Using receiver functions where possible.
- Standardising file order and adding titles for sections.
- Standardising use of doc comments vs regular comments.
- Using clever errors.

This marks the final set of examples to be moved out of
sui-programmability, which will then be deleted.

## Test plan

```
sui-framework-tests$ cargo nextest run -- run_examples_move_unit_tests
```

## Stack

- MystenLabs#18525 
- MystenLabs#18526 
- MystenLabs#18557 
- MystenLabs#18558
- MystenLabs#18595 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: Ronny Roland <[email protected]>
## Description

Remove the `sui_programmability` folder as all examples have been ported
and modernised to `examples/move`, or elsewhere.

## Test plan

CI

## Stack
- MystenLabs#18525 
- MystenLabs#18526 
- MystenLabs#18557 
- MystenLabs#18558
- MystenLabs#18595 
- MystenLabs#18609 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: Ronny Roland <[email protected]>
…ion. (MystenLabs#18643)

## Description 

This extracts macros from the precompiled program so that macro
expansion works for them, too.

## Test plan 

Updated a test to use `vector`'s `do!`. It failed before the fix, and
works now.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description

Whilst working on MystenLabs#18337, I noticed that we were over-using the `Int`
scalar -- using it to represent values that could exceed 2^31 - 1 --
when the GraphQL spec states that `Int` must be a 32-bit signed integer.

We made this decision at the time (a) because `async-graphql` allowed
converting `u64`s to `Int` and we were primarily concerned with the fact
that although JSON doesn't specify a precision for its numeric types, JS
(among other languages), assumes it is an IEEE double-precision floating
point number, so can only represent integral values precisely below
2^53.

`cynic` (a Rust GraphQL client library) is (correctly) stricter,
however, and maps an `Int` to an `i32`, always. There may be other
similarly strict client libraries for other languages.

This PR introduces a new scalar, `UInt`, that maps to a JSON number
literal, just like `Int`, but allows us to ascribe our own meaning (in
this case, it will be an unsigned number, and it can be as large as
2^53).

This scalar has been used in many cases where we had previously used
`Int`: sequence numbers, counts of objects, checkpoints, transactions,
etc. While other uses continue to use `Int` (pagination limits, service
limits, values bounded by the number of validators).

In some cases, we have switched from `BigInt` to using this scalar
notably:

- the db cost estimate, which was previously a `BigInt` because we were
unsure of its scale, but in hindsight, after benchmarking, it is
unlikely that we would want to set a limit greater than 2^31 - 1.

- the number of checkpoints in an epoch, as the number of transactions
in an epoch (a number that is guaranteed to be greater) is being
represented using an `Int` at the moment (and soon a `UInt53`).

This will be a breaking change, so will only go out with the new major
version. Hopefully, this change will be minimal as the format of this
scalar over the wire is the same as for `Int`, but it will require
existing clients to register a new scalar in most cases.

## Test plan

Existing tests:

```
sui-graphql-rpc$ cargo nextest run
sui-graphql-e2e-tests$ cargo nextest run --features pg_integration
```

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: Introduces a new scalar -- `UInt53` -- to represent
unsigned 53 bit integer values. Some uses of `Int` in the existing
schema have been replaced with `UInt53`. All clients will need to
register the new scalar and clients for statically typed languages will
also need to use a wider (e.g. 64 bit), unsigned type to hold the value.
- [ ] CLI: 
- [ ] Rust SDK:
## Description 

This adds an optional `root_version` argument to `Query.owner` as
discussed in PR MystenLabs#17934.

In summary:
```
`root_version` represents the version of the root object in some nested chain of dynamic    
fields. It allows historical queries for the case of wrapped objects, which don't have a    
version. For example, if querying the dynamic fields of a table wrapped in a parent object, 
passing the parent object's version here will ensure we get the dynamic fields' state at the
moment that parent's version was created.                                                   
                                                                                            
If `root_version` is left null, the dynamic fields will be from a consistent snapshot of the
Sui state at the latest checkpoint known to the GraphQL RPC.                                
```

## Test plan 

Introduced new E2E tests:

```
sui-graphql-e2e-tests$ cargo nextest run --features pg_integration
```

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: Introduces an optional `rootVersion` parameter to
`Query.owner`. This can be used to do versioned lookups when reading
dynamic fields rooted on a wrapped object or another dynamic object
field.
- [ ] CLI: 
- [ ] Rust SDK:

---------

Co-authored-by: Ashok Menon <[email protected]>
## Description 

This enables a new aws tenant for devnet for zklogin

## Test plan 

```
# this runs a localnet from epoch 0
cargo build --bin sui 
RUST_LOG=info target/debug/sui start --force-regenesis --with-faucet

# in different tab, this composes an auth url. this creates a deterministic way of getting JWT token with a deterministic nonce and ephemeral key with max epoch 10. Terminate this command. 

target/debug/sui keytool zk-login-sign-and-execute-tx --max-epoch 10 --network localnet --fixed

Visit URL (AWS - Ambrus): https://ambrus.auth.us-east-1.amazoncognito.com/login?response_type=token&client_id=t1eouauaitlirg57nove8kvj8&redirect_uri=https://api.ambrus.studio/callback&nonce=hTPpgF7XAKbW37rEUS6pEVZqmoI

# once you obtain the JWT token from redirect URL after id_token=xxxx (do not include the access_token), paste it to the following command (no need to change other params, this assumes you are using the fixed ephemeral key, the max epoch fixed at 10)

target/debug/sui keytool zk-login-enter-token --parsed-token eyJraWQiOiJWSEFcL3ZZMWQyaDdYMzNEcFo2WkJEUmZuQ1NcL09JZ2lWN3RvQ2R4eUVVRFk9IiwiYWxnIjoiUlMyNTYifQ.eyJhdF9oYXNoIjoiZktkZ21iXzNOMW1KTGlWNFByRG9IUSIsInN1YiI6Ijc0YjhmNGI4LTYwNTEtNzAwNC0wOGUxLTNkNTQxOTE1MzExOCIsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xX3FQc1p4WXFkOCIsImNvZ25pdG86dXNlcm5hbWUiOiJnaGZqc2tkIiwibm9uY2UiOiJoVFBwZ0Y3WEFLYlczN3JFVVM2cEVWWnFtb0kiLCJhdWQiOiJ0MWVvdWF1YWl0bGlyZzU3bm92ZThrdmo4IiwiZXZlbnRfaWQiOiI4NmFkNGZhOC1kN2U0LTQ1ZGUtOTI5My1mMWE0YjAzYzkxNTciLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTcyMDc5MTMzNiwiZXhwIjoxNzIwNzk0OTM2LCJpYXQiOjE3MjA3OTEzMzYsImp0aSI6ImEzM2U1OWM3LTA5ODAtNDk5ZC04YzQzLWEzZDY4NzM0YzI4MCIsImVtYWlsIjoibHVjaWVuQGFtYnJ1cy5zdHVkaW8ifQ.WmcTipaovAmGh9_095RbMZmiQom-rAeboxfWvQz9y5ym-wwMSCL63uwihrLtE1JVzOS_8Qk1dkTm_AoRSd4zIGxSCOUA3bHC3ekqOS5_McIfHfp6V0dLK67KmofKB7HzPFFY8tRh20jpVwcxVBpeuTojs3KFUJUIBFwwxe-pMz8--r62yzplv067sHL9UtoJ86KInQtJCceyk-EepuHisx7dFdspcyue2GpSvTCLYnkyjIJE5T6RUhldfAQOK0d6WNiBMq8MQgbsz8dOhpSWmZk-wa7uftMVZ0IG22MHqaqdaZxCwmmKbMTb3ACMG0dooVkAiclz8hxmP5IUHD4RcQ --max-epoch 10 --jwt-randomness 100681567828351849884072155819400689117 --kp-bigint 84029355920633174015103288781128426107680789454168570548782290541079926444544 --ephemeral-key-identifier 0xcc2196ee1fa156836daf9bb021d88d648a0023fa387e695d3701667a634a331f --network localnet
```
---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…tenLabs#18649)

## Description 

This PR makes two changes:
1. The primary change is to be able to construct AuthorityAggregator
from epoch start state, instead of reading system state from the store.
This is much safer and sync way to do it in prod.
2. The secondary change is to extend AuthorityAggregatorBuilder to be
able to build more aggregators, to simplify some of the code.

## Test plan 

CI

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
## Description 

I wanted to update it to version 49, since there is a change related to
consensus commit prologue V3. But since testnet
now uses 51, I choose to use it here as well.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
…nLabs#18544)

## Description 

Remove the Auth header because `sui` is a public repo..no need for
GTIHUB_TOKEN

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
tzakian and others added 27 commits July 24, 2024 12:26
…and (MystenLabs#18743)

## Description 

This adds support for (manually) supplying the config objects to use
when replaying a transaction. These must be provided for both state
dumps and network-based replays.

We will refuse to replay a transaction that has a deny-list related
error (global pause, or address denial) unless configs are supplied.

We will insert the latest version of the deny-list though if you don't
supply it and we can see you will need it (due to a deny-list error). In
this case we just pick the most recent version of the deny list as the
version doesn't matter, and this will always not be pruned.

This is only plumbed into the `sui-tool` replay command as I would
prefer to not expose this ugly of an interface to the CLI, and instead
support this in the future there once we have a better solution for
getting these objects (e.g., with graphql). But happy to add it in if we
feel it's necessary.

## Test plan 

Tested it on devnet:

You can try it out on any transaction from here:
https://explorer.polymedia.app/address/0xb685a6c1516b640646bc534239e5522482cc11af4e15a4cf7054b7314bb2a8d3?network=devnet


```
# global pause replay
sui-tool replay --rpc https://rpc.devnet.sui.io:443 tx --tx-digest 9mXi3JSKYg9UeQbpq2YGgqByua6efn4cQUqgVyFFLmy4 --config-objects 0xb7ff3d164ce1490466b56ae1743796016f318e0afd62ab84168fdc2ba5a881fe 10 0x7cd46c8fb69f11bae382be7984cec1063dfa8a2de826fcc92f9e28a2b17cd8e3 13 0x2379389dd2b0fa44c1cbeb93c737f96674e7c352add67ec902eb58512e41334c 12

## Address denial replay
sui-tool replay --rpc https://rpc.devnet.sui.io:443 tx --tx-digest Af84RAY1Pf6GaAG9qXhHvTbcSGt7HM8E3zeGhWV5FUdt --config-objects 0xb7ff3d164ce1490466b56ae1743796016f318e0afd62ab84168fdc2ba5a881fe 10 0x7cd46c8fb69f11bae382be7984cec1063dfa8a2de826fcc92f9e28a2b17cd8e3 13 0x2379389dd2b0fa44c1cbeb93c737f96674e7c352add67ec902eb58512e41334c 12
```
…bs#18785)

This fixes a very unlikely race where:
- notify_read_executed_effects is called
- the effects are available and are returned immediately
- transaction itself has not yet been written to
pending_transaction_writes
- reader thread tries to read the tx and asserts that it exists
## Description 

1. Make consensus parameters optional in node config, since it has not
been populated before.
2. Make consensus_config::Parameters::db_path non optional. It is always
set from the node config after integration with Sui. If empty path
causes problem, it needs to be detected from Sui or within consensus.

## Test plan 

CI

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 
As title. In follow up PRs, we will introduce monitoring component to
swap the aggregator when there are changes to committee members (e.g.
url change)

## Test plan 

existing tests.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
…ystenLabs#18775)

## Description 

First step towards moving `move-vm-types` to being execution versioned. 

## Test plan 

Existing CI tests.
…ystenLabs#18786)

## Description 

Before removing v1, we need to ensure that no one has v2 force disabled,
as it would otherwise lead to a fork during upgrade due to forcing v2 to
be enabled mid-epoch.

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

Validators with limited network need larger timeout for the requests to
succeed. In future, we will add support for partial results.

## Test plan 

n/a

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

According to the function definition, the Docs description is backwards

function `fromB64` receive `base64 string` return `Uint8Array`

But in the description of the Docs it is the opposite :

>`fromB64`: Serializes a Uint8Array to a base64 string

<img width="635" alt="image"
src="https://github.com/user-attachments/assets/16cf48c5-a620-46df-bb62-a5b1230791c1">
<img width="635" alt="image"
src="https://github.com/user-attachments/assets/9f0da79e-3fb4-4317-8a9e-30ea9f714f49">



## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

* Increase timeout when waiting for consensus to start from `30s ->
60s`. Came across cases where commit recovery was taking a bit longer
and might make sense to have a bit more tolerance.
* Add more logs in consensus components and switch them to `info` - it's
ok since those should be printed once per epoch
* Make the consensus protocol choice log a `debug` . The method
`get_consensus_protocol_in_epoch` is now being used from
`get_max_accumulated_txn_cost_per_object_in_commit` which is called on
every sequenced transaction leading to a very spammy log output:

<img width="1459" alt="Screenshot 2024-07-25 at 11 37 09"
src="https://github.com/user-attachments/assets/4971ae31-c033-46f6-bd16-bb6c4052640d">



## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

1. now you can use `--network testnet` to avoid having to provide proxy
address
2. add more stuff to print functions, including nonces
3. print everything in json, for easier piped processing


See offline nodes:
```
sui-bridge-cli view-sui-bridge  --sui-rpc-url https://rpc.testnet.sui.io:443 --ping --hex | jq '.result.committee[] | select(.status == "offline")'
```

See eth nonce:
```
sui-bridge-cli view-eth-bridge --network testnet --eth-rpc-url https://ethereum-sepolia-rpc.publicnode.com
```

See sui nonce:
```
sui-bridge-cli view-sui-bridge  --sui-rpc-url https://rpc.testnet.sui.io:443 --ping --hex | jq '.result.nonces'
```

## Test plan 

How did you test the new or updated feature?

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
…missing types (MystenLabs#18744)

## Description 

This modifies the parser to build `UnresolvedError` for types that don't
parse, and then uses those during expansion to provide IDE alias
information at those locations.

## Test plan 

New IDE tests, plus everything else still works as expected.

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

- Cherry pick 18827 into 1.30
- Changes protocol version 53, which has already hit devnet, but not
testnet

## Test plan 

- CI

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
## Description 

- Cherry pick MystenLabs#18842
- Source only change, does not affect devnet/testnet or any other build 

## Test plan 

- CI

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] REST API:
@Giems Giems merged commit 141d14e into mainnet Aug 12, 2024
20 of 36 checks passed
@Giems Giems deleted the sync-mainnet branch September 11, 2024 09:22
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.