附上使用说明书的程式码 – 智能合约工程内容大揭密
本文来自合作媒体 c2x3,INSIDE 授权转载。
前言
Web3或是NFT的专案都需要一个合约工程师,他们往往肩负着重要的角色。在Web3的世界里,智能合约成为一个不能不知道的词汇,感觉想要发起一个Web3的相关专案,不了解一点智能合约是不行的。每当专案出现问题时,我们总把关注的焦点投向智能合约工程师,放大检视他们的合约有没有漏洞,却不得其门而入,也搞不懂「智能合约」所为何物。
本文特别邀请了目前在泰卓链(Tezos)生态中,相当活跃的智能合约工程师——NakoOn,带领我们一起探索并揭开智能合约工程的神秘面纱。
合约工程师NakoOn小档案
NakoOn目前是akaSwap的首席智能合约工程师,也是台湾少数投入且活跃在泰卓链的合约工程师,经手Tez Dozen、区块火车(blocktrain)、白昼之夜和阿妹的ASMeiR NFT等专案,撰写合约的功力也引起国外fxhash或是objkt.com等知名NFT平台的关注。相比其他擅长撰写以太坊合约的工程师,NakoOn更专注在泰卓链的数位艺术生态,透过他的观察我们将为大众揭开泰卓链上智能合约的神秘面纱。
NakoOn在踏入区块链艺术生态圈之前,主要在制作VR和沉浸式体验的相关专案,引用他本来的原话是「从元宇宙的基础建设转向了另一种基础建设」。大学就读於资工系,研究所则投入虚拟实境体验的相关研究。在转换跑道之前,多半在执行VR放松体验,或是博物馆的沉浸式体验。主要工作内容是根据体验需求的改变,撰写不同的程式,来协助执行机制的串连,帮助使用者更有效地进入体验过程,也希望透过机制的建立,来扩大建构VR所呈现的感官世界。後来因为公司的愿景和转型,加上对於区块链世界的好奇和对「机制」的热爱,转向开启了「合约工程」之路。
Photo Credit:c2x3 提供
什麽是智能合约?
智能合约(Smart Contract)一词是由学者Nick Szabo於1990年代初期提出,倡议可以将交易的条款透过电脑化来落实,在当时并没有得到太多回响,但是随着区块链技术的兴起,以太坊(Ethereum)的出现,强调「智能合约」是这条区块链的特色,一举将智能合约推向了一个新的层次,让大众注意到智能合约的重要性,也成为了区块链上的主要技术和应用。
不过确切来说,使用「合约」这个语汇来形容「智能合约」容易让我们产生误解,因为「智能合约」既不「智能」也不完全是份「合约」。它比较像是一段附上使用规范的「程式码」,透过程式码,我们可以用来执行我们希望应用的动作。
正如上述所说,智能合约是以太坊提出相当重要的区块链应用,充分利用了区块链公开透明记录的特色。在《写给未来社会的新帐本——区块链》一书指出,智能合约必须包含三个要素:
- 自治:合约一经启动就会自动运行,无法透过任何人为干预。
- 自足:智能合约将自主控制其计算所涉及的资源,比较明显的例子就是「自动分润」这类的机制。
- 去中心化:通过分散式的节点来自动运行,非依赖中心化的单个伺服器。
「自动化」、「无法透过人为干预」会是智能合约的重要特性,加上区块链公开透明的性质,非常适合在执行应用动作的代码加上预设的规则、条款等协议。这种不可更动性,产生了类似「合约」的性质。不过这些智能合约的本质就是一用以执行某些动作和应用的程式码。
以akaSwap为例,购买NFT就是使用一份智能合约,合约动作包括了:执行买家支付一笔费用,再从卖场将该NFT转到买家钱包,并依照分润规则将所得费用分配给卖家、作者和平台方。拍卖、发售等动作同理也会由不同的智能合约来完成。我们可以视智能合约就是一连串动作的集合,并透明公开地把使用说明和规范标示出来,就像是该程式码的「使用说明书」。
如何检测一份好的智能合约内容
也因此工程师和智能合约扮演了相当重要的角色,无疑是整个专案的基石。他们建构起该专案需要合约动作执行的规范和规则,以确保所有动作将会自动、不受干扰的运行。那我们可以根据什麽条件来观察一个智能合约撰写(或是合约工程师)的好坏呢?
首先,我们可以观察这条合约是否浪费我们无谓的瓦斯费(gas fee),好的智能合约应该是需要更有效率的执行动作,不会因为无效率的程式执行,导致使用者浪费原本不应该产生的瓦斯费。其次,我们可以观察该合约是否有漏洞,可能是合约工程师在撰写过程中,机制设计不良或是思考未有缜密,导致了一些不良使用者,可以透过这些漏洞来获取不公平的利益。那最後,也可以深入确认这样的漏洞是无意使然,还是工程师在撰写合约时,刻意给自己留下的後门或是缺口,便於自己图利。倘若发现这样的情况,那势必是一份最糟糕的智能合约。幸好这些合约协定都公开透明的呈现在链上,多少限制了不肖工程师出现的可能性,毕竟每一动作都会在链上被记录下来,供大家放大检视。
社群和程式之间,「公正」该如何平衡?
公平和公正,往往是专案执行中最在意的事情,也是智能合约在执行过程,最需要好好建构的一环,而「公平公正」的精神也需落实在专案执行的每一个环节。NakoOn向我们提及,之前在执行Tez Dozen专案时,大战黄牛机器人的精彩事蹟,可以作为一个范例。
Photo Credit:c2x3 提供
Tez Dozen是早期在akaSwap相当成功的PFP专案,一共分成12轮发行,每轮皆在一个区块(30秒)内完售,亮眼的销售成绩和炙手可热的二级市场,引起部分黄牛机器人的关注。机器人透过程式指令执行,总是能比「正常人类」购买到较多的数量,或是更快抢到。虽説在区块链专案上,大家各凭本事的抢购是司空见惯的事情,但透过机器人购买还是有点超出了「公平正义」的那条线。在聆听社群意见和团队讨论後,他们决定针对这些黄牛机器人提出应对措施。
首先,泰卓链上各专案都会有各自的黑名单。当时,NakoOn先跟objkt的工程师索取了一份泰卓链生态圈的黑名单。另外,就是观察较少互动、金流流向可疑,或是交易动作可疑的假帐号。由於合约内容是公开透明,有心人士往往会针对合约内容并利用机器人锁定合约位址来进行抢购。也因此,NakoOn和团队决定在最後一刻更换合约,让自动化的黄牛机器人反应不及。较劲的结果反映在抢购结果上,该轮抢购成功的都是循规蹈矩,从前端网页操作的使用者。这次行动也说明了「合约执行」的公正,不一定完全符合人性和社群期待,在社群大众期待的「公正」和机制死板执行的「绝对公正」中间是有非常多的讨论空间,需要灵活的弹性和对於社群需求的深入观察。在这样的前提下,来善用合约工具,而不只是墨守成规。
日新月异的区块链和合约工程,我们需要什麽能力?
最後,NakoOn与我们分享合约工程师,整体使用的程式语言和处理指令的方式,没有真的与过往的学习相去甚远。但是在转职的过程中,由於当时台湾没有太多泰卓链的资讯,比较没有人可以跟他讨论分享智能合约的种种细节,他还是需要爬梳大量的资料和范例来精进合约撰写的能力。且区块链的变化日新月异,合约工程师必须不断地更新自己的知识,才能够了解得更全面。常常专案一开始到撰写完,链上又多了许多功能可以使用,如果没有常常更新链上知识,便很容易被淘汰。
另外,认识社群上的其他角色,观察其他平台的合约是如何撰写,多多参与各种面向的讨论,都会是身为合约工程师相当重要的功课。指令的执行没有讨论的空间,但是专案服务的对象基本上都是以人的需求为主,在这个过程中,如何找到指令和服务需求的平衡,将会是非常重要的一件事,也区块链和合约工程执行的过程中最有趣的地方。
责任编辑:Chris
核稿编辑:Sisley