OpenBuild Talk | Web2 到 Web3 开发你需要了解的通识

文摘   2024-09-22 20:07   江苏  

各位builder,欢迎来到OpenBuild Talk。

本期播客是OpenBuild在2023技术播客节中出品的Web3专辑的第一期,大家可以上Apple Podcasts、小宇宙、喜马拉雅同名的官网以及官方公众号关注整体活动,收听、订阅、转发其他友台或社区共创的内容,也可在Apple Podcasts、小宇宙、喜马拉雅上关注我们的节目。

本期播客链接:

https://www.xiaoyuzhoufm.com/episode/656c13298fb8b597a2249509
本期我们来聊一聊进入Web3开发,你需要了解哪些知识和经验;Web2和Web3开发有什么不一样。这期的嘉宾既有成功从Web2进入到Web3的OG们,也有深耕开发者教育的知名开发者。好,让我们正式开始,听听他们的心得!

本期嘉宾

Louis:Octopus Network Founder
jolestar:Rooch Network Founder
花果山大圣:前端工程师
知县:Account Labs Co-founder

Talk 回顾

主持人:
各位builder,我们本期的嘉宾呢,他们分别是来自章鱼网络的Louis老师、来自Rooch的jolestar老师以及来自Account Labs的知县老师,还有我们的花果山大圣,大圣老师。那现在就请我们的四位老师来简单的给我们的听众做一个自我介绍吧。首先让我们欢迎一下我们的大圣老师。

大圣老师:
hello,大家好,我是大圣,我其实Web3我是个新手,我是对前端比较熟悉,我有十年以上的前端的开发工程师经验,然后我Web3相关的经验是以前在火币曾经就职过,所以一直对Web3技术都是比较感兴趣的,并且呢也有深入研究过,然后最近一段时间或最近今年嘛,因为我的主要的精力放在教育上,做开发者的一些教育跟课程嘛,然后最近呢就准备,明年会准备自己再做一些或参与一些Web3的新项目。所以呢,今天来这个播客主要是跟各位大佬都学习一下。

主持人:
然后下一个请我们的Louis老师。

Louis老师:
hello,我是Louis,额那个,我在Web3稍微超过10年时间,就是13年的年初加入的,还挺吓人的,我在国外跟一些founder或者是一些研究员聊的时候,他们好像17、18年进来就算早了。我一说十年的话,都会吓他们一跳。但是在中国不太罕见,有时候还能碰到12年和那个11年进来的,但是加入早不代表就理解的深。我全职进这个Web3是18年,然后开始学这个相关的区块链技术,到做一个独立的研究者,到最后这个创业,现在是在做这个章鱼网络,章鱼网络是一个多链网络的一个基础设施项目,那么主网上线也有两年多时间了,对,大概是我的情况。

主持人:
好的下一位,欢迎我们的知县老师。

知县老师:
大家好,那个我是Account Labs的知县,之前是Unipass的创始人。后来呢,我们也是做了一个行业内罕见的这个行动啊,就是我们跟另一个项目合并啊,两个一块做项目,有个叫Unipass,做AA钱包,那个智能合约钱包,另一个叫Keystone做硬件钱包的。我们现在两家呢,merge完了叫Account Labs,我们的目标就是死磕这个Account这一层。所以说我们的目标就是做出一个能够让咱们说的什么Next Billion Users,这种蓄势也好,或者说我们的愿景也好,能够让他实现一个账户的这个支撑。那现在呢,我们的主要方向就是我们从To B换到To C方向,我们要实际的去打这个支付场景,就是stablecoin其实是真正最大的adoption。目前,我们希望能够把这个stablecoin的transfer payment做的更加好用,更加方便,比如不需要gas啊,然后比如说不需要考虑是什么币种、什么链,这是我们现在在做的事情。然后我本人呢,算是科班读了七年计算机,但是呢,没当过技术员,会简单写一点前端,这个后来得多跟大圣老师学习。然后呢,今天呢,我也是站在一个,就是懂点技术,但是呢,又怎么说呢,没有那么懂的这个角度呢,可能给大家一些产品经理这个视角的一些建议。好的,也跟其他的几位老师学习。

主持人:
那现在jolestar老师可以做一下简单的介绍给我们播客的小伙伴。

jolestar:
大家好,我是jolestar,然后我是从17年从云计算行业转到区块链,然后就一直在折腾不同的技术设施,然后现在正在做的项目叫Rooch,然后它是一个,我把它定义成一个智能合约的容器或者执行引擎。然后,我们希望用智能合约来塑造不同的应用场景和解决不同的问题,并且一个应用可以从中心化逐渐过渡到去中心化的一个工具,这是我们现在正在做的一个事情。然后我自己本身是一个开发者,然后我喜欢不同的这个编程语言的科普,还有尤其是现在这个正在用的这个move的智能合约的这样的一个布道。嗯,这是我的一个自我介绍吧。

主持人:
今天我们将共同探讨,从Web2到Web3开发的基本概念和区别,区块链技术开发智能合约去中心化应用,隐私和安全以及最后呢,我们会对进入Web3开发的开发者学习和求职,给出一定的建议。那首先呢,将我们聚焦于Web2到Web3开发的区别吧。Web2代表我们目前正广泛应用的网络模式,而Web3呢,则是去中心化网络的一种新兴模式,请各位老师可以分享一下Web3这个模式的核心的一些目标和理论。

jolestar:
我对这个问题的看法其实是这样的,就是说这个视角的话,它可以是分两个视角:一个视角就是说我们互联网应用从最开始诞生,我们大家如果是早期的互联网用户的话,其实感受到当时我们为了下载文件用P2P分享对吧,这样的应用,后来我们演变成Web2这样的模型,这个模式到底是一个正确的模式,还是它是一种临时的解决方案,这个其实有不同的观点的,但我现在的看法实际上是认为我们原来的传统以及Web2构建方式,实际上是一种为了快速的去获取用户而采取的临时的一种折中方案,而这种折中方案的目的是什么呢,就是说我们为了快速获取用户,我们要快速开发特性,快速的开发上线,我们把我们的数据库当作一个动态的、一个可变更的数据集,直接去操作它,然后我们直接去变更它,然后这样的话,我们以中心化的方式去委用托、担保这种方式取得用户的信任,然后让用户先到网上来,有网上的这个应用,有网上的服务可以提供。
然后现在到了Web3的时候了,Web3这种构建方式的区别在哪里呢,就是说我们期望我们整体的所有的交易都是可验证的、可重复回放的,这在Web2这种我们的传统架构方式上是不可能提供的。所以我觉得我们现在,尤其我们现在做的这个工具叫做Rooch工具,然后它提供那种能力是什么呢,就是跟Web2的区别是什么呢,我们都是用程序写出来的,但是首先呢,我们要保证我们的每一条交易都会记录在一个可公开检索的地方,我们现在叫做data availability的这样一个提供方,他可能是一个区块链或者a这个项目方可以直接修改的一个地方,我们把它叫做这样的地方就是你的日志。按照传统的比如说类似银行的这样的机构,你的这个日志是要严格的记录下来,以后为了对账使用,我们的应用需要提供这样的一条日志,然后这个日志的重新的执行的过程,我们可以通过回放得到一个结果,这个结果可以用来对账的,用来进行这个结算和对账的,而为了保证这个执行的确定性,我们需要一套智能合约语言,或者叫做这种类似新兴的语言来保证这个执行过程的确定性,就是现在智能合约扮演的角色。
我们把这个日志重新回放,然后的到一个确定性的一个状态级,我们这个状态级,我们生成一个这样的一个叫做merkle tree,就把他所有状态汇总起来得到一个哈希值,拿这个哈希值这样的类似于Git,我们大家都用,开发者我们都用代码去编写程序,然后代码托管到GitHub,GitHub会申请一个root,我们的所有的应用程序里的状态也需要实现这样的一个root,然后这个root运营干什么呢,我们不同的人把这个日志重新回放之后会得到同样的一个root,说明我们这个执行过程是正确的,否则你这个执行过程说明出现错误了,错误了要么你就是自己篡改结果了,要么就是这个程序有bug了,我们需要修复,这个是我们需要确定的。这样的话就得到了一个像是一个可验证的可回放的一个系统。其实,传统的这种分布式系统也是需要的,按照分布式系统的话,我们把日志同步到其他的一个另外一个系统重新执行,然后得到一个结果,其实是分布式的基础。这也是分布式系统从Web2到Web3的一个发展的结果,也是我们的这种审计和安全的需求,从Web2到Web3的发展的一个需求。这是我认为的它们之间的一个最大的差异点。

