Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 32 additions & 32 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -126,40 +126,40 @@ serde_yaml = "0.9.34"
## Aptos dependencies
### We use a forked version so that we can override dependency versions. This is required
### to be avoid dependency conflicts with other Sovereign Labs crates.
aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41", features = [
aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e", features = [
"cloneable-private-keys",
] }
aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "9dfc8e7a3d622597dfd81cc4ba480a5377f87a41" }
aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }
aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "368de0e2d6d20f01c7cf32260bc05c037b56874e" }

# Indexer
processor = { git = "https://github.com/movementlabsxyz/aptos-indexer-processors", rev = "7658338eb9224abd9698c1e02dbc6ca526c268ce" }
Expand Down
4 changes: 4 additions & 0 deletions networks/movement/movement-client/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ path = "src/bin/e2e/followers_consistent.rs"
name = "movement-tests-e2e-whitelist"
path = "src/bin/e2e/whitelist.rs"

[[bin]]
name = "movement-tests-e2e-governed-gas-pool-testnet"
path = "src/bin/e2e/governed_gas_pool_testnet.rs"

[dependencies]
aptos-sdk = { workspace = true }
aptos-types = { workspace = true }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
use anyhow::Context;
use movement_client::{
coin_client::CoinClient,
rest_client::{Client, FaucetClient},
types::LocalAccount,
};
use once_cell::sync::Lazy;
use std::str::FromStr;
use url::Url;

static SUZUKA_CONFIG: Lazy<movement_config::Config> = Lazy::new(|| {
let dot_movement = dot_movement::DotMovement::try_from_env().unwrap();
let config = dot_movement.try_get_config_from_json::<movement_config::Config>().unwrap();
config
});

// :!:>section_1c
static NODE_URL: Lazy<Url> = Lazy::new(|| {
let node_connection_address = SUZUKA_CONFIG
.execution_config
.maptos_config
.client
.maptos_rest_connection_hostname
.clone();
let node_connection_port = SUZUKA_CONFIG
.execution_config
.maptos_config
.client
.maptos_rest_connection_port
.clone();

let node_connection_url =
format!("http://{}:{}", node_connection_address, node_connection_port);

Url::from_str(node_connection_url.as_str()).unwrap()
});

static FAUCET_URL: Lazy<Url> = Lazy::new(|| {
let faucet_listen_address = SUZUKA_CONFIG
.execution_config
.maptos_config
.client
.maptos_faucet_rest_connection_hostname
.clone();
let faucet_listen_port = SUZUKA_CONFIG
.execution_config
.maptos_config
.client
.maptos_faucet_rest_connection_port
.clone();

let faucet_listen_url = format!("http://{}:{}", faucet_listen_address, faucet_listen_port);

Url::from_str(faucet_listen_url.as_str()).unwrap()
});
// <:!:section_1c

#[tokio::main]
async fn main() -> Result<(), anyhow::Error> {
let rest_client = Client::new(NODE_URL.clone());
let faucet_client = FaucetClient::new(FAUCET_URL.clone(), NODE_URL.clone()); // <:!:section_1a

let coin_client = CoinClient::new(&rest_client); // <:!:section_1b

// Create the proposer account and fund it from the faucet
let mut proposer = LocalAccount::generate(&mut rand::rngs::OsRng);
faucet_client
.fund_account(&proposer, 1_000_000)
.await
.context("Failed to fund proposer account")?;

// Create the beneficiary account and fund it from the faucet
let beneficiary = LocalAccount::generate(&mut rand::rngs::OsRng);
faucet_client
.fund_account(&beneficiary, 1_000_000)
.await
.context("Failed to fund beneficiary account")?;
let beneficiary_address = beneficiary.address().to_hex_literal();

// TODO: run some methods, collect some gas, and check the balance of the governed gas pool

let amount = 100_000; // TODO: replace with appropriate amount w.r.t. gas collection.

let pre_beneficiary_balance = coin_client
.get_account_balance(&beneficiary.address())
.await
.context("Failed to get beneficiary's account balance")?;

// Build the move script payload
let fund_from_governed_gas_pool_script = format!(
r#"
script {{
use aptos_framework::aptos_governance;
use aptos_framework::consensus_config;
use aptos_framework::governed_gas_pool;
fun main(core_resources: &signer) {{
let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @0000000000000000000000000000000000000000000000000000000000000001);

// fund the beneficiary account
governed_gas_pool::fund(
&framework_signer,
@0x{beneficiary_address},
{amount}
);

}}
}}
"#
);

// Assert the emission of the governed gas pool
let post_beneficiary_balance = coin_client
.get_account_balance(&beneficiary.address())
.await
.context("Failed to get beneficiary's account balance")?;
assert_eq!(
post_beneficiary_balance,
pre_beneficiary_balance + amount,
"Beneficiary's balance should be increased by {}",
amount
);

Ok(())
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: "3"

environment:

processes:

test-governed-gas-pool-testnet:
command: |
cargo run --bin movement-tests-e2e-government-gas-pool-testnet
depends_on:
movement-full-node:
condition: process_healthy
movement-faucet:
condition: process_healthy