高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

函数式编程能否支持更高效的区块链基础设施?

  • 2018-11-24
  • 本文字数:2843 字

    阅读完需:约 9 分钟

函数式编程能否支持更高效的区块链基础设施?

如果说区块链技术令人神往,那恐怕还有点保守呢。现在,已经部署的区块链项目已经有几百个,并且还有数百个项目将在未来几个月推出。随着各家公司开发更先进的区块链基础设施及应用程序,区块链技术的未来将变得一片光明。


在区块链平台开发中使用的一些最著名的编程语言是面向对象语言。到目前为止,像 C++、Python 和 Ruby 这样的编程语言在区块链场景中占据主导地位。


如果按照最近的发展来看,函数式编程语言是一股不可忽视的力量。它们提供了区块链技术独特的功能,有助于它们展示出重要的比较优势。


那么,目前用于开放区块链协议开发的有哪些函数式编程语言?在此举几个例子。


函数式编程语言

OCaml

OCaml 是经过时间考验过的函数式编程语言。它拥有静态类型的系统,有助于消除运行时错误。相比 C#或 Java,用 OCaml 编写的程序通常启动和运行速度更快,并且消耗的内存更少。


除了支持链接到 C 基本类型的外部函数接口之外,OCaml 的其他功能包括一流的语法闭包、参数多态、异常处理、尾递归和模式匹配。 还有用于自动内存管理的垃圾收集器功能。


Haskell

Haskell 是基于 lambda 演算的纯函数式编程语言。它具有用户友好的语法、一系列广泛的物理库和用于教育和支持的绝佳资源。不了解它的开发人员进行原型设计时,这些能起到重要的参考作用。


Haskell 还拥有一流的工具、声明式和静态、强类型。在构建高性能应用程序时,这些特性让 Haskell 成为一个很好的选择。


Erlang

Erlang 是一种函数式编程语言,用于构建分布在计算机网络上的强大的程序系统。它已经在通信行业中使用了 30 多年,目前 90%的互联网流量会经过由 Erlang 控制的节点。作为一种函数式编程语言,它更注重表达式的评估。表达式使用函数来获取基本值。


在支持多线程方面,Erlang 比任何其他编程语言都早。它提供垃圾收集、使用虚拟机,并具有模式匹配,用它可以写出简洁清晰的程序。Erlang 为 C、C++和 Rust 等其他编程语言提供了接口。


Erlang 被认为是一种优秀的语言,尤其是在开发有如下要求的后端系统时:


  • 大量的并发活动

  • 实时响应

  • 不间断运行和容错


现在,你对函数式编程语言有了一点基本了解了,我们来看看是什么让它们这么适合区块链。


函数式编程语言的优点

不变性


通常,函数式编程语言没有可变变量,一旦赋了值,就不能改变。这让代码行为更容易预测,并且减少了系统错误的数量,从而提高了系统的稳定性。


容错


容错是指即使出现错误,系统可以继续运行。有些函数式编程语言(如 Erlang)默认具有容错功能。


易于并行化,高度分布式


函数式编程语言可以让你创建高度并行化和高度分布式的系统。用于迭代的内置函数(如 map 和 reduce)在区块链开发中发挥作用。


虽然还有很多优点,但我们来深入研究一下更有趣的内容。你听说过包含函数式编程的区块链吗?请继续阅读我们的文章。


用函数式编程的区块链协议

Tezos

Tezos 是一个区块链项目,旨在提供“世界首个‘自我修正’的加密货币”。它是一个自治的、去中心化的区块链平台,使用链上治理,会随着时间的推移帮助自己升级协议。用替代的委托股权证明(Delegated Proof-of-Stake,简称 DPoS)方法达成共识,被称为液态股权证明(Liquid Proof-of-Stake)。


Tezos 在 OCaml 中实现,OCaml 是一种函数式编程语言,提供快速、明确的语法和语义以及生态系统,使 Tezos 成为正确性形式证明的良好选择。形式验证,即开发人员能够用数学方法证明其智能合约代码的准确性。


Cardano

Cardano 是去中心化、基于区块链的开源平台,使用被称为 Ouroboros 的股权证明(Proof-of-Stake)数学计算。Ouroboros 可以通过代币拥有者的投票来形成共识。


Cardano 区块链是用 Haskell 编写的,使用了具有强大静态类型和正式规范的纯函数式编程语言 Plutus 来定义其智能合约。Plutus 的语法和 Haskell 的类似,但是与 Haskell 不同,该语言受到了热切的评估。


æternity

æternity 是基于区块链的平台,包含智能合约和去中心化应用程序。类似 Tezos 和 Cardano,æternity 协议是用函数式编程语言 Erlang 编写的,其智能合约语言 Sophia 也是函数式编程语言。


Sophia 是属于机器学习的编程语言。它缺少任意可变状态,但是每个合约实例的状态形式是有限的。它是一种强大的语言,可以指定和自动证明智能合约的属性,使之非常适用于高价值、系统关键的智能合约。


除了 Erlang 之外,核心协议中还包括一些技术特性,使æternity 脱颖而出。


状态渠道——该技术用于显著地改善交易和智能合约的扩展性,方法是通过把交易和智能合约从更慢的主链上移走(离线链)。除了可扩展性外,状态渠道的额外优点是提高了隐私性,因为参与渠道的所有各方之间的交易或合约保持隐私性。此外,因为用户之间的所有互动都是私密的,所以智能合约和交易可以并行执行。


Bitcoin-NG——为了提高移动去中心化应用程序的可用性,主链的交易速度也必须提高。在æternity 中,这是通过实现 Bitcoin-NG 来实现的,Bitcoin-NG 是下一代共识协议,在保持系统去中心化的同时,可以更快**地进行交易。


命名系统(Naming System)——集成的命名系统也是æternity 的一部分。任何地址、智能合约或 Oracle 数据库都可以拥有一个人类可读的名字,而不是一串数字和字母,这和大多数区块链平台的情况一样。这改善了用户友好性,并有助于智能合约开发人员。


集成的预言机——在æternity 区块链上,任何 AE 用户都可以托管和使用带有一组特别交易的预言机。预言机报告真实世界里的事件,为智能合约提供信息。这提高了智能合约的效用,并充分实现其完全破坏性的潜力。


区块链治理—— æternity 实现了一种股权证明变体,允许 AE 代币用户正式表达他们在任何主题上的观点。任何 AE 用户可以用他们的 AE 余额签署交易来提出问题或回答问题。可以委托。 æternity 的治理体系类似于一种在区块链中实施的流动民主。投票结果向开发人员表明,社区在不同主题上的观点,包括基本的系统变量,如区块大小、区块奖励或区块时间。投票结果不具有约束力,但具有形式上具有象征意义。


工作量证明挖矿——与很多新的区块链平台不同(那些平台实施有争议的治理机制,建立了股权证明共识),æternity 依赖于经过验证的工作量证明方法。


如果你对 æternity 背后的团队感兴趣,可以了解一下:该项目得到了 Erlang 和区块链社区中一些最有经验的开发人员的支持。Erlang 的共同创始人 Robert Virding,和开源 Erlang 社区最多产和知名的成员之一 Ulf Wiger,以及世界级的区块链开发者 Sascha hanse 都是æternity 团队中的成员。在该运动最前沿的是创始人 Yanislav Malahv,由于一开始就参与该项目,他被看作是以太坊的教父。


结论

函数式编程语言正在进入区块链世界。它们的特性使它们能够独特地适合分布式分类账协议和智能合约的开发。区块链领域内外技术最先进的一些项目转用函数式编程,以获得可扩展性、稳定性和容错性。关注区块链技术的开发人员绝对应该要考虑探索一下函数式编程。它很有可能是最实用的智能合约平台的基础。


阅读英文原文:Advantages of Functional Programming for Blockchain Protocols


2018-11-24 09:001162
用户头像

发布了 199 篇内容, 共 74.8 次阅读, 收获喜欢 289 次。

关注

评论 2 条评论

发布
用户头像
作者落后了, clojure 是现在最火的函数式编程语言
2018-11-26 09:40
回复
没有更多了
发现更多内容

程序员成长第七篇:面试中需要注意的事项

石云升

面试 招聘 2月春节不断更

Electron 多进程方案

将儒

Electron 多进程

抽奖助手小程序 发起抽奖用例

Shine

产品

从文字中找回年味儿

熊斌

2月春节不断更

产品经理训练营第四章作业(一)

新盛

产品经理训练营 Week4 作业(待完善)

Mai

产品经理训练营第四周作业

产品经理训练营

倒排索引 Inverted Indexes

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

作业

云随心

作业

【STM32】1.44寸TFT液晶屏显示字符、汉字和图片

AXYZdong

硬件 stm32 2月春节不断更

产品训练营-第四次作业

Geek_娴子

第四次作业及总结

青葵

学习

香烟缭绕的岁末

ITCamel

Java反射--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

JavaPub

Java 面试 反射 java反射 javapub

业务中台建设 - C端用户中心

孝鹏

中台架构 用户

漂亮壁纸

小马哥

七日更 二月春节不断更 壁纸

百度闯关,照见互联网巨头造芯之路

脑极体

产品经理训练营 - 第四次作业

Jophie

产品经理训练营

机器学习·笔记之:

Nydia

编写优雅Javascript代码的最佳实践

devpoint

js 纯函数

0期产品训练营-第4周小结

skylar

【LeetCode】字符串的排列题解

Albert

算法 LeetCode 2月春节不断更

LeetCode题解:297. 二叉树的序列化与反序列化,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

6. Python 元组,不可变的列表,滚雪球学 Python

梦想橡皮擦

Python 2月春节不断更 python入门

CNCF 2021年展望:外围有亮点,核心还有硬仗

杨明越

产品经理训练营第四章作业(一)

猫。

产品经理训练营第四次作业

庞玉坤

产品经理训练营-第四周作业

羽室

给自己的新年指南

boshi

七日更 新年

前端冲刺必备指南-执行上下文/作用域链/闭包/一等公民

我是哪吒

面试 大前端 编程语言 2月春节不断更 二月春节不断更

香,聊聊TiDB的分布式事务模型

君哥聊技术

分布式数据库 TiDB Percolator

函数式编程能否支持更高效的区块链基础设施?_区块链_æternity团队_InfoQ精选文章