主持人:
jolestar老师提出了一个观念,就是目前的Web2,它其实是为了一个竞争流量的一个临时性的网络。而我们在Web3里面,它最重要最核心的概念,其实是它是可验证可信的。在未来我们的一些网络设施达到一定的能力之后,我们是需要这样一个,相比现在这个中心化网络更好的去中心化网络来去重新构建我们的网络世界,想听一下知县老师关于这方面的看法。

知县老师:
我其实站在一个就是编程的或者说写创作这个应用程序的一个架构的角度啊,讲讲我的看法,就是我觉得讲Web3也好,讲quitter也好,就是最大的区别就是这个公开透明,那这公开透明呢,主要体现在两部分,一部分是这个后端,一部分前端啊。咱把这个合约呢当做原来的后端比较好理解,这个合约的代码就是你写的一些后端逻辑,这个运行的平台呢就从一个服务器,就大家自己花钱开一个的这种服务器,变成了一个公共状态空间以及公共的虚拟机,大家可以理解为是有几百上千台这个机器一起跑的,大家都在跑一套逻辑,然后都承认一套数据的这么一个平台的运行。所以它跟咱们传统的这个后端的这个最大区别就是它的逻辑是公开的,就你能看到代码什么样,不是一个黑盒。不像你比如打游戏的时候这个SSR到底概率爆率什么样的,什么参数不知道。为什么大家说这个链上游戏好,因为这些参数它都要公开,它的这个比如说算法呀,它的这些哈系算法都是公开的,你就这叫trustless,就是你不需要信任,因为你能看到,它的这个逻辑是公开的。
第二个是它的运行是公开的,就它执行过程是公开的。那有一些它是需要在链上执行的,就是咱们常见的EVM,就是以太坊的以及以太坊系的虚拟机,大多数的这种count model的虚拟机,它都是这种这个在链上需要执行的,就它是要把代码在虚拟机里跑,然后最后跑出结果来,然后把结果写到这个公开的空间。还有一种呢,像比特币还有这个CK币这种比较古典的模型,它其实是验证型的,就是说它的结果都是在链下就写好了的,链上的这个虚拟机只负责检验这个结果对不对。这个特别像什么呢,如果大家刷过这种面试技考题的话,就是说你写的代码呢,只是做一个verification,它告诉你的这个逻辑以及那一些测试输入和测试输出,那这个输入输出其实提前都决定好了,你需要的是写一套逻辑能够让输入都能够推出那个输出来,那你如果能过这些测试呢,说明你这个逻辑是对的。这就是BTC和CK币这样的区块链,它的智能合约的模型,这是两种模型。
大家可以看到,这两种模型都是,它的特点就是公开透明,逻辑是确定的,然后运行结果也是确定,这就是所谓的共识。大家不用再去考虑这个东西是不是它会这么出来,以及它一旦看到链有这个结果出现的时候,你也不用再去怀疑是不是按照那个逻辑走的,这就是共识的力量。拓展一下的话,就像BTC的铭文这些是没有共识的,这个大家感兴趣的话可以有机会再交流。然后这个前端呢,这个就好理解了,前端就是正常的前端,只不过这个因为有一个公开的后端,你要让你的整个这个APP是透明的,那你的前端也要开源。就你的前端逻辑都是确定的,这样我才能知道什么,你前端拼交易没有拼错,比如说我现在在你这claim一些ST,这个交易,你界面上画的是你送我一个东西,实际你执行的是我给你转1万块钱,这个我相当于被骗了吗,签了名钱就转给你了。
所以说前端是一定要开源,大家能看到每个交易是怎么组装的,你有没有偷读我的东西或者偷换我的这个目标地址,这些东西都要公开,所以说我觉得最大的这个,就是设计模式上的区别就是一个公开透明,前端后端都是要本着这个的思路去思考问题。然后这个公开透明还带来一点就是你没有办法去干涉它,所以之前的一种编程模型就想着想着自己,我在这地方做个什么限制然后让它比如说不会被刷或者什么这种思路,在这个去中心化化编程里面就比较难实现的。你就先要把自己忘掉,没有吾,有的只是一个合约逻辑和一个跟合约交货的前端代码,这是一个就在我看来比较有意思的区别。

