Skip to content

Commit

Permalink
Merge manta
Browse files Browse the repository at this point in the history
Signed-off-by: Dengjianping <djptux@gmail.com>
  • Loading branch information
Dengjianping committed Sep 11, 2023
2 parents 50a4cb4 + eb48ca1 commit 7a31fe9
Show file tree
Hide file tree
Showing 16 changed files with 1,041 additions and 860 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/run_all_benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ env:
jobs:
run-benchmarks:
timeout-minutes: 720
runs-on: runtime-integration-test
if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
runs-on: runtime-large
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
Expand Down Expand Up @@ -51,7 +50,7 @@ jobs:
- name: init
run: |
sudo apt update
sudo apt install -y pkg-config libssl-dev protobuf-compiler
sudo apt install -y pkg-config libssl-dev protobuf-compiler build-essential clang curl llvm libudev-dev libclang-dev
protoc --version
curl -s https://sh.rustup.rs -sSf | sh -s -- -y
source ${HOME}/.cargo/env
Expand All @@ -62,7 +61,7 @@ jobs:
uses: Swatinem/rust-cache@v2
- name: init nodejs && yarn
run: |
curl -s https://deb.nodesource.com/setup_16.x | sudo bash
curl -s https://deb.nodesource.com/setup_18.x | sudo bash
sudo apt install nodejs -y
node -v
sudo npm install --global yarn
Expand All @@ -76,13 +75,14 @@ jobs:
CARGO_TERM_COLOR: always
run: |
source ${HOME}/.cargo/env
RUSTC_BOOTSTRAP=1 cargo build --profile production --features runtime-benchmarks --verbose --timings
RUSTC_BOOTSTRAP=1 cargo build --profile production --features runtime-benchmarks --timings
- name: create-chainspec
run: |
${{ github.workspace }}/target/production/manta build-spec --chain $CHAIN_SPEC --disable-default-bootnode --raw > ${{ github.workspace }}/tests/data/fork.json
- name: append manta-pay storage
- name: append manta-pay and manta-sbt storage
run: |
wget -P ${{ github.workspace }}/tests/data https://manta-ops.s3.amazonaws.com/integration-tests-data/storage.json
wget -P ${{ github.workspace }}/tests/data https://mantasbt-storage.s3.amazonaws.com/mantaSbtStorage.json
cd ${{ github.workspace }}/tests
yarn install
yarn
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pallets/asset-manager/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ benchmarks! {
let metadata = AssetRegistryMetadata::<Balance>::testing_default();
Pallet::<T>::register_asset(RawOrigin::Root.into(), location, metadata.clone())?;
let some_valid_asset_id = <T as Config>::AssetId::from(assets_count);
}: _(RawOrigin::Root, some_valid_asset_id, metadata.clone())
}: _(RawOrigin::Root, some_valid_asset_id, metadata.metadata.clone())
verify {
assert_last_event::<T>(crate::Event::AssetMetadataUpdated { asset_id: some_valid_asset_id, metadata }.into());
}
Expand Down
26 changes: 21 additions & 5 deletions pallets/asset-manager/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -535,14 +535,15 @@ pub mod pallet {
///
/// * `origin`: Caller of this extrinsic, the access control is specified by `ForceOrigin`.
/// * `asset_id`: AssetId to be updated.
/// * `metadata`: new `metadata` to be associated with `asset_id`.
/// * `metadata`: new `metadata` to be associated with `asset_id`, note `is_frozen`
/// flag in metadata will have no effect and and cannot be changed.
#[pallet::call_index(2)]
#[pallet::weight(T::WeightInfo::update_asset_metadata())]
#[transactional]
pub fn update_asset_metadata(
origin: OriginFor<T>,
asset_id: T::AssetId,
metadata: AssetRegistryMetadata<Balance>,
metadata: AssetStorageMetadata,
) -> DispatchResult {
T::ModifierOrigin::ensure_origin(origin)?;
ensure!(
Expand All @@ -555,10 +556,25 @@ pub mod pallet {
);
<T::AssetConfig as AssetConfig<T>>::AssetRegistry::update_asset_metadata(
&asset_id,
metadata.clone().into(),
metadata.clone(),
)?;
AssetIdMetadata::<T>::insert(asset_id, &metadata);
Self::deposit_event(Event::<T>::AssetMetadataUpdated { asset_id, metadata });

let mut registered_metadata =
AssetIdMetadata::<T>::get(asset_id).ok_or(Error::<T>::UpdateNonExistentAsset)?;
let new_metadata = AssetStorageMetadata {
name: metadata.name,
symbol: metadata.symbol,
decimals: metadata.decimals,
// is frozen flag doesn't do anything in metadata
is_frozen: registered_metadata.metadata.is_frozen,
};
registered_metadata.metadata = new_metadata;

AssetIdMetadata::<T>::insert(asset_id, &registered_metadata);
Self::deposit_event(Event::<T>::AssetMetadataUpdated {
asset_id,
metadata: registered_metadata,
});
Ok(())
}

Expand Down
8 changes: 4 additions & 4 deletions pallets/asset-manager/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ fn wrong_modifier_origin_should_not_work() {
AssetManager::update_asset_metadata(
RuntimeOrigin::signed([3u8; 32].into()),
0,
asset_metadata
asset_metadata.metadata
),
BadOrigin
);
Expand Down Expand Up @@ -173,14 +173,14 @@ fn update_asset() {
AssetManager::update_asset_metadata(
RuntimeOrigin::root(),
native_asset_id,
new_metadata.clone(),
new_metadata.metadata.clone(),
),
Error::<Runtime>::CannotUpdateNativeAssetMetadata
);
assert_ok!(AssetManager::update_asset_metadata(
RuntimeOrigin::root(),
asset_id,
new_metadata.clone(),
new_metadata.metadata.clone(),
),);
assert_eq!(Assets::name(asset_id), new_name);
assert_eq!(Assets::symbol(asset_id), new_symbol);
Expand Down Expand Up @@ -212,7 +212,7 @@ fn update_asset() {
AssetManager::update_asset_metadata(
RuntimeOrigin::root(),
next_asset_id,
new_metadata.clone()
new_metadata.metadata.clone()
),
Error::<Runtime>::UpdateNonExistentAsset
);
Expand Down
2 changes: 2 additions & 0 deletions pallets/manta-sbt/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ precompute-coins = [
"manta-pay/bip32",
"manta-pay/arkworks",
"manta-util/std",
"num_cpus",
"rand_chacha",
"tempfile",
]
Expand All @@ -96,6 +97,7 @@ anyhow = { version = "1.0.55", optional = true, default-features = false }
base64 = { version = "0.20", default-features = false, features = ["alloc"] }
indoc = { version = "2.0.1", optional = true, default-features = false }
libsecp256k1 = { version = "0.7", default-features = false, features = ["hmac", "static-context"], optional = true }
num_cpus = { version = "1.16.0", optional = true }
rand_chacha = { version = "0.3.1", optional = true, default-features = false }
sha3 = { version = "0.10.6", default-features = false }
tempfile = { version = "3.3.0", optional = true, default-features = false }
Expand Down
44 changes: 33 additions & 11 deletions pallets/manta-sbt/src/benchmark/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,30 +15,41 @@
// along with Manta. If not, see <http://www.gnu.org/licenses/>.

use crate::{
benchmark::precomputed_coins::TO_PRIVATE, AccountId, Box, Call, Config, EvmAddress, Pallet,
Pallet as MantaSBTPallet, TransferPost,
AccountId, Box, Call, Config, EvmAddress, Pallet, Pallet as MantaSBTPallet, TransferPost,
};
use frame_benchmarking::{benchmarks, impl_benchmark_test_suite, vec, whitelisted_caller};
use frame_benchmarking::{benchmarks, vec, whitelisted_caller};
use frame_support::traits::{Currency, Get};
use frame_system::RawOrigin;
use scale_codec::Decode;
use sp_core::H160;
use sp_io::hashing::keccak_256;

mod precomputed_coins;
const MINTS_OFFSET: usize = 4;
const MINT_SIZE: usize = 553;

fn alice() -> libsecp256k1::SecretKey {
libsecp256k1::SecretKey::parse(&keccak_256(b"Alice")).unwrap()
}

fn read_mint_coins() -> &'static [u8; 22120004] {
core::include_bytes!("../../../../tests/data/mantaSbt_mints")
}

benchmarks! {
where_clause { where T::AccountId: From<AccountId> + Into<AccountId> }
to_private {
let caller: T::AccountId = whitelisted_caller();
let factor = 1_000u32;
<T as crate::Config>::Currency::make_free_balance_be(&caller, T::ReservePrice::get() * factor.into());
// 0..360000 asset ids have been inserted into mantasbt.
// so next sbt id should be 360000, or related private txs won't get passed.
crate::NextSbtId::<T>::put(360_000);
Pallet::<T>::reserve_sbt(RawOrigin::Signed(caller.clone()).into(), None)?;
let mint_post = TransferPost::decode(&mut &*TO_PRIVATE).unwrap();

let mint_coins = read_mint_coins();
let mints_start = MINTS_OFFSET;
let to_private_coin = &mint_coins[mints_start..mints_start + MINT_SIZE];
let mint_post = TransferPost::decode(&mut &*to_private_coin).unwrap();
MantaSBTPallet::<T>::new_mint_info(
RawOrigin::Root.into(),
0_u32.into(),
Expand Down Expand Up @@ -121,6 +132,7 @@ benchmarks! {
mint_sbt_eth {
let bab_id = 1;
let caller: T::AccountId = whitelisted_caller();
crate::NextSbtId::<T>::put(360_000);
MantaSBTPallet::<T>::change_allowlist_account(
RawOrigin::Root.into(),
Some(caller.clone())
Expand All @@ -139,7 +151,10 @@ benchmarks! {
bab_id,
bab_alice,
)?;
let mint_post = TransferPost::decode(&mut &*TO_PRIVATE).unwrap();
let mint_coins = read_mint_coins();
let mints_start = MINTS_OFFSET;
let to_private_coin = &mint_coins[mints_start..mints_start + MINT_SIZE];
let mint_post = TransferPost::decode(&mut &*to_private_coin).unwrap();

let signature = MantaSBTPallet::<T>::eth_sign(&alice(), &mint_post.proof, 0);
}: mint_sbt_eth(
Expand Down Expand Up @@ -194,12 +209,16 @@ benchmarks! {

force_to_private {
let caller: T::AccountId = whitelisted_caller();
let mint_coins = read_mint_coins();
let mints_start = MINTS_OFFSET;
let to_private_coin = &mint_coins[mints_start..mints_start + MINT_SIZE];
MantaSBTPallet::<T>::change_force_account(
RawOrigin::Root.into(),
Some(caller.clone())
)?;
MantaSBTPallet::<T>::set_next_sbt_id(RawOrigin::Root.into(), Some(100))?;
let mint_post = TransferPost::decode(&mut &*TO_PRIVATE).unwrap();
MantaSBTPallet::<T>::set_next_sbt_id(RawOrigin::Root.into(), Some(20_000_000))?;
crate::NextSbtId::<T>::put(20_000_000);
let mint_post = TransferPost::decode(&mut &*to_private_coin).unwrap();
}: force_to_private(
RawOrigin::Signed(caller.clone()),
Box::new(mint_post),
Expand All @@ -215,7 +234,12 @@ benchmarks! {
Some(caller.clone())
)?;
MantaSBTPallet::<T>::set_next_sbt_id(RawOrigin::Root.into(), Some(100))?;
let mint_post = TransferPost::decode(&mut &*TO_PRIVATE).unwrap();
crate::NextSbtId::<T>::put(20_000_000);

let mint_coins = read_mint_coins();
let mints_start = MINTS_OFFSET;
let to_private_coin = &mint_coins[mints_start..mints_start + MINT_SIZE];
let mint_post = TransferPost::decode(&mut &*to_private_coin).unwrap();
}: force_mint_sbt_eth(
RawOrigin::Signed(caller.clone()),
Box::new(mint_post),
Expand All @@ -234,5 +258,3 @@ benchmarks! {
Some(caller)
)
}

impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(), crate::mock::Test);
47 changes: 0 additions & 47 deletions pallets/manta-sbt/src/benchmark/precomputed_coins.rs

This file was deleted.

Loading

0 comments on commit 7a31fe9

Please sign in to comment.