Skip to content
This repository has been archived by the owner on May 21, 2024. It is now read-only.

Query account balances using accounts_common #202

Merged
merged 5 commits into from
Jun 6, 2023

Conversation

valentinfernandez1
Copy link
Contributor

Adds the query_account_balance functionality as suggested in issue #199 using the crate accounts_common from cumulus. this allows to query multiple balances from an account with a single runtime api call.

        impl assets_common::runtime_api::FungiblesApi<
		Block,
		AccountId,
	> for Runtime
	{
		fn query_account_balances(account: AccountId) -> Result<Vec<MultiAsset>, assets_common::runtime_api::FungiblesAccessError> {
			use assets_common::fungible_conversion::{convert, convert_balance};
			Ok([
				// collect pallet_balance
				{
					let balance = Balances::free_balance(account.clone());
					if balance > 0 {
						vec![convert_balance::<RelayLocation, Balance>(balance)?]
					} else {
						vec![]
					}
				},
				// collect pallet_assets (TrustBackedAssets)
				convert::<_, _, _, _, TrustBackedAssetsConvertedConcreteId>(
					Assets::account_balances(account.clone())
						.iter()
						.filter(|(_, balance)| balance > &0)
				)?
			].concat().into())
		}
	}

Also the Converter TrustBackedAssetsConvertedConcreteId was added


Inside trappist/xcm_config.rs LocalFungiblesTransactor was modified including this new Assetconverter from:

/// Means for transacting assets besides the native currency on this chain.
pub type LocalFungiblesTransactor = FungiblesAdapter<
	.....
	// Use this currency when it is a fungible asset matching the given location or name:
	ConvertedConcreteId<
		AssetIdForTrustBackedAssets,
		Balance,
		AsPrefixedGeneralIndex<AssetsPalletLocation, AssetIdForTrustBackedAssets, JustTry>,
		JustTry,
	>,
	....
>;

to:

/// Means for transacting assets besides the native currency on this chain.
pub type LocalFungiblesTransactor = FungiblesAdapter<
	.....
	// Use this currency when it is a fungible asset matching the given location or name:
	TrustBackedAssetsConvertedConcreteId,
	....
>;

Since this accomplishes the same thing and this converter will probably be needed for #169.

@valentinfernandez1 valentinfernandez1 changed the title Query account balances using accounts_common [WIP] Query account balances using accounts_common May 29, 2023
@valentinfernandez1
Copy link
Contributor Author

valentinfernandez1 commented May 29, 2023

In addition to this i have noticed that the assets-common, contains a more interesting MultiAssetConverter/convert_ref implementation that the one we have in our xcm-primitives.

I see a couple of improvements in the asset-common as:

  • Better error management.
  • It returns the amount in addition to the asset id.

This should also be considered in the asset-registry pallet that we are implementing.

Also this needs to be implemented but I still have doubts about this:

i see a period of time where both XCM primitives will cohexist until the xcm-primitives is removed or replaced.

@hbulgarini
Copy link
Contributor

In addition to this i have noticed that the assets-common, contains a more interesting MultiAssetConverter/convert_ref implementation that the one we have in our xcm-primitives.
I see a couple of improvements in the asset-common as:

  • Better error management.
  • It returns the amount in addition to the asset id.

This should also be considered in the asset-registry pallet that we are implementing.

Also this needs to be implemented but I still have doubts about this:

i see a period of time where both XCM primitives will cohexist until the xcm-primitives is removed or replaced.

#199 (comment)

@valentinfernandez1 valentinfernandez1 added the enhancement New feature or request label May 30, 2023
@valentinfernandez1 valentinfernandez1 marked this pull request as ready for review June 1, 2023 13:41
@valentinfernandez1
Copy link
Contributor Author

valentinfernandez1 commented Jun 1, 2023

I would resolve the convert_ref implementation and how it should be changed inside the asset_registry in a different PR. Let's discuss it in the sync meeting.