jolestar:
这可能就是所谓产品和协议的区别,你用Web2提供了一个产品或者提供了一种互联网服务。Web 3也是说你定义一个协议,这个这个协议定义出来之后,放到网络上之后,你理论上来说你也不能随便搞了,那么这个协议第一个人们通过这个协议怎么交互,它可能是一种交易,也可能是一种协作。你通过这个交易之后大家能够各得其所,达到自己的目的,这是现在就是这个。这个概念其实好多这个开发者到了Web3这边都转不过弯来,就是从产品思维到这个协议思维,我也说从Web2的这个从业者来说说Web3,首先呢,我们说的这个Web3说是下一代互联网,这个其实是Crypto圈对下一代互联网那个场向,那么下一代互联网是不是我们现在说的Web3,不知道。
或者说还因为还有一些人,比如说像这个互联网的这个发明人,他们也对下一代互联网也有畅想,跟我们现在说的Web3不是一回事,所以它是一个设想,还不是一个现实。那它来自Crypto这个圈子,那么即便在Crypto圈子,对于什么是Web3或者说要不要搞Web3也是有很大争议的,其实很多Crypto的OG是不承认Web3的,而他们脑子里面还只有这个Crypto或者是这个比特币,所以这东西大家不要把它当成一个现实来看。那么为什么会出现这个状况呢,这个Web3发源于Crypto,它又怎么走到现在,这个故事说来话长,然后现在的从业者有几十万人,然后从不同的这个来历的、不同的思维的、不同的意志形态的人到这个圈子里面,其实都不一样。
然后那这个东西我只能简单说一说,一开始呢,这个Crypto发源于密码朋克,密码朋克是要保护在这互联网时代或者电子化的时代保护用户隐私,那么用户也是有很多种技术,但是密码朋克最孜孜以求的,一个一直没解决的问题就是匿名的电子现金,这个问题后来被比特币给解决了,所以产生了这个Crypto。那么后面有一些这个Crypto从业者就说当然比特币后面就有个所谓的什么更快的比特币、更便宜的比特币、更什么这个链上数据不可变的比特币等等的这种发展,但是更最革命的想法来自于以太坊,就是说在这样的一个区块链上面,一个去中心化的网络里面没有leader的这么样一个网络里面可以达成共识,那我们可以对这个一个比特币或者说一个要UTSO属于谁达成共识,我们可以试图做一个更复杂的状态机达成共识,而且这个状态机是可编程的,这个以太坊这种观点,那么从以太坊的这个产生之后,以太坊的这个Co-founder,Gavin Wood提出了我们现在说的这个Web3的最大的概念,也就是说那这样的一个网络,它不光是可以大家点对点的去发现今天不需要银行或者央行的干预,那我们是不是可以在这网络上面做各种各样的协作,因为这网络本身可以编程的,你可以把各种各样的协作规则放在区块链网络上,这样的话,大家就可以不通过这个大的机构或者是国家的协调或者他们许可,就可以直接去协作。
那么后来再进一步是说那么这样的协作,现在的互联网其实大家都在协作,那现在的协作是怎么协调的呢,是通过这个互联网平台协调通过滴滴、要通过淘宝、通过这个Google这些平台型的经济体来协调的。那么Web3的概念就变成了说我们可不可以去用这个区块链做出协议,这个协议不是属于某一个公司的,它是所谓去中心化的,由一个社区所有,用这个协议来代替Web2.0的平台来去让大家参与这种协作,比如说你可以打车,可以b To c的电子商务.......就理论上来说Web2的这些平台经理都可以被协议来取代,那么这个时候他才有资格变成说下一代的互联网,这是可能是一步一步的Web3的半年的发展。但是理想很丰满的,现实很骨感,我们现在做了很多很多这种协议,但是真正被证明了有人用的协议,这个用户场景或者说use case不多,可能现在能够被证明的就是价值存储,比特币然后这个资产的这个投资或者投机,或者就是以太坊这一类的交易类的,然后呢有这个支付,主要人现在是被稳定币给人玩了这个use case。
这三个都当然也都很重要,但你说是不是这好像跟Web2.0和Web3.0不太搭界。那么这时候大家就在做不同工作,有的人认为是说因为主流用户没有那么大的动力来进来,所以我们得创造这个更大的这种效用,有推力来吸引大家进来,也有人认为说你这个不行,用户门槛太高,你得把这个使用的阻力降下来,你看你这个区块链又贵又慢,然后用户体验又不好,所以我们要扩容,然后要讲扩容了之后的费用,但是这样将来能够要改造这个钱包,要改造交互流程,就比如说知县他们做的,这其实是降低用户门槛,希望这个主流的这个Web2的用户能接受能进Web3的这个世界吧,所以大家都在做这个工作。但是目前这个工作一步一步的发展,什么时候能够出现说在那三类use case之外的这个更有意义的use case,甚至说一部分Web2.0的这个主流的商业能够迁到这边来,还不知道,也希望这个能在未来的几年内发生吧。

大圣老师:
因为对Web3的理解,它的公开透明、它的权益证明,刚才几位老师都说的很详细了,我就从我自己的视角或者我周围这种擅长做教育的视角来看。因为第一点就是我觉得加密货币Web2到Web3其实对开发者收益来说是一个比较明显的提升。那在Web2这个领域里面,其实我们写的代码本质上来说还是老板拿着去售卖,就是我们对代码其实也是没有权益的。我们写了代码,然后老板拿着代码去做业务,去做推广,然后最终赚到一些钱,给我们发工资。然后Web3的话,代码本身可能就会产生一些收益,这个我觉得是对于很多现在想学Web3的程序员越来越多,开发者越来越多,我觉得是有这方面的一些因素,这方面比较成功的应该就是v神,因为中本聪我们也不知道是谁。
最成功的就是v神了,他不需要借助太多的别的像我们传统Web2这种公司的这种模式的变化,他只是单纯的这个代码层面做了很多的创新,然后就吸引了大量的开发者加入,然后最终就形成了一套比较稳定的一个金融的体系。而他自己其实也不需要去做商务或者是做别的事情,他就通过他的代码、通过以太坊就可以稳定的获得一个收益,这个我觉得是对开发者比较有优势。
然后还有一个我觉得Web3对Web2的优势,除了我们刚才都说的这些,就是算法上的一些优势之外,我觉得对这个工作形式其实也是有很大冲击的,就我个人的理解,因为我现在对远程工作的研究会多一点。由于这个Web3的这个行业本身,就是它的整个行业模式都是讲究分布式或者讲究点对点,那所以拿上班来说也是有大量的公司会优先选择这种remote的方式来工作。然后现在很多我周围的开发者,他对Web3感兴趣,其实有一个很重要的原因就是因为这个行业远程的工作会比较多一点,然后相对来说,尤其是我是做前端的嘛,前端在Web2或Web3这两个行业来说,它的变化并没有那么大。本质上我们还是在前端去做页面,那这种开发模式的巨大的更新就会吸引大量Web2的开发者的加入,这是我个人的感受。

主持人:
非常感谢四位老师刚才的分享,让我们不仅知道了Web 3是如何从加密的现金交换再到后面一个在网络上去写合约,再到我们更多的用力,这样一个Web3的发展路径,还给我们去分享的几点Web3核心的一个目标,以及目前来说Web3对开发者很有吸引的两个点,一个就是开发者的收益牢牢掌握在自己的代码手中,还有说我们一个分布式的远程办公的体系,都是我们想要去对Web3有一个初步了解的一些很重要的点。刚才我们有一个词反复出现,那就是说我们这个智能合约。这区块链作为一个创新技术,那各位老师如何看待在区块链上去构建智能合约来去开发我们应用的一些优势和挑战。然后智能合约这个概念是如何去应用在我们这个Web 3的领域。

jolestar:
其实挺早时候,大家在争论这个智能合约这个名字的问题,就是说你这个东西就是一段代码,你怎么叫智能对吧,你得配得上智能这个词。这个其实大家也争论了很久,就是说这个也是一个翻译的问题,它就是smart,smart到底是翻译成智能还是因为中文里你这个智能其实代表两种意思,inteligence也是智能,它有时候就会有这个混淆。就是所以它现在智能合约,这个智能手机类似这种语义上的来表达智能,就是说它可以做更多的事情或者表达更多的可定制的这个特性,我们就把它称为这个,就像现在的手机比以前的这个,所以我觉得没必要说争论这一点。但是从智能合约对开发者的这个影响和变革来说,我觉得意义的最大的起点在于,以前的话,我们的一个编程语言类所经营的所有的特性,其实它的影响都是非常小的,我以前举过一个例子,就是比如说我们一个function,我们的一个方法定义成public或者private,或者是我不应该是public的,我们定义成public了有什么影响呢,影响就是你后面兼容性,你这个东西被别人使用了,你这个兼容性的升级有影响,你这个代码写的不优雅,就这一点。其实它并没有非常大的坏处,因为我们的系统都是隔裂的。
但是在区块链的智能合约领域,你一个private方法定义成public了,你就代表着你可以被别人调用了,那你代表着就有这个安全隐患了,所以你的代码的价值会变得不一样了。就说我们以前的编程语言所能定义的这个边界,以前我们的边界,程序的边界是由这个机构所定义的,就说我这个接口对外开不开放,可能我们靠审核机制,说我这个我允许你接入,我就给你审核一下,审核人员审核一下我接入,不允许你介入不让你调用了。但是智能合约大家都塞在一个这个执行引擎里了,我是否能允许对外调用是我开发者经营的,这个方法是否是public都是开发者来经营的。这样无形中就是说你开发者的整体的这个影响,还有这个是编程语言的影响是变大了。你以前组织的边界墙是由组织经营的,现在你这个边界墙是由开发者的代码来经营的,进一步的我就要说到这个move语言的这种更进了一步,就是对整个这个边界墙的这个拆解,我们不断的在拆解这个组织的这个墙,然后让由组织原来这种人肉定义的这个组织的墙变成由代码定义的这种规则,然后我们代码里面经营的就是说我们的一种资产的类型,我们这种类型能不能被复制,能不能被copy。
以前我们的一个strike定义能不能被克隆,它有什么坏处呢?不能被克隆和有克隆没什么坏处,这个浪费点内存或者之类的,但是呢你如果定义成资产,你如果能克隆,那你就是一个安全隐患,你不能克隆说明是一个稀有的资产。我们的程序在一步一步的,进一步的去用程序在经营整体的一个经济的资产的这种规则,这点上我认为是智能合约给开发者和程序员带来的最大的一种变化和不一样的地方,这是我的一个表达吧。

