Poly Network
Published in

Poly Network

NFT Bridge Integration Manual for Projects

Integration instructions for the projects 项目方对接须知

1. Provide contract address and specify the corresponding blockchain and testnet/mainnet 提供合约地址以及对应的区块链,并区分testnet/mainnet

In most cases the project party only needs to deploy a version of the NFT contract on the source chain, and Poly Network will deploy the NFT proxy contract on the destination chain.

一般而言,项目方只需在原生链上部署一版NFT合约,Poly Network提供目标链NFT合约代理部署服务。

The source NFT contract must support the EIP-721 standard https://eips.ethereum.org/EIPS/eip-721. It should be noted here that the EIP-721 standard does not include the mint method. In our cross-chain process, when the newly generated asset on the source chain is transferred from one chain to another, Poly will determine if there is this asset in the target contract. If not, a new NFT will be minted.

原生NFT合约必须支持EIP-721标准https://eips.ethereum.org/EIPS/eip-721. 这里需要注意的是,EIP-721标准并不包含mint方法。在我们的跨链过程中,当新生成的原生资产从一条链转移到另一条链时,会判断目标链目标合约中是否有该资产,如果没有,则需要mint一个新的NFT。

Poly Network provides this NFT template:

Poly Network为项目方提供一个NFT 样板:

https://github.com/polynetwork/nft-contracts/tree/main/contracts/erc721_template

This contract implements minting interface using the Poly Network standard:

该合约实现了Poly Network标准的铸币接口:

`function mintWithURI(address to, uint256 tokenId, string memory uri) external`

This method will be called in Poly Network’s PolyNFTLockProxy contract.

该方法会在Poly Network的PolyNFTLockProxy合约中进行调用。

If the project party team wants to deploy the NFT contract on the target chain by themself, please make sure to implement the above interface and ensure that the method name, parameters, and order are strictly consistent.

如果项目方想要在目标链上自行部署NFT合约,请确保一定实现上述接口,并确保方法名、参数及其顺序严格保持一致。

If the project party’s contract does not implement `_safeMint`, `_setTokenURI`, etc. methods, the team needs to implement it itself. If you have implemented these methods, you can directly copy the following code:

如果项目方的合约中没有实现`_safeMint`,` _setTokenURI`等方法,则需要自己实现,如果已实现这些方法,可以直接拷贝使用下述代码:

```

function mintWithURI(address to, uint256 tokenId, string memory uri) external {

require(!_exists(tokenId), “token id already exist”);

_safeMint(to, tokenId);

_setTokenURI(tokenId, uri);

}

```

2. Provide baseUri 提供baseUri

e.g: https://api.seascape.network/nft/metadata/

3. Provide standards file according to the requirements above 根据上述要求提供标准文件

e.g.:

{
“Name”:”SCAPES”,
“BaseURI”:”https://api.seascape.network/nft/metadata/",
“Assets”:[
{
“ChainName”:”eth”,
“Address”:”0x3680fb34F55030326659cd9AaEc522B6E355bdB6"
},
{
“ChainName”:”bsc”,
“Address”:”0x66638F4970C2ae63773946906922c07a583b6069"
},
{
“ChainName”:”heco”,
“Address”:”0xF9Dd424e64E9264632a564FBDcC87Ba8eA40B5Ba”
}
]
}

4. Provide NFT profile data format and query interface 提供NFT profile数据格式及查询接口

The query interface should include single query and batch query. This step is not required.

Follow us

Website | Telegram | Medium | Twitter | Discord | Github| Forum

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Poly Network

Poly Network

869 Followers

Enhancing connections between ledgers by providing interoperability in Web 3.0.