difftreelog
Merge pull request #202 from UniqueNetwork/fix/invalid-mode-evm-sponsoring
in: master
Remove "invalid" collection mode, update frontier for sponsoring fixes, readme update, setVariableMetadata usage due CORE-37
13 files changed
Cargo.lockdiffbeforeafterboth2342[[package]]2342[[package]]2343name = "fc-consensus"2343name = "fc-consensus"2344version = "2.0.0-dev"2344version = "2.0.0-dev"2345source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2345source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2346dependencies = [2346dependencies = [2347 "async-trait",2347 "async-trait",2348 "derive_more",2348 "derive_more",2369[[package]]2369[[package]]2370name = "fc-db"2370name = "fc-db"2371version = "2.0.0-dev"2371version = "2.0.0-dev"2372source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2372source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2373dependencies = [2373dependencies = [2374 "fp-storage",2374 "fp-storage",2375 "kvdb",2375 "kvdb",2385[[package]]2385[[package]]2386name = "fc-mapping-sync"2386name = "fc-mapping-sync"2387version = "2.0.0-dev"2387version = "2.0.0-dev"2388source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2388source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2389dependencies = [2389dependencies = [2390 "fc-consensus",2390 "fc-consensus",2391 "fc-db",2391 "fc-db",2403[[package]]2403[[package]]2404name = "fc-rpc"2404name = "fc-rpc"2405version = "2.0.0-dev"2405version = "2.0.0-dev"2406source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2406source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2407dependencies = [2407dependencies = [2408 "ethereum",2408 "ethereum",2409 "ethereum-types",2409 "ethereum-types",2444[[package]]2444[[package]]2445name = "fc-rpc-core"2445name = "fc-rpc-core"2446version = "1.1.0-dev"2446version = "1.1.0-dev"2447source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2447source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2448dependencies = [2448dependencies = [2449 "ethereum-types",2449 "ethereum-types",2450 "jsonrpc-core 15.1.0",2450 "jsonrpc-core 15.1.0",2564[[package]]2564[[package]]2565name = "fp-consensus"2565name = "fp-consensus"2566version = "2.0.0-dev"2566version = "2.0.0-dev"2567source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2567source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2568dependencies = [2568dependencies = [2569 "ethereum",2569 "ethereum",2570 "parity-scale-codec",2570 "parity-scale-codec",2578[[package]]2578[[package]]2579name = "fp-evm"2579name = "fp-evm"2580version = "3.0.0-dev"2580version = "3.0.0-dev"2581source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2581source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2582dependencies = [2582dependencies = [2583 "evm",2583 "evm",2584 "impl-trait-for-tuples 0.1.3",2584 "impl-trait-for-tuples 0.1.3",2591[[package]]2591[[package]]2592name = "fp-rpc"2592name = "fp-rpc"2593version = "3.0.0-dev"2593version = "3.0.0-dev"2594source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2594source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"2595dependencies = [2595dependencies = [2596 "ethereum",2596 "ethereum",2597 "ethereum-types",2597 "ethereum-types",2607[[package]]2607[[package]]2608name = "fp-storage"2608name = "fp-storage"2609version = "2.0.0"2609version = "2.0.0"2610source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"2610source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"261126112612[[package]]2612[[package]]2613name = "frame-benchmarking"2613name = "frame-benchmarking"323932393240[[package]]3240[[package]]3241name = "hex-literal"3241name = "hex-literal"3242version = "0.3.1"3242version = "0.3.3"3243source = "registry+https://github.com/rust-lang/crates.io-index"3243source = "registry+https://github.com/rust-lang/crates.io-index"3244checksum = "5af1f635ef1bc545d78392b136bfe1c9809e029023c84a3638a864a10b8819c8"3244checksum = "21e4590e13640f19f249fe3e4eca5113bc4289f2497710378190e7f4bd96f45b"324532453246[[package]]3246[[package]]3247name = "hex_fmt"3247name = "hex_fmt"5841[[package]]5841[[package]]5842name = "pallet-ethereum"5842name = "pallet-ethereum"5843version = "4.0.0-dev"5843version = "4.0.0-dev"5844source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"5844source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"5845dependencies = [5845dependencies = [5846 "ethereum",5846 "ethereum",5847 "ethereum-types",5847 "ethereum-types",5869[[package]]5869[[package]]5870name = "pallet-evm"5870name = "pallet-evm"5871version = "6.0.0-dev"5871version = "6.0.0-dev"5872source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#264af3adc427aefba9ce8a1c5d1c11a6d98d009c"5872source = "git+https://github.com/uniquenetwork/frontier.git?branch=injected-transactions-parachain#9e8630ae4e420f764dad25eec1e0ef41cf6a2694"5873dependencies = [5873dependencies = [5874 "evm",5874 "evm",5875 "evm-gasometer",5875 "evm-gasometer",README.mddiffbeforeafterboth--- a/README.md
+++ b/README.md
@@ -63,17 +63,17 @@
2. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.
-3. Install install nightly 2021-03-01 and make it default:
+3. Install install nightly 2021-06-28 and make it default:
```bash
-rustup toolchain install nightly-2021-03-01
-rustup default nightly-2021-03-01
+rustup toolchain install nightly-2021-06-28
+rustup default nightly-2021-06-28
```
4. Add wasm target for nightly toolchain:
```bash
-rustup target add wasm32-unknown-unknown --toolchain nightly-2021-03-01
+rustup target add wasm32-unknown-unknown --toolchain nightly-2021-06-28
```
5. Build:
@@ -135,7 +135,7 @@
## Building and Running as Parachain locally
-Rust toolchain: nightly-2021-04-23
+Rust toolchain: nightly-2021-06-28
Note: checkout this project and polkadot project (see below) in the sibling folders (both under the same folder)
### Build relay
@@ -143,7 +143,7 @@
```
git clone https://github.com/paritytech/polkadot.git
cd polkadot
-git checkout aa386760
+git checkout release-v0.9.9
cargo build --release
```
@@ -208,12 +208,12 @@
First of all, add rust toolchain and make it default.
```bash
-rustup target add wasm32-unknown-unknown --toolchain nightly-2020-10-01
+rustup target add wasm32-unknown-unknown --toolchain nightly-2021-06-28
```
Then in "/node/src" run build command below
```bash
-cargo +nightly-2020-10-01 build --release --features runtime-benchmarks
+cargo +nightly-2021-06-28 build --release --features runtime-benchmarks
```
Run benchmark
pallets/nft/src/eth/mod.rsdiffbeforeafterboth--- a/pallets/nft/src/eth/mod.rs
+++ b/pallets/nft/src/eth/mod.rs
@@ -103,7 +103,6 @@
CollectionMode::ReFungible => {
include_bytes!("stubs/UniqueRefungible.raw") as &[u8]
}
- CollectionMode::Invalid => include_bytes!("stubs/UniqueInvalid.raw") as &[u8],
}
.to_owned()
})
pallets/nft/src/eth/stubs/UniqueInvalid.rawdiffbeforeafterboth--- a/pallets/nft/src/eth/stubs/UniqueInvalid.raw
+++ /dev/null
@@ -1 +0,0 @@
-TODO
\ No newline at end of file
pallets/nft/src/lib.rsdiffbeforeafterboth--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -1347,7 +1347,6 @@
sender.clone(),
recipient.clone(),
)?,
- _ => (),
};
Self::deposit_event(RawEvent::Transfer(
@@ -1493,7 +1492,6 @@
from.clone(),
recipient.clone(),
)?,
- _ => (),
};
if matches!(collection.mode, CollectionMode::Fungible(_)) {
@@ -1534,7 +1532,6 @@
Self::set_re_fungible_variable_data(collection, item_id, data)?
}
CollectionMode::Fungible(_) => fail!(Error::<T>::CantStoreMetadataInFungibleTokens),
- _ => fail!(Error::<T>::UnexpectedCollectionType),
};
Ok(())
@@ -1618,7 +1615,6 @@
CollectionMode::NFT => Self::burn_nft_item(collection, item_id)?,
CollectionMode::Fungible(_) => Self::burn_fungible_item(sender, collection, value)?,
CollectionMode::ReFungible => Self::burn_refungible_item(collection, item_id, sender)?,
- _ => (),
};
Ok(())
@@ -1723,9 +1719,6 @@
fail!(Error::<T>::NotReFungibleDataUsedToMintReFungibleCollectionToken);
}
}
- _ => {
- fail!(Error::<T>::UnexpectedCollectionType);
- }
};
Ok(())
@@ -2034,7 +2027,6 @@
.iter()
.find(|i| i.owner == *subject)
.map(|i| i.fraction),
- CollectionMode::Invalid => None,
}
}
@@ -2071,7 +2063,6 @@
CollectionMode::ReFungible => {
<ReFungibleItemList<T>>::contains_key(collection_id, item_id)
}
- _ => false,
};
ensure!(exists, Error::<T>::TokenNotFound);
pallets/nft/src/sponsorship.rsdiffbeforeafterboth--- a/pallets/nft/src/sponsorship.rs
+++ b/pallets/nft/src/sponsorship.rs
@@ -127,7 +127,6 @@
sponsored
}
- _ => false,
};
}
primitives/nft/src/lib.rsdiffbeforeafterboth--- a/primitives/nft/src/lib.rs
+++ b/primitives/nft/src/lib.rs
@@ -73,23 +73,15 @@
#[derive(Encode, Decode, Eq, Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
pub enum CollectionMode {
- Invalid,
NFT,
// decimal points
Fungible(DecimalPoints),
ReFungible,
-}
-
-impl Default for CollectionMode {
- fn default() -> Self {
- Self::Invalid
- }
}
impl CollectionMode {
pub fn id(&self) -> u8 {
match self {
- CollectionMode::Invalid => 0,
CollectionMode::NFT => 1,
CollectionMode::Fungible(_) => 2,
CollectionMode::ReFungible => 3,
runtime_types.jsondiffbeforeafterboth--- a/runtime_types.json
+++ b/runtime_types.json
@@ -18,7 +18,6 @@
"DecimalPoints": "u8",
"CollectionMode": {
"_enum": {
- "Invalid": null,
"NFT": null,
"Fungible": "DecimalPoints",
"ReFungible": null
tests/README.mddiffbeforeafterboth--- a/tests/README.md
+++ b/tests/README.md
@@ -5,10 +5,10 @@
1. Checkout polkadot in sibling folder with this project
```bash
git clone https://github.com/paritytech/polkadot.git && cd polkadot
-git checkout aa3867609
+git checkout release-v0.9.9
```
-2. Build with nightly-2021-04-23
+2. Build with nightly-2021-06-28
```bash
cargo build --release
```
tests/src/createCollection.test.tsdiffbeforeafterboth--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -33,19 +33,6 @@
});
describe('(!negative test!) integration test: ext. createCollection():', () => {
- it('(!negative test!) create new NFT collection whith incorrect data (mode)', async () => {
- await usingApi(async (api) => {
- const AcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);
-
- const badTransaction = async () => {
- await createCollectionExpectSuccess({mode: {type: 'Invalid'}});
- };
- await expect(badTransaction()).to.be.rejected;
-
- const BcollectionCount = parseInt((await api.query.nft.createdCollectionCount()).toString(), 10);
- expect(BcollectionCount).to.be.equal(AcollectionCount, 'Error: Incorrect collection created.');
- });
- });
it('(!negative test!) create new NFT collection whith incorrect data (collection_name)', async () => {
await createCollectionExpectFailure({ name: 'A'.repeat(65), mode: {type: 'NFT'}});
});
tests/src/scheduler.test.tsdiffbeforeafterboth--- a/tests/src/scheduler.test.ts
+++ b/tests/src/scheduler.test.ts
@@ -28,7 +28,7 @@
await setCollectionSponsorExpectSuccess(nftCollectionId, Alice.address);
await confirmSponsorshipExpectSuccess(nftCollectionId);
- await scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 6000, 4);
+ await scheduleTransferExpectSuccess(nftCollectionId, newNftTokenId, Alice, Bob, 1, 12000, 4);
});
});
});
tests/src/setVariableMetaData.test.tsdiffbeforeafterboth--- a/tests/src/setVariableMetaData.test.ts
+++ b/tests/src/setVariableMetaData.test.ts
@@ -17,6 +17,7 @@
setVariableMetaDataExpectFailure,
setVariableMetaDataExpectSuccess,
addCollectionAdminExpectSuccess,
+ setMetadataUpdatePermissionFlagExpectSuccess,
} from './util/helpers';
chai.use(chaiAsPromised);
@@ -62,6 +63,7 @@
bob = privateKey('//Bob');
collectionId = await createCollectionExpectSuccess({ mode: { type: 'NFT' } });
tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
+ await setMetadataUpdatePermissionFlagExpectSuccess(alice, collectionId, 'Admin');
await addCollectionAdminExpectSuccess(alice, collectionId, bob);
});
});
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -224,10 +224,6 @@
return result;
}
-interface Invalid {
- type: 'Invalid';
-}
-
interface Nft {
type: 'NFT';
}
@@ -241,7 +237,7 @@
type: 'ReFungible';
}
-type CollectionMode = Nft | Fungible | ReFungible | Invalid;
+type CollectionMode = Nft | Fungible | ReFungible;
export type CreateCollectionParams = {
mode: CollectionMode,
@@ -275,8 +271,6 @@
modeprm = { fungible: mode.decimalPoints };
} else if (mode.type === 'ReFungible') {
modeprm = { refungible: null };
- } else if (mode.type === 'Invalid') {
- modeprm = { invalid: null };
}
const tx = api.tx.nft.createCollection(strToUTF16(name), strToUTF16(description), strToUTF16(tokenPrefix), modeprm);
@@ -317,8 +311,6 @@
modeprm = { fungible: mode.decimalPoints };
} else if (mode.type === 'ReFungible') {
modeprm = { refungible: null };
- } else if (mode.type === 'Invalid') {
- modeprm = { invalid: null };
}
await usingApi(async (api) => {
@@ -528,23 +520,23 @@
export async function setMetadataUpdatePermissionFlagExpectSuccess(sender: IKeyringPair, collectionId: number, flag: string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);
+ const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);
const events = await submitTransactionAsync(sender, tx);
const result = getGenericResult(events);
expect(result.success).to.be.true;
- });
+ });
}
export async function setMetadataUpdatePermissionFlagExpectFailure(sender: IKeyringPair, collectionId: number, flag: string) {
await usingApi(async (api) => {
- const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);
+ const tx = api.tx.nft.setMetaUpdatePermissionFlag(collectionId, flag);
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getGenericResult(events);
expect(result.success).to.be.false;
- });
+ });
}
export async function enableContractSponsoringExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, enable: boolean) {
@@ -576,7 +568,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.true;
- });
+ });
}
export async function setTransferFlagExpectFailure(sender: IKeyringPair, collectionId: number, enabled: boolean) {
@@ -588,7 +580,7 @@
const result = getGenericResult(events);
expect(result.success).to.be.false;
- });
+ });
}
export async function setContractSponsoringRateLimitExpectSuccess(sender: IKeyringPair, contractAddress: AccountId | string, rateLimit: number) {
@@ -833,7 +825,7 @@
const expectedBlockNumber = blockNumber + blockSchedule;
expect(blockNumber).to.be.greaterThan(0);
- const transferTx = await api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
+ const transferTx = await api.tx.nft.transfer(normalizeAccountId(recipient.address), collectionId, tokenId, value);
const scheduleTx = await api.tx.scheduler.schedule(expectedBlockNumber, null, 0, transferTx);
await submitTransactionAsync(sender, scheduleTx);
@@ -1004,7 +996,7 @@
export async function createItemExpectFailure(sender: IKeyringPair, collectionId: number, createMode: string, owner: string = sender.address) {
await usingApi(async (api) => {
const tx = api.tx.nft.createItem(collectionId, normalizeAccountId(owner), createMode);
-
+
const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
const result = getCreateItemResult(events);