主持人:
好的,听一下其他三位老师对这个问题的看法。

Louis老师:
智能合约就是应用层的协议,它部署到这个区块链上之后是作为这个区块链的一部分,整体的协议的一部分来去参与这共事过程了,这跟传统软件最大的这个不一样是在于它的这个Email ability就不变性,当然你现在是可以通过一些work around的方式去给智能合约做升级,但是它本身这个因为它是公开的、可验证的、公平的,那如果能随便升级的话,那它这个公平性就就没有依据了,所以这个先认为它是不可变的、不可升级的。这个其实我在刚进入这行业的时候,我看到这个字的时候我吓一跳,就是说这个软件上去之后不能改,因为我其实是从传统IT、企业IT到这个Crypto这个圈子,不是从互联网过来的,因为企业IT,我们这个软件是从多大的一个规模,然后用到它的这个,比如说开发这个东西的组织,它的这个过程能力到一个什么程度,你大概是可以推算一个它,比如说一个10万行的软件上线之后还有多少个bug,它有一个中位数的一个期望值,然后你如果积累的数据全的话,你可以根据这个组织的一些这个经验数据对它进行修正,但是这个东西永远都不是零,就比如说一个10万行的软件上线之后,你可以预期它还有200个defects,这很正常。
当然你说我是不是可以通过加强它的这个过程,让它变成20个defects,是可以的,但是你降了10倍的defects,可能你的整个成本要增加好几倍,那有可能甚至是十倍,就越往下就越难,但是没有说你这个软件不能有defects,你上去之后一个小的bug就让你这个企业整个破产,我们没有找到这么mission critical的系统,也许军事上、什么航空航天行业才有这种要求。智能合约,它一般都比较小,规模比这个传统的这个IT或者互联网的规模要小的很多,原来一开始几百行的协议这很常见,现在这个正常的协议也就是一两千行,就是没有那么多。咱们说这个一般的成员每个工作日平均,如果是高级语言的话,是能产生100-200行的高质量代码,那你想想说,如果团队有俩人的话,1,000行代码,按照道理来说,一个协议就是一周的时间就能开发出来。
但是区块链的这个智能合约的开发通常都是说要几个月,而且可能还不止两个人,可能还要三个人、四个人,那为什么是这样,就是因为他对这个质量要求非常高,你要考虑的非常全,而且不光是说,你要是一个开发经验很丰富的开发者而且你要懂区块链的这个底层技术,你才能理解为什么这样做,然后你要关注这些智能合约的开发实践,这样的话,别人犯的错你才不会犯,你还要关注这些openzeppelin这些代码库的发展,然后你还要跟这个审计公司打交道。企业软件开发或者我所了解到的这个Web2的软件开发,这个实践是很不一样的,而且普遍大家真正这个成型的项目,就开发智能合约的人都是高手,你不要想着说你做过两年三年的后端开发,你想转智能合约,你来了可以学,但是反正你到我这来,我不会让你做这种科研开发的,你就先敲敲边鼓,等过几年真搞明白了再上手,这个东西对人的要求很高的。

主持人:
关于智能合约技术,知县老师有要聊分享的观点吗?

知县老师:
我还是站在这个讲编程的这个思想,或者说方便大家理解智能合约到底是个啥,就是你写台词的时候要干什么用是吧,那我就举两个例子,一个就是咱们经常听的叫TOKEN是吧,就或者说代币,这个在以太坊的标准,ERC20最常见的常用的一个代理标准,它虽然不好,但是大家也都知道,往往流行的不是最好的那个,比如说Java,这个整个后端现在java还是占绝对主流的啊,没办法标准在这用的多,那Louis老师说的ERC20这个合约模板,openzeppelin发出来经过这么多年,你已经不用担心它的安全性问题了,这个其实就是就智能合约来说一个非常要命的点,就你合约写的你觉得再好,但是没有经历过时间的检验,谁也不敢100%保证它不出问题,现在能经历过检验的也就那么几个,还有safe上面放了400亿美金,这么多年没有人能crack,那就说明它的合约是安全,基本就这样。
然后说回来呢,就这个TOKEN它这个合约是干嘛的,它是一个最简单的合约,它就是在记账,大家理解的,就比如说我有这个100个咱们就叫USDT吧,最常见的这个币,我有100个USDT,你有100个USDT,然后我给你转50个,我就变成了50,你就变成了150,非常简单的逻辑,那这个的运行方式呢,至少在EVM上,它的运行方式跟我们传统中除了用钱包给你付钱是不一样的,我们钱包给你付钱,这个50块钱切切实实的从我的钱包里来到你的钱包里,这个实物的一个交割,从我的钱包到你的钱包。
那在那个银行里或者说在中心化系统里,它也确实是在数据库里面,这个从我这个账户下面,比如说我账户关联的数据里面改了,从你那边上户的关联数据改了,当然就有可能是这么设计的,这个行业是move语言应该都是这么设计的,move系的,那就有resource的概念。但是在ERC20这个里面,它是一张大表,你可以认为所有拥有USDT的人,它都是记在一张表里的一个账单,这个地址拥有100个USDT,那个地址拥有100,这是属性,我suppose大家都是技术人员,大家都知道是这个面向对象,这个class里面有个属性,属性就是数据,那么我刚才的transfer就是一个方法,那我调用方法来改这个数据,那transfer from这个地址to那个地址,然后来怎么验证有没有权利呢,这就到了Crypto,就是密码去验签,验签通过了确定这个确实这个人签的名,他授权了这笔交易,那么这个数据就可以改,改完之后,所有节点都按这个改了一遍,产生了共识,这就是这个一笔链上转让的过程。
大家可以看到这个智能合约在里面,它起的作用,其实有点call back我之前说的Crypto开发特点公开透明,它的逻辑是不确定的,它所做的就是从from这个地方减掉一定数,然后从to里面加一定数,我代码是就是这么写的。那实际上,我是不是还可以叫做收个税,我设定你每转一次账我要抽走10%,那我就在transfer函数里面写个逻辑就行了,就把from这个地址扣掉50,那to地址收到45,中间有个10%扣到别的地方或者消毁掉了。这是不是可以的?这是可以的,就是智能合约它的灵活性,也就是说大家在这个一个最基本的TOKEN上面你其实都可以做出好多好多玩法,但这也带来很多很多的风险,大家就说一个TOKEN它有可能是一个有很多条件的,比如说低于1,000美金你可以转,高于1,000美金你转不了了,就这种坑都有,这都是后话,但是呢大家可以感受到智能合约它的这个力量,它写完了之后,它放在上面公开运行,大家看到这个逻辑,我就真的能够把这个东西当作钱。这不光是我们,整个这个比如说USDC是纽约金融局背书的,就是政府也承认这个东西确确实实,它是有货币属性,它可以用。第二个我想举的合约的例子,就是你可以做一些金融操作,比如说咱们常见的借贷,抵押借贷。
那你有这个USDT USDC是吧,你有一万个,你想通过这个东西呢,比如说我要借一些其他的币出来,我要借一些以太坊出来,我不想去买,因为觉得可能有风险,我只是借他出来的参加个活动,可能用一个星期我就还回来了,咱们举这么个场景。那传统的我如果,比如说我现在手里有钱我想跟你借个东西,我是不是需要做很多事情,我又不能把钱直接给你,给你了你不还我怎么办,那我就需要把钱存到银行里面,然后再找人去公证我确实存钱了,而且一周之后如果钱还不回来,那这笔钱就归谁,就这样的一个逻辑可能都需要律师的介入,需要法律的介入,如果一旦这个出了争执还需要强制执行,在现实生活中则需要一系列的这种非常复杂的,大家可以理解为这都是成本,咱们叫摩擦特别高。
但是在Crypto的世界里呢,你只需要用智能合约写我放入的抵押品叫做USDT,它的价格,比如有一个咱们叫预言机的东西,你可以直接把它喂上来,它就是一美金。那么呢我设定一个抵押率,比如说当我借的东西的价格接近我的抵押品的时候,我就可以触发一个清算规则,这样大家不会丢钱嘛,比如我借的东西价格已经到了8,000,8500了,那这个时候,我就有权利,任何人都有权利把这1万拿走,然后买到这个8,500这么多的这个以太回来,相当于我不能让借钱的人受损,那就这么个意思,整个这些逻辑不需要任何法律与任何摩擦,就是在口诀里面把这个逻辑写死,就是一旦到这个权限,谁都可以去清算。
那这个你没有拿提供足够的这个还款的,你清算的人也拿不走这个钱,这些都是可以让这个整个效率的运转非常快速的,刚才这些所有操作都可以在链上用一笔交易的形式,一个事物的形式把这笔操作做完,这样的话就借款的人不用担心,这个需要受很大的审查,然后提供这个资金的人,提供资产的人也不用担心自己的钱收不回来,也不用担心到期之后,比如说一些确定的条件不会被触发。这其实就极大的降低了大家互相因为对方可能会违约而带来的额外的成本,这是我理解的智能合约,它的作用以及你如果写的话,它其实是承担的什么职责,这也就call back刚才老师讲的智能合约这个东西非常重要,非常关键。你像这种逻辑一旦写出漏洞了,这个行业里面丢钱都是经常,一丢上千万上亿美金,都是这种情况。

