Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
bdf9f7d
Allow to mint with the pre-signed signatures
Jan 12, 2023
320582d
Another try
Jan 12, 2023
a92dc15
WIP: test encoder
Jan 13, 2023
124d872
Fix the deposits
Jan 17, 2023
bb91166
Refactoring + tests + benchmarks
Jan 17, 2023
9f7e563
Add sp-core/runtime-benchmarks
Jan 17, 2023
a4c7e79
Remove sp-core from dev deps
Jan 17, 2023
09f86aa
Enable full_crypto for benchmarks
Jan 17, 2023
dc9ff18
Typo
Jan 20, 2023
55eeb12
Fix
Jan 21, 2023
e8ea9ec
Update frame/nfts/src/mock.rs
jsidorenko Jan 21, 2023
5f27ced
Merge branch 'master' of https://github.com/paritytech/substrate into…
Jan 21, 2023
62edf5f
".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nfts
Jan 21, 2023
b119156
Add docs
Jan 22, 2023
781f834
Add attributes into the pre-signed object & track the deposit owner f…
Jan 31, 2023
839c37c
Update docs
Jan 31, 2023
4980270
Merge branch 'master' into js/offchain-mint
Jan 31, 2023
c2d7c99
Merge branch 'master' of https://github.com/paritytech/substrate into…
Jan 31, 2023
7120dd0
".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nfts
Jan 31, 2023
088dddd
Add the number of attributes provided to weights
Jan 31, 2023
ad7b0e1
Merge branch 'master' into js/offchain-mint
Feb 1, 2023
603a194
Support pre-signed attributes
Feb 1, 2023
30b26a7
Update docs
Feb 2, 2023
22c176d
Merge branch 'master' into js/offchain-attributes
Feb 14, 2023
2c43623
Fix merge artifacts
Feb 14, 2023
1a9fdee
Update docs
Feb 15, 2023
2056b91
Add more tests
Feb 15, 2023
d519049
Merge branch 'master' of https://github.com/paritytech/substrate into…
Feb 15, 2023
0032b2e
".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nfts
Feb 15, 2023
5e81316
Update frame/nfts/src/types.rs
jsidorenko Feb 22, 2023
72bcea2
Update types.rs
jsidorenko Feb 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
WIP: test encoder
  • Loading branch information
Jegor Sidorenko committed Jan 13, 2023
commit a92dc15bb06ca41bf224586fd52e629b8591a82e
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.

