Skip to content

Commit 02d0adc

Browse files
authored
feat: publisher-caps-program (#1812)
* feat/publisher-caps-program * add to vec * fix ci * Change create accumulator message * cargo lock
1 parent 8578eb2 commit 02d0adc

File tree

13 files changed

+68
-33
lines changed

13 files changed

+68
-33
lines changed

.github/workflows/ci-pre-commit.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ jobs:
3232
profile: minimal
3333
toolchain: nightly-2024-03-26
3434
components: rustfmt, clippy
35+
- uses: actions-rs/toolchain@v1
36+
with:
37+
profile: minimal
38+
toolchain: nightly-2024-08-04
39+
components: rustfmt, clippy
3540
- name: Install protoc
3641
uses: arduino/setup-protoc@v3
3742
- uses: actions/checkout@v4

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ repos:
8383
- id: cargo-fmt-pythnet-sdk
8484
name: Cargo format for pythnet SDK
8585
language: "rust"
86-
entry: cargo +nightly-2024-03-26 fmt --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --all -- --config-path rustfmt.toml
86+
entry: cargo +nightly-2024-08-04 fmt --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --all -- --config-path rustfmt.toml
8787
pass_filenames: false
8888
files: pythnet/pythnet_sdk
8989
- id: cargo-clippy-pythnet-sdk
9090
name: Cargo clippy for pythnet SDK
9191
language: "rust"
92-
entry: cargo +nightly-2024-03-26 clippy --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
92+
entry: cargo +nightly-2024-08-04 clippy --manifest-path ./pythnet/pythnet_sdk/Cargo.toml --tests --fix --allow-dirty --allow-staged -- -D warnings
9393
pass_filenames: false
9494
files: pythnet/pythnet_sdk
9595
# Hooks for solana receiver contract

pythnet/pythnet_sdk/Cargo.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "pythnet-sdk"
3-
version = "2.2.0"
3+
version = "2.3.0"
44
description = "Pyth Runtime for Solana"
55
authors = ["Pyth Data Association"]
66
repository = "https://github.com/pyth-network/pythnet"
@@ -13,7 +13,7 @@ name = "pythnet_sdk"
1313

1414
[features]
1515
test-utils = ["dep:wormhole-vaas-serde", "dep:serde_wormhole", "dep:libsecp256k1", "dep:rand"]
16-
solana-program = ["dep:solana-program", "dep:anchor-lang", "dep:proc-macro2"]
16+
solana-program = ["dep:solana-program", "dep:anchor-lang"]
1717

1818
[dependencies]
1919
bincode = "1.3.1"
@@ -34,7 +34,6 @@ libsecp256k1 = {version ="0.7.1", optional = true}
3434
rand = {version = "0.8.5", optional = true}
3535
solana-program = {version = ">=1.13.6", optional = true}
3636
anchor-lang = {version = ">=0.28.0", optional = true}
37-
proc-macro2 = {version = "=1.0.79", optional = true} # pinned to 1.0.79 to compilation errors with newer versions, remove this if it compiles fine without
3837

3938
[dev-dependencies]
4039
base64 = "0.21.0"

pythnet/pythnet_sdk/src/accumulators/merkle.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ impl<H: Hasher> MerklePath<H> {
111111
.flat_map(|hash| hash.as_ref().to_vec())
112112
.collect()
113113
}
114+
115+
pub fn to_vec(&self) -> Vec<H::Hash> {
116+
self.0.clone()
117+
}
114118
}
115119

116120
/// Presents an Accumulator friendly interface for MerkleTree.