主持人:
可以看到,就是区块链加智能合约的这个模式让很多现实中很复杂的,比如说借贷能在网络上以低成本的的方式去进行,降低参与这些行为的成本,也就是说我们代码是更有它的价值,所以说我们代码在开发过程中很重要,需要我们的合约工程师有很好的开发经验以及对我们整个区块链的理解。那在我们Web3开发Dapp的时候,我们和传统的开发应用,它会有哪些需要注意的问题?

知县老师:
我个人感觉区别还是没有那么大,因为我自己还是把它当前后端模型在思考,当然我们可能说你可以有前端后端合约三部分,比如后端,它是做一些那个比如说索引、缓存、处理或者能让前端很多数据不用去链上查,有些就无关紧要的数据可以用缓存来做,这是这个可能后端出现的这个场景吧,但是在我看来比较原汁原味的,咱们说DAPP就是一个开源的前端加上一个合约,前端和合约直接交互,比如你swap这种协议跟这个它自己的官方前端以及各种各样的其实非官方的前端,只要是能够跟它这个公开的这个合约接口进行交互的,都可以去操作,大概是这么一种感觉吧。所以说在这个层面上,我觉得就架构上区别没那么大,就刚才讲的这个开放,公开透明,这个在写代码的时候需要注意,就是你别这个地方写个trick,或者本来这个地方有很多前端代码,其实你看到比如他有个很大的数字啊,每秒钟增加多少用户,那个代码,他就在前面自己写了个随机数,每隔一秒往上加一加,就这种事情肯定是不能写的,就这个在链上也好,在前端也好,因为都是要开源的,所以你首先代码质量比较高,代码质量太差,大家一看这个就丢人。
一个是丢人,一个是不相信,这个代码质量我不敢用,就是变量名全是ABCDE这种可能不太行,然后包括注释啊什么的。比如说因为你一开始就要奔着把它公开出去来做,所以说你就要一开始就设计的比较好,然后写的比较干净整洁。然后其他的,我觉得真像刚刚我讲的借贷这个模型,就是你后端或者说合约上面你定好了逻辑,DRP、清算率这些东西都定好,那前端就是去交互,我可以pin一笔交易,把这个钱打进去,这其实就跟我们后端调接口是一样的。其实这个接口的一个文档,你知道你调这个deposit,你往里头放钱,你需要查哪些参数,然后你需要设定哪些东西,然后一笔交易上去了,就是所谓上链就你可以写到数据库里了,那这个东西就放在那了,它就生效了,等到比如这个价格涨上去了,别人可以清算了,那这个前端还需要再提供一个能力,别人可以pin一笔清算交易,符合这个合约接口需求的。如果他pin了一些不符合的交易,你就相应的有报错,给用户一些提示。
其实就听上去没有什么太大的区别的,这就是思路上,我感觉跟其实普通咱们做这个互联网产品没有太大区别,只不过是刚才讲了一些代码它的意义,它意味着什么,比如你不可能你出了bug马上这个一个热更新瞬间修复,这不可能的,合约你每次更新之前,你至少比如要经过审计、经过甚至这个bounty,然后还要跟社区充分沟通,我要升级了,然后再甚至再给一个升级的冷静期,我这个代码这个多长时间,7天之后才会生效,在这之前大家可以去看这个代码,如果觉得有问题赶紧跑,就是说它的更新呢没有这个互联网这么快,没有迭代那么快的这种情况。
前端当然可以了,后端或者合约端是不行的,所以你写这个东西就是比较慎重,大概就是这个感觉吧。你就可以理解为你做了个APP,前端你随便,后端的话这个CTO他一个月才给你merge一次代码的权限,而且一旦merge出问题可能会造成很大的损失,就这种感觉。而且你merge的代码要全世界公开,大家都能看到。
前面两位老师说的比较严肃,就是说你写错代码了可能导致会丢钱,然后你这个升级要这么复杂可能会吓退这个开发者,这样我进来之后可能还写不了代码,我可能还得打点杂是吧,打几年杂才能写代码。其实我想打消大家这个疑虑,就是说如果你写的这个应用是要把大家已有的资产充进来,然后你帮他托管,那这个负责的安全风险是非常大的对吧,你相当于要开一个银行,就像在Defi所干的事情。但是,假如你想用智能合约做一个新的应用,你上面的所有的资产都是以这个应用是否有价值为前提,就是你应用里有个积分对吧,你这个游戏里有一个游戏币,做了个区块链游戏,游戏币是否有价值取决于这个游戏好不好玩,那这个时候你所承担的责任和这个风险其实是不会比你这个传统的Web2游戏要更大,因为你为了这个游戏更好玩,你去升级或者去做一些这种变更,这个事情是可接受的,大家需要区分出来,就是我给Web2的开发者说这个智能合约的开发的体验的话,大体上把它比作一个云函数,就说我们现在的这个云服务提供这种云函数,你可以把代码直接放上去托管,然后你不用关心服务器在哪里,然后只要一个云函数。智能合约做的事情就是让这个云函数的更简单。
就是比现在的所有的云服务请求函数更好使,因为它托管这个用的状态,就是在线的云函数,最难的问题在那个状态很难处理,它没有通过虚拟机的方式托管状态。我希望用这种方式降低开发者的这个顾虑,说我可以用智能合约去做任何一个新的一个东西,做一个游戏、做一个博客、做一个论坛,做一个新的去中心化的任何一个应用。然后我的这个开发速度更快,然后我的这个应用的托管运行成本更低,这样的一种角度去切入。
所以前面的这个顾虑就是建立在我前面的这两个前提上,如果你的这个应用是想建立新的一种这种价值体系,那你的这个升级,你的升级策略,就是说我写错了东西我能不能升级,那没有问题,对吧你完全可以自由的升级,你完全是一种策略师或开始就是一个私有部署的一种智能合约环境,然后我就运行在智能合约环境里。但是我是自由部署的,我的这个交易甚至都没公开,我先让用户先运起来然后产生价值,然后再尝试把它公开出来,然后得到这个社区的进一步认可,然后再去扩张,由这种路线去构建,我觉得也是一种可行的一种路线,不一定一开始就说我非要小心谨慎的说我要先把代码写出来要非常通过严格的审计才能跟大家见面。那你托管别人已有的资产和你自己重新创造一种有价值的应用,这是两种不一样的场景,大家把这个区分出来,这是我要补充的一点。

