随着 Web3 和 NFT 领域的繁荣发展,越来越多的开发者涌进了 Web3 行业。大部分的 Web3 项目在开发过程中,都需要使用一部分 NFT 相关的数据,由此也产生了对 NFT API 数据服务的需求。
现在实现函数修饰符,事件以及这个 App 的存储数据的状态变量。以下代码中的评论会说明这些东西都使用在了哪里,或者你可以参考 GitHub 代码仓库。
contract NftMarketplace is ReentrancyGuard {
struct Listing {
uint256 price;
address seller;
}
event ItemListed(
address indexed seller,
address indexed nftAddress,
uint256 indexed tokenId,
uint256 price
);
// State Variables
mapping(address => mapping(uint256 => Listing)) private s_listings;
mapping(address => uint256) private s_proceeds;
// Function modifiers
modifier notListed(
address nftAddress,
uint256 tokenId,
address owner
) {
Listing memory listing = s_listings[nftAddress][tokenId];
if (listing.price > 0) {
revert AlreadyListed(nftAddress, tokenId);
}
_;
}
编写可升级合约
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
contract OpenProxy is Initializable {
uint public value;
function initialize(uint _value) public initializer {
value = _value;
}
function increaseValue() external {
++value;
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。