2022年3月28日下午,LooksRare团队在Discord 举行AMA,讨论LooksRare技术相关问题,并回答社区用户所关心的技术方面的问题。参与AMA的项目方成员包括:开发主管 Shisui,后端主管 hex,前端主管Nirato,以及产品经理Gizmo。

对话LooksRare团队:详谈底层技术、用户体验和团队建设

底层技术:模块化的智能合约让所有新功能都可以及时部署,用户的资产安全是团队最注重的问题

1、你能比较一下LooksRare的合约与OpenSea的区别以及LooksRare做了哪些优化吗?

JurassicPunk:Wyvern(OpenSea使用的协议)一直是以太坊上使用最多的智能合约之一,毫无疑问,它帮助建立了NFT行业发展的根基。

LooksRare也是建立在类似的架构上,有一个链外/链上系统,但架构的其他部分是非常不同的。我们高度关注用户的安全问题,所以采用了智能合约的模块化系统,以EIP-712签名(容易被人类理解的签名方式),一键取消所有挂单工具等创新方式。

这种模块化合约提供了一些好处,如增加新的交易匹配方式,并允许纳入未来的商业逻辑变化。该协议还关注创作者,其创新之处在于支持ERC2981,为项目提供链上版税登记,并在每次交易中即时地支付版税费用。

2、为什么你们要独立部署这么多的合同,例如使用版税合约来部署FeeSetter、FeeManager、FeeRegistry?

基本上,更多的模块化意味着系统更容易审查和理解(我们在软件开发中经常发现的经典的分而治之范式),在未来也更容易添加新的功能,或者修复bug。

3、有什么证据可以证明你们是从头开始建立的,并且没有使用OpenSea的后端?

Gizmo:你可以看到LooksRare使用EIP712来签名(这个签名用户可以清楚的知道自己签名的内容),在我们发布的时候,OpenSea并不支持这个签名。所以我们的整个系统与OpenSea不兼容。我们用于交易、索引和一切与交易所有关的后端完全独立于OpenSea。我们从头建立了自己的交易系统,这就是为什么当OpenSea发生故障时,LooksRare可以继续交易。下次OpenSea瘫痪的时候,你可以来试一下。

4、从技术上讲,在建立这个NFT市场时,最难的是什么?你如何解决这个问题?

Shisui:在LooksRare和LooksRare之外的链上发生的事件之间的同步是大问题。例如,如果你把一个NFT转移到不同的钱包,但它仍然在LR上上架,我们需要抓住这一点。你可能知道,过期的订单在推出后是一个大问题。总的来说,链上和链下数据的同步总是一个很大的挑战。我们需要强大而快速的脚本来进行索引。

Nirato:从前端的角度来看: 管理前端、后端和区块链之间的状态。不确定我们是否会解决这个问题,但我们一直在寻找方法来向用户表明NFT当前最准确状态。

卡片网格性能:卡片展示有gif,视频,图片,图片不加载,图片太大,图片太小,图片只在Chrome上加载不错等问题。我们最近通过更新我们的图片提供者和利用lazy loading等技术,在这方面取得了巨大的改进。

安全性:我们利用了很多第三方的API和服务,他们并不总是对安全问题有反应。他们在修复/支持问题上有自己的时间表,这不是我们所能控制的,对我们来说真的很令人沮丧(看看你的Trezor)。这是一场安全和功能之间永无止境的拉锯战。我们如何解决这个问题?我们尝试与任何其他愿意与我们沟通的开发团队进行接触。

5、各自的团队成员最引以为豪的后台和前台的技术功能是什么?

Shisui:对我来说,应该是系列报价功能。在NFT上增加流动性是一个非常令人兴奋的功能。系列报价功能大大增加了一个系列NFT的流动性。我像其他人也有不一样的答案!

JurassicPunk:对我来说,我对在行业内全面推动采用EIP-712签名感到相当高兴!

6、你们使用什么技术来索引NFT的数据,以及你们如何去处理失败的和一个系列NFT的API限制?

Hex:我们已经用 Java 建立了自己的索引器,通过解析区块和ERC721/ERC1155(也是市场)的相关事件,其中包括使用tokenURI()等标准解析其元数据;我们对每个转账事件有一个允许失败和重试策略。

关于限频,如果我们注意到它,我们会联系项目方,否则我们会在获取他们的元数据/图像时调整策略;我们也有自己的IPFS网关,这有助于防止这边的速率限制(arweave不久后也会上线)。

7、你知道在基于私钥的钱包里有很多黑客案例。你对与非私钥导向的钱包项目如argent合作有什么看法?

JurassicPunk:智能合约钱包在智能合约交易所方面是已经支持的,但没有在前端上实现。这是团队将考虑在未来支持的东西。

8、你的基础设施有多大的可扩展性,你能否在未来12个月内维持10倍的用户增长? 或100倍或1000倍?

Hex:我们使用第三方托管服务,允许几乎所有的扩展(成本是唯一的 '障碍'),所以我们对它很有信心;自从我们推出以来,我们已经能够维持高达6倍的日平均流量;所以我们对10倍很有信心,不确定1000倍,但我们将为此而努力,特别是在未来12个月。

我们在几周前聘请了一位SRE,这将有助于这方面的工作。

9、是否会有一个原生的铸造功能,还是Manifold会成为未来的解决方案?

JurassicPunk:是的,将来会有的。团队仍在讨论具体规格,但它可能会在多个产品迭代中发布。

10、你们是否会在获取历史和当前NFT数据方面开发一个API?