Louis:
当然你思考的起点还是可以认为它是一个BS架构的软件,但是呢它有几个不一样,一个是说你这个后端,其实这智能合约开发出来之后,你要知道它是面向全世界所有的人去开放接口,而不是你的前端,因为前端原来的BS架构是说你有这个跨域的问题,然后你还可以要求用户登录,这样的话他只能通过你的前端去访问你的这个服务,甚至说他要有这个经过认证,然后有了这个身份验证之后他才能使用一部分功能,那也就是说你前端逻辑跟后端逻辑只要自洽就可以了。
但是现在你这个智能合约放到链上之后,你这个前端只是这个协议的一个访问接口,那么任何人都可以部署他的前端去访问这个协议,而且它因为是公开的区块链的这么一个接口,所以他可以不通过前端,直接通过链下的程序去访问。另外呢从执行环境上来说,你的这个智能合约,它是放到区块链上其实是作为了一个component的执行,那么也就是说你这个智能合约的和你这个智能合约扩出去的你看到的一个账户,都可能是智能合约而且可以是被攻击者有意设计的一个智能合约,这是你只要暴露了这个接口,你就认可了这样的一个同步的可组合性。
那么这个其实是很多这个传统的这个软件开发者他没意识到的,没意识到他的后端这个软件不是在一个独立的服务器上执行,而是作为一个整体的区块链协议站的一个component在执行,那么这样的话能够产生的这种攻击的场景和这种设专门设计的这种条件是很多的,那你只能通过过去的这个你了解所有的这种攻击的例子,你才能明白说OK,原来我这个软件部署上去之后是在这样的一个环境下运行的。
另外呢就是他有一个计算负担选择的问题,就是说BS架构或者CS架构也都有这样的,以什么计算逻辑是放在这个客户端的或者前端的,什么是放在后端的,那么在这个区块链上也有这个问题。
那首先呢,就是因为你的前端不是唯一的,所以你不能够把业务逻辑的规则放在前端,你只能放在智能合约上,但是智能合约又是一个非常昂贵的平台,这个在大多数情况下是用户付费的,昂贵到什么程度,就是有这么一个估计,在以太网上存储和计算的成本都是跟商业云的相比的话是贵100万倍,也就是说你在这个商业云上100美元的计算成本到区块链上直接是1亿美元,所以说你的智能合约又不能太复杂,又不能太消耗这个存储,否则用户用不起。而且你这个智能合约越复杂,你这个审计或者说你这个安全的成本就越高,你要保证一个几千,你想想这个逻辑路径,几千行代码的这个智能合约跟几百行代码的这个智能合约,它可能的这个路径是指数型组合的。所以你要让这个智能合约还这样简单。但是刚才说业务规则要在后端,要在合约上,但是呢它又不能太复杂,所以这些东西很矛盾,你要真的去把你这个协议逻辑给理清楚了,到底哪些是真正的这个协议的内在部分。
你在这个普通的这个软件上你加一个什么guide函数或者加一个什么汇总,这都不是问题,但是在智能合约加上这些东西都可能是坑。那么当然这里面说其实还是有一个东西可以用,就是也还可以依赖一个index,它可以帮你做一些汇总统计类的东西,所以你只需要把真正的关于这个资产归属的判断逻辑,这个状态机的那个部分写成干干净净的一个智能合约,尽量让它简短,让它这个少量存储,然后让它这个计算负担小。这大概是跟传统软件或者说Web2软件开发的区别。

主持人:
因为目前我们区块链上的智能合约还是很昂贵的,我们一定要分清楚在我们的产品中什么东西是必须要放到链上的,然后通过这些东西来保证我们资产的安全,剩下一些东西我们可以有选择性的,用一个性价比更高的方式来进行存储和部署。想听一下大圣老师关于这个Web3 Dapp构建方面要注意点的一些看法。

大圣老师:
刚才几位老师说的其实都是比较宏观或者说从理念上的,其实我个人其实比较关注的,因为我是做开发者教育,可能会更关注一些跟开发者实际开发相关的一些内容,比如说前端跟后端就是跟传统的APP开发的主要的不同。我觉得Dapp其实主要的区别就是它大量依赖了一些,它需要和智能合约进行交互嘛,所以我们传统的一些交互的一些包也好,一些框架也好,我们就不太需要了。我们需要一些了解些跟智能合约交互相关的一些概念,哪怕我们不亲自写合约,但是我们也要懂像一些简单的solidity,它是怎么写出来的。
所以我们,尤其是我们前端来说,我们可能就需要一些学习很多新的库和新的框架专门来和智能合约去交互的啊。如果是前端的话,就学习一些这种。如果是后端的话,你可能学习一些,比如你到底要在哪个链上去做开发,你在以太坊上还是说在一些金融链上,你用的的语言可能也不太一样。然后在前端的话,就有很多新的内容,比如ether GS等等吧,这种还有像当然还有Web 3 的GS,这个可能稍微老一点。如果你用react的话,可能还有react Web 3,然后还有Web 3 model等等这些。
还有一些连接钱包的库。所以其实对于开发者来说,我们除了最基础的这些view react或者说我们基础的Golong的这些语言基础掌握之后,我们其实整个框架层面是需要学习很多新的东西的。这是我觉得对开发者挑战比较大的一个事情,而且我们的开发模式跟思维,除了刚才各位老师说的这些比较宏观的的知识点之外呢,在我们实际的可操作的层面呢,我们也要学习一下就是最基本的如何去和这些Dapp进行交互,我们的测试环境就除了之前的我们去自测一些代码之外呢,我们的测试环境还要有这个就是区块链相关的一些测试的环境,我们等等啊,这些全部都是全新的库或全新的框架需要去学习,我说这个其实也是比较大的一个挑战。而且现在尤其像国内好像还没有这种就专门针对前端或者针对后端的这种整完整的开发流的这种体系化的教程,我觉得后面的话也可以考虑去做一些。

