difftreelog
Merge pull request #347 from UniqueNetwork/release-v920000
in: master
Release v920000
20 files changed
.envdiffbeforeafterboth--- a/.env
+++ b/.env
@@ -1,6 +1,6 @@
-RUST_TOOLCHAIN=nightly-2021-11-11
-RUST_C=1.58.0-nightly
-POLKA_VERSION=release-v0.9.18
+RUST_TOOLCHAIN=nightly-2022-04-07
+RUST_C=1.62.0-nightly
+POLKA_VERSION=release-v0.9.20
UNIQUE_BRANCH=develop
USER=***
PASS=***
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5475,7 +5475,7 @@
[[package]]
name = "opal-runtime"
-version = "0.9.18"
+version = "0.9.20"
dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-dmp-queue",
@@ -8682,7 +8682,7 @@
[[package]]
name = "quartz-runtime"
-version = "0.9.18"
+version = "0.9.20"
dependencies = [
"cumulus-pallet-aura-ext",
"cumulus-pallet-dmp-queue",
@@ -12515,7 +12515,7 @@
[[package]]
name = "unique-node"
-version = "0.9.18"
+version = "0.9.20"
dependencies = [
"clap",
"cumulus-client-cli",
@@ -12725,7 +12725,7 @@
[[package]]
name = "unique-runtime-common"
-version = "0.9.18"
+version = "0.9.20"
dependencies = [
"fp-rpc",
"frame-support",
Dockerfile-parachaindiffbeforeafterboth--- a/Dockerfile-parachain
+++ b/Dockerfile-parachain
@@ -2,9 +2,9 @@
FROM phusion/baseimage:focal-1.1.0 as rust-builder
LABEL maintainer="Unique.Network"
-ARG RUST_TOOLCHAIN=nightly-2021-11-11
-#ARG RUST_C=1.58.0-nightly
-ARG POLKA_VERSION=release-v0.9.18
+ARG RUST_TOOLCHAIN=nightly-2022-04-07
+#ARG RUST_C=1.62.0-nightly
+ARG POLKA_VERSION=release-v0.9.20
ARG UNIQUE_BRANCH=develop
#ARG USER=***
README.mddiffbeforeafterboth123# Unique Parachain45## Project Description67The Unique Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the8basement for creating collections of unique non-divisible things, also called Non Fungible Tokens (NFTs), minting NFT of9a given Collection, and managing their ownership.1011The pallet also enables storing NFT properties. Though (according to ERC-721) NFT properties belong to logic of a12concrete application that operates a Collection, so purposefully the NFT Tracking Module does not have any knowledge13about properties except their byte size leaving application logic out to be controlled by Smart Contracts.1415The Unique Chain also provides:1617- Smart Contracts Pallet and example smart contract that interacts with Unique Runtime18- ERC-1155 Functionality (currently PoC as Re-Fungible tokens, i.e. items that are still unique, but that can be split19 between multiple users)20- Variety of economic options for dapp producers to choose from to create freemium games and other ways to attract21 users. As a step one, we implemented an economic model when a collection sponsor can be set to pay for collection22 Transfer transactions.2324Wider Unique Ecosystem (most of it was developed during Hackusama):2526- [SubstraPunks Game hosted on IPFS](https://github.com/usetech-llc/substrapunks)27- [Unique Wallet and UI](https://uniqueapps.usetech.com/#/nft)28- [NFT Asset for Unity Framework](https://github.com/usetech-llc/nft_unity)2930Please see our [walk-through instructions](doc/hackusama_walk_through.md) to try everything out!3132## Application Development3334If you are building an application that operates NFT tokens, use [this document](doc/application_development.md).353637## Building3839Building Unique chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything40so that we can keep the builds stable.41421. Install Rust:4344```bash45sudo apt-get install git curl libssl-dev llvm pkg-config libclang-dev clang46curl https://sh.rustup.rs -sSf | sh47```48492. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.50513. Install install nightly 2021-11-11 and make it default:5253```bash54rustup toolchain install nightly-2021-11-1155rustup default nightly-2021-11-1156```57584. Add wasm target for nightly toolchain:5960```bash61rustup target add wasm32-unknown-unknown --toolchain nightly-2021-11-1162```63645. Build:65```bash66cargo build --features=unique-runtime,quartz-runtime --release67```6869## Building as Parachain locally7071Note: checkout this project and all related projects (see below) in the sibling folders (both under the same folder)7273### Polkadot launch utility7475```76git clone https://github.com/paritytech/polkadot-launch77```7879### Build relay8081```82git clone https://github.com/paritytech/polkadot.git83cd polkadot84git checkout release-v0.9.1885cargo build --release86```8788### Build Unique parachain8990Run in the root of this project:91```92cargo build --release93```9495### Build Acala parachain (optional, full config only)9697```98git clone https://github.com/AcalaNetwork/Acala99cd Acala100git checkout 54db3acd409a0b787f116f20e163a3b24101ce38101make build-release102```103104## Running as Parachain locally105106```107./launch-testnet.sh108```109110Optional, full setup with Acala and Statemint111```112./launch-testnet-full.sh113```114115## Run Integration Tests1161171. Install all needed dependecies118```119cd tests120yarn install121```1221232. Run tests124```125yarn test126```127128129## Code Formatting130131### Apply formatting and clippy fixes132```bash133cargo clippy134cargo fmt135```136137### Format tests138```bash139pushd tests && yarn fix ; popd140```141142### Check code style in tests143```bash144cd tests && yarn eslint --ext .ts,.js src/145```146147148## Karura token transfer149150To get started, you need to open inbound and outbound hrmp channels.151152### Next, we need to register our asset at Karura.153```154assetRegistry -> registerForeignAsset(location, metadata)155location:156 V0(X2(Parent, Parachain(PARA_ID)))157metadata:158 name OPL159 symbol OPL160 decimals 18161minimalBalance 1162```163164### Next, we can send tokens from Opal to Karura:165```166polkadotXcm -> reserveTransferAssets167dest:168 V0(X2(Parent, Parachain(<KARURA_PARA_ID>)))169beneficiary:170 X1(AccountId(Any, <ACCOUNT>))171assets:172 V1(Concrete(0,Here), Fungible(<AMOUNT>))173feeAssetItem:174 0175weightLimit:176 <LIMIT>177```178179The result will be displayed in ChainState180tokens -> accounts181182### To send tokens from Karura to Opal:183```184xtokens -> transfer185186currencyId:187 ForeingAsset188 <TOKEN_ID>189190amount:191 <AMOUNT>192dest:193 V1194 (195 Parents:1,196 X2(Parachain(<KARURA_PARA_ID>), AccountId(Any, <ACCOUNT>)197 )198destWeight:199 <WEIGHT>200```launch-config-full.jsondiffbeforeafterboth--- a/launch-config-full.json
+++ b/launch-config-full.json
@@ -1,7 +1,7 @@
{
"relaychain": {
"bin": "../polkadot/target/release/polkadot",
- "chain": "rococo-local",
+ "chain": "westend-local",
"nodes": [
{
"name": "alice",
launch-config.jsondiffbeforeafterboth--- a/launch-config.json
+++ b/launch-config.json
@@ -1,7 +1,7 @@
{
"relaychain": {
"bin": "../polkadot/target/release/polkadot",
- "chain": "rococo-local",
+ "chain": "westend-local",
"nodes": [
{
"name": "alice",
node/cli/Cargo.tomldiffbeforeafterboth--- a/node/cli/Cargo.toml
+++ b/node/cli/Cargo.toml
@@ -283,7 +283,7 @@
license = 'GPLv3'
name = 'unique-node'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.18'
+version = '0.9.20'
[[bin]]
name = 'unique-collator'
node/cli/src/chain_spec.rsdiffbeforeafterboth--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -243,7 +243,7 @@
)
}
-pub fn local_testnet_rococo_config() -> DefaultChainSpec {
+pub fn local_testnet_config() -> DefaultChainSpec {
let mut properties = Map::new();
properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());
properties.insert("tokenDecimals".into(), 18.into());
@@ -305,7 +305,7 @@
Some(properties),
// Extensions
Extensions {
- relay_chain: "rococo-local".into(),
+ relay_chain: "westend-local".into(),
para_id: 1000,
},
)
node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -76,7 +76,7 @@
fn load_spec(id: &str) -> std::result::Result<Box<dyn sc_service::ChainSpec>, String> {
Ok(match id {
"dev" => Box::new(chain_spec::development_config()),
- "" | "local" => Box::new(chain_spec::local_testnet_rococo_config()),
+ "" | "local" => Box::new(chain_spec::local_testnet_config()),
path => {
let path = std::path::PathBuf::from(path);
let chain_spec = Box::new(chain_spec::OpalChainSpec::from_json_file(path.clone())?)
@@ -405,6 +405,7 @@
cmd.run(config, partials.client.clone(), db, storage)
}),
+ BenchmarkCmd::Machine(cmd) => runner.sync_run(|config| cmd.run(&config)),
BenchmarkCmd::Overhead(_) => Err("Unsupported benchmarking command".into()),
}
}
runtime/common/Cargo.tomldiffbeforeafterboth--- a/runtime/common/Cargo.toml
+++ b/runtime/common/Cargo.toml
@@ -6,7 +6,7 @@
license = 'All Rights Reserved'
name = 'unique-runtime-common'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.18'
+version = '0.9.20'
[features]
default = ['std']
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -10,7 +10,7 @@
license = 'GPLv3'
name = 'opal-runtime'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.18'
+version = '0.9.20'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
runtime/opal/build.rsdiffbeforeafterboth--- a/runtime/opal/build.rs
+++ b/runtime/opal/build.rs
@@ -14,10 +14,9 @@
// You should have received a copy of the GNU General Public License
// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-use substrate_wasm_builder::WasmBuilder;
-
fn main() {
- WasmBuilder::new()
+ #[cfg(feature = "std")]
+ substrate_wasm_builder::WasmBuilder::new()
.with_current_project()
.import_memory()
.export_heap_base()
runtime/opal/src/lib.rsdiffbeforeafterboth--- a/runtime/opal/src/lib.rs
+++ b/runtime/opal/src/lib.rs
@@ -169,7 +169,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 918010,
+ spec_version: 920000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -10,7 +10,7 @@
license = 'GPLv3'
name = 'quartz-runtime'
repository = 'https://github.com/UniqueNetwork/unique-chain'
-version = '0.9.18'
+version = '0.9.20'
[package.metadata.docs.rs]
targets = ['x86_64-unknown-linux-gnu']
runtime/quartz/build.rsdiffbeforeafterboth--- a/runtime/quartz/build.rs
+++ b/runtime/quartz/build.rs
@@ -1,7 +1,6 @@
-use substrate_wasm_builder::WasmBuilder;
-
fn main() {
- WasmBuilder::new()
+ #[cfg(feature = "std")]
+ substrate_wasm_builder::WasmBuilder::new()
.with_current_project()
.import_memory()
.export_heap_base()
runtime/quartz/src/lib.rsdiffbeforeafterboth--- a/runtime/quartz/src/lib.rs
+++ b/runtime/quartz/src/lib.rs
@@ -154,7 +154,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 918010,
+ spec_version: 920000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
runtime/unique/build.rsdiffbeforeafterboth--- a/runtime/unique/build.rs
+++ b/runtime/unique/build.rs
@@ -1,7 +1,6 @@
-use substrate_wasm_builder::WasmBuilder;
-
fn main() {
- WasmBuilder::new()
+ #[cfg(feature = "std")]
+ substrate_wasm_builder::WasmBuilder::new()
.with_current_project()
.import_memory()
.export_heap_base()
runtime/unique/src/lib.rsdiffbeforeafterboth--- a/runtime/unique/src/lib.rs
+++ b/runtime/unique/src/lib.rs
@@ -153,7 +153,7 @@
spec_name: create_runtime_str!(RUNTIME_NAME),
impl_name: create_runtime_str!(RUNTIME_NAME),
authoring_version: 1,
- spec_version: 918010,
+ spec_version: 920000,
impl_version: 0,
apis: RUNTIME_API_VERSIONS,
transaction_version: 1,
tests/README.mddiffbeforeafterboth--- a/tests/README.md
+++ b/tests/README.md
@@ -5,7 +5,7 @@
1. Checkout polkadot in sibling folder with this project
```bash
git clone https://github.com/paritytech/polkadot.git && cd polkadot
-git checkout release-v0.9.18
+git checkout release-v0.9.20
```
2. Build with nightly-2021-11-11
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -130,6 +130,10 @@
**/
currentTransactionStatuses: AugmentedQuery<ApiType, () => Observable<Option<Vec<FpRpcTransactionStatus>>>, []> & QueryableStorageEntry<ApiType, []>;
/**
+ * Injected transactions should have unique nonce, here we store current
+ **/
+ injectedNonce: AugmentedQuery<ApiType, () => Observable<U256>, []> & QueryableStorageEntry<ApiType, []>;
+ /**
* Current building block's transactions and receipts.
**/
pending: AugmentedQuery<ApiType, () => Observable<Vec<ITuple<[EthereumTransactionTransactionV2, FpRpcTransactionStatus, EthereumReceiptReceiptV3]>>>, []> & QueryableStorageEntry<ApiType, []>;
@@ -434,8 +438,11 @@
/**
* Events deposited for the current block.
*
- * NOTE: This storage item is explicitly unbounded since it is never intended to be read
- * from within the runtime.
+ * NOTE: The item is unbound and should therefore never be read on chain.
+ * It could otherwise inflate the PoV size of a block.
+ *
+ * Events have a large in-memory size. Box the events to not go out-of-memory
+ * just in case someone still reads them from within the runtime.
**/
events: AugmentedQuery<ApiType, () => Observable<Vec<FrameSystemEventRecord>>, []> & QueryableStorageEntry<ApiType, []>;
/**