Skip to content

Commit ba2e2a9

Browse files
authored
Merge pull request #4 from xdecentralix/rate-provider
Added Rate Providers
2 parents 69c6a7c + 28ccfda commit ba2e2a9

File tree

22 files changed

+472
-34
lines changed

22 files changed

+472
-34
lines changed

crates/contracts/artifacts/BalancerV2BasePool.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,19 @@
671671
],
672672
"stateMutability": "nonpayable",
673673
"type": "function"
674+
},
675+
{
676+
"inputs": [],
677+
"name": "getRateProviders",
678+
"outputs": [
679+
{
680+
"internalType": "contract IRateProvider[]",
681+
"name": "",
682+
"type": "address[]"
683+
}
684+
],
685+
"stateMutability": "view",
686+
"type": "function"
674687
}
675688
]
676689
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"abi": [
3+
{
4+
"inputs": [],
5+
"name": "getRate",
6+
"outputs": [
7+
{
8+
"internalType": "uint256",
9+
"name": "",
10+
"type": "uint256"
11+
}
12+
],
13+
"stateMutability": "view",
14+
"type": "function"
15+
}
16+
],
17+
"evm": {
18+
"bytecode": {
19+
"object": "",
20+
"opcodes": "",
21+
"sourceMap": ""
22+
},
23+
"deployedBytecode": {
24+
"object": "",
25+
"opcodes": "",
26+
"sourceMap": ""
27+
}
28+
},
29+
"metadata": "{\"compiler\":{\"version\":\"0.8.0\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"evm\":{\"bytecode\":{\"object\":\"\",\"opcodes\":\"\",\"sourceMap\":\"\"},\"deployedBytecode\":{\"object\":\"\",\"opcodes\":\"\",\"sourceMap\":\"\"}},\"metadata\":\"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.0\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[],\\\"name\\\":\\\"getRate\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}],\\\"evm\\\":{\\\"bytecode\\\":{\\\"object\\\":\\\"\\\",\\\"opcodes\\\":\\\"\\\",\\\"sourceMap\\\":\\\"\\\"},\\\"deployedBytecode\\\":{\\\"object\\\":\\\"\\\",\\\"opcodes\\\":\\\"\\\",\\\"sourceMap\\\":\\\"\\\"}}}}\"}",
30+
"bytecode": "",
31+
"deployedBytecode": "",
32+
"compiler": {
33+
"version": "0.8.0"
34+
},
35+
"language": "Solidity"
36+
}

