From ab6ae7620c9f2cb9d2eaf04c6bb2e2ba41940eb0 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 30 Apr 2021 15:20:57 +0000 Subject: [PATCH] feat: support evm accounts in chainspec --- --- a/node/src/chain_spec.rs +++ b/node/src/chain_spec.rs @@ -179,25 +179,7 @@ .collect(), }, pallet_nft: NftConfig { - collection_id: vec![( - 1, - Collection { - owner: get_account_id_from_seed::("Alice"), - mode: CollectionMode::NFT, - access: AccessMode::Normal, - decimal_points: 0, - name: vec![], - description: vec![], - token_prefix: vec![], - mint_mode: false, - offchain_schema: vec![], - schema_version: SchemaVersion::default(), - sponsorship: SponsorshipState::Confirmed(get_account_id_from_seed::("Alice")), - const_on_chain_schema: vec![], - variable_on_chain_schema: vec![], - limits: CollectionLimits::default() - }, - )], + collection_id: vec![], nft_item_id: vec![], fungible_item_id: vec![], refungible_item_id: vec![], --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -604,7 +604,7 @@ } for (collection_id, account_id, fungible_item) in &config.fungible_item_id { - >::init_fungible_token(*collection_id, account_id, fungible_item); + >::init_fungible_token(*collection_id, &T::CrossAccountId::from_sub(account_id.clone()), fungible_item); } for (_num, _c, _i) in &config.refungible_item_id { @@ -2412,24 +2412,23 @@ CreatedCollectionCount::put(next_id); } - fn init_nft_token(collection_id: CollectionId, item: &NftItemType) { + fn init_nft_token(collection_id: CollectionId, item: &NftItemType) { let current_index = ::get(collection_id) .checked_add(1) .unwrap(); - let item_owner = item.owner.clone(); Self::add_token_index(collection_id, current_index, &item.owner).unwrap(); ::insert(collection_id, current_index); // Update balance - let new_balance = >::get(collection_id, &item_owner) + let new_balance = >::get(collection_id, item.owner.as_sub()) .checked_add(1) .unwrap(); - >::insert(collection_id, item_owner.clone(), new_balance); + >::insert(collection_id, item.owner.as_sub(), new_balance); } - fn init_fungible_token(collection_id: CollectionId, owner: &T::AccountId, item: &FungibleItemType) { + fn init_fungible_token(collection_id: CollectionId, owner: &T::CrossAccountId, item: &FungibleItemType) { let current_index = ::get(collection_id) .checked_add(1) .unwrap(); @@ -2439,13 +2438,13 @@ ::insert(collection_id, current_index); // Update balance - let new_balance = >::get(collection_id, owner) + let new_balance = >::get(collection_id, owner.as_sub()) .checked_add(item.value) .unwrap(); - >::insert(collection_id, (*owner).clone(), new_balance); + >::insert(collection_id, owner.as_sub(), new_balance); } - fn init_refungible_token(collection_id: CollectionId, item: &ReFungibleItemType) { + fn init_refungible_token(collection_id: CollectionId, item: &ReFungibleItemType) { let current_index = ::get(collection_id) .checked_add(1) .unwrap(); @@ -2458,42 +2457,42 @@ ::insert(collection_id, current_index); // Update balance - let new_balance = >::get(collection_id, &owner) + let new_balance = >::get(collection_id, &owner.as_sub()) .checked_add(value) .unwrap(); - >::insert(collection_id, owner.clone(), new_balance); + >::insert(collection_id, owner.as_sub(), new_balance); } - fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: &T::AccountId) -> DispatchResult { + fn add_token_index(collection_id: CollectionId, item_index: TokenId, owner: &T::CrossAccountId) -> DispatchResult { // add to account limit - if >::contains_key(owner) { + if >::contains_key(owner.as_sub()) { // bound Owned tokens by a single address - let count = >::get(owner); + let count = >::get(owner.as_sub()); ensure!(count < ChainLimit::get().account_token_ownership_limit, Error::::AddressOwnershipLimitExceeded); - >::insert(owner.clone(), count + >::insert(owner.as_sub(), count .checked_add(1) .ok_or(Error::::NumOverflow)?); } else { - >::insert(owner.clone(), 1); + >::insert(owner.as_sub(), 1); } - let list_exists = >::contains_key(collection_id, owner); + let list_exists = >::contains_key(collection_id, owner.as_sub()); if list_exists { - let mut list = >::get(collection_id, owner); + let mut list = >::get(collection_id, owner.as_sub()); let item_contains = list.contains(&item_index.clone()); if !item_contains { list.push(item_index.clone()); } - >::insert(collection_id, owner.clone(), list); + >::insert(collection_id, owner.as_sub(), list); } else { let mut itm = Vec::new(); itm.push(item_index.clone()); - >::insert(collection_id, owner.clone(), itm); + >::insert(collection_id, owner.as_sub(), itm); } Ok(()) @@ -2502,24 +2501,24 @@ fn remove_token_index( collection_id: CollectionId, item_index: TokenId, - owner: &T::AccountId, + owner: &T::CrossAccountId, ) -> DispatchResult { // update counter - >::insert(owner.clone(), - >::get(owner) + >::insert(owner.as_sub(), + >::get(owner.as_sub()) .checked_sub(1) .ok_or(Error::::NumOverflow)?); - let list_exists = >::contains_key(collection_id, owner); + let list_exists = >::contains_key(collection_id, owner.as_sub()); if list_exists { - let mut list = >::get(collection_id, owner); + let mut list = >::get(collection_id, owner.as_sub()); let item_contains = list.contains(&item_index.clone()); if item_contains { list.retain(|&item| item != item_index); - >::insert(collection_id, owner.clone(), list); + >::insert(collection_id, owner.as_sub(), list); } } @@ -2529,8 +2528,8 @@ fn move_token_index( collection_id: CollectionId, item_index: TokenId, - old_owner: &T::AccountId, - new_owner: &T::AccountId, + old_owner: &T::CrossAccountId, + new_owner: &T::CrossAccountId, ) -> DispatchResult { Self::remove_token_index(collection_id, item_index, old_owner)?; Self::add_token_index(collection_id, item_index, new_owner)?; -- gitstuff