1 change: 1 addition & 0 deletions frame/nfts/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ sp-runtime = { version = "7.0.0", default-features = false, path = "../../primit
sp-std = { version = "5.0.0", default-features = false, path = "../../primitives/std" }

[dev-dependencies]
array-bytes = "4.1"
pallet-balances = { version = "4.0.0-dev", path = "../balances" }
sp-core = { version = "7.0.0", path = "../../primitives/core" }
sp-io = { version = "7.0.0", path = "../../primitives/io" }
Expand Down
28 changes: 17 additions & 11 deletions frame/nfts/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1786,16 +1786,20 @@ pub mod pallet {
) -> DispatchResult {
let origin = ensure_signed(origin)?;
let msg = Encode::encode(&data);
use sp_core::hexdisplay::HexDisplay;
log::info!("DDEBUG: msg {:?}", HexDisplay::from(&msg));
log::info!("DDEBUG: signature {:?}", &signature);
log::info!("DDEBUG: signer {:?}", &signer.clone().into_account());
ensure!(
signature.verify(&*msg, &signer.clone().into_account()),
Error::<T, I>::WrongSignature
);

let signer_account = Self::signer_to_account(signer)?;
log::info!("signer_account {:?}", &signer_account);
log::info!("DDEBUG: signer_account {:?}", &signer_account);

let PreSignedMint { collection, item, metadata, deadline, only_account } = data;
let metadata = Self::construct_metadata(metadata)?;
let PreSignedMint { collection, item, /* metadata, */ deadline, only_account } = data;
// let metadata = Self::construct_metadata(metadata)?;

if let Some(account) = only_account {
ensure!(account == origin, Error::<T, I>::WrongOrigin);
Expand All @@ -1818,14 +1822,16 @@ pub mod pallet {
item_config,
|_, _| Ok(()),
)?;

Self::do_set_item_metadata(
Some(collection_details.owner),
collection,
item,
metadata,
Some(origin),
)
/*if !metadata.len().is_zero() {
Self::do_set_item_metadata(
Some(collection_details.owner),
collection,
item,
metadata,
Some(origin),
)?;
}*/
Ok(())
}
}
}
Expand Down
45 changes: 38 additions & 7 deletions frame/nfts/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2503,19 +2503,50 @@ fn add_remove_item_attributes_approval_should_work() {
#[test]
fn pre_signed_mints_should_work() {
new_test_ext().execute_with(|| {
let user1_pair = sp_core::sr25519::Pair::from_string("//Alice///password", None).unwrap();
let user1_pair = sp_core::sr25519::Pair::from_string("//Alice", None).unwrap();
let user1_signer = MultiSigner::Sr25519(user1_pair.public());
let user1 = Nfts::signer_to_account(user1_signer.clone()).unwrap();
let mint_data = PreSignedMint {
let mint_data: PreSignedMint<u32, u32, u64, u64> = PreSignedMint {
collection: 0,
item: 0,
metadata: bvec![0],
// metadata: vec![0],
only_account: None,
deadline: 1,
deadline: 10000000,
};
let signature = MultiSignature::Sr25519(user1_pair.sign(&Encode::encode(&mint_data)));
dbg!(user1);

let message = Encode::encode(&mint_data);

use sp_core::hexdisplay::HexDisplay;
dbg!(HexDisplay::from(&message));
// 0000000000000000008096980000000000

let signature = MultiSignature::Sr25519(user1_pair.sign(&message));
// let a = &array_bytes::hex2bytes_unchecked("00000000000000000080969800")[..];
// dbg!(a);
// let signature = MultiSignature::Sr25519(user1_pair.sign(&a));

// use sp_runtime::traits::{IdentifyAccount, Verify};
// dbg!(signature.verify(&*message, &user1_signer.clone().into_account()));

// use sp_core::crypto::Ss58Codec;
// dbg!(user1_pair.public().to_ss58check());
// dbg!(user1);
dbg!(&signature);
// dbg!(&user1_signer);
dbg!(&user1_pair.public());

/*
2023-01-13 14:20:54 DDEBUG: msg 00000000000000000080969800
2023-01-13 14:20:54 DDEBUG: signature MultiSignature::Sr25519(9483ca2df9b4ffe1dae4fa1412377ab6bf00e51e85ca5ebb0a9730861712f62d203d026e61090d5570f50c389563c4b1fd0b819e3c0df8179408184259192685)
2023-01-13 14:20:54 DDEBUG: signer d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)

2023-01-13 14:39:51 DDEBUG: msg 00000000000000000080969800
2023-01-13 14:39:51 DDEBUG: signature MultiSignature::Sr25519(20a4c1caededa2b23a76105bfc3c483d5ca9b2cfb8d6a470084c28c5219ad95624f54250c795134ba81ad9ac8cb2f08cf2f5c1449dfe5a21e74e18c83bad4e8f)
2023-01-13 14:39:51 DDEBUG: signer d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)

2023-01-13 16:08:06 DDEBUG: msg 00000000000000000080969800
2023-01-13 16:08:06 DDEBUG: signature MultiSignature::Sr25519(9483ca2df9b4ffe1dae4fa1412377ab6bf00e51e85ca5ebb0a9730861712f62d203d026e61090d5570f50c389563c4b1fd0b819e3c0df8179408184259192685)
2023-01-13 16:08:06 DDEBUG: signer d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d (5GrwvaEF...)
*/
let user2 = 2;

Balances::make_free_balance_be(&user1, 100);
Expand Down
4 changes: 2 additions & 2 deletions frame/nfts/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,8 @@ pub struct PreSignedMint<CollectionId, ItemId, AccountId, Deadline> {
pub(super) collection: CollectionId,
/// Item's id.
pub(super) item: ItemId,
/// Additional item's metadata.
pub(super) metadata: Vec<u8>,
// Additional item's metadata.
// pub(super) metadata: Vec<u8>,
/// Restrict the claim to a particular account.
pub(super) only_account: Option<AccountId>,
/// A deadline for the signature.
Expand Down