APT:Aptos合约开发者笔记:「高性能」标签尚待验证,安全性设计优于EVM公链

笔者是?Meson?团队的智能合约核心工程师,过去几个月一直在高强度的开发Aptos合约。最近两天,终于赶在Aptos主网上线之际,完成了Meson协议在Aptos上的开发,这个过程中还是有挺多感受的。社区的好友和同事就鼓励我把这些经历写下来,希望可以对其他对Aptos感兴趣的人,尤其是技术背景的,带来一些参考价值。

我之前是Web2程序员,技术栈偏向机器学习/Python/C++。上一轮牛市2021年初进入的Web3,不过在牛市结尾的时候才开始静下心来学合约开发,跟着教程学Solidity,做过几个demo合约。当时有个契机,就是封城被隔离在家,什么也做不了,一个多星期的时间没干别的,就仔细读了几篇一线项目的审计报告。读完以后,感觉自己对合约的理解直接升华了,就跟朋友说,以前看合约代码,觉得这不就是小学数学么?但是后来再看,看到的是一个个大坑,以及项目方小心翼翼在坑上面搭好的桥。其实这个过程在后续做Aptos合约上帮助非常大,毕竟很多安全思路是相通的。想想如果当时没有封城,我可能还在区块链的黑暗森林里裸奔。

今年七月,看到有文章介绍几个新L1公链后,就决定开始系统学习Rust/Move。这个过程就艰辛一些。当然,也可以调侃的说,学习Aptos只需要三步:学习Rust、学习Move、学习Aptos,过程和“把大象放进冰箱”一样简单。我是从学Rust的第一天就开始头大,每天抱着Rustbook反复看。到Move/Aptos问题就更多了,虽然Aptos基于Move,Move基于Rust,但这三者还是有很大不同,Aptos上有很多利用Move开发出的新框架,这些都得了解。而且,Rust->Move->Aptos这个过程,文档和参考资料指数级递减,我在八月刚开始看Aptos的时候更是如此,文档和教程可以说是少的可怜,万幸的是加入了一些开发者社区,里面的大佬帮我解决了挺多问题。当时还有一个很坑但同时也很搞笑的是,Move这个词太常见了,在Google上搜Move语言相关的问题,什么都搜不出来,反而经常搜出来HowtomovetoCanada。

Move语言的区块链状态图

大概到九月的时候,就开始正式上手写Meson合约了,先把协议的框架搭出来,然后逐步小心翼翼的往里面添加功能:给合约里转入token、锁仓token、设置token解锁条件、验证解锁、转出token给用户。折腾了一个多星期,终于把这个流程跑通了,然后兴奋的上了Devnet,准备用Pontem钱包测试。

然后,Disaster来了!其实了解Aptos的人应该已经发现了,那就是:Aptos的token,根本不是ERC20对应的fungibletoken,而是NFT!可以说,我折腾了一个星期,写了个NFT交易合约……但这东西根本不是我想要的。想想过去一周的熬夜奋战和掉的头发,瞬间觉得NFT卖那么贵也是有道理的,只可惜这些代码我是用不上了,所以欢迎想在Aptos上做NFT的联系我哈哈哈。

开发者社区的朋友如是说到

Aptos上对应ERC20的其实是coin。当时Aptos的文档还没现在这么完善,我下意识的就开始集成token,还奇怪为什么一个普通代币一定需要description这个属性……coin和token的集成方式也有挺大不同,后者用id就可以定位,前者则要用generictype,所以大部分代码都要重构。不过有了之前的经验,Aptos代码也熟练了很多。重新写好后,也顺利的完成了前端集成。虽然只是个MinimalViableContract,但是基本逻辑雏形已经有了,团队里也开始有前端工程师和其他智能合约开发者,一起参与进来协作。当时第一次看到了即将上线的希望,可以说充满了期待和成就感。

接下来我主要的任务就是解决Aptos特性带来的疑难杂症,其中最主要的就是Aptos用的签名算法ED25519和以太坊签名算法ECDSA是不同的。我要实现的协议基于HTLC/AtomicSwap机制,需要保证一个签名可以同时在两边进行验证。这个问题最终也是解决了,不过主要是技术问题,如果大家感兴趣,可以之后再单写一篇文章来讲这里面的技术细节。

Aptos主网上线前的最后一个月,感觉项目方之前的努力,也开始更多的被大家看到。这一个月里,Aptos在极速更新各种功能:命令行客户端的安装,从几个小时的复杂操作,优化到几行简单的指令;中间隔了一周没看浏览器,然后界面就变得好看了很多。不过需要继续补充的点也不少:文档虽然更新的很快,但还有非常多关键的东西需要补充。其实Aptos源码里提供了很多便捷的特性,但这些都没有写在文档里,于是就需要花大量的时间去读Aptos合约框架的源码,错过了就没有机会在别的地方学到,开发过程中很多坑也是这样产生的。

再说说主网上线:第一天宣布上线的时候感觉像是被催着上线的一样,没什么预兆,也没公布Tokenomic,只说了第二天要上几个大交易所,此时所有用户手里都没有APT,免不了一片骂声。不过这阵骂声随着第二天公布的Airdrop完全消失了,然后又是,几个在测试网刷到了空投的朋友们,开始把焦虑传给各个群聊。

作为一个开发者最大的感受就是,大家知道它是“高性能公链”,但是完全不知道更具体的了,也不太知道Move语言和Solidity相比有哪些新的特性,资产安全性做了哪些改善。但其实,这些才是公链长期发展的核心。没发空投的时候很多人宣传TPS最高是4,其实想想也能知道,Web3的新公链做到这个水平就不好意思宣传了;而TPS当时是4的原因是,大家都没有APT,所以主网上没有交易而已。测试网的TPS就远超这个数。至于是否真的更安全,还是需要时间来考量的,黑客出现之前大家永远不知道最严重的bug在哪里。不过我还是从Aptos的技术上看到了不少比EVM公链更好的安全性设计,具体也可以看看Jolestar老师的twitter:

最后想说,过去几个月,成功在Aptos上完成了一个完善的智能合约,并且即将上线主网,内心还是相当有成就感的。感谢这个过程中所有提供过帮助和宝贵建议的朋友们,虽然大部分从未谋面,我也只知道他们的头像多值钱,不过相信有这么一群人,Aptos的发展还是未来可期的。拭目以待吧!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

DOGEAPT:ZkSync 空投策略指南

L2@zksync即将部署,这是您需要了解的有关zkSync空投的所有信息。 TL;DR 1/空投是直接发送到符合某些要求的钱包的免费代币@optimismFND的空投非常成功,@arbitru.

[0:15ms0-4:280ms