@valentinfernandez1 valentinfernandez1 changed the title [WIP] Query account balances using accounts_common Query account balances using accounts_common Jun 1, 2023
@valentinfernandez1 valentinfernandez1 merged commit 855f102 into xcmv3-dev Jun 6, 2023
@valentinfernandez1 valentinfernandez1 deleted the query_account_balance branch June 6, 2023 12:03
hbulgarini added a commit that referenced this pull request Jul 31, 2023
* Upgrade to v0.9.40 (#171)

* Upgraded to 9-40 missing some fixes

* Added XCM v3 Traits (Need to configure)

* Added fee per MB

* Added XCM V3 Configs

* Fix XCM_config and node service

* Removed chess pallet

* pallet_contracts and pallet_xcm fix

* rust fmt

* Quick fix to contracts on stout and pallet-dex dependancie

* Added hardware check to service

* Fixed stout service

* Review fixes

* run tests on CI (#174)
(cherry picked from commit d826938)

* fmt

* review fix

* review fix

* fmt

* Fixed xcm-playground error

---------

Co-authored-by: Valentin Fernandez <[email protected]>
Co-authored-by: Alexander Kalankhodzhaev <[email protected]>

* Backport Drop Assets (#189)

Backport PR #165 (cherry picked from commit 3f1c483) in Trappist v0.9.40 and updates it to match the changes included in polkadot v0.9.38 to v0.9.40. Weights were re benchmarked to match weightsV2.
---------

Co-authored-by: Valentin Fernandez <[email protected]>

* asset-registry backport (#193)

Backport PR #173 (cherry picked from commit 24552f3) in Trappist v0.9.40 and updates it to match the changes included in polkadot v0.9.38 to v0.9.40. Weights were re benchmarked to match weightsV2.

Co-authored-by: Valentin Fernandez <[email protected]>

* fix CI for substrate version update (#198)

* Backport Zombienet and CI testing (#194)

* zombienet refactor and ci fix

* swap-storage removed from CI

* ci fix

* CI fix

---------

Co-authored-by: Valentin Fernandez <[email protected]>

* Backport Lockdown-pallet  (#191)

* lockdown-pallet backport

* Add lockdown mode activation to lockdown-mode pallet's `GenesisConfig` (#176)

* add activating lockdown mode to GenesisConfig

* add activating lockdown mode to test ext

* add tests for activating lockdown mode in GenesisConfig

* cargo fmt -p pallet-lockdown-mode

* fix linting

* add activated to benchmark

* removing, as this is already in another test

* setting initial state to true, therefore no longer need to manually change state

* rename activated in genesisConfig to initial_status

---------

Co-authored-by: Valentin Fernandez <[email protected]>
Co-authored-by: Bruno Galvao <[email protected]>

* [Backport] #185  XCM benchmarks from `pallet_xcm_benchmarks` to v0.9.40 (#201)

* backport xcm_benchmarks

* Co-Authored-By: hbulgarini <[email protected]>

* fix

* add profile "production" (#187)

---------

Co-authored-by: Alexander Kalankhodzhaev <[email protected]>

* [Backport] #206 Trappist node and #207 workspace refactor to v0.9.40 (#209)

* cherry-picked changes

* WIP fixing node service¨

* Upgrade fixes, missing stout trait bound error

* workspace refactor

* added dex to stout

* fmt

---------

Co-authored-by: Hector Bulgarini <[email protected]>

* Query account balances using `accounts_common` (#202)

* query_account_balances added

* fmt

* Added assets-common dependency from Cumulus

---------

Co-authored-by: Steve Degosserie <[email protected]>

* [Backport] #220 Apache License and #223 Minor Refactoring (#228)

* backport apache license

* backport minor refactoring PR #223

* fmt

* Refactor `WeightToFee` to include ProofSize (#215)

* Removed FixedRateOfFungibles

* fmt

* added comments

* fmt

* removed unused imports

* fmt

* removed allow unpaid execution from rockmine following PR #211

* Include new traders from PR #221

* minor fixes

* minor fixes

* fmt

* [Backport] Asset-registry fix,  Bump Docker and add preimage to benchmarks (#229)

* Validate `MultiLocation` for asset-registry  (#224)

* Validate location for register_reserve_asset

* fmt

* fmt

* fmt

* validator refactor

* fmt

* fix `pallet_xcm_benchmarks::generic::claim_asset` benchmark (#226)

* Bump docker/login-action from 2.1.0 to 2.2.0 (#219)

Bumps [docker/login-action](https://github.com/docker/login-action) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@f4ef78c...465a078)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/metadata-action from 4.4.0 to 4.5.0 (#218)

Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@c4ee3ad...2c0bd77)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix network id in tests

* fix network id in tests

* Add missing import

* include preimage to benchmarks

* Bump docker/metadata-action from 4.5.0 to 4.6.0 (#233)

Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@2c0bd77...818d4b7)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump docker/build-push-action from 4.0.0 to 4.1.1 (#232)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@3b5e802...2eb1c19)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Alexander Kalankhodzhaev <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* WIP

* WeightToFee updated to use FeePolynomial. Based on the implementation in the asset-hub

* finish upgrade

* update deps

* Addressing check account

* Fix

* fmt

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: valentinfernandez1 <[email protected]>
Co-authored-by: Valentin Fernandez <[email protected]>
Co-authored-by: Alexander Kalankhodzhaev <[email protected]>
Co-authored-by: Bruno Galvao <[email protected]>
Co-authored-by: Steve Degosserie <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Valentin Fernandez <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants