合约源代码
结构清晰、注释完整、组织有序的 Solidity 文件,让第二位开发人员或审计人员无需猜测就能读懂逻辑。
Solidity 是大多数 Ethereum 及兼容 EVM 的智能合约所使用的语言,企业在迪拜聘请Solidity开发工程师,看重的正是他们在这一种语言上的深度:语法、各种细微特性、编译器行为,以及能让合约在部署后长期保持安全的实践模式,因为部署之后实际上很难更改。相比涉猎更广的区块链职位,Solidity 开发工程师的价值来自真正吃透这一种语言,而不是浅尝辄止。
Solidity 项目官方文档把它描述为”一种面向对象的高级语言,用于实现智能合约”,受到 C++、Python 和 JavaScript 的影响。这种混合的背景说明了为什么有通用编程背景的 Solidity 开发工程师往往能很快上手语法,而真正重要的部分,gas 成本、存储布局和不可逆的部署,则需要真实的项目经验才能做对。
这一职位与我们的智能合约开发工程师页面相邻,后者围绕交付物而不是语言展开;也与我们的区块链开发工程师页面相邻,后者涵盖围绕合约搭建的更广泛应用。
Solidity开发工程师编写什么
由语言本身及其工具链定义的工作内容。
结构清晰、注释完整、组织有序的 Solidity 文件,让第二位开发人员或审计人员无需猜测就能读懂逻辑。
写入合约的所有权、角色和权限检查,遵循已经过审查的成熟模式,而不是重新发明。
只有在项目确实需要时才谨慎使用代理或升级机制,因为它们会带来实实在在的复杂性和风险。
覆盖正常使用场景和边界情况的自动化测试,在触达真实链之前先在本地或测试网络上运行。
在不影响正确性和可读性的前提下,调整存储布局和逻辑,降低调用合约的成本。
在合约携带真实资金上线之前,把文档、整洁的提交历史和清晰的规格说明交给独立审计人员。
重要技能
对照官方资料核实语言和工具链方面的深度。
| 技能或工具 | 好的表现是什么样 | 为何重要 |
|---|---|---|
| 当前 Solidity 版本 | 使用经过充分测试的当前版本,并在采用新版本前先阅读更新日志 | 语言更新可能在不同版本间影响 gas 成本和行为 |
| 成熟的库 | 在常见模式上依赖 OpenZeppelin Contracts 等经过广泛审查的库 | 重新发明基础合约模式,正是许多可避免漏洞的来源 |
| Gas 意识 | 理解存储和逻辑选择如何影响调用合约的成本 | 用户需要为与合约交互付费,因此低效代码会带来直接成本 |
| 测试框架 | 熟练使用标准的 Solidity 测试和部署工具链,而不仅仅依赖人工测试 | 人工测试会漏掉自动化测试能持续发现的边界情况 |
| 审计就绪度 | 从一开始就以最终会接受审计为前提编写代码和文档,而不是事后补充 | 清晰、文档完善的代码,能让独立审计更快、更彻底 |
OpenZeppelin 的 Contracts 库在业内被广泛依赖,该机构表示,它能帮助开发人员”通过使用经过实战检验的智能合约库来降低风险”,值得通过其官方文档核实候选人是否真正使用过,而不只是听说过。无论职位面向哪条链,这张表都是聘请Solidity开发工程师时,任何面试都可以使用的公允检查清单。
合作方式
限定项目往往是这里最自然的合作方式,因为合约所需的行为可以在开工前就精确写下来,再对照这份规格说明交付,附带明确的完成节点和测试计划。专职开发人员适合持续推出新合约或合约升级的产品。招聘支持适合希望把 Solidity 开发工程师长期招入自己团队的企业,咨询服务则适合已有 Solidity 代码、希望在进一步推进前获得一次经验丰富的第二意见,但还不需要完整审计的团队。
评估候选人
用来检验真实语言功底和生产经验的方法。
一个可以查询、源码已对照部署字节码验证过的合约地址,比一份私下的代码样例更有说服力。
询问他们为降低 gas 成本做过的一次具体改动,以及其中涉及的取舍。含糊的回答通常说明实操经验有限。
能明确说出成熟、经过审查的库名称的候选人,通常比声称一切从零写起的候选人更谨慎。
请他们展示过去项目中一套真实的测试套件,以及它是否作为工作流程的一部分自动运行。
实力较强的候选人能说出一个具体的门槛,例如任何持有用户资金的合约,而不是把审计当作可有可无的选项。
无论您是自己主持面试,还是把它作为招聘支持的一部分交给我们,在迪拜聘请Solidity开发工程师时都可以使用这些检查方法。
认证
Solidity 语言的维护方并未颁发官方认证。
Solidity 文档中并未提及或指向由维护方运营的正式认证项目,因此市面上宣传的”认证 Solidity 开发工程师”证书来自第三方培训机构,而不是语言本身。在仅凭这类证书,就在迪拜聘请Solidity开发工程师之前,应对照上述检查方法进行权衡。
一个经过验证、已部署的合约、一段具体的 gas 优化经历,以及对测试和审计的清晰回答,比个人资料上的证书名称更能说明问题。
阿联酋相关考虑
在合约涉及真实价值之前,值得了解的一个监管机构。
VARA 是负责监管在迪拜境内及自迪拜提供的虚拟资产活动的机构。如果计划在迪拜聘请Solidity开发工程师,为支撑某项虚拟资产服务的合约开发代码,应在部署之前而不是之后,就向 VARA 或律师提出牌照方面的问题。
由于已部署的合约事后很难甚至无法更改,应在确定项目范围时,而不是到最后才决定,是否需要在主网部署前完成独立审计,并为此预留时间预算。
上述监管信息只是说明谁负责监管什么,并不构成法律意见。在动手开发前,请直接向 VARA 或您自己的律师核实任何牌照问题。
直接解答
关系密切,但并不相同。Solidity 开发工程师以语言本身界定,主要面向 Ethereum 及其他兼容 EVM 的链。智能合约开发工程师则以交付物界定,即合约的设计和行为,视链而定,可能使用不止一种合约语言。
应使用经过充分测试的当前稳定版本,而不是发布当天就采用的最新版本。Solidity 官方文档正是出于这个原因进行了精细的版本管理,一位称职的开发人员会在为任何涉及真实价值的项目采用某个版本之前,先查看其更新日志。
不是,它可以在任何兼容以太坊虚拟机(EVM)的链上运行,这类广泛使用的网络除 Ethereum 本身外还有多个。告诉我们您项目面向的具体链,我们会核实该 Solidity 开发工程师在那条网络上的经验。
Solidity 开发工程师可以编写测试并进行自己细致的审查,但正式、独立的审计是一项独立的专业工作,应交由专门的审计机构,在任何涉及真实价值的内容上线之前完成,我们会协助您单独确定这项工作的范围。
在实操层面通常可以,但一次完整的应用搭建,通常更适合让区块链开发工程师或 Web3 开发工程师与 Solidity 专才协同确定范围,尤其是在合约只是整体工作一部分的较大产品中。
资料来源
书面固定价格
已收到,我们正在为您撰写报价。
工作时间内您将在 45 分钟内收到。请查收确认邮件。