Skip to content

Commit 45e8951

Browse files
authored
chore(target_chains/sui): update sui and wormhole dependency (#1341)
* chore(target_chains/sui): update sui and wormhole dependency Developers on Sui need to pin the same Sui version as their dependencies and it enforces everyone to use the same Sui version. Pyth and Wormhole Sui versions have been old and this change updates them to the latest testnet version (1.19.1) to make integrations with us easier. Wormhole has undergone a similar change and thereforce its version has changed as well. No contract deployment is needed for this change as it only unblocks downstream consumers for compiling their contracts. * fix: update sui version in the ci workflow
1 parent 1d28c04 commit 45e8951

16 files changed

+45
-49
lines changed

Diff for: .github/workflows/ci-sui-contract.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
run: rustup update stable
2525

2626
- name: Install Sui CLI
27-
run: cargo install --locked --git https://github.com/MystenLabs/sui.git --rev 09b2081498366df936abae26eea4b2d5cafb2788 sui
27+
run: cargo install --locked --git https://github.com/MystenLabs/sui.git --rev 041c5f2bae2fe52079e44b70514333532d69f4e6 sui
2828

2929
- name: Run tests
3030
run: sui move test

Diff for: target_chains/sui/contracts/Move.lock

+10-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
[move]
44
version = 0
5+
manifest_digest = "320300697C11C4D84BF6ED32C1DB48A4EE830B6B44F4DFDA4E89345875C5EA11"
6+
deps_digest = "3C4103934B1E040BB6B23F1D610B4EF9F2F1166A50A104EADCF77467C004C600"
57

68
dependencies = [
79
{ name = "Sui" },
@@ -10,20 +12,25 @@ dependencies = [
1012

1113
[[move.package]]
1214
name = "MoveStdlib"
13-
source = { git = "https://github.com/MystenLabs/sui.git", rev = "09b2081498366df936abae26eea4b2d5cafb2788", subdir = "crates/sui-framework/packages/move-stdlib" }
15+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "041c5f2bae2fe52079e44b70514333532d69f4e6", subdir = "crates/sui-framework/packages/move-stdlib" }
1416

1517
[[move.package]]
1618
name = "Sui"
17-
source = { git = "https://github.com/MystenLabs/sui.git", rev = "09b2081498366df936abae26eea4b2d5cafb2788", subdir = "crates/sui-framework/packages/sui-framework" }
19+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "041c5f2bae2fe52079e44b70514333532d69f4e6", subdir = "crates/sui-framework/packages/sui-framework" }
1820

1921
dependencies = [
2022
{ name = "MoveStdlib" },
2123
]
2224

2325
[[move.package]]
2426
name = "Wormhole"
25-
source = { git = "https://github.com/wormhole-foundation/wormhole.git", rev = "d050ad1d67a5b7da9fb65030aad12ef5d774ccad", subdir = "sui/wormhole" }
27+
source = { git = "https://github.com/wormhole-foundation/wormhole.git", rev = "82d82bffd5a8566e4b5d94be4e4678ad55ab1f4f", subdir = "sui/wormhole" }
2628

2729
dependencies = [
2830
{ name = "Sui" },
2931
]
32+
33+
[move.toolchain-version]
34+
compiler-version = "1.19.1"
35+
edition = "legacy"
36+
flavor = "sui"

Diff for: target_chains/sui/contracts/Move.mainnet.toml

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ published-at = "0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad
66
[dependencies.Sui]
77
git = "https://github.com/MystenLabs/sui.git"
88
subdir = "crates/sui-framework/packages/sui-framework"
9-
rev = "09b2081498366df936abae26eea4b2d5cafb2788"
9+
rev = "041c5f2bae2fe52079e44b70514333532d69f4e6"
1010

1111
[dependencies.Wormhole]
12-
local = "../../../../wormhole/sui/wormhole"
12+
git = "https://github.com/wormhole-foundation/wormhole.git"
13+
subdir = "sui/wormhole"
14+
rev = "sui-upgrade-mainnet"
1315

1416
[addresses]
1517
pyth = "0x0"

Diff for: target_chains/sui/contracts/Move.testnet.toml

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ published-at = "0xf7114cc10266d90c0c9e4b84455bddf29b40bd78fe56832c7ac98682c3daa9
66
[dependencies.Sui]
77
git = "https://github.com/MystenLabs/sui.git"
88
subdir = "crates/sui-framework/packages/sui-framework"
9-
rev = "09b2081498366df936abae26eea4b2d5cafb2788"
9+
rev = "041c5f2bae2fe52079e44b70514333532d69f4e6"
1010

1111
[dependencies.Wormhole]
12-
local = "../../../../wormhole/sui/wormhole"
12+
git = "https://github.com/wormhole-foundation/wormhole.git"
13+
subdir = "sui/wormhole"
14+
rev = "sui-upgrade-testnet"
1315

1416
[addresses]
1517
pyth = "0x0"

Diff for: target_chains/sui/contracts/Move.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ version = "0.0.2"
55
[dependencies.Sui]
66
git = "https://github.com/MystenLabs/sui.git"
77
subdir = "crates/sui-framework/packages/sui-framework"
8-
rev = "09b2081498366df936abae26eea4b2d5cafb2788"
8+
rev = "041c5f2bae2fe52079e44b70514333532d69f4e6"
99

1010
[dependencies.Wormhole]
1111
git = "https://github.com/wormhole-foundation/wormhole.git"
1212
subdir = "sui/wormhole"
13-
rev = "d050ad1d67a5b7da9fb65030aad12ef5d774ccad"
13+
rev = "82d82bffd5a8566e4b5d94be4e4678ad55ab1f4f"
1414

1515
[addresses]
1616
pyth = "0x00b53b0f4174108627fbee72e2498b58d6a2714cded53fac537034c220d26302"

Diff for: target_chains/sui/contracts/sources/governance/contract_upgrade.move

+7-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ module pyth::contract_upgrade {
2727
const E_GOVERNANCE_CONTRACT_UPGRADE_CHAIN_ID_ZERO: u64 = 2;
2828
const E_CANNOT_EXECUTE_GOVERNANCE_ACTION_WITH_OBSOLETE_SEQUENCE_NUMBER: u64 = 3;
2929

30-
/// Specific governance payload ID (action) to complete upgrading the
31-
/// contract.
32-
/// TODO: is it okay for the contract upgrade action for Pyth to be 0? Or should it be 1?
33-
const CONTRACT_UPGRADE: u8 = 0;
34-
3530
// Event reflecting package upgrade.
3631
struct ContractUpgraded has drop, copy {
3732
old_contract: ID,
@@ -131,6 +126,13 @@ module pyth::contract_upgrade {
131126
UpgradeContract { digest }
132127
}
133128

129+
#[test_only]
130+
/// Specific governance payload ID (action) to complete upgrading the
131+
/// contract.
132+
/// TODO: is it okay for the contract upgrade action for Pyth to be 0? Or should it be 1?
133+
const CONTRACT_UPGRADE: u8 = 0;
134+
135+
134136
#[test_only]
135137
public fun action(): u8 {
136138
CONTRACT_UPGRADE

Diff for: target_chains/sui/contracts/sources/governance/governance.move

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ module pyth::governance {
1414
const E_INVALID_GOVERNANCE_ACTION: u64 = 0;
1515
const E_MUST_USE_CONTRACT_UPGRADE_MODULE_TO_DO_UPGRADES: u64 = 1;
1616
const E_CANNOT_EXECUTE_GOVERNANCE_ACTION_WITH_OBSOLETE_SEQUENCE_NUMBER: u64 = 2;
17-
const E_OLD_GUARDIAN_SET_GOVERNANCE: u64 = 3;
1817
const E_INVALID_GOVERNANCE_DATA_SOURCE: u64 = 4;
1918

2019
// this struct does not have the store or key ability so it must be

Diff for: target_chains/sui/contracts/sources/governance/set_data_sources.move

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ module pyth::set_data_sources_tests {
7676
test_scenario::next_tx(&mut scenario, DEPLOYER);
7777
let (pyth_state, worm_state) = take_wormhole_and_pyth_states(&scenario);
7878

79-
let verified_vaa = wormhole::vaa::parse_and_verify(&mut worm_state, SET_DATA_SOURCES_VAA, &clock);
79+
let verified_vaa = wormhole::vaa::parse_and_verify(&worm_state, SET_DATA_SOURCES_VAA, &clock);
8080

8181
let receipt = pyth::governance::verify_vaa(&pyth_state, verified_vaa);
8282

Diff for: target_chains/sui/contracts/sources/governance/set_stale_price_threshold.move

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ module pyth::set_stale_price_threshold_test {
5151
test_scenario::next_tx(&mut scenario, DEPLOYER);
5252
let (pyth_state, worm_state) = take_wormhole_and_pyth_states(&scenario);
5353

54-
let verified_vaa = wormhole::vaa::parse_and_verify(&mut worm_state, SET_STALE_PRICE_THRESHOLD_VAA, &clock);
54+
let verified_vaa = wormhole::vaa::parse_and_verify(&worm_state, SET_STALE_PRICE_THRESHOLD_VAA, &clock);
5555

5656
let receipt = pyth::governance::verify_vaa(&pyth_state, verified_vaa);
5757

Diff for: target_chains/sui/contracts/sources/governance/set_update_fee.move

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ module pyth::set_update_fee {
88

99
friend pyth::governance;
1010

11-
const MAX_U64: u128 = (1 << 64) - 1;
1211
const E_EXPONENT_DOES_NOT_FIT_IN_U8: u64 = 0;
1312

1413
struct UpdateFee {
@@ -65,7 +64,7 @@ module pyth::set_update_fee_tests {
6564
test_scenario::next_tx(&mut scenario, DEPLOYER);
6665
let (pyth_state, worm_state) = take_wormhole_and_pyth_states(&scenario);
6766

68-
let verified_vaa = wormhole::vaa::parse_and_verify(&mut worm_state, SET_FEE_VAA, &clock);
67+
let verified_vaa = wormhole::vaa::parse_and_verify(&worm_state, SET_FEE_VAA, &clock);
6968

7069
let receipt = pyth::governance::verify_vaa(&pyth_state, verified_vaa);
7170

Diff for: target_chains/sui/contracts/sources/hot_potato_vector.move

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
module pyth::hot_potato_vector {
44
use std::vector;
55

6-
const E_EMPTY_HOT_POTATO: u64 = 0;
7-
86
friend pyth::pyth;
97
#[test_only]
108
friend pyth::pyth_tests;

Diff for: target_chains/sui/contracts/sources/merkle_tree.move

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ module pyth::merkle_tree {
44
use std::vector::{Self};
55
use sui::hash::{keccak256};
66
use wormhole::bytes20::{Self, Bytes20, data};
7-
use wormhole::cursor::{Self, Cursor};
7+
use wormhole::cursor::Cursor;
88
use pyth::deserialize::{Self};
99

10+
#[test_only]
11+
use wormhole::cursor::{Self};
12+
1013
const MERKLE_LEAF_PREFIX: u8 = 0;
1114
const MERKLE_NODE_PREFIX: u8 = 1;
1215
const MERKLE_EMPTY_LEAF_PREFIX: u8 = 2;

Diff for: target_chains/sui/contracts/sources/pyth.move

+7-14
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@ module pyth::pyth {
3030
const E_STALE_PRICE_UPDATE: u64 = 3;
3131
const E_UPDATE_AND_PRICE_INFO_OBJECT_MISMATCH: u64 = 4;
3232
const E_PRICE_UPDATE_NOT_FOUND_FOR_PRICE_INFO_OBJECT: u64 = 5;
33-
const E_INVALID_ACCUMULATOR_MAGIC: u64 = 7;
34-
35-
const PYTHNET_ACCUMULATOR_UPDATE_MAGIC: u64 = 1347305813;
3633

3734
#[test_only]
3835
friend pyth::pyth_tests;
@@ -160,6 +157,7 @@ module pyth::pyth {
160157
vector::destroy_empty(verified_vaas);
161158
}
162159

160+
#[allow(lint(share_owned))]
163161
// create_and_share_price_feeds_using_verified_price_infos is a private function used by
164162
// 1) create_price_feeds
165163
// 2) create_price_feeds_using_accumulator
@@ -457,12 +455,6 @@ module pyth::pyth_tests{
457455
vector[data_source::new(1, external_address::new(bytes32::from_bytes(ACCUMULATOR_TESTS_EMITTER_ADDRESS)))]
458456
}
459457

460-
// /// A vector containing a single VAA with:
461-
// /// - emitter chain ID 17
462-
// /// - emitter address 0x71f8dcb863d176e2c420ad6610cf687359612b6fb392e0642b0ca6b1f186aa3b
463-
// /// - payload corresponding to the batch price attestation of the prices returned by get_mock_price_infos()
464-
const TEST_VAAS: vector<vector<u8>> = vector[x"0100000000010036eb563b80a24f4253bee6150eb8924e4bdf6e4fa1dfc759a6664d2e865b4b134651a7b021b7f1ce3bd078070b688b6f2e37ce2de0d9b48e6a78684561e49d5201527e4f9b00000001001171f8dcb863d176e2c420ad6610cf687359612b6fb392e0642b0ca6b1f186aa3b0000000000000001005032574800030000000102000400951436e0be37536be96f0896366089506a59763d036728332d3e3038047851aea7c6c75c89f14810ec1c54c03ab8f1864a4c4032791f05747f560faec380a695d1000000000000049a0000000000000008fffffffb00000000000005dc0000000000000003000000000100000001000000006329c0eb000000006329c0e9000000006329c0e400000000000006150000000000000007215258d81468614f6b7e194c5d145609394f67b041e93e6695dcc616faadd0603b9551a68d01d954d6387aff4df1529027ffb2fee413082e509feb29cc4904fe000000000000041a0000000000000003fffffffb00000000000005cb0000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e4000000000000048600000000000000078ac9cf3ab299af710d735163726fdae0db8465280502eb9f801f74b3c1bd190333832fad6e36eb05a8972fe5f219b27b5b2bb2230a79ce79beb4c5c5e7ecc76d00000000000003f20000000000000002fffffffb00000000000005e70000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e40000000000000685000000000000000861db714e9ff987b6fedf00d01f9fea6db7c30632d6fc83b7bc9459d7192bc44a21a28b4c6619968bd8c20e95b0aaed7df2187fd310275347e0376a2cd7427db800000000000006cb0000000000000001fffffffb00000000000005e40000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e400000000000007970000000000000001"];
465-
466458
fun get_verified_test_vaas(worm_state: &WormState, clock: &Clock): vector<VAA> {
467459
let test_vaas_: vector<vector<u8>> = vector[x"0100000000010036eb563b80a24f4253bee6150eb8924e4bdf6e4fa1dfc759a6664d2e865b4b134651a7b021b7f1ce3bd078070b688b6f2e37ce2de0d9b48e6a78684561e49d5201527e4f9b00000001001171f8dcb863d176e2c420ad6610cf687359612b6fb392e0642b0ca6b1f186aa3b0000000000000001005032574800030000000102000400951436e0be37536be96f0896366089506a59763d036728332d3e3038047851aea7c6c75c89f14810ec1c54c03ab8f1864a4c4032791f05747f560faec380a695d1000000000000049a0000000000000008fffffffb00000000000005dc0000000000000003000000000100000001000000006329c0eb000000006329c0e9000000006329c0e400000000000006150000000000000007215258d81468614f6b7e194c5d145609394f67b041e93e6695dcc616faadd0603b9551a68d01d954d6387aff4df1529027ffb2fee413082e509feb29cc4904fe000000000000041a0000000000000003fffffffb00000000000005cb0000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e4000000000000048600000000000000078ac9cf3ab299af710d735163726fdae0db8465280502eb9f801f74b3c1bd190333832fad6e36eb05a8972fe5f219b27b5b2bb2230a79ce79beb4c5c5e7ecc76d00000000000003f20000000000000002fffffffb00000000000005e70000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e40000000000000685000000000000000861db714e9ff987b6fedf00d01f9fea6db7c30632d6fc83b7bc9459d7192bc44a21a28b4c6619968bd8c20e95b0aaed7df2187fd310275347e0376a2cd7427db800000000000006cb0000000000000001fffffffb00000000000005e40000000000000003010000000100000001000000006329c0eb000000006329c0e9000000006329c0e400000000000007970000000000000001"];
468460
let verified_vaas_reversed = vector::empty<VAA>();
@@ -809,7 +801,7 @@ module pyth::pyth_tests{
809801

810802
let fee_coins = coin::split(&mut test_coins, DEFAULT_BASE_UPDATE_FEE, ctx(&mut scenario));
811803
vec = update_single_price_feed(
812-
&mut pyth_state,
804+
&pyth_state,
813805
vec,
814806
&mut price_info_object_1,
815807
fee_coins,
@@ -891,7 +883,7 @@ module pyth::pyth_tests{
891883

892884
test_scenario::next_tx(&mut scenario, DEPLOYER);
893885
auth_price_infos = update_single_price_feed(
894-
&mut pyth_state,
886+
&pyth_state,
895887
auth_price_infos,
896888
&mut price_info_object_1,
897889
coins,
@@ -1162,7 +1154,7 @@ module pyth::pyth_tests{
11621154
let coin_split = coin::split(&mut coins, 1000, ctx(&mut scenario));
11631155
let price_info_object = take_shared<PriceInfoObject>(&scenario);
11641156
auth_price_infos = update_single_price_feed(
1165-
&mut pyth_state,
1157+
&pyth_state,
11661158
auth_price_infos,
11671159
&mut price_info_object,
11681160
coin_split,
@@ -1239,7 +1231,7 @@ module pyth::pyth_tests{
12391231

12401232
test_scenario::next_tx(&mut scenario, DEPLOYER);
12411233
vec = update_single_price_feed(
1242-
&mut pyth_state,
1234+
&pyth_state,
12431235
vec,
12441236
&mut price_info_object_1,
12451237
test_coins,
@@ -1453,7 +1445,8 @@ module pyth::pyth_tests{
14531445

14541446
// append some extra garbage bytes at the end of the accumulator message, and make sure
14551447
// that parse_and_verify_accumulator_message does not error out
1456-
vector::append(&mut TEST_ACCUMULATOR_3_MSGS, x"1234123412341234");
1448+
let test_accumulator_3_msgs_modified = TEST_ACCUMULATOR_3_MSGS;
1449+
vector::append(&mut test_accumulator_3_msgs_modified, x"1234123412341234");
14571450

14581451
let cur = cursor::new(TEST_ACCUMULATOR_3_MSGS);
14591452

Diff for: target_chains/sui/contracts/sources/pyth_accumulator.move

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module pyth::accumulator {
99
use pyth::price_feed::{Self};
1010
use pyth::merkle_tree::{Self};
1111

12-
const PRICE_FEED_MESSAGE_TYPE: u64 = 0;
12+
const PRICE_FEED_MESSAGE_TYPE: u8 = 0;
1313
const E_INVALID_UPDATE_DATA: u64 = 245;
1414
const E_INVALID_PROOF: u64 = 345;
1515
const E_INVALID_WORMHOLE_MESSAGE: u64 = 454;
@@ -77,7 +77,7 @@ module pyth::accumulator {
7777
fun parse_price_feed_message(message_cur: &mut Cursor<u8>, clock: &Clock): PriceInfo {
7878
let message_type = deserialize::deserialize_u8(message_cur);
7979

80-
assert!(message_type == 0, 0); // PriceFeedMessage variant
80+
assert!(message_type == PRICE_FEED_MESSAGE_TYPE, E_INVALID_UPDATE_DATA);
8181
let price_identifier = price_identifier::from_byte_vec(deserialize::deserialize_vector(message_cur, 32));
8282
let price = deserialize::deserialize_i64(message_cur);
8383
let conf = deserialize::deserialize_u64(message_cur);

Diff for: target_chains/sui/contracts/sources/setup.move

+1-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ module pyth::setup {
77
use pyth::state::{Self};
88
use pyth::data_source::{DataSource};
99

10-
/// `UpgradeCap` is not as expected when initializing `State`.
11-
const E_INVALID_UPGRADE_CAP: u64 = 0;
12-
/// Build version for setup must only be `1`.
13-
const E_INVALID_BUILD_VERSION: u64 = 1;
14-
1510
friend pyth::pyth;
1611
#[test_only]
1712
friend pyth::pyth_tests;
@@ -44,6 +39,7 @@ module pyth::setup {
4439
);
4540
}
4641

42+
#[allow(lint(share_owned))]
4743
/// Only the owner of the `DeployerCap` can call this method. This
4844
/// method destroys the capability and shares the `State` object.
4945
public(friend) fun init_and_share_state(

Diff for: target_chains/sui/contracts/sources/state.move

-5
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ module pyth::state {
3030

3131
/// Build digest does not agree with current implementation.
3232
const E_INVALID_BUILD_DIGEST: u64 = 0;
33-
/// Specified version does not match this build's version.
34-
const E_VERSION_MISMATCH: u64 = 1;
35-
36-
/// Sui's chain ID is hard-coded to one value.
37-
const CHAIN_ID: u16 = 21;
3833

3934
/// Capability reflecting that the current build version is used to invoke
4035
/// state methods.

0 commit comments

Comments
 (0)