OpenSea 交易平台开发 NFT 系统部署技术
NFT 交易平台 OpenSea 市场上的交易是可以实现智能交易的控制,这意味着是在去中心化平台上进行的交易。而是通过保证公平交易来促进卖方获得这些报酬。OpenSea 在双方之间进行交易。尽管如此平台交易仍没有在市场中以 2.5%的价格与每个市场的竞争者达成交易。OpenSea 架构协议是由 Wyvern 的一组智能协议平台,提供了该链的跨链和以太坊的数字化交易平台支持。OpenSea 交易平台开发询 13z 阿 4277 李 2558,NFT 交易平台开发技术。
运行原理
1、NFT 根据以太坊 ERC721 或其他标准,可以将作品加密后变成了一种非同质化的代币,而这叫做铸币(mint)。
2、铸币是需要和区块链签约,要支付手续费(Gas 费),而这笔手续费是支付给各节点的矿工,需要矿工将签约记录到区块链内。记录的过程需要计算哈希函数,随机值,哈希值,并生成新的区块;
3、NFT 铸币完成后,产品就上架到交易平台 OpenSea 上可供交易。当交易 NFT 作品时,系统会向区块链发送交易合约,然后各节点开始计算哈希函数,随机值,哈希值,然后生成确权代码,以及校验生成的区块是否有效;
4、以太坊区块链是基于比特币区块链上发展和进步的,其在比特币区块链的基础上增加了智能合约的设定,而 NFT 基于以太坊。所以 NFT 有了区块链去中心化和智能合约的特点,使 NFT 具有不可替代、不可分割、不可篡改等区块链的特点;
跨链互操作性有利于 Web3 不同生态的集成,同时对于连接现有 Web2 基础设施和 Web3 服务有至关重要的作用。通过启用跨链智能合约,跨链互操作性解决方案减少了生态系统的碎片化,并释放了更高的资本效率和更好的流动性条件。
DeFi 的无需许可的可组合性催生了越来越复杂的应用程序,这些应用程序允许开发人员将不同的 dApp 组合成一个结构,该结构可以实现的效果超过其各部分的总和。然而,数百个不同网络的可组合性受到显着阻碍,因为智能合约只能与同一网络上的其他合约本地组合。如果一个应用程序想要跟随用户并在快速变化的多链环境中保持竞争力,它必须部署在多个平台上,导致流动性碎片化和用户体验下降。此外,单个 dApp 部署会占用宝贵的开发资源,否则这些资源可能会用于提升应用程序的业务逻辑。
在多链环境中,每个 dApp 实例都是一组孤立的智能合约,与其他区块链没有连接。
跨链互操作性使开发人员能够构建一个原生的跨链应用程序,其中一个统一的 dApp 可以部署在多个不同区块链上,而不必在不同的网络上部署多个单独的版本。
跨链智能合约由部署在多个网络中的多个智能合约组成,创建一个统一的 dApp。
NFT 跨链桥是如何做到的?
NFT 桥适用在所有的鼓励的链之间来回传送 NFT,与此同时保存其数据库。当一个 NFT 被迁移出它发源链时,会出现这样的情况:
1)NFT 被锁定在 NFT 桥区块链智能合约中;
2)一个等效电路产品的包装 NFT 被锻造到总体目标链里的相对应 collection 中;
3)那个被包装 NFT 同名的,看上去和原先的一样,个人行为也与链里的别的 NFT 完全一样,在 EVM 链上,包装 NFT 是 ERC721 货币,在 Solana 上,他们带有 Metaplex 数据库的 SPL 货币,在 Aptos 上,它们都是 Aptos 货币标准化的案例。
除开名称及外型以外,被包装 NFT 的独特之处取决于可以把它们推送回初始链并开启初始 NFT。这就意味着,比如,源于 Aptos 的 NFT 能够桥收到以太币,之后在 Opensea 上售卖,然后再由新使用者转到 Aptos。
在 NFT 数据存储中,我们可以看到 solmate 等常规实现都使用了 mapping(uint256=>address)internal _ownerOf 将单个 tokenId 与持有者对应。但 ERC721A 是对批量铸造进行特殊优化的,开发者认为在批量铸造过程中,用户持有的 NFT 的 tokenId 往往是连续的。
_ownerOf 记录 tokenId 与持有者的关系
_balanceOf 记录持有人所持有的 NFT 数量
其铸造方法定义如下:
function _mint(address to,uint256 id)internal virtual{
require(to!=address(0),"INVALID_RECIPIENT");
require(_ownerOf[id]==address(0),"ALREADY_MINTED");
//Counter overflow is incredibly unrealistic.
unchecked{
_balanceOf[to]++;
}
_ownerOf[id]=to;
emit Transfer(address(0),to,id);
}
通过此函数,我们更新了_ownerOf 和_balanceOf 实现用户铸造 NFT 的功能。我们可以发现用户每次铸造 NFT 都需要更新_ownerOf 和_balanceOf 映射。众所周知,在操作码 gas 消耗中,更新存储需要消耗大量 gas。如果用户批量铸造,会在此过程中消耗大量 gas。
评论