主持人:
针对那些想进入Web3开发的开发者来说,他们需要培养哪些必要的技能呢,另外就是说他们去培养这些技能可以去什么途径去找到这些资源来方便他们来最快最便捷的来能够参与和体验到Web3的开发。我们不要把区块链智能合约仅限于一个公链的一个场景,现在的line one的场景的话,我们的区块空间是受限的,然后成本是很高的,我们只能做一些有限的计算和程序。所以可能只能做一些TOKEN或者是Dapp这类的应用。应用场景受限,所以我们这样的折中的方案,现在推崇的一种新的方式叫做fully on chain,就是说我所有的应用逻辑都写在链上并通过智能合约完成,但是它运行在什么地方呢,它可能不运行在line one,我运行在其他的什么地方,甚至一个私有的我的一个智能合约环境。
但是呢它具有潜在的去中心化的一个实现的一个途径,所以这样的话,就大家把这个想象力可以打开,不一定说我上来,我接着区块链写智能合约,我就只能做一个金融相关的一个产品或者这样的一个产品,我可以做任意类型的产品,发挥我的想象力,然后现在真的会有智能合约把它实现了,然后我再考虑把它以什么样的方式去运行起来,连接到整个区块链生态上去,这是我补充的一点。然后至于怎么样学习,怎么样去介入的这个途径,有什么样技能。
前面老师也补充了,就是前端的技能其实差别我觉得不是太大,就是说它的这个库不一样的,他技能都是那个。后端的技能呢,那可能就是陷入一个智能合约语言的一个学习。然后有一个DAO最近在组织一个叫做新航计划的这样一个开放式的一个共学课程,这课程不收费然后还有奖励,就是鼓励大家从Web2或者是这样的一个新的一个想学习Web3的一个开发者。因为我们孤独的一个人学习可能会有困难,但是,我们希望在学习过程中有人交流,然后有阶段性的还有产出有奖励然后来激励我们不断的前进。这样一个提供这样一个学习环境的一个地方,然后有学习的资料,有学习的这个导师。这是我们一个DAO的这个新航计划所想提供的内容。

jolestar:
开发者你们想从Web2到Web3,就是进这个Web3这个圈子千万别一开始就创业,一般一开始就创业肯定是不行的,是要摔跟头的,而且是你在Web2越成功,你是大厂或者你是这个什么什么网游的什么,百万网游的程序员,进来之后到这个Web3这个圈子,你越厉害到这摔的就越狠。然后呢,就是这些Crypto found,这个就是比较懂行的Crypto found都有学精了。问创始人先问你这个是不是Crypto native,你不是的话,你哪怕你哈佛MIT,你是谷歌的总监来了也不见得能拿到投资。为啥呢,因为这行它有自身的规律,然后你这个既然转到这行呢,就别这个把自己太当回事,先进来这个踏踏实实的把这行到底怎么搞的能看清楚。那么如果你是一个开发者,你又不知道自己是不是真的喜欢这行或者这个是不是真的在这个之后的Web3到底是干什么,到底有没有意义,你想试一下水,那最好的方式就是用业余时间去这个算这些Crypto,因为所有的Crypto都是开源的。
其实这个Web3,Crypto密码朋克,这些东西都是开源软件运用的一部分。所有的项目,你去找找你喜欢的这个项目,看看他代码,然后看明白了他们干什么呢。你给他贡献代码,然后你如果这个贡献代码人家接受了给你合并进去了。你参与的项目越厉害,这个如果你的代码逐渐你在这里面起的作用越来越大,那你后面要创业或者找这个工作,这个就是你有牌可打,因为确实说明你明知道人家为什么那么做还能参与进去,说明你已经进到这个行业。这个其实是这个最有效的方式,但是如果你本身你是一个互联网的这个程序员或者传统it的程序员,你不熟悉这个开源软件的这套东西,那你还是得熟悉,你要连开源软件你都搞不清楚的话,那你进Crypto,那根本就找不着北。

大圣老师:
从Web2到Web3其实是需要,就是最丝滑的一个,因为它核心的知识点像react,它其实是可以直接无缝迁移的,只不过我们需要学习一些专门针对区块链的一些库和框架,那后端的话可能学习的内容多一点。但是我觉得我们其实可以掌握一些基本的方法论,刚才几位老师也说过,第一个就是如果说你真的想去做Web3,那我们可以去先了解一下,Web3常见的概念或理念,什么是智能合约,然后再细致些什么是ERC 20,什么是nft等等。这个就是举个例子,我们拿NFT来举例子,那你可以在github上面去搜一下这个nft有哪些开源的一些项目,我其实之前记得,像有一个项目叫NFT gallery,这个项目就非常适合一开始做Web3的人去提交一些贡献,因为他的里面都是有价格的,就如果这个level里面是一个dollar服务,大概如果你帮忙解决这个问题,他会给你打5-10美元的作为奖励。
所以呢,这是一个比较有意思的事情,就如果我们以一个非常简单的方式,给他修bug的方式,修一些bug还能获得就是数字货币的这个打赏的话,就可能会对于我们学习来说有很多正向的一个反应,然后这是第一个我觉得开源项目。然后第二个就是我们其实可以试试看一些招聘的JD,因为有一些专门招聘Web3的一些网站,就是有些网站专门上面分享全部都是Web3的一些岗位,比如说像Web3.career啊之类的,然后什么better Web3这种网站。我们可以看一下这些Web3的行业相关的招聘的JD,它要求是哪些技术栈。那如果运气比较好的话,我们其实有时候在boss直聘上也能看到一些这种稿,那其实我们可以和他先聊一聊对方需要什么技术,我觉得从岗位里面,岗位的技术需求就是现在行业里面最流行的,因为他是实际会给你发工资的,发钱的。
所以我们以这个来作为自己学习的一个知识点的构建的一个突破,我觉得也是蛮好的,这个岗位他需要哪些技术,那我们就把这些技术点都罗列出来,我们去看一下他们的官网,我们去看一下怎么去学习,然后我们学习一段时间之后,其实是我比较建议的一个思路,比如说你已经学习了,按照这个思路学了两三个月了,但你不知道你学习效果怎么样,其实我比较建议的方式就是你做一份你找Web3工作的一份简历,就是然后你拿这个简历去投一投这些招聘的岗位,和他们聊一聊,然后你就很快发现自己的缺点在哪里,然后你就知道大概下一步你怎么去学习,那如果你很成功的拿到这个岗位呢,那就恭喜你,其实你已经学的差不多了,你至少已经可以进入到这个行业了,就可以开启下一步,就在这个Web3领域里面的一个成长,这是我个人的一个想法。
那当然了,其实还有第三点,如果你学习的时候,我个人的建议方式,我们比较喜欢的学习方式叫learning public,我们不要闷头去就闭门造车,现在其实我们整个互联网这么的发达,我们其实可以有很多地方去记录自己的学习,这其实也印证了另外一个学习的方法叫费曼学习法。你可以在,比如说你在无论是你在国内的b站或者是国外的YouTube或是Twitter上来记录你学习的一些经验心得分享些文章,就输出本身来说能够巩固自己学习的效果,外加上你还可以从你的评论区里面获得一些及时的最新的反馈比如说我今天学了这个ERC 20,举个例子,它的合约,我就写了一篇感想,我对ERC 20的这个合约里面的一些看法,那其实如果我说的不对的话,可能就会有人来纠正我来提醒我,甚至是来给我建议一些更好的学习资料啊。那这样的话,其实对于我个人来说是省了很多的搜索和资料过滤的时间,我觉得这个learning public,其实也是我个人非常喜欢的这个学习方法,这是我要分享的。

主持人:
好的感谢大圣老师,然后请知县老师分享一下自己的观点。

