difftreelog
fix remove docker build badge from README
in: master
1 file changed
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/UniqueNetwork/substrapunks)27- [Unique Wallet and UI](https://wallet.unique.network)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 clang make cmake protobuf-compiler46curl https://sh.rustup.rs -sSf | sh47```48492. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.50513. Install toolchain nightly-2022-07-24 and make it default:5253```bash54rustup toolchain install nightly-2022-07-2455rustup default nightly-2022-07-2456```57584. Add wasm target for nightly toolchain:5960```bash61rustup target add wasm32-unknown-unknown --toolchain nightly-2022-07-2462```63645. Build:6566Opal67```bash68cargo build --release69```70Quartz71```bash72cargo build --features=quartz-runtime --release73```74Unique75```bash76cargo build --features=unique-runtime --release77```7879## Building as Parachain locally8081Note: checkout this project and all related projects (see below) in the sibling folders (both under the same folder)8283### Polkadot launch utility8485```86git clone https://github.com/UniqueNetwork/polkadot-launch.git87git checkout feature/runtime-upgrade-testing88```8990### Build relay9192```93git clone https://github.com/paritytech/polkadot.git94cd polkadot95git checkout release-v0.9.3096cargo build --release97```9899### Build Unique parachain100101Run in the root of this project:102```103cargo build --release104```105106### Build Acala parachain (optional, full config only)107108```109git clone https://github.com/AcalaNetwork/Acala110cd Acala111git checkout 54db3acd409a0b787f116f20e163a3b24101ce38112make build-release113```114115## Running as Parachain locally116117```118./launch-testnet.sh119```120121Optional, full setup with Acala and Statemint122```123./launch-testnet-full.sh124```125126## Run Integration Tests1271281. Install all needed dependecies129```130cd tests131yarn install132```1331342. Run tests135```136yarn test137```138139140## Code Formatting141142### Apply formatting and clippy fixes143```bash144cargo clippy145cargo fmt146```147148### Format tests149```bash150pushd tests && yarn fix ; popd151```152153### Check code style in tests154```bash155cd tests && yarn eslint --ext .ts,.js src/156```157158159## Karura token transfer160161To get started, you need to open inbound and outbound hrmp channels.162163### Next, we need to register our asset at Karura.164```165assetRegistry -> registerForeignAsset(location, metadata)166location:167 V0(X2(Parent, Parachain(PARA_ID)))168metadata:169 name QTZ170 symbol QTZ171 decimals 18172minimalBalance 1173```174175### Next, we can send tokens from Quartz to Karura:176```177polkadotXcm -> reserveTransferAssets178dest:179 V0(X2(Parent, Parachain(<KARURA_PARA_ID>)))180beneficiary:181 X1(AccountId(Any, <ACCOUNT>))182assets:183 V1(Concrete(0,Here), Fungible(<AMOUNT>))184feeAssetItem:185 0186weightLimit:187 <LIMIT>188```189190The result will be displayed in ChainState191tokens -> accounts192193### To send tokens from Karura to Quartz:194```195xtokens -> transfer196197currencyId:198 ForeignAsset199 <TOKEN_ID>200201amount:202 <AMOUNT>203dest:204 V1205 (206 Parents:1,207 X2(Parachain(<KARURA_PARA_ID>), AccountId(Any, <ACCOUNT>)208 )209destWeight:210 <WEIGHT>211```1# Unique Parachain23## Project Description45The Unique Pallet is the core of NFT functionality. Like ERC-721 standard in Ethereum ecosystem, this pallet provides the6basement for creating collections of unique non-divisible things, also called Non Fungible Tokens (NFTs), minting NFT of7a given Collection, and managing their ownership.89The pallet also enables storing NFT properties. Though (according to ERC-721) NFT properties belong to logic of a10concrete application that operates a Collection, so purposefully the NFT Tracking Module does not have any knowledge11about properties except their byte size leaving application logic out to be controlled by Smart Contracts.1213The Unique Chain also provides:1415- Smart Contracts Pallet and example smart contract that interacts with Unique Runtime16- ERC-1155 Functionality (currently PoC as Re-Fungible tokens, i.e. items that are still unique, but that can be split17 between multiple users)18- Variety of economic options for dapp producers to choose from to create freemium games and other ways to attract19 users. As a step one, we implemented an economic model when a collection sponsor can be set to pay for collection20 Transfer transactions.2122Wider Unique Ecosystem (most of it was developed during Hackusama):2324- [SubstraPunks Game hosted on IPFS](https://github.com/UniqueNetwork/substrapunks)25- [Unique Wallet and UI](https://wallet.unique.network)26- [NFT Asset for Unity Framework](https://github.com/usetech-llc/nft_unity)2728Please see our [walk-through instructions](doc/hackusama_walk_through.md) to try everything out!2930## Application Development3132If you are building an application that operates NFT tokens, use [this document](doc/application_development.md).333435## Building3637Building Unique chain requires special versions of Rust and toolchain. We don't use the most recent versions of everything38so that we can keep the builds stable.39401. Install Rust:4142```bash43sudo apt-get install git curl libssl-dev llvm pkg-config libclang-dev clang make cmake protobuf-compiler44curl https://sh.rustup.rs -sSf | sh45```46472. Remove all installed toolchains with `rustup toolchain list` and `rustup toolchain uninstall <toolchain>`.48493. Install toolchain nightly-2022-07-24 and make it default:5051```bash52rustup toolchain install nightly-2022-07-2453rustup default nightly-2022-07-2454```55564. Add wasm target for nightly toolchain:5758```bash59rustup target add wasm32-unknown-unknown --toolchain nightly-2022-07-2460```61625. Build:6364Opal65```bash66cargo build --release67```68Quartz69```bash70cargo build --features=quartz-runtime --release71```72Unique73```bash74cargo build --features=unique-runtime --release75```7677## Building as Parachain locally7879Note: checkout this project and all related projects (see below) in the sibling folders (both under the same folder)8081### Polkadot launch utility8283```84git clone https://github.com/UniqueNetwork/polkadot-launch.git85git checkout feature/runtime-upgrade-testing86```8788### Build relay8990```91git clone https://github.com/paritytech/polkadot.git92cd polkadot93git checkout release-v0.9.3094cargo build --release95```9697### Build Unique parachain9899Run in the root of this project:100```101cargo build --release102```103104### Build Acala parachain (optional, full config only)105106```107git clone https://github.com/AcalaNetwork/Acala108cd Acala109git checkout 54db3acd409a0b787f116f20e163a3b24101ce38110make build-release111```112113## Running as Parachain locally114115```116./launch-testnet.sh117```118119Optional, full setup with Acala and Statemint120```121./launch-testnet-full.sh122```123124## Run Integration Tests1251261. Install all needed dependecies127```128cd tests129yarn install130```1311322. Run tests133```134yarn test135```136137138## Code Formatting139140### Apply formatting and clippy fixes141```bash142cargo clippy143cargo fmt144```145146### Format tests147```bash148pushd tests && yarn fix ; popd149```150151### Check code style in tests152```bash153cd tests && yarn eslint --ext .ts,.js src/154```155156157## Karura token transfer158159To get started, you need to open inbound and outbound hrmp channels.160161### Next, we need to register our asset at Karura.162```163assetRegistry -> registerForeignAsset(location, metadata)164location:165 V0(X2(Parent, Parachain(PARA_ID)))166metadata:167 name QTZ168 symbol QTZ169 decimals 18170minimalBalance 1171```172173### Next, we can send tokens from Quartz to Karura:174```175polkadotXcm -> reserveTransferAssets176dest:177 V0(X2(Parent, Parachain(<KARURA_PARA_ID>)))178beneficiary:179 X1(AccountId(Any, <ACCOUNT>))180assets:181 V1(Concrete(0,Here), Fungible(<AMOUNT>))182feeAssetItem:183 0184weightLimit:185 <LIMIT>186```187188The result will be displayed in ChainState189tokens -> accounts190191### To send tokens from Karura to Quartz:192```193xtokens -> transfer194195currencyId:196 ForeignAsset197 <TOKEN_ID>198199amount:200 <AMOUNT>201dest:202 V1203 (204 Parents:1,205 X2(Parachain(<KARURA_PARA_ID>), AccountId(Any, <ACCOUNT>)206 )207destWeight:208 <WEIGHT>209```