Jacky Gu

《从FERC到FTO》- 关于FERC20 V3的几个问题回复

01 Aug 2023 Share to

https://mirror.xyz/jackygu.eth/05P7XNyBhWx1OCXoE7Y7GrmumrwsQ40AEfrpMfp_xtI

昨天,FERC20 V3版(https://v3.erc20.cash)第9天全功能内测完成,这是近两周来第一天没有发现任何新的bug,这回,真的离上线主网不远了。

原计划七月初上线的V3版,一直未能上线。今天写此文,回复社区关心的问题,并对一些前段日子无法确定的问题做确定性的回复:

1- 为什么V3版花了这么长时间?

在回答这个问题前,先发一张V3版的架构图:

V3版的FERC20已经从V1/V2版的免费铸币与发行工具发展成为一个较为复杂的系统。包括:

  • 1- 发币模块

  • 2- 铸造模块

  • 3- 白名单模块

  • 4- 分期释放模块

  • 5- Launchpad投票模块

  • 6- 社交分享模块

  • 7- 流动池管理模块 (稍后会有文章对上述模块做详细介绍)

上图中浅灰色部分是V1/V2中实现的,其他是V3版新增的。

在技术上,为降低各模块间的耦合度,V3优化了整体架构,合约目录结构见下图:

合约数量的增加不仅增加了工作量,而且产生了更为复杂的问题,即:各合约之间的协作复杂度成倍上升(这句话对于开发过复杂合约的程序猿来说肯定有同感)。复杂度导致了包括并不限于以下几个重要的Bug(目前都已修复):

  • 数据溢出风险

  • 流动池抽干风险

  • Refund流程堵死

  • 流动池添加流程堵死

  • 分期释放流程堵死

我是一个有很强的偏执执念的开发者,为追求系统的高鲁棒性,我喜欢把模块间的耦合度尽量降低。甚至为此宁可调整架构,也不太愿意采取修修补补的方式实现某项功能。

事实上,在过去一个月里,框架级别的推翻重来已经发生过两次。前一周,在各项测试近乎完美,只剩一个问题的情况下,为解决这唯一一个问题,不得已调整框架(之后github开源合约后,大家可以从commit记录中看到这次调整)。这相当于大楼已经封顶,却要炸掉重来。

不得不承认,这与一开始的架构设计欠考虑有关。开发过程中,有些来自于社区的建议发生在框架设计之后,并且这些建议(比如分期释放,Launchpad投票等)对平台的完整性是非常重要的。所以,我认为,花这些精力和时间做调整是值得的。

很多朋友会想,既然无法面面俱到的考虑周全,为什么不能先上线,再慢慢迭代呢?因为区块链的最大特点是不可篡改,链上智能合约一旦部署,除了极个别参数之外,程序逻辑是无法更改的。如果在上线后,发现bug,只能推翻重来,与开发web2产品不同,智能合约没有渐进式迭代的机会的。另外,某些可以迭代升级的web3项目,也许用了proxy可升级合约技术,但从代码信任和安全角度考虑,我拒绝使用这种可升级合约。

所以,要实现上述事项,必须要在架构设计上尽可能的缜密,除此之外,测试非常重要。7月份,有近一半时间在测试。也许社区很多小伙伴会质疑我到底在搞啥,整天说测试,有屁用,是不是在织“皇帝的新装”?我这里用大多数人都听得懂的一句话作为回复:测试是为了防止币价归零的最重要的工作。

7月中旬,很多热心的$ferc持有人参与了V3版的第三轮测试,非常感谢社区。但大多数参与测试的非技术小伙伴更多关心的是UI和体验方面的前端问题(这些问题在上线后可以优化),并没有发现合约上的重要Bug。所以,三测过后,我找了几个技术人员参与了过去两周的内部测试。两周以来,我们几乎每天都会发现一两个合约bug,我连夜改后第二天继续测,直到昨天第一次没有发现新bug。

以上是为什么V3版花了这么长时间开发与测试的原因。尽管如此,我仍旧担心有些问题尚未被测出,所以,本周会安排两天做有奖社区测试活动,奖励给那些发现业务逻辑bug或合约bug的朋友,奖金从之前社区捐赠给我的$ferc中支出。与之前的社区三测不同,这轮公测会有组织的进行,由参与前期测试的技术人员带领大家系统的测试。

如无大的bug被发现,8月4-5日将会上线以太坊及部分L2链。

除了上述原因之外,还有些个人的因素也对进度产生了一定影响。如:在经历了三个月的靶向和化疗后,7月中旬,医院对我做了一次较为全面的中期评估,耗时近一周,评估过后,立即又进行了第四次治疗。治疗结束后,家里小女患上了新冠二阳,作为极易感染人群,我有几天不得已住到亲戚家,这些都对进度产生了影响。

尽管如此,过去一个月里,正常情况下,我始终保持早上五点起床开工的习惯,并保持每天10+小时以上的工作时间,尽全力赶工。我真的已经用了洪荒之力。

2- V3版解决什么问题?通过什么方式实现?

FERC20 V3版是在社区推动下开发的,很多功能在一开始并没有想到,而是在之后的社区交流中逐渐成熟的。六月份,我曾经说过“V3版已经在我手上,暂缓不发”,但至今却迟迟未推出,原因在于一个多月前我脑子里的V3版和社区需要的V3版(即目前的版本)早已大相径庭。

我一直在想,用什么语言来描述V3版,直到昨天夜里,脑子里跳出一句话,不知当否:

V3是优秀项目的摇篮
“老三防”

为了理解V3版,我们先来看看V1/V2版的特点。我把这些特点归纳为三个字:老三防。即:

  • 防不公平筹码价格

  • 防脚本“撸毛”

  • 防不公平筹码分布

“新三防”

V3版本因为具备了融资功能,相应的,增加了“新三防”,即:

  • 防洗钱

  • 防证券化

  • 防虚假宣传

关于“新三防”,也许有些朋友不理解:“这三点和我炒币有毛关系啊?”。事实上,我咨询了多位香港,新加坡和美国等普通法国家和地区的专业律师,得到较为统一的建议是:作为web3项目方,在主观上无作恶企图的情况下,往往会遇到上述几个可能涉刑事犯罪的风险。所以,V3版采取了一系列措施,在发币环节帮助项目方尽量规避这些日后可能带来的麻烦。

“三保障”

除了新三防之外,还有三个保障:

  • 保障基础流动性

  • 保障项目质量

  • 保障去中心化

这“三保障”的目的是防止主观上有作恶企图的项目方来平台发币。

为什么是“摇篮”?

为什么是摇篮呢?因为我个人希望未来使用这个平台的项目方估值低一点,社区化味道浓一点。说得通俗点,对那些吃百家饭长大,并服务于百家的项目方,FERC V3是最好的舞台之一。而那些有强大的包装能力,背景优秀且资金雄厚的项目,并不适合在这个摇篮里生长。

解决方案

我用下图来说明实现上述特点的具体方案:

以上方案都已经实现,欢迎打开 https://v3.erc20.cash 测试体验。

3- V3版上线后你有什么计划?

对于我个人而言,在V3上线后,如果运行了几天没什么大问题的话,会将某些合约的治理权交给ferc社区,并将某些合约的治理权彻底放弃。我一直认为,一个无控制的Dapp,才是最安全,最公平,最具生命力的。这个观点在上周美国众议员通过的#1747号法案中得到了验证,这也许会成为一个趋势。

之后,我在这件事情上的重点将转到发币的合规上,资助、培训与孵化优秀项目,让更多有想法的朋友通过这个平台实现梦想。

当然,我会花更多时间去完成计划中的很多事情,比如:旅游+养病,做一个公平发射NFT的平台,以及Chatpuppy的技术与运营工作。

4- 为什么将IFO调整为FTO?

V3版的核心是发币融资,可以说其他模块都是围绕着这个核心,让发币融资这件事更公平,更透明。所以之前我将它命名为:Initial Fair Offering,即IFO。

但前几天在某群讨论RWA,STO时,一位颇有认知的朋友针对STO问题提出了他的看法,他认为未来币圈应该尽量去掉Security这个绊脚石,以求更通畅的发展通道,即XTO。受其启发,遂将名字改为:Fair Token Offering,即FTO,中文:公平代币发行。

5- 感谢

感谢这一个多月以来很多提供帮助的朋友。包括ferc社区,cash社区,mferc社区的小伙伴们,以及Chatpuppy团队成员,还有很多智能合约技术方面的老朋友们。没有他们,光靠我一个人单打独斗,是完不成上述工作的。

感谢大家!!!

6- 尾声

我在写这篇文章的时候,有朋友转给我看了孙宇晨今天发的推特:

如果说我上面写的文字太过于啰嗦的话,那孙哥所说的“绝对安全的,不会rug,锁池子锁LP,开源,公平”这些词汇,正是对ferc V3的最精简的描述。