pythnet/pythnet_sdk/src/test_utils/mod.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ pub fn create_accumulator_message(
157157
updates: &[&Message],
158158
corrupt_wormhole_message: bool,
159159
corrupt_messages: bool,
160+
data_source_override: Option<DataSource>,
160161
) -> Vec<u8> {
161162
let mut all_feeds_bytes: Vec<_> = all_feeds
162163
.iter()
@@ -196,12 +197,13 @@ pub fn create_accumulator_message(
196197
proof,
197198
});
198199
}
200+
let data_source = data_source_override.unwrap_or(DEFAULT_DATA_SOURCE);
199201
create_accumulator_message_from_updates(
200202
price_updates,
201203
tree,
202204
corrupt_wormhole_message,
203-
DEFAULT_DATA_SOURCE.address,
204-
DEFAULT_DATA_SOURCE.chain,
205+
data_source.address,
206+
data_source.chain,
205207
)
206208
}
207209

target_chains/cosmwasm/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

target_chains/cosmwasm/contracts/pyth/src/contract.rs

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,8 @@ mod test {
11551155
let feed1 = create_dummy_price_feed_message(100);
11561156
let feed2 = create_dummy_price_feed_message(200);
11571157
let feed3 = create_dummy_price_feed_message(300);
1158-
let data = create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1], false, false);
1158+
let data =
1159+
create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1], false, false, None);
11591160
check_sufficient_fee(&deps.as_ref(), &[data.into()])
11601161
}
11611162

@@ -1246,14 +1247,20 @@ mod test {
12461247
let feed2 = create_dummy_price_feed_message(200);
12471248
let feed3 = create_dummy_price_feed_message(300);
12481249

1249-
let msg =
1250-
create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1, &feed3], false, false);
1250+
let msg = create_accumulator_message(
1251+
&[&feed1, &feed2, &feed3],
1252+
&[&feed1, &feed3],
1253+
false,
1254+
false,
1255+
None,
1256+
);
12511257
assert_eq!(
12521258
get_update_fee_amount(&deps.as_ref(), &[msg.into()]).unwrap(),
12531259
200
12541260
);
12551261

1256-
let msg = create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1], false, false);
1262+
let msg =
1263+
create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1], false, false, None);
12571264
assert_eq!(
12581265
get_update_fee_amount(&deps.as_ref(), &[msg.into()]).unwrap(),
12591266
100
@@ -1264,6 +1271,7 @@ mod test {
12641271
&[&feed1, &feed2, &feed3, &feed1, &feed3],
12651272
false,
12661273
false,
1274+
None,
12671275
);
12681276
assert_eq!(
12691277
get_update_fee_amount(&deps.as_ref(), &[msg.into()]).unwrap(),
@@ -1277,6 +1285,7 @@ mod test {
12771285
&[&feed1, &feed2, &feed3],
12781286
false,
12791287
false,
1288+
None,
12801289
);
12811290
assert_eq!(
12821291
get_update_fee_amount(&deps.as_ref(), &[msg.into(), batch_msg]).unwrap(),
@@ -1294,7 +1303,7 @@ mod test {
12941303

12951304
let feed1 = create_dummy_price_feed_message(100);
12961305
let feed2 = create_dummy_price_feed_message(200);
1297-
let msg = create_accumulator_message(&[&feed1, &feed2], &[&feed1], false, false);
1306+
let msg = create_accumulator_message(&[&feed1, &feed2], &[&feed1], false, false, None);
12981307
let info = mock_info("123", &[]);
12991308
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
13001309
assert!(result.is_ok());
@@ -1312,7 +1321,7 @@ mod test {
13121321
all_feeds.push(create_dummy_price_feed_message(i));
13131322
}
13141323
let all_feeds: Vec<&Message> = all_feeds.iter().collect();
1315-
let msg = create_accumulator_message(&all_feeds, &all_feeds[100..110], false, false);
1324+
let msg = create_accumulator_message(&all_feeds, &all_feeds[100..110], false, false, None);
13161325
let info = mock_info("123", &[]);
13171326
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
13181327
assert!(result.is_ok());
@@ -1344,6 +1353,7 @@ mod test {
13441353
&[&feed1, &feed2, &feed3],
13451354
false,
13461355
false,
1356+
None,
13471357
);
13481358
as_mut_price_feed(&mut feed1).publish_time += 1;
13491359
as_mut_price_feed(&mut feed2).publish_time += 1;
@@ -1356,6 +1366,7 @@ mod test {
13561366
&[&feed1, &feed2, &feed3],
13571367
false,
13581368
false,
1369+
None,
13591370
);
13601371
let info = mock_info("123", &[]);
13611372
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into(), msg2.into()]);
@@ -1382,6 +1393,7 @@ mod test {
13821393
&[&feed1, &feed2, &feed3],
13831394
false,
13841395
false,
1396+
None,
13851397
);
13861398
let info = mock_info("123", &[]);
13871399
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
@@ -1402,11 +1414,21 @@ mod test {
14021414
let feed3 = create_dummy_price_feed_message(300);
14031415
as_mut_price_feed(&mut feed2).publish_time -= 1;
14041416
as_mut_price_feed(&mut feed2).price *= 2;
1405-
let msg =
1406-
create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed1, &feed3], false, false);
1417+
let msg = create_accumulator_message(
1418+
&[&feed1, &feed2, &feed3],
1419+
&[&feed1, &feed3],
1420+
false,
1421+
false,
1422+
None,
1423+
);
14071424

1408-
let msg2 =
1409-
create_accumulator_message(&[&feed1, &feed2, &feed3], &[&feed2, &feed3], false, false);
1425+
let msg2 = create_accumulator_message(
1426+
&[&feed1, &feed2, &feed3],
1427+
&[&feed2, &feed3],
1428+
false,
1429+
false,
1430+
None,
1431+
);
14101432
let info = mock_info("123", &[]);
14111433
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into(), msg2.into()]);
14121434

@@ -1423,7 +1445,7 @@ mod test {
14231445
.unwrap();
14241446

14251447
let feed1 = create_dummy_price_feed_message(100);
1426-
let mut msg = create_accumulator_message(&[&feed1], &[&feed1], false, false);
1448+
let mut msg = create_accumulator_message(&[&feed1], &[&feed1], false, false, None);
14271449
msg[4] = 3; // major version
14281450
let info = mock_info("123", &[]);
14291451
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
@@ -1442,7 +1464,7 @@ mod test {
14421464
.unwrap();
14431465

14441466
let feed1 = create_dummy_price_feed_message(100);
1445-
let msg = create_accumulator_message(&[&feed1], &[&feed1], true, false);
1467+
let msg = create_accumulator_message(&[&feed1], &[&feed1], true, false, None);
14461468
let info = mock_info("123", &[]);
14471469
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
14481470
assert!(result.is_err());
@@ -1470,7 +1492,7 @@ mod test {
14701492
prev_publish_time: 0,
14711493
publish_slot: 0,
14721494
});
1473-
let msg = create_accumulator_message(&[&feed1], &[&feed1], false, false);
1495+
let msg = create_accumulator_message(&[&feed1], &[&feed1], false, false, None);
14741496
let info = mock_info("123", &[]);
14751497
let result = update_price_feeds(deps.as_mut(), env, info, &[msg.into()]);
14761498
assert!(result.is_err());

target_chains/near/receiver/tests/workspaces.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ async fn test_accumulator_updates() {
910910
// Create a couple of test feeds.
911911
let feed_1 = create_dummy_price_feed_message(100);
912912
let feed_2 = create_dummy_price_feed_message(200);
913-
let message = create_accumulator_message(&[&feed_1, &feed_2], &[&feed_1], false, false);
913+
let message = create_accumulator_message(&[&feed_1, &feed_2], &[&feed_1], false, false, None);
914914
let message = hex::encode(message);
915915

916916
// Call the usual UpdatePriceFeed function.

target_chains/solana/Cargo.lock

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

target_chains/solana/programs/pyth-push-oracle/tests/test_update_price_feed.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ async fn test_update_price_feed() {
5151
&[&feed_1_old, &feed_1_recent, &feed_2],
5252
false,
5353
false,
54+
None,
5455
);
5556
let (vaa, merkle_price_updates) = deserialize_accumulator_update_data(message).unwrap();
5657

0 commit comments

Comments
 (0)