知县老师:
我换个方式吧,就是我把我们实际开发中到底都在干什么,就是可能站在这个实操的角度大家看看,其实可能就更有实感了。我们现在在做的大家可以理解为用一种低门槛的账户器系统作为它的底层技术,然后再配合上刚才我讲那个TOKEN,大家都听过了对吧,就是这么一个美元稳定币,这样的一种链上资产,然后来想做什么,就做支付,就可以理解为把微信,支付宝支付这种非常方便,又快又便宜,几乎没有摩擦的这种支付系统呢,也带给那些就是金融设施不好的这些国家和地区,比如菲律宾,比如说尼日利亚这些他们的这个日常生活中。
这个资金流的摩擦,超过想象,比如说有的这个菲律宾的这个,比如你是个高中生想在网上接点这种私活赚点钱,但是呢因为你没有足够的ID去申请这个银行账户还有比如申请Paypal的这些,他需要这个身份认证的,你只能借别人的账户收款,那你的要付出的成本可能要高达50%,就是你收100美金,别人要扣掉你50。这些就都是他们技能,基础设施不完善,整个不管是体系上还是这个硬件上都不行,那么Crypto它的出现呢,直接把这个原来咱们理解的金融基础设施,比如说银行卡、网点ATM机、扫码枪这些乱七八糟的东西啊,你要把它铺到你想全国其实需要非常大的国内才能做到的,但是呢有了Crypto之后呢,你只需要有个智能手机还有有移动互联网再加上密码学的这个加持,你就拥有了一个真正的金融账户,你真的就可以去收发美金,而且还没有人能审查你,所以这其实是大家理解一下,这个非常大的真真正正Crypto能够带来的这个区别,这也是比特币最早的愿景嘛。
这个电子现金具体为什么能在,就比如说我自己写个数据库能不能做一个电子现金,为什么需要区块链这些呢,这个感兴趣以后有机会可以再聊,或者大家自己看一看就为什么区块链可以让一个数字的东西变得不可复制,变得可以确权,我想讲就我们在这个背景下,我们产品在干什么,我们首先有个APP,那这个大家懂flatter的就其实都可以加入来做这个APP。那么flatter里面有一些库,核心库比如说我们的密码学的库,那这些呢,可能需要想要深入到这一步呢,就要了解一些最基本的密码学知识,比如什么是签名,什么是加密,这个区别要有啊。然后呢,什么哈希这些大家应该都知道,再深一点,什么是MPC,这个就稍微复杂一点,怎么去生成分布式的生成密钥,怎么去安全的管理密钥,怎么去这个设计这些secret的这个存储方式,那这基本上就是前端的最核心的地方。剩下的就是跟后端和链上的一些交互,比如说我要去拿到这个地址之后,我要去查询它有多少余额,它的交易记录,这个答案,这个搞开发了这个增加查改,这是最基本的东西。那你把这个区块链当成数据库,甚至说我们有后端,这个后端给你的接口你直接用就行了。
那么后端,我们说到后端,我们这部分其实是相对复杂的,因为我们一方面有一些账户层的东西,大家这个如果了解过智能合约钱包或者说账户出现的话,他会有一些什么帮用户去上链的一个Server或者是一个现在是一组Server,它会帮我付gas,它会判断一些用户的行为。还有呢我们还有这种社交恢复,这样社交恢复呢,它是需要一些就是pin交易也好或者说其他的也好,这些东西其实都在我们这是后端的,然后包括gas补贴的这个逻辑,这些都是在后端。那我们的后端是使用rust,这个是相对现在也没有那么小众了。但是呢,实际上还是比较high level的一个语言,一般就是不是一个典型的大规模的语言,一般就大家写go或者写c++可能会往这个方向转一转。Rust的好处是,你一旦把代码写出来,你出错的概率就要低,就是一个非常既适合写嵌入式又适合写后端逻辑,也适合写智能合约的这么一个语言。
这里我也简单打个广告,如果大家对rust感兴趣,对区块链感兴趣,包括对这种实际能够产生落地效果的场景感兴趣的话,欢迎来这个Account Labs的这个投简历,我们现在在非常这个积极的在招这个rust后端程序员,欢迎大家来投简历。然后除了rust之外呢,再就是合约。我们合约其实主要是账户层的,那账户层的合约其实是相对比较严肃的,像我们是找了4家审计机构做审计,然后我们这个合约也不会轻易的去做这个改动和升级,因为一旦你的账户逻辑出了问题,就让你家对吧,这个出了问题别人就直接偷家了。这个而且是规模效应的,你所有账户都用一套代码,一旦出了问题,所有人都受伤。这个是比较serious的,那除了这部分的这个合约呢,其实剩下的,比如说一些业务的简单的一些合约都是case by case的,这些合约相对没有那么严肃,没有那么严重,比如做活动我们要发ST或者说做一些这个链上的一些记录,这些东西其实都比较简单。然后最后就是前端,Web前端,不管是官网还是活动页面,这些其实都是非常传统的,大家做这个普通的互联网开发也都能够接触到的部分。
这基本上就是我们整个研发团队的分工,前端然后后端,合约再加上一些research方向,像写zk的、搞密码学的、搞安全的,这些就分类,一起就组合上了一个我觉得算是相对比较全面,我们也算是这个编制比较完备的,还有QA这些就不说了,这些都是一样的。大家只要稍微懂点区块认知识,这些东西是都能做的,然后我们招聘呢,之前呢也是经常从大厂网易,因为我们在杭州,那网易这个阿里以及腾讯,我们有远程的同事,在那个深圳远程的同事,在成都远程的同事。那我们招聘的这些同事都是大厂经验,有的有Crypto经验有的没有,但是基本上一个月之内吧,大家也都能够对这个东西有一个全面的基础的了解,然后上手也不是很困难,也大概是这样的一个情况。

Louis:
我延伸大圣的一个观点,就是在这个learning in public里面,最extreme、最radical的应该叫learning by teaching,就是叫什么教是最好的学。就是比如说你现在是个go成员或者rust成员,你可能有一些什么go的群或者是什么社群啊什么的,然后你学了solidity,你学了一礼拜,你能不能到这个群里面说咱们都是这个go语言的成员,那个现在我想给大家讲讲solidity,我给你讲讲智能合约开发。然后你就能撺出一波人,你就组织这么一个组,然后你再给大家讲讲这个所谓的开发是是什么,怎么搞。
那么你做这个呢,当然两点好处,第一个是说你肯定得玩命的去不能让自己露怯,你得系统性的去学,这样你才能够有这个系统性的把它讲出来。第二呢,就是说如果你能做到这一点,说明你性格上特别适合搞Web3,因为Web3不管是应用层的协议还是基础设施层的协议,最重要的就是最后就是要形成一个社区,这个社区,它可能是以围绕一个particle去构建的,用技术手段,用particle开发出来,这只是一个必要条件,你还得找到这particle的the stakeholder,这些参与者,这些价值贡献者,你得告诉他我们为什么做成这样,你做这东西,参与这事有什么好处,最终形成一个社区。然后呢,不断的壮大这个社区,这是Web3要干的事.所以如果你能够做到learning by teaching,说明你特别适合干Web3。

主持人:
因为时间的关系,我们只在这期播客中仅仅探讨了上面几个话题,那如果大家对我们探讨话题感兴趣或者想请我们几位老师做进一步分享的话,做进一步分享的话
感谢大家收听本期播客,如果您想进一步交流本期的观点,欢迎加入OpenBuild开发者社区,可以在我们的官网OpenBuild.xyz获取加入方式,同时,欢迎在推特或微信公众号关注OpenBuild,下一期我们将邀请已经在Web 3领域拥有丰富开发经验的开发者们来聊聊他们的学习经验或在开发中踩过的坑,那我们下期见拜拜。



扫码关注OpenBuildTalk,收听更多精彩播客
扫码关注OpenBuild官方公众号
扫码进入OpenBuild官网,了解更多Web3开发技术


OpenBuild
OpenBuild 中文社区,OpenBuild 是一个致力于帮助 Web2 开发者更好的进入 Web3 的开源社区,助力开发者成功。
 最新文章