Skip to content

Commit

Permalink
Feature/bump v1.3.0 (#25)
Browse files Browse the repository at this point in the history
* update format to match the one for polkadot

* 📦 chore(rust-toolchain.toml): add rust-toolchain.toml file to specify the Rust toolchain configuration

* 🔧 chore(Cargo.toml): update sp-runtime dependency to remove version constraint for better compatibility

* 🔄 chore(rust-toolchain.toml): update Rust toolchain to nightly-2023-05-22 channel
🔧 fix(rust-toolchain.toml): specify the exact nightly channel version to ensure consistent build environment

* 🔧 chore(lib.rs): update Scale trait implementation to use BlockNumberFor<Self> instead of Self::BlockNumber for better compatibility and flexibility

* 📦 chore(pallets): update dependency versions in Cargo.toml files

🔺 chore(pallets/afloat): update codec version to 3.6.1
🔺 chore(pallets/bitcoin-vaults): update codec version to 3.6.1
🔺 chore(pallets/confidential-docs): update codec version to 3.6.1
🔺 chore(pallets/fruniques): update codec version to 3.6.1
🔺 chore(pallets/fund-admin-records): update codec version to 3.6.1
🔺 chore(pallets/fund-admin): update codec version to 3.6.1
🔺 chore(pallets/gated-marketplace): update codec version to 3.6.1
🔺 chore(pallets/mapped-assets): update codec version to 3.6.1 and log version to 0.4.17
🔺 chore(pallets/rbac): update codec version to 3.6.1

🔺 chore(pallets/afloat): update scale-info version to 2.5.0
🔺 chore(pallets/bitcoin-vaults): update scale-info version to 2.5.0
🔺 chore(pallets/confidential-docs): update scale-info version to 2.5.0
🔺 chore(pallets/fruniques): update scale-info version to 2.5.0
🔺 chore(pallets/fund-admin-records): update scale-info version to 2.5.0
🔺 chore(pallets/fund-admin): update scale-info version to 2.5.0
🔺 chore(pallets/gated-marketplace): update scale-info version to 2.5.0
🔺 chore(pallets/mapped-assets): update scale-info version to 2.5.0
🔺 chore(pallets/rbac): update scale-info version to 2.5.0

📦 chore(Cargo.toml): update dependencies versions

🔺 deps(Cargo.toml): update codec to version 3.6.1
🔺 deps(Cargo.toml): update log to version 0.4.14
🔺 deps(Cargo.toml): update scale-info to version 2.5.0
🔺 deps(Cargo.toml): update frame-support to use polkadot-v1.0.0 branch

* wip update mapped assets

* 🚀 chore(mapped-assets): update dependencies in Cargo.toml to latest versions

🐛 fix(mapped-assets): import missing sp_io::hashing::blake2_256 in functions.rs

✨ feat(mapped-assets): add AfloatRole enum and related functions in types.rs

* update deps

* 🚀 chore(Cargo.toml): update dependencies versions to improve compatibility and performance
🐛 fix(functions.rs): fix cloning of class_id variable to prevent ownership issues
✨ feat(functions.rs): add support for creating frunique collections with configurable owner and admin roles
🐛 fix(functions.rs): fix cloning of collection variable to prevent ownership issues

* 🚀 chore(Cargo.toml): update dependencies versions for lite-json, frame-support, frame-system, sp-core, sp-io, sp-runtime, sp-std to improve compatibility and stability
🔧 fix(functions.rs): import BlockNumberFor from frame_system::pallet_prelude to fix compilation error
🔧 fix(lib.rs): update weight for ocw_insert_descriptors, ocw_insert_psbts, ocw_finalize_psbts to improve performance and resource usage

* 🔍 chore(.gitignore): add log files to be ignored by git
🔍 chore(.gitignore): add /pallets/fund-admin/scripts directory to be ignored by git

* 🔧 chore(lib.rs): add #[derive(Default)] to the GenesisConfig struct in order to enable default values for its fields

* Fix build issues polkadotv1 (#22)

* Mapped assets pallet DebitFlags struct is private to the crate, so the debitFlags parameter from the afloat_do_burn method was removed and the debitFlags created internally, finally updated the afloat pallet accordingly. AssetId type is no longer Copy, so called the clone method where necessary. CollectionId type is no longer Copy, so called the clone method where necessary. JSON NumberValue struct has a new negative field, so this field was added as necesary. GenesisBuild has been deprecated, so the BitcoinVaults and MappedAssets pallets to use the new BuildGenesisConfig trait. Updated the block_number parameter type to be BlockNumberFor. Added does_asset_exist method to the MappedAssets pallet. Updated the way of checking overflow in the MappedAssets pallet to use checked_add. Added back the Rbac type to the MappedAssets pallet.

* The where clause of the enum when contructing a mock runtime has been deprecated, so this clause was removed for all pallet mocks.Nonce and Block types have been added to the system::Config, and the Index, BlockNumber and Header types have been removed, so all pallet implementations for the Test runtime have been updated accordingly. FreezeIdentifier, MaxFreezes, RuntimeHoldReason and MaxHolds types have been added for the balances pallet, so the test runtimes for pallets that use the balances pallet have been added accordingly. The GenesisConfig is now generic over the runtime, so the test build_storage for all pallets have been updated accordingly, also this is now behind the BuildStorage trait so it has been imported where required. The UnknownAsset error of the mapped assets pallet has been updated to be Unknown, so updated some of the tests accordingly. The tokens BalanceConversion trait has been replaced by ConversionToAssetBalance, so updated the mapped assets test pallet accordingly.

* update deps

* 🐛 fix(mock.rs): change Balance type from u128 to u64 to reduce memory usage
🐛 fix(mock.rs): change ExistentialDeposit type from ConstU128<100> to ConstU64<1> to set a lower minimum balance requirement
🐛 fix(mock.rs): remove MaxReserves configuration to use default value
🐛 fix(mock.rs): remove MaxFreezes configuration to use default value
✨ feat(mock.rs): add Result return type to created and destroyed functions in AssetsCallback trait implementation

* 🔧 fix(tests.rs): update struct field names in sign_up_works, update_user_info_edit_works, update_other_user_info_by_not_admin_fails, update_other_user_info_by_admin_works, update_user_info_delete_works, set_afloat_balance_works, set_balance_by_other_than_owner_fails to match changes in the struct definition
✨ feat(tests.rs): add support for new struct field names in sign_up_works, update_user_info_edit_works, update_other_user_info_by_not_admin_fails, update_other_user_info_by_admin_works, update_user_info_delete_works, set_afloat_balance_works, set_balance_by_other_than_owner_fails to improve code readability and maintainability

🔨 refactor(tests.rs): update test functions to use new struct field names for SignUpArgs

* update tests

* 🐛 fix(functions.rs): remove unnecessary mutability of transaction variable to improve code readability

* 🔧 chore(lib.rs): remove unused code and comments for improved code readability
🔧 chore(lib.rs): refactor default value for bdk_services_url in GenesisConfig to use a hardcoded value instead of cloning the input value

* 🔀 chore(lib.rs): refactor BDKServicesURL initialization to use self.bdk_services_url.clone() for improved code readability and maintainability

* Updated polkadot dependencies to v1.2.0. sp-io is no longer exported from frame support, so had to add it directly as a dependency on the pallets, and update all imports accordingly. sp-std is no longer exported from frame support, so had to add it directly as a dependency on the pallets, and update all imports accordingly. The balance transfer method is exposed through the token Mutate trait so had to import it, and update the call to transfer with the correct parameters. DispatchError is no longer exported from frame support so had to import it directly from sp_runtime. The https://github.com/paritytech/substrate repository has been archived, so updated all dependencies to use the new repo https://github.com/paritytech/substrate

* Fixed mock afloat assets callback handler.

* Updated polkadot version to 1.3

* Pallet balances added RuntimeFreezeReason type, added definition for it to mocks of all pallets.

* Updated confidential docs pallet storage version.

* Updated dependencies to use tag instead of branch

* Updated storage version for those pallets that dont have migrations to be 0. Removed the migration from the mapped assets pallet as the pallet was created after the migration code.

* Developed migration fro the fruniques pallet. Incremented fruniques pallet storage version.

* 🐛 fix(afloat): update pallet-timestamp dependency version to "4.0.0-dev" to resolve compatibility issue
🐛 fix(afloat): remove unused trait import UnixTime from functions.rs
🐛 fix(afloat): remove TimeProvider associated type from pallet configuration in lib.rs
🐛 fix(afloat): remove TimeProvider associated type from pallet configuration in mock.rs
✨ feat(afloat): add error event TimestampError to handle incorrect timestamp generation
✨ feat(afloat): update created_date and last_modified_date fields in UserInfo struct to use pallet_gated_marketplace::Pallet::get_timestamp_in_milliseconds() to ensure consistent timestamp generation
✨ feat(afloat): update creation_date and last_modified_date fields in create_offer and edit_offer functions to use T::Timestamp::now().into() to ensure consistent timestamp generation
✨ feat(afloat): update cancellation_date field in cancel_offer function to use pallet_gated_marketplace::Pallet::get_timestamp_in_milliseconds() to ensure consistent timestamp generation

* 🐛 fix(functions.rs): fix import statement formatting to follow conventions
✨ feat(functions.rs): add support for last_modified_date field to be set to current timestamp when creating or editing user info
🐛 fix(functions.rs): fix formatting of created_date field to follow conventions
🐛 fix(functions.rs): fix formatting of last_modified_date field to follow conventions
🐛 fix(functions.rs): fix formatting of created_date field to follow conventions
🐛 fix(functions.rs): fix formatting of last_modified_date field to follow conventions
🐛 fix(functions.rs): fix formatting of created_date field to follow conventions
🐛 fix(functions.rs): fix formatting of last_modified_date field to follow conventions
🐛 fix

* 🔧 chore(lib.rs): reorder import statements for better readability and consistency

* 🔒 chore(functions.rs): change visibility of get_timestamp_in_milliseconds function from private to public to allow external usage

* update dep

---------

Co-authored-by: sebastianmontero <[email protected]>
  • Loading branch information
tlacloc and sebastianmontero authored Dec 7, 2023
1 parent 36ac805 commit 2e4eae7
Show file tree
Hide file tree
Showing 9 changed files with 249 additions and 278 deletions.
401 changes: 145 additions & 256 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pallets/afloat/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ frame-benchmarking = { git = "https://github.com/paritytech/polkadot-sdk", tag =
sp-runtime = { git = "https://github.com/paritytech/polkadot-sdk", tag = "v1.3.0-rc1", default-features = false }
pallet-uniques = { git = "https://github.com/paritytech/polkadot-sdk", tag = "v1.3.0-rc1", default-features = false }
pallet-balances = { git = "https://github.com/paritytech/polkadot-sdk", tag = "v1.3.0-rc1", default-features = false }
pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "v1.3.0-rc1", default-features = false }
pallet-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", tag = "v1.3.0-rc1", default-features = false, version = "4.0.0-dev" }
pallet-fruniques = { path = "../fruniques", default-features = false, version = "0.1.0-dev" }
pallet-rbac = { path = "../rbac/", default-features = false, version = "4.0.0-dev" }
pallet-gated-marketplace = { path = "../gated-marketplace/", default-features = false, version = "4.0.0-dev" }
Expand Down
43 changes: 27 additions & 16 deletions pallets/afloat/src/functions.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::*;
use crate::types::*;
use frame_support::{pallet_prelude::*, traits::UnixTime};
use frame_support::pallet_prelude::*;
use frame_system::{pallet_prelude::*, RawOrigin};
use pallet_fruniques::types::{Attributes, CollectionDescription, FruniqueRole, ParentInfo};
use pallet_gated_marketplace::types::{Marketplace, MarketplaceRole};
Expand Down Expand Up @@ -104,9 +104,10 @@ impl<T: Config> Pallet<T> {
cid_creator: ShortString::try_from(b"HCD:afloat".to_vec()).unwrap(),
group: ShortString::try_from(b"afloat".to_vec()).unwrap(),
created_by: Some(creator.clone()),
created_date: Some(T::TimeProvider::now().as_secs()),
created_date: pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
last_modified_by: Some(creator.clone()),
last_modified_date: Some(T::TimeProvider::now().as_secs()),
last_modified_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
};
<UserInfo<T>>::insert(creator.clone(), creator_user);
Self::give_role_to_user(creator.clone(), AfloatRole::Owner)?;
Expand All @@ -117,9 +118,11 @@ impl<T: Config> Pallet<T> {
cid_creator: ShortString::try_from(b"afloat".to_vec()).unwrap(),
group: ShortString::try_from(b"afloat".to_vec()).unwrap(),
created_by: Some(admin.clone()),
created_date: Some(T::TimeProvider::now().as_secs()),
created_date: pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(
),
last_modified_by: Some(admin.clone()),
last_modified_date: Some(T::TimeProvider::now().as_secs()),
last_modified_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
};
<UserInfo<T>>::insert(admin.clone(), admin_user);
Self::give_role_to_user(admin, AfloatRole::Admin)?;
Expand Down Expand Up @@ -161,9 +164,11 @@ impl<T: Config> Pallet<T> {
cid_creator,
group,
created_by: Some(actor.clone()),
created_date: Some(T::TimeProvider::now().as_secs()),
created_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
last_modified_by: Some(actor.clone()),
last_modified_date: Some(T::TimeProvider::now().as_secs()),
last_modified_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
};
<UserInfo<T>>::insert(user_address.clone(), user);
Self::give_role_to_user(user_address.clone(), AfloatRole::BuyerOrSeller)?;
Expand All @@ -175,9 +180,11 @@ impl<T: Config> Pallet<T> {
cid_creator,
group,
created_by: Some(actor.clone()),
created_date: Some(T::TimeProvider::now().as_secs()),
created_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
last_modified_by: Some(actor.clone()),
last_modified_date: Some(T::TimeProvider::now().as_secs()),
last_modified_date:
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds(),
};
<UserInfo<T>>::insert(user_address.clone(), user);
Self::give_role_to_user(user_address.clone(), AfloatRole::CPA)?;
Expand Down Expand Up @@ -225,7 +232,8 @@ impl<T: Config> Pallet<T> {
<UserInfo<T>>::try_mutate::<_, _, DispatchError, _>(user_address.clone(), |user| {
let user = user.as_mut().ok_or(Error::<T>::FailedToEditUserAccount)?;

user.last_modified_date = Some(T::TimeProvider::now().as_secs());
user.last_modified_date =
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds();
user.last_modified_by = Some(actor.clone());
user.cid = cid;
user.cid_creator = cid_creator;
Expand All @@ -246,7 +254,8 @@ impl<T: Config> Pallet<T> {
<UserInfo<T>>::try_mutate::<_, _, DispatchError, _>(user_address.clone(), |user| {
let user = user.as_mut().ok_or(Error::<T>::FailedToEditUserAccount)?;

user.last_modified_date = Some(T::TimeProvider::now().as_secs());
user.last_modified_date =
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds();
user.last_modified_by = Some(actor.clone());
user.cid = cid;
user.cid_creator = cid_creator;
Expand Down Expand Up @@ -339,7 +348,7 @@ impl<T: Config> Pallet<T> {
tax_credit_amount,
tax_credit_amount_remaining: tax_credit_amount.into(),
price_per_credit: price,
creation_date: T::TimeProvider::now().as_secs(),
creation_date: T::Timestamp::now().into(),
expiration_date,
tax_credit_id: item_id,
creator_id: authority.clone(),
Expand Down Expand Up @@ -373,7 +382,7 @@ impl<T: Config> Pallet<T> {
tax_credit_amount,
tax_credit_amount_remaining: tax_credit_amount.into(),
price_per_credit: price,
creation_date: T::TimeProvider::now().as_secs(),
creation_date: T::Timestamp::now().into(),
expiration_date,
tax_credit_id: item_id,
creator_id: authority.clone(),
Expand Down Expand Up @@ -447,7 +456,7 @@ impl<T: Config> Pallet<T> {
//ensure offer is a sell offer
ensure!(offer.offer_type == OfferType::Sell, Error::<T>::WrongOfferType);
//ensure offer is not expired
ensure!(offer.expiration_date > T::TimeProvider::now().as_secs(), Error::<T>::OfferExpired);
ensure!(offer.expiration_date > T::Timestamp::now().into(), Error::<T>::OfferExpired);
//ensure offer is not cancelled
ensure!(offer.cancellation_date.is_none(), Error::<T>::OfferCancelled);
//ensure offer is not taken
Expand Down Expand Up @@ -963,7 +972,8 @@ impl<T: Config> Pallet<T> {
OfferStatus::CREATED => {
<AfloatOffers<T>>::try_mutate(order_id, |offer| -> DispatchResult {
let offer = offer.as_mut().ok_or(Error::<T>::OfferNotFound)?;
offer.cancellation_date = Some(T::TimeProvider::now().as_secs());
offer.cancellation_date =
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds();
offer.status = OfferStatus::CANCELLED;
Ok(())
})?;
Expand All @@ -972,7 +982,8 @@ impl<T: Config> Pallet<T> {
OfferStatus::TF_PENDING_SIGNATURE => {
<AfloatOffers<T>>::try_mutate(order_id, |offer| -> DispatchResult {
let offer = offer.as_mut().ok_or(Error::<T>::OfferNotFound)?;
offer.cancellation_date = Some(T::TimeProvider::now().as_secs());
offer.cancellation_date =
pallet_gated_marketplace::Pallet::<T>::get_timestamp_in_milliseconds();
offer.status = OfferStatus::CANCELLED;
Ok(())
})?;
Expand Down
7 changes: 5 additions & 2 deletions pallets/afloat/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ pub mod types;
pub mod pallet {
use frame_support::{
pallet_prelude::*,
traits::{Currency, UnixTime},
traits::{Currency, Time},
};
use frame_system::{pallet_prelude::*, RawOrigin};
use pallet_fruniques::types::{Attributes, CollectionDescription, FruniqueRole, ParentInfo};
use pallet_gated_marketplace::types::*;
use sp_runtime::traits::Scale;
const STORAGE_VERSION: StorageVersion = StorageVersion::new(0);

use crate::types::*;
Expand All @@ -37,7 +38,7 @@ pub mod pallet {
+ pallet_uniques::Config
{
type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
type TimeProvider: UnixTime;

type Rbac: RoleBasedAccessControl<Self::AccountId>;
// type RemoveOrigin: EnsureOrigin<Self::RuntimeOrigin>;
type Currency: Currency<Self::AccountId>;
Expand All @@ -54,6 +55,8 @@ pub mod pallet {
#[pallet::event]
#[pallet::generate_deposit(pub(super) fn deposit_event)]
pub enum Event<T: Config> {
/// Timestamp was not generated correctly
TimestampError,
// New user created
NewUser(T::AccountId),
// User edited
Expand Down
1 change: 0 additions & 1 deletion pallets/afloat/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ impl system::Config for Test {

impl pallet_afloat::Config for Test {
type RuntimeEvent = RuntimeEvent;
type TimeProvider = pallet_timestamp::Pallet<Self>;
//type RemoveOrigin = frame_system::EnsureSigned<Self::AccountId>;
type Currency = pallet_balances::Pallet<Self>;
type Rbac = RBAC;
Expand Down
1 change: 1 addition & 0 deletions pallets/fruniques/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ mod tests;
// mod benchmarking;

mod functions;
pub mod migration;
pub mod types;

#[frame_support::pallet]
Expand Down
68 changes: 68 additions & 0 deletions pallets/fruniques/src/migration.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
use crate::{
types::{CollectionId, ItemId},
*,
};
use frame_support::{pallet_prelude::*, traits::OnRuntimeUpgrade};

#[cfg(feature = "try-runtime")]
use sp_runtime::TryRuntimeError;

/// The log target.
const TARGET: &'static str = "runtime::fruniques::migration";

pub mod v0 {
use super::*;
/// The actual type isn't important, as we only delete the key in the state.
#[frame_support::storage_alias]
pub(super) type FruniqueCnt<T: Config> = StorageValue<Pallet<T>, (), ValueQuery>;

/// The actual type isn't important, as we only delete the key in the state.
#[frame_support::storage_alias]
pub(super) type FruniqueParent<T: Config> = StorageDoubleMap<
Pallet<T>,
Blake2_128Concat,
CollectionId,
Blake2_128Concat,
ItemId, // FruniqueId
(), // ParentId and flag if it inherit attributes
ValueQuery,
>;

/// The actual type isn't important, as we only delete the key in the state.
#[frame_support::storage_alias]
pub(super) type FruniqueChild<T: Config> = StorageDoubleMap<
Pallet<T>,
Blake2_128Concat,
CollectionId,
Blake2_128Concat,
ItemId,
(),
ValueQuery,
>;

pub struct MigrateToV1<T>(sp_runtime::sp_std::marker::PhantomData<T>);

impl<T: Config> OnRuntimeUpgrade for MigrateToV1<T> {
fn on_runtime_upgrade() -> Weight {
let onchain_version = Pallet::<T>::on_chain_storage_version();
let mut writes = 0;
if onchain_version < 1 {
FruniqueCnt::<T>::kill();
let result = FruniqueParent::<T>::clear(1, None); //Assuming that the storage is empty
if result.maybe_cursor.is_some() {
log::info!(target: TARGET, "Failed to kill FruniqueParent storage item");
}
let result = FruniqueChild::<T>::clear(1, None); //Assuming that the storage is empty
if result.maybe_cursor.is_some() {
log::info!(target: TARGET, "Failed to kill FruniqueChild storage item");
}
StorageVersion::new(1).put::<Pallet<T>>();
writes = 4;
log::info!(target: TARGET, "Migrated storage to version 1");
} else {
log::info!(target: TARGET, "Upgrade not run as pallet version is: {:?}", onchain_version);
}
T::DbWeight::get().reads_writes(writes, 1)
}
}
}
2 changes: 1 addition & 1 deletion pallets/gated-marketplace/src/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1162,7 +1162,7 @@ impl<T: Config> Pallet<T> {
Ok(())
}

fn get_timestamp_in_milliseconds() -> Option<u64> {
pub fn get_timestamp_in_milliseconds() -> Option<u64> {
let timestamp: u64 = T::Timestamp::now().into();

Some(timestamp)
Expand Down
2 changes: 1 addition & 1 deletion pallets/mapped-assets/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ pub(crate) fn new_test_ext() -> sp_io::TestExternalities {
config.assimilate_storage(&mut storage).unwrap();

let mut ext: sp_io::TestExternalities = storage.into();
// Clear thread local vars for https://github.com/paritytech/substrate/issues/10479.
// Clear thread local vars for https://github.com/paritytech/polkadot-sdk/issues/10479.
ext.execute_with(|| take_hooks());
ext.execute_with(|| System::set_block_number(1));
ext
Expand Down

0 comments on commit 2e4eae7

Please sign in to comment.