From 7d68ab6c6ac01257e2c868e29b5992e96f48aa0d Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Fri, 27 May 2022 10:17:34 +0000 Subject: [PATCH] CORE-346 Add static tokenURI key --- --- a/Cargo.lock +++ b/Cargo.lock @@ -4290,6 +4290,9 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] [[package]] name = "lazycell" @@ -5917,6 +5920,7 @@ "frame-benchmarking", "frame-support", "frame-system", + "lazy_static", "pallet-evm", "pallet-evm-coder-substrate", "parity-scale-codec 3.1.2", --- a/pallets/common/Cargo.toml +++ b/pallets/common/Cargo.toml @@ -16,16 +16,18 @@ sp-runtime = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" } sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" } sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" } fp-evm-mapping = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" } up-data-structs = { default-features = false, path = '../../primitives/data-structs' } pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } evm-coder = { default-features = false, path = '../../crates/evm-coder' } pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.21-logs" } + serde = { version = "1.0.130", default-features = false } scale-info = { version = "2.0.1", default-features = false, features = [ "derive", ] } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.21" } +lazy_static = { version = "1.4.0", default-features = false, features = ["spin_no_std"] } [features] default = ["std"] --- a/pallets/common/src/eth.rs +++ b/pallets/common/src/eth.rs @@ -17,6 +17,14 @@ use up_data_structs::CollectionId; use sp_core::H160; +lazy_static::lazy_static! { + pub static ref KEY_TOKEN_URI: up_data_structs::PropertyKey = { + let key: evm_coder::types::string = "tokenURI".into(); //TODO: make static + let key: up_data_structs::PropertyKey = key.into_bytes().try_into().expect("Can't create \"tokenURI\" key"); + key + }; +} + // 0x17c4e6453Cc49AAAaEACA894e6D9683e00000001 - collection 1 // TODO: Unhardcode prefix const ETH_COLLECTION_PREFIX: [u8; 16] = [ --- a/pallets/nonfungible/src/erc.rs +++ b/pallets/nonfungible/src/erc.rs @@ -158,9 +158,7 @@ /// Returns token's const_metadata #[solidity(rename_selector = "tokenURI")] fn token_uri(&self, token_id: uint256) -> Result { - let key: string = "tokenURI".into(); //TODO: make static - let key: up_data_structs::PropertyKey = key.into_bytes().try_into() - .map_err(|_| Error::Revert("".into()))?; + let key = pallet_common::eth::KEY_TOKEN_URI.clone(); let permission = get_token_permission::(self.id, &key)?; if !permission.collection_admin { return Err("Operation is not allowed".into()); @@ -362,9 +360,7 @@ token_id: uint256, token_uri: string, ) -> Result { - let key: string = "tokenURI".into(); //TODO: make static - let key: up_data_structs::PropertyKey = key.into_bytes().try_into() - .map_err(|_| Error::Revert("".into()))?; + let key = pallet_common::eth::KEY_TOKEN_URI.clone(); let permission = get_token_permission::(self.id, &key)?; if !permission.collection_admin { return Err("Operation is not allowed".into()); --- a/pallets/unique/src/eth/mod.rs +++ b/pallets/unique/src/eth/mod.rs @@ -77,8 +77,7 @@ .try_into() .map_err(|_| error_feild_too_long(stringify!(token_prefix), MAX_TOKEN_PREFIX_LENGTH))?; - let key: string = "tokenURI".into(); //TODO: make static - let key: up_data_structs::PropertyKey = key.into_bytes().try_into().map_err(|_| Error::Revert("".into()))?; + let key = pallet_common::eth::KEY_TOKEN_URI.clone(); let permission = up_data_structs::PropertyPermission { mutable: true, collection_admin: true, -- gitstuff