MetaNode社区
找工作面试题库领SepoliaETH

© 2025 MetaNode社区. All rights reserved.

Powered by MetaNode

VIP

尊享永久会员

解锁所有面试题解,一次性买断

当前等级普通用户
限时优惠
¥129¥399

/永久

✓解锁全部企业高频面试题及高质量题解
✓参与模拟面试,获取百套模拟面试视频
✓加入永久会员交流群,专属答疑

点击按钮联系客服获取兑换码

扫码添加老师微信

获取兑换码 · 干货不错过

微信二维码
Logo

关注我们

B站抖音小红书
在合约开发过程中,你遇到了哪些具体的安全挑战?当比特币交易卡住时,如何加速交易过程?你参与的NFT交易市场和借贷聚合平台项目是什么时候做的?如果用户在未支付的情况下调用matchOrder会发生什么?你目前主要接触的是EVM吗?能否讲一下比特币和以太坊的区别?以太坊如何通过nonce值解决交易重复的问题?在NFT交易市场项目中,合约团队的规模及整体项目架构是怎样的?NFT交易市场的交易你是如何设计事件监听器的?如何保证事件不丢失?能否详细描述一下作为买家和卖家,在合约中是如何处理资金流的?NFT交易市场中的版税功能如何在合约层面实现的?为何选择通过资金池合约进行所有交先自我介绍一下。你负责的这个岗位主要负责什么工作?在订单匹配过程中,为什么选择将所有资金通过你们的合约进行处理,而不是直接从用户相较于其他NFT平台,你们的模式有哪些优势?你们是否参考了OpenSea方案,并且在安全方面,特别是撤单时如何防范重入攻击等安
返回题库

在NFT交易市场项目中,合约团队的规模及整体项目架构是怎样的?NFT交易市场的交易

简单
00

撮合机制是如何设计的?

回答要点:

团队规模和组织架构: 我们的NFT交易平台项目团队总共有15人。合约团队有2人,都是资深的Solidity开发工程师,负责所有智能合约的 开发、测试和审计对接。后端团队有3人,我是后端负责人,另外两位工程师分别负责API服务和数据同步模块。前 端团队有2人,负责Web端和移动端的开发。此外还有1位产品经理、1位UI设计师、1位测试工程师,以及2位运营 人员负责社区运营和商务拓展。 整体项目架构: 我们的架构分为四层: 第一层是前端层,包括Web应用和移动端应用。用户通过前端连接MetaMask等钱包,浏览NFT、创建订单、进行 交易。前端使用React开发,通过ethers.js与区块链交互。

第二层是后端服务层,采用微服务架构,包含五个核心服务。API Gateway负责统一的接口入口、鉴权和限流。订 单服务管理链下订单的创建、查询和撮合。用户服务处理用户注册、登录和个人信息管理。搜索服务基于 Elasticsearch实现NFT的全文搜索和筛选。数据同步服务负责监听区块链事件,将链上数据同步到链下数据库。 第三层是智能合约层,部署在Polygon链上。核心合约包括Exchange合约,负责订单撮合和资金托管; AssetRegistry合约,记录支持交易的NFT合约地址;RoyaltyEngine合约,实现版税的自动计算和分配。 第四层是数据层,使用PostgreSQL存储订单、用户、交易记录等结构化数据,MongoDB存储NFT元数据(图片、 属性等),Redis用于热点数据缓存和会话管理。 交易撮合机制设计: 我们的撮合机制结合了链上和链下的优势,采用"链下订单簿 + 链上结算"的模式。 订单创建流程: 当卖家想要出售NFT时,他不需要立即发起链上交易,而是在链下创建一个订单。具体步骤是:首先,卖家授权我 们的Exchange合约可以转移他的NFT,这是一次链上交易。然后,卖家在前端填写出售信息(NFT地址、 TokenID、价格、有效期等),使用钱包对这些信息进行签名,生成一个链下订单。这个签名订单被提交到我们的 后端服务器,存储在数据库中。 这种设计的好处是卖家创建订单不需要支付Gas费,可以随时免费修改或取消订单。订单信息包括NFT合约地址、 TokenID、卖家地址、价格、支付代币类型、版税信息、有效期、nonce等,所有这些信息都包含在签名中,保证 不可篡改。 订单撮合流程: 当买家想要购买某个NFT时,前端会查询后端的订单数据库,找到对应的卖家订单。买家点击购买后,前端会调用 Exchange合约的matchOrder函数,将卖家的签名订单和买家的支付信息一起提交到链上。 Exchange合约收到交易后,会执行以下步骤: 第一步,验证卖家的签名。合约使用ecrecover函数恢复签名者地址,确认订单确实是卖家创建的,且订单内容没 有被篡改。 第二步,检查订单状态。合约会检查订单是否已过期、是否已被取消、nonce是否有效。我们为每个用户维护一个 nonce计数器,卖家可以通过增加nonce来批量取消所有旧订单。 第三步,验证资产状态。合约检查卖家是否仍然拥有这个NFT,是否已授权合约转移,买家是否有足够的资金支 付。 第四步,执行资金分配。合约从买家账户转入资金,按照预定规则分配:首先扣除平台手续费(2.5%),然后计算 并支付版税给NFT创作者(通常5-10%),剩余金额支付给卖家。 第五步,转移NFT。合约调用NFT合约的transferFrom函数,将NFT从卖家转移给买家。 第六步,记录状态和触发事件。合约更新订单状态为已完成,触发OrderMatched事件,包含所有交易详情。 整个过程是原子性的,要么全部成功,要么全部失败回滚,不会出现资金转移了但NFT没转移的情况。 版税分配机制: 版税是NFT交易的重要特性,保证创作者能从二次交易中持续获益。我们的实现方式是:每个NFT在首次上架时, 创作者设置版税比例和接收地址。这些信息存储在RoyaltyEngine合约中。交易时,Exchange合约会查询 RoyaltyEngine,获取版税信息,自动从交易金额中扣除版税并转给创作者。

我们支持多级版税,比如一个NFT可以设置10%的版税,其中5%给原创作者,3%给合作艺术家,2%给项目方。合 约会自动按比例分配给所有接收地址。 订单取消机制: 卖家可以随时取消订单。如果是链下订单,卖家可以在前端直接标记为取消,后端数据库更新状态即可,无需链上 交易。如果担心有人仍持有旧的签名订单,卖家可以调用合约的cancelOrder函数,在链上记录这个订单已取消, 或者调用incrementNonce函数,使所有旧订单失效。

安全性考虑

我们在设计中特别注重安全性。所有订单签名都包含chainId,防止跨链重放攻击。订单有明确的有效期,过期自 动失效。合约使用ReentrancyGuard防止重入攻击。资金转移严格遵循"检查-效果-交互"模式,先更新状态再进行 外部调用。合约在上线前经过了专业安全公司的审计,发现并修复了2个中危漏洞。 这套撮合机制在实际运行中表现良好,订单撮合成功率达到98.5%,平均Gas消耗约15万,用户体验和成本都在可 接受范围内。