w3f / PSPs

Polkadot Smart Contract Proposals
Creative Commons Zero v1.0 Universal
158 stars 67 forks source link

Non-Fungible Token standard Proposal (WASM ERC721) #34

Closed xgreenx closed 2 years ago

xgreenx commented 2 years ago

Summary

A standard for a Non-Fungible Token interface for WebAssembly smart contracts which run on Substrate's contracts pallet.

This proposal aims to define the standard Non-Fungible Token interface for WebAssembly smart contracts, just like EIP-721 for the Ethereum ecosystem.

Motivation

Without a standard interface for Non-Fungible Token every contract will have different signature and types. Hence, no interoperability is possible. This proposal aims to resolve that by defining one interface that shares the same ABI of permissionless methods between all implementations.

The goal is to have a standard contract interface that allows tokens deployed on Substrate's contracts pallet to be re-used by other applications: from wallets to decentralized exchanges.

Implementations

Examples of implementations:

Motivation for having a standard separate from ERC-721

Due to the different nature of WebAssembly smart contracts and the difference between EVM and the contracts pallet in Substrate, this standard proposal has specific rules and methods, therefore PSP-34 differs from ERC-721 in its implementation. Also, the proposal contains new methods and types that should improve the usability of Non-Fungible Token.

This standard is at the ABI level like was discussed before in the PSP22.

bernardoaraujor commented 2 years ago

The implementation points to psp721.rs while the PR adds a draft for psp-34.md, which is confusing. Is that intentional?

xgreenx commented 2 years ago

The implementation points to psp721.rs while the PR adds a draft for psp-34.md, which is confusing. Is that intentional?

No, we will rename everything when PSP will be merged. Previously we didn't know the actual number that we will use but now it will be PSP34.

xgreenx commented 2 years ago

@Noc2 Hi, I think we can move it to the Call for Feedback state and merge