From b99540a2f5ac0876618603ec1e8c9d774e68292f Mon Sep 17 00:00:00 2001 From: runtianz Date: Wed, 9 Oct 2024 14:30:37 -0700 Subject: [PATCH] Create benchmark --- aptos-move/e2e-benchmark/src/main.rs | 2 + crates/transaction-generator-lib/src/args.rs | 6 ++ .../src/publishing/module_simple.rs | 26 ++++++- .../src/publishing/raw_module_data.rs | 73 ++++++++++++++----- .../sources/permissioned_transfer.move | 24 ++++++ 5 files changed, 112 insertions(+), 19 deletions(-) create mode 100644 testsuite/module-publish/src/packages/framework_usecases/sources/permissioned_transfer.move diff --git a/aptos-move/e2e-benchmark/src/main.rs b/aptos-move/e2e-benchmark/src/main.rs index e00db94985007..7bfa30303dc32 100644 --- a/aptos-move/e2e-benchmark/src/main.rs +++ b/aptos-move/e2e-benchmark/src/main.rs @@ -202,6 +202,8 @@ fn main() { EntryPoints::IncGlobalMilestoneAggV2 { milestone_every: 1 }, EntryPoints::IncGlobalMilestoneAggV2 { milestone_every: 2 }, EntryPoints::EmitEvents { count: 1000 }, + EntryPoints::APTPermissionedTransfer, + EntryPoints::APTTransfer, ]; let mut failures = Vec::new(); diff --git a/crates/transaction-generator-lib/src/args.rs b/crates/transaction-generator-lib/src/args.rs index fb0cc7779d427..904fb1b1eeb75 100644 --- a/crates/transaction-generator-lib/src/args.rs +++ b/crates/transaction-generator-lib/src/args.rs @@ -74,6 +74,8 @@ pub enum TransactionTypeArg { SmartTablePicture1MWith1KChangeExceedsLimit, DeserializeU256, SimpleScript, + PermissionedTransfer, + APTTransfer, } impl TransactionTypeArg { @@ -326,6 +328,10 @@ impl TransactionTypeArg { }, TransactionTypeArg::DeserializeU256 => call_custom_module(EntryPoints::DeserializeU256), TransactionTypeArg::SimpleScript => call_custom_module(EntryPoints::SimpleScript), + TransactionTypeArg::PermissionedTransfer => { + call_custom_module(EntryPoints::APTPermissionedTransfer) + }, + TransactionTypeArg::APTTransfer => call_custom_module(EntryPoints::APTTransfer), } } diff --git a/crates/transaction-generator-lib/src/publishing/module_simple.rs b/crates/transaction-generator-lib/src/publishing/module_simple.rs index f1b338bb23a16..a8875bb1fa81b 100644 --- a/crates/transaction-generator-lib/src/publishing/module_simple.rs +++ b/crates/transaction-generator-lib/src/publishing/module_simple.rs @@ -274,6 +274,8 @@ pub enum EntryPoints { /// there to slow down deserialization & verification, effectively making it more expensive to /// load it into code cache. SimpleScript, + APTPermissionedTransfer, + APTTransfer, } impl EntryPoints { @@ -318,7 +320,9 @@ impl EntryPoints { | EntryPoints::ResourceGroupsSenderWriteTag { .. } | EntryPoints::ResourceGroupsSenderMultiChange { .. } | EntryPoints::CoinInitAndMint - | EntryPoints::FungibleAssetMint => "framework_usecases", + | EntryPoints::FungibleAssetMint + | EntryPoints::APTPermissionedTransfer + | EntryPoints::APTTransfer => "framework_usecases", EntryPoints::TokenV2AmbassadorMint { .. } | EntryPoints::TokenV2AmbassadorBurn => { "ambassador_token" }, @@ -393,6 +397,9 @@ impl EntryPoints { EntryPoints::IncGlobalMilestoneAggV2 { .. } | EntryPoints::CreateGlobalMilestoneAggV2 { .. } => "counter_with_milestone", EntryPoints::DeserializeU256 => "bcs_stream", + EntryPoints::APTPermissionedTransfer | EntryPoints::APTTransfer => { + "permissioned_transfer" + }, } } @@ -745,6 +752,20 @@ impl EntryPoints { ], ) }, + EntryPoints::APTPermissionedTransfer => get_payload( + module_id, + ident_str!("transfer_permissioned").to_owned(), + vec![ + bcs::to_bytes(&other.expect("Must provide other")).unwrap(), + bcs::to_bytes(&1u64).unwrap(), + ], + ), + EntryPoints::APTTransfer => { + get_payload(module_id, ident_str!("transfer").to_owned(), vec![ + bcs::to_bytes(&other.expect("Must provide other")).unwrap(), + bcs::to_bytes(&1u64).unwrap(), + ]) + }, } } @@ -855,6 +876,9 @@ impl EntryPoints { EntryPoints::DeserializeU256 => AutomaticArgs::None, EntryPoints::IncGlobalMilestoneAggV2 { .. } => AutomaticArgs::None, EntryPoints::CreateGlobalMilestoneAggV2 { .. } => AutomaticArgs::Signer, + EntryPoints::APTPermissionedTransfer | EntryPoints::APTTransfer => { + AutomaticArgs::Signer + }, } } } diff --git a/crates/transaction-generator-lib/src/publishing/raw_module_data.rs b/crates/transaction-generator-lib/src/publishing/raw_module_data.rs index 195b894efff28..f14f16b515231 100644 --- a/crates/transaction-generator-lib/src/publishing/raw_module_data.rs +++ b/crates/transaction-generator-lib/src/publishing/raw_module_data.rs @@ -1000,11 +1000,11 @@ pub static MODULES_SIMPLE: Lazy>> = Lazy::new(|| { vec![ pub static PACKAGE_FRAMEWORK_USECASES_METADATA: Lazy> = Lazy::new(|| { vec![ 17, 70, 114, 97, 109, 101, 119, 111, 114, 107, 85, 115, 101, 99, 97, 115, 101, 115, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 55, 49, 50, 55, 50, 50, 66, 65, - 65, 50, 67, 49, 53, 66, 70, 54, 65, 70, 53, 70, 55, 52, 65, 67, 69, 56, - 51, 68, 53, 66, 66, 54, 66, 67, 56, 56, 49, 69, 66, 67, 68, 66, 66, 57, - 52, 48, 49, 54, 66, 66, 53, 66, 67, 48, 49, 51, 56, 49, 49, 50, 51, 53, - 66, 50, 215, 1, 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 165, 144, 187, 142, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 64, 54, 68, 56, 57, 49, 65, 48, 70, + 50, 50, 57, 52, 49, 68, 48, 54, 52, 53, 66, 67, 56, 54, 51, 66, 48, 68, + 66, 48, 53, 55, 69, 53, 55, 51, 51, 56, 56, 57, 49, 52, 69, 67, 53, 69, + 50, 48, 51, 51, 67, 67, 53, 67, 68, 70, 49, 66, 54, 65, 52, 66, 55, 56, + 50, 48, 215, 1, 31, 139, 8, 0, 0, 0, 0, 0, 2, 255, 165, 144, 187, 142, 194, 64, 12, 69, 251, 249, 10, 107, 182, 38, 236, 15, 108, 193, 238, 138, 150, 6, 170, 8, 33, 51, 49, 33, 100, 176, 163, 241, 240, 144, 16, 255, 78, 44, 30, 130, 22, 100, 23, 215, 246, 189, 167, 112, 217, 97, 104, 177, 166, 185, 99, 220, 18, 252, @@ -1016,26 +1016,27 @@ pub static PACKAGE_FRAMEWORK_USECASES_METADATA: Lazy> = Lazy::new(|| { 134, 107, 160, 99, 88, 35, 215, 38, 101, 5, 65, 88, 51, 114, 6, 172, 170, 68, 170, 96, 20, 5, 236, 5, 197, 88, 184, 242, 182, 183, 231, 117, 187, 101, 108, 116, 77, 105, 113, 55, 219, 163, 143, 163, 223, 191, 127, 239, 46, 112, 10, 188, 112, 161, - 1, 0, 0, 6, 18, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 101, 120, + 1, 0, 0, 7, 18, 97, 103, 103, 114, 101, 103, 97, 116, 111, 114, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 12, 99, 111, 105, 110, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 22, 102, 117, 110, 103, 105, 98, 108, 101, 95, 97, 115, 115, 101, 116, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 7, 111, 98, 106, - 101, 99, 116, 115, 0, 0, 0, 23, 114, 101, 115, 111, 117, 114, 99, 101, 95, 103, - 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, 108, 101, 0, 0, 0, 8, 116, - 111, 107, 101, 110, 95, 118, 49, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, + 101, 99, 116, 115, 0, 0, 0, 21, 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, + 101, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 0, 0, 0, 23, 114, 101, 115, + 111, 117, 114, 99, 101, 95, 103, 114, 111, 117, 112, 115, 95, 101, 120, 97, 109, 112, + 108, 101, 0, 0, 0, 8, 116, 111, 107, 101, 110, 95, 118, 49, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 14, 65, 112, 116, 111, 115, 70, 114, 97, 109, 101, - 119, 111, 114, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 11, 65, 112, 116, 111, 115, 83, 116, 100, 108, 105, 98, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 65, 112, 116, + 111, 115, 70, 114, 97, 109, 101, 119, 111, 114, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 10, 77, 111, 118, 101, 83, 116, 100, 108, 105, + 0, 0, 0, 0, 0, 0, 1, 11, 65, 112, 116, 111, 115, 83, 116, 100, 108, 105, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 65, 112, - 116, 111, 115, 84, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 77, 111, + 118, 101, 83, 116, 100, 108, 105, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 17, 65, 112, 116, 111, 115, 84, 111, 107, 101, 110, 79, 98, 106, - 101, 99, 116, 115, 0, + 0, 0, 0, 3, 10, 65, 112, 116, 111, 115, 84, 111, 107, 101, 110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 65, 112, 116, 111, 115, 84, + 111, 107, 101, 110, 79, 98, 106, 101, 99, 116, 115, 0, ] }); @@ -1293,6 +1294,41 @@ pub static MODULE_FRAMEWORK_USECASES_OBJECTS: Lazy> = Lazy::new(|| { ] }); +#[rustfmt::skip] +pub static MODULE_FRAMEWORK_USECASES_PERMISSIONED_TRANSFER: Lazy> = Lazy::new(|| { + vec![ + 161, 28, 235, 11, 7, 0, 0, 10, 8, 1, 0, 8, 2, 8, 4, 3, 12, 42, + 5, 54, 30, 7, 84, 237, 1, 8, 193, 2, 64, 16, 129, 3, 31, 12, 160, 3, + 58, 0, 0, 1, 2, 1, 4, 1, 8, 2, 6, 0, 0, 0, 1, 0, 1, 0, + 1, 1, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 2, 5, 2, 3, 0, + 1, 2, 7, 4, 5, 0, 1, 3, 9, 6, 1, 0, 1, 2, 10, 3, 1, 0, + 1, 3, 6, 12, 5, 3, 0, 1, 6, 12, 1, 8, 0, 1, 6, 8, 0, 1, + 12, 3, 6, 12, 6, 12, 3, 3, 8, 0, 12, 6, 12, 21, 112, 101, 114, 109, + 105, 115, 115, 105, 111, 110, 101, 100, 95, 116, 114, 97, 110, 115, 102, 101, 114, 8, + 116, 114, 97, 110, 115, 102, 101, 114, 13, 97, 112, 116, 111, 115, 95, 97, 99, 99, + 111, 117, 110, 116, 21, 116, 114, 97, 110, 115, 102, 101, 114, 95, 112, 101, 114, 109, + 105, 115, 115, 105, 111, 110, 101, 100, 19, 112, 101, 114, 109, 105, 115, 115, 105, 111, + 110, 101, 100, 95, 115, 105, 103, 110, 101, 114, 26, 99, 114, 101, 97, 116, 101, 95, + 112, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 95, 104, 97, 110, 100, 108, + 101, 18, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 72, 97, 110, 100, + 108, 101, 31, 115, 105, 103, 110, 101, 114, 95, 102, 114, 111, 109, 95, 112, 101, 114, + 109, 105, 115, 115, 105, 111, 110, 101, 100, 95, 104, 97, 110, 100, 108, 101, 22, 112, + 114, 105, 109, 97, 114, 121, 95, 102, 117, 110, 103, 105, 98, 108, 101, 95, 115, 116, + 111, 114, 101, 20, 103, 114, 97, 110, 116, 95, 97, 112, 116, 95, 112, 101, 114, 109, + 105, 115, 115, 105, 111, 110, 27, 100, 101, 115, 116, 114, 111, 121, 95, 112, 101, 114, + 109, 105, 115, 115, 105, 111, 110, 101, 100, 95, 104, 97, 110, 100, 108, 101, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 20, 99, 111, 109, 112, 105, 108, 97, 116, 105, + 111, 110, 95, 109, 101, 116, 97, 100, 97, 116, 97, 9, 0, 3, 50, 46, 48, 3, + 50, 46, 49, 0, 1, 4, 0, 1, 5, 11, 0, 11, 1, 11, 2, 17, 1, 2, + 2, 1, 4, 0, 7, 19, 10, 0, 17, 3, 12, 3, 14, 3, 17, 4, 12, 4, + 14, 4, 12, 5, 11, 0, 11, 5, 10, 2, 17, 5, 14, 4, 11, 1, 11, 2, + 17, 1, 11, 3, 17, 6, 2, 0, + ] +}); + #[rustfmt::skip] pub static MODULE_FRAMEWORK_USECASES_RESOURCE_GROUPS_EXAMPLE: Lazy> = Lazy::new(|| { vec![ @@ -1608,6 +1644,7 @@ pub static MODULES_FRAMEWORK_USECASES: Lazy>> = Lazy::new(|| { vec![ MODULE_FRAMEWORK_USECASES_COIN_EXAMPLE.to_vec(), MODULE_FRAMEWORK_USECASES_FUNGIBLE_ASSET_EXAMPLE.to_vec(), MODULE_FRAMEWORK_USECASES_OBJECTS.to_vec(), + MODULE_FRAMEWORK_USECASES_PERMISSIONED_TRANSFER.to_vec(), MODULE_FRAMEWORK_USECASES_RESOURCE_GROUPS_EXAMPLE.to_vec(), MODULE_FRAMEWORK_USECASES_TOKEN_V1.to_vec(), ]}); diff --git a/testsuite/module-publish/src/packages/framework_usecases/sources/permissioned_transfer.move b/testsuite/module-publish/src/packages/framework_usecases/sources/permissioned_transfer.move new file mode 100644 index 0000000000000..a8fc045c0d64f --- /dev/null +++ b/testsuite/module-publish/src/packages/framework_usecases/sources/permissioned_transfer.move @@ -0,0 +1,24 @@ + +module 0xABCD::permissioned_transfer { + use aptos_framework::aptos_account; + use aptos_framework::permissioned_signer; + use aptos_framework::primary_fungible_store; + + public entry fun transfer_permissioned( + source: &signer, to: address, amount: u64 + ) { + let handle = permissioned_signer::create_permissioned_handle(source); + let permissioned_signer = permissioned_signer::signer_from_permissioned_handle(&handle); + + primary_fungible_store::grant_apt_permission(source, &permissioned_signer, amount); + aptos_account::transfer(&permissioned_signer, to, amount); + + permissioned_signer::destroy_permissioned_handle(handle); + } + + public entry fun transfer( + source: &signer, to: address, amount: u64 + ) { + aptos_account::transfer(source, to, amount); + } +}