crates/contracts/build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,6 +1203,7 @@ fn main() {
12031203

12041204
generate_contract("BalancerV3WeightedPool");
12051205
generate_contract("BalancerV3StablePool");
1206+
generate_contract("IRateProvider");
12061207

12071208
generate_contract_with_config("BaoswapRouter", |builder| {
12081209
builder.add_network_str(GNOSIS, "0x6093AeBAC87d62b1A5a4cEec91204e35020E38bE")

crates/contracts/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ include_contracts! {
100100
HooksTrampoline;
101101
IAavePool;
102102
IFlashLoanSolverWrapper;
103+
IRateProvider;
103104
ISwaprPair;
104105
IUniswapLikePair;
105106
IUniswapLikeRouter;

crates/shared/src/sources/balancer_v2/graph_api.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ pub struct Token {
169169
#[serde_as(as = "Option<DisplayFromStr>")]
170170
#[serde(default)]
171171
pub weight: Option<Bfp>,
172+
#[serde(rename = "priceRateProvider")]
173+
pub price_rate_provider: Option<H160>,
172174
}
173175

174176
/// Supported pool kinds.
@@ -256,6 +258,7 @@ mod pools_query {
256258
address
257259
decimals
258260
weight
261+
priceRateProvider
259262
}
260263
dynamicData {
261264
swapEnabled
@@ -393,11 +396,13 @@ mod tests {
393396
address: H160([0x33; 20]),
394397
decimals: 3,
395398
weight: Some(Bfp::from_wei(500_000_000_000_000_000u128.into())),
399+
price_rate_provider: None,
396400
},
397401
Token {
398402
address: H160([0x44; 20]),
399403
decimals: 4,
400404
weight: Some(Bfp::from_wei(500_000_000_000_000_000u128.into())),
405+
price_rate_provider: None,
401406
},
402407
],
403408
dynamic_data: DynamicData { swap_enabled: true },
@@ -416,11 +421,13 @@ mod tests {
416421
address: H160([0x33; 20]),
417422
decimals: 3,
418423
weight: None,
424+
price_rate_provider: None,
419425
},
420426
Token {
421427
address: H160([0x44; 20]),
422428
decimals: 4,
423429
weight: None,
430+
price_rate_provider: None,
424431
},
425432
],
426433
dynamic_data: DynamicData { swap_enabled: true },
@@ -439,11 +446,13 @@ mod tests {
439446
address: H160([0x33; 20]),
440447
decimals: 3,
441448
weight: Some(Bfp::from_wei(500_000_000_000_000_000u128.into())),
449+
price_rate_provider: None,
442450
},
443451
Token {
444452
address: H160([0x44; 20]),
445453
decimals: 4,
446454
weight: Some(Bfp::from_wei(500_000_000_000_000_000u128.into())),
455+
price_rate_provider: None,
447456
},
448457
],
449458
dynamic_data: DynamicData { swap_enabled: true },
@@ -462,11 +471,13 @@ mod tests {
462471
address: H160([0x33; 20]),
463472
decimals: 3,
464473
weight: None,
474+
price_rate_provider: None,
465475
},
466476
Token {
467477
address: H160([0x44; 20]),
468478
decimals: 4,
469479
weight: None,
480+
price_rate_provider: None,
470481
},
471482
],
472483
dynamic_data: DynamicData { swap_enabled: true },

crates/shared/src/sources/balancer_v2/pool_fetching/pool_storage.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ mod tests {
276276
address: H160([1; 20]),
277277
tokens: vec![H160([0x11; 20]), H160([0x22; 20])],
278278
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
279+
rate_providers: vec![H160::zero(), H160::zero()],
279280
block_created: 0,
280281
},
281282
weights: vec![
@@ -289,6 +290,7 @@ mod tests {
289290
address: H160([2; 20]),
290291
tokens: vec![H160([0x11; 20]), H160([0x33; 20]), H160([0x77; 20])],
291292
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
293+
rate_providers: vec![H160::zero(), H160::zero(), H160::zero()],
292294
block_created: 0,
293295
},
294296
weights: vec![
@@ -303,6 +305,7 @@ mod tests {
303305
address: H160([3; 20]),
304306
tokens: vec![H160([0x11; 20]), H160([0x77; 20])],
305307
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
308+
rate_providers: vec![H160::zero(), H160::zero()],
306309
block_created: 0,
307310
},
308311
weights: vec![
@@ -338,6 +341,7 @@ mod tests {
338341
address: pool_addresses[i],
339342
tokens: vec![tokens[i], tokens[i + 1]],
340343
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
344+
rate_providers: vec![H160::zero(), H160::zero()],
341345
block_created: creation_events[i].1,
342346
},
343347
weights: vec![weights[i], weights[i + 1]],
@@ -389,6 +393,7 @@ mod tests {
389393
address: pool_addresses[i],
390394
tokens: vec![tokens[i], tokens[i + 1]],
391395
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
396+
rate_providers: vec![H160::zero(), H160::zero()],
392397
block_created: i as _,
393398
},
394399
weights: vec![weights[i], weights[i + 1]],
@@ -413,6 +418,7 @@ mod tests {
413418
address: pool_addresses[i],
414419
tokens: vec![tokens[i], tokens[i + 1]],
415420
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
421+
rate_providers: vec![H160::zero(), H160::zero()],
416422
block_created: creation_events[i].1,
417423
},
418424
weights: vec![weights[i], weights[i + 1]],
@@ -433,6 +439,7 @@ mod tests {
433439
address: H160::from_low_u64_be(42),
434440
tokens: vec![H160::from_low_u64_be(808)],
435441
scaling_factors: vec![Bfp::exp10(0)],
442+
rate_providers: vec![H160::zero()],
436443
block_created: 3,
437444
},
438445
weights: vec![Bfp::from_wei(1337.into())],
@@ -479,6 +486,7 @@ mod tests {
479486
address: pool_addresses[i],
480487
tokens: vec![tokens[i], tokens[i + 1]],
481488
scaling_factors: vec![Bfp::exp10(0), Bfp::exp10(0)],
489+
rate_providers: vec![H160::zero(), H160::zero()],
482490
block_created: i as u64,
483491
},
484492
weights: vec![weights[i], weights[i + 1]],
@@ -550,6 +558,7 @@ mod tests {
550558
id: pool_ids[i],
551559
tokens: tokens[i..n].to_owned(),
552560
scaling_factors: vec![],
561+
rate_providers: vec![H160::zero(); n - i],
553562
block_created: 0,
554563
address: pool_addresses[i],
555564
},

0 commit comments

Comments
 (0)