08/07/2018

超越卡尔达诺代码

2017年12月,卡尔达诺基金会委托著名Haskell软件开发与DevOps咨询公司FP Complete对卡尔达诺结算层进行第三方独立审查。审查内容包括卡尔达诺开发团队IOHK所完成的代码、技术文档和操作程序。

采取这种独立、全面的代码审查和工程实践方法的目的是为了同卡尔达诺“以研究为动力、科学最佳实践和严格同行评审”的开发理念保持一致。

自从卡尔达诺与FP Complete的达成合作以来,FP Complete已出具许多关于卡尔达诺的审查报告。这些审查报告包括供项目内部使用的详细“非公开”审查报告(即FP Complete突出了可能的安全敏感问题)和供一般发布使用的略微修改版本的“公开”审查报告。这些全面且针对性极强的审查报告涵盖了项目和代码库的诸多方面,这项深入的审查工作正在进行中。

在项目向前推进以完成更多发布阶段的同时,审查过程将继续跟踪卡尔达诺软件构造的开发和工程实践。审查没有规划结束日期,我们打算至少让审查持续至路线图中所描述的完全去中心化和功能等项目核心目标实现为止。不久将提供关于最新公开审查报告发布以及正在推进的公开发布流程的最新情况。

但是现在,我们想分享一件令卡尔达诺基金会激动且热衷的事情——扩充审查举措,即补充和扩展现有流程。我们认为,此举将为卡尔达诺社区和Haskell社区产生深度价值。

卡尔达诺Haskell程序库依赖项审查

软件虽然可以使用最高审验标准进行设计和开发,但仍然容易因其程序库依赖项中的代码而受到漏洞的影响。因此,在正在推进的审查过程中,我们已将这些程序库依赖项确定为审查重点。本文将进一步阐述软件程序库及卡尔达诺代码库中特定程序库依赖项的重要性。

从广义上讲,软件程序库指被许多项目共用的资源(代码和文档)的集合,用于通过一组定义好的接口实现通用功能和行为。构建程序库旨在为多个独立程序提供可重用组件,并通过促进代码的分发来鼓励以模块化方式共享代码。

这种模块化的软件开发方法已经非常成熟,是开源软件开发过程的重要组成部分,可以通过协作开发和众包专业知识提高效率、安全性和互操作性。

虽然软件程序库的使用不限于开源软件项目,但程序库的使用与开源软件运动之间的关系正在不断加深。卡尔达诺基金会支持开源软件举措,从根本上与这种开源理念保持一致,并努力支持强化该举措的工作。

程序库维护是这一持续改进过程的重要组成部分,是必需要做的工作,这样便可解决BUG,开发新功能,通用代码可随编程语言一起演进。

一般而言,会有各维护人员来对程序库进行定期打包维护,在某些情况下,正式监管机构可会监督程序库的维护情况。各维护人员负责处理各个问题,同时通常有权单方面对程序库做出决定。

这提出了一个问题——程序库应该如何维护以及最佳做法是什么?

现如今,开发人员需要针对特定问题确定使用什么程序库合适。FP Complete进行的代码审查工作包括分析和评审程序库是否合适,方法为识别冗余或重复的解决方案,突出不必要依赖项的使用,评估程序库成熟度,审查程序库维护质量和频率以及跟踪任何未解决问题。

除了这种高级别分析之外,FP Complete正在进行一项单独的正式审查,即对这些程序库及其潜在漏洞进行全面的代码审查。这包括自动化测试实践、人工代码审查以及运用Haskell中现有的静态分析工具(尤其是编译器本身!)。随着这些审查工作推进,非常期待FP Complete团队就其所采用的部分技术与我们分享更多。

Cardano-sl代码库中目前有超过372个单独的程序库依赖项正在接受审查,这属于代码审查的一部分。

因此,FP Complete进行的代码审查提供了一个独特的机会来审查在Haskell社区得到更为广泛使用的程序库和代码,在某些情况下,代码审查涉及同一个程序库的多个版本。

随着FP Complete继续更有针对性地审查卡尔达诺的开发工作,作为对Haskell社区和广义开源软件运动的承诺,卡尔达诺基金会将与FP Complete联合发布审查各种Haskell程序库(Haskell Libraries)的定期审查报告。

我们希望发布的这些审查报告能够让Haskell开发者社区的更多人受益,鼓励大家围绕常用代码展开公开讨论,并帮助支持和鼓励建立一个从安全和安全性角度审查依赖项的流程。

上述审查报告中的第一份报告可以在cardano.org此处上获得,此报告将审查提供高性能、纯二进制序列化的Haskell二进制包

二进制包也是最常用的Haskell本机编译器GHC中的核心程序库之一,因此广泛用于Haskell社区,具有深远的意义。卡尔达诺项目在以下方面使用二进制包:

随着卡尔达诺基金会继续为更广泛的区块链社区服务,我们希望通过提供这些额外的程序库审查报告,我们不仅可以看到强化和保护卡尔达诺项目的直接好处,而且还可以为Haskell和函数式编程社区做出强有力的积极贡献,函数式编程社区为卡尔达诺项目提供了基础工具,以建立一项强大而安全的公有区块链技术,从而造福所有人。

LATEST FROM AUTHOR