Hex:是的,就像NFT的 '历史活动 '一样;你将能够通过公共API查询任何系列或nft的所有信息,包括铸币/转让/报价/上架/取消上架/...;关于历史元数据,这是我们还没有考虑的,但如果有需求,我们也可能提供这个。

11、你是如何在开发过程的早期捕捉错误的?(单元测试?自动化测试?人工测试?错误报告?等等)

JurassicPunk:对于智能合约/Solidity部分,所有的合约都是经过全面测试的,包括在部署的合约上有95%以上的分支/功能覆盖。我们使用单元测试和场景测试,使用了多个框架,如Hardhat(与Waffle)和Forge(与DS-test)。我们还依赖安全工具,如Slither。

我们还与外部安全公司/个人合作,帮助审查 Solidity 代码。

Nirato:就前端而言,我们目前正在编写单元测试,并有一支手工测试人员的队伍。这还不够,这也是我们目前的一个痛点。我们肯定需要做得更好,并且正在积极寻找QA工程师(认识谁吗?欢迎积极推荐人才)。 寻找具有区块链/web3经验的QA工程师是一个挑战,我们正在尽力应对。我们所有人都同意1000%,我们需要尽快进行E2E和集成测试。

一个宝贵的资产是社区的测试人员(不是吹牛)。没有他们,我们就会有成千上万的错误。

12、Looksrare将来会不会像polygon或solana那样支持多链?或者一些第二层的解决方案,如stakware?

JurrasicPunk:是的,团队一直在调查对所有第二层解决方案的支持,但正如@Shisui(首席开发)所写,这取决于用户的需求。

另外,目前还不确定需求是来自于NFT桥接(例如将BAYC转移到Arbitrum,在L2上进行交易,还是来自于原生二层NFTs的交易费用更低,大家有更多的需求(或者两者都有!)。

目前,团队保持着最新的状态,并监控着L2上NFT空间的发展,包括与EVM兼容的第二层网络如Arbitrum/Optimistic和非EVM兼容的第二层(如Starkware)。

用户体验:在每个产品都尽量做到用户体验舒适

1、公共API什么时候可以面向大众?

Hex:公共API已经发布给第一批人,其中包括第三方和用户,以确保一切顺利;我们的目标是在本周或下周发布公共API。

2、WETH的复投功能是可选择的吗?如果我启用之后是否可以关闭?

JurassicPunk:自动复投功能(卖出WETH-->LOOKS)将是目前WETH/LOOKS质押合约上额外一层合约。用户可以根据自己的喜好,决定使用这两个合约中的任何一个。

3、你是否积极致力于改善前端性能?

Nirato:简短的回答......是的! 开发团队每天都会发布多个更新/功能/修复。团队试图把主要精力放在新功能/改进上,但仍有技术债务,我们分配了很大一部分时间来做这些努力。

4、我是你们的忠实粉丝,但前端让我的笔记本听起来像喷气机起飞。它也不是一个非常迅捷的体验。加载东西可能需要一段时间。

Nirato:我们对前端和它的速度感到非常自豪,我们希望每个用户都能体会到这一点(好吧,至少我们是这样努力的)。我们最近刚刚更新了我们的图片供应商,图片的加载速度有了明显的改善。我们在加载gif和视频方面也做了真正的改进,但对于手机用户和旧电脑来说,这仍然是一个挑战。这是一场持续的斗争,但稳定性和性能是首要任务。

我们一直在探索新的方法来减少延迟和瓶颈。

如果有其他的性能问题,请随时在我们的????│bug 频道发布问题,或者联系mod来处理更具体的问题。

团队建设:技术人员占团队多数,去中心化办公

1、前端工程师和后端工程师(API Focus)有多少招聘人数?工作交流需要语音会议吗? 还是只需要文件传输就好了?

Shisui:我们目前有3个前端,4个后端(包括DB),1个开发,1个solidity开发,和我。我们使用Discord作为我们的主要沟通工具(每天都会开会)。

2、开发团队的成员是如何沟通的?你们是在同一个办公室工作还是在家里工作?

Shisui:我们使用Discord作为我们的主要沟通工具。每个人都是远程工作,我们没有任何办公室,也没有计划设立办公室,因为我们不想被束缚在一个特定的国家。我们的成员现在分布在美国、欧洲和亚洲。去中心化是LooksRare的基因.

3、如果有紧急情况发生,LooksRare团队是如何应对的?是否有一个事件响应手册?

Shisui:我们有很多监测工具和几种不同的方式来联系对方,取决于关键程度。通常情况下,当有事情发生时,我们会在几分钟内赶到。我们在内部有一个专门的对话频道,在那里我们会对所有的事件进行事后总结。

Nirato: Gizmo 让我们都在传呼机上工作,通过手机上的勿扰设置,直接轰击我们。逃不掉的! 我们几乎在每个时区都有在线的人,这也是我们的优势。

其他:LOOKS代币空投的计算方式

1、大家好,我想知道你们是如何指定/决定代币的数量和代币空投的等级的?另外,资格是如何计算的(例如,基于OpenSeea的API?)

JurrasicPunk:空投等级和数量背后的策划者是Guts,我们的合伙创始人。他在这方面非常有经验,经过了很多轮严谨的计算得出现在的等级。

对于收集交易量,我们使用TheGraph协议的子图来收集OpenSea市场的链上数据。该子图对Wyvern协议的调用进行索引,并使用Uniswap来处理非ETH货币的交易额向ETH的转换。这是相当复杂的,因为我们必须为多种货币如MANA、GALA等建立整合。