合约规格说明
在写下第一行代码之前,先书面约定合约必须做什么、谁可以调用它,以及绝不能出现哪些情况。
迪拜聘请智能合约开发工程师时,看重的首先是合约的行为,其次才是所用的语言。这个区分很重要,因为无论底层语言是 EVM 链上的 Solidity,还是另一条网络上的其他语言,交付物,也就是对每一个调用者都以完全相同方式运行、之后难以轻易更改的代码,面对的都是同一个挑战。企业在迪拜聘请智能合约开发工程师,真正的需求往往是”把这套逻辑安全地设计出来”,而不是”用某种特定语言写出来”。
Ethereum 官方开发者文档把智能合约描述为表现得”像一个自动运行的计算机程序”,在满足特定条件时自动执行,并将其比作一台数字自动售货机:已知的输入产生已知的输出。这种简单性同时也是风险所在。正因为逻辑严格按照编写方式运行,逻辑中的任何错误同样会被严格执行,这正是为什么智能合约开发工程师在设计、测试和审查上的严谨程度,比对某一种语法的熟悉程度更重要。
这一职位与我们的Solidity 开发工程师页面相邻,后者聚焦于一种特定语言;也与区块链开发工程师页面相邻,后者的重点扩展到合约最终要对接的一切。
智能合约开发工程师负责设计什么
由行为定义的交付物,而不是由某一种语言定义。
在写下第一行代码之前,先书面约定合约必须做什么、谁可以调用它,以及绝不能出现哪些情况。
用目标链所使用的语言编写代码本身,建立在成熟模式之上,而不是从零开始凭空构造。
梳理合约可能处于的每一种状态,以及状态之间的每一种转换,让边界情况在纸面上就被发现,而不是在生产环境中才暴露。
在独立审计人员从外部进行同样的分析之前,先自行推演谁可能会滥用这份合约,以及具体怎么做。
自动化测试,对于复杂合约,还会在上线到真实链之前,运行脚本化的真实使用场景模拟。
为独立审计人员准备文档和清晰的规格说明,并在审查结果返回后逐项处理其中的问题。
重要技能
对照官方文档核实的设计严谨性。
| 技能或工具 | 好的表现是什么样 | 为何重要 |
|---|---|---|
| 与目标链匹配的语言能力 | 在目标链实际使用的具体语言上,有真实且可核实的经验 | 不同链之间的合约语言及其执行模型存在实质差异 |
| 先设计,后写代码 | 在开始实现之前就撰写或审阅规格说明,而不是事后补写 | 部署后修复设计缺陷往往是不可能的,这与普通软件不同 |
| 复用优先于自创 | 在常见模式上依赖成熟、经过广泛审查的库,而不是自行编写 | 对已有成熟方案的问题自行造轮子,正是可避免漏洞最容易集中出现的地方 |
| 测试的严谨程度 | 自动化测试,对复杂内容还会做脚本化的真实使用模拟 | 仅靠人工审查,始终会漏掉测试才能发现的边界情况 |
| 与审计人员的合作态度 | 准备好外部审计人员可以直接使用的文档,并把审计发现当作常规流程,而不是针对个人 | 与审计人员的对立关系,会拖慢这场最重要的审查 |
Ethereum 关于智能合约的文档还指出,交互默认是不可逆的,并建议对持有大额价值的任何内容采用多重签名控制,这一点值得核实候选人是否能主动说清楚。一位无法清楚解释这种权衡的智能合约开发工程师,还没有准备好承接持有真实资金的合约。
合作方式
限定项目特别适合这个职位:先写下规格说明,再据此搭建并测试合约,交付时附带可供独立审计使用的完整文档。专职开发人员适合拥有一套不断演进的合约、需要持续设计投入的产品。招聘支持适合希望直接把智能合约开发工程师招入自己团队的企业,咨询服务则适合希望在进一步推进之前,由经验丰富的人员对现有合约做一次设计或威胁建模审查,但还不需要完整审计的企业。
评估候选人
检验设计思维,而不只是语法水平。
描述一个基础合约,询问他们会如何尝试攻破它。他们提出的问题质量,和他们给出的答案同样重要。
真正具备设计严谨性的候选人,通常能从过去的项目中拿出一份文档,而不只是代码。
询问他们经历过的一次真实审计发现,具体是什么问题,他们又做了哪些改动。如果候选人在这方面没有任何经历,说明他实战经验有限。
实力较强的候选人通常能回忆起一个他们较晚才发现的具体边界情况,以及由此带来的流程改进。
确认他们的经验与您项目所面向的具体链相符,因为在一个生态中的设计能力,不会自动迁移到另一个生态的执行模型。
对每一位在迪拜面试的智能合约开发工程师使用同一套检查标准,这样不同链、不同语言背景的候选人,也能被公平地放在一起比较。
认证
目前没有任何一家机构颁发通用的智能合约认证。
由于这个职位横跨多条链和多种语言,没有任何一个官方机构对其进行统一认证,因此市面上宣传的”认证智能合约开发工程师”证书,反映的只是某个课程提供方的标准,而不是全行业统一的标准。
一份书面规格说明、一段真实的审计经历,以及在您目标链上的确凿经验,比一张证书名称更能说明问题。
阿联酋相关考虑
迪拜在这个领域的监管机构,以及如何与其打交道。
根据其公开的职责范围,VARA 负责监管和监督在迪拜境内及自迪拜发起的虚拟资产的提供、使用和交易。您计划部署的某份具体合约是否需要 VARA 牌照,这个问题应交由 VARA 和您自己的律师来解答,而不是由开发团队替您做决定。
由于上线时间、与监管机构的沟通和审计周期会相互影响,应尽早与您的律师一起决定,监管沟通和独立审计是先后进行还是同步推进,而不是把两者都留到项目末尾才处理。
以上内容只是指出了相关监管机构,并不是对您项目的裁定。任何牌照相关的问题,请在确定设计方案前咨询 VARA 或您自己的律师。
这个职位列在我们的区块链与 Web3类别下,属于迪拜招聘开发人员页面的一部分。如果项目专门面向 Ethereum 或其他 EVM 链,我们的Solidity 开发工程师页面描述的是这个职位更聚焦于语言本身的版本。合约设计完成后,区块链开发工程师和Web3 开发工程师负责围绕它搭建应用,而区块链工程师则负责它最终运行所依赖的基础设施。
直接解答
关系密切,但侧重点不同。Solidity 开发工程师以单一语言界定,主要用于 Ethereum 及兼容 EVM 的链。智能合约开发工程师则以交付物界定,即合约的设计与行为,无论最终用哪种语言、哪条链实现。
不是。不同的链在合约上使用不同的语言和执行模型,因此擅长某一生态的智能合约开发工程师,不会自动适用于另一个生态。告诉我们您项目所面向的链,我们会据此匹配合适的开发人员。
它被编写用来执行的任何逻辑:谁能调用某个函数、代币如何转移、在什么条件下释放资金。根据 ethereum.org 官方文档,智能合约的行为就像一个程序,对相同的输入始终给出相同的预定输出,全程没有人为干预。
尽可能使用成熟的库而不是自行编写代码,配合自动化测试、在公共测试网络上分阶段上线,并且在涉及真实资金之前,由专业机构进行独立安全审计,这项审计独立于我们的开发工作,我们会协助您确定其范围。
通常不能直接修改,这也是为什么在部署前把设计做对如此重要。有些项目会从一开始就内置一套专门的升级机制,但这会带来额外的复杂性,只应在项目确实需要时才使用。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。