首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链入门技术与发展趋势

关注一下跟着时代步伐走,插上魔鬼的翅膀飞!

全球区块链资讯网专注于全球区块链领域最新讯息、行情、政策等,旨在传递科学的区块链讯息,打造权威的行业领军咨询平台。

根据最新区块链相关职位对求职者的技能要求数据显示,技术类人才需要除了掌握常用开发语言外(C++,Java,Go),还需要对密码学、共识算法、超级账本、智能合约等有足够了解。

Go语言

Go语言(Golang)是谷歌2009年推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:“我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。”

除比特币是由C++开发以外,目前最主流坊的客户端均有go语言开发,足以可见Go语言在整个区块链行业的地位。

C++

C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及UNIX 的各种版本。

C++是一种使用十分广泛的计算机程序设计语言。它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。

大多数的区块链企业都选择用C++编写区块链的底层,最著名的有比特币、ripple等,主要体现的是强计算性。

Java

Java由詹姆斯·高斯林等人于1990年代初开发,是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

Java不同于一般的编译语言或解释型语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性。而区块链项目的开发,对Java有着明显的依赖性。

Python

Python,是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆 创造,第一版发布于 1991 年。

作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++ 或 Java,Python 让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。

而在区块链项目中,bitcoin库是Python特色,从入门角度相比C、CPP等语言具有更强的代入感。而当前以太坊(Ethereum)的Python实现也成为主流之一。

系统架构

系统架构师(SystemArchitect,简称SA或SAr),是在信息系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施的人。

他们(与系统分析师共同)确立系统的主体架构和实现方向,并负责指导软件工程师等开发人员的编码开发工作。这在区块链行业明显是不可或缺的。

以太坊

以太坊(Ethereum)首次在2013至2014年间由程序员VitalikButerin,受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”。他是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”EthereumVirtual Machine)来处理点对点合约。

以太坊具有四种专用语言: Serpent(受 Python启发)、 Solidity(受 Javascript启发)、Mutan(受Go启发)和LLL(受Lisp启发),都是为面向合约编程而从底层开始设计的语言。

Linux

Linux,通常被认为是一套操作系统,实际上它是一系列 Linux内核基础上开发的操作系统的总称。日常所见比较多的 Ubuntu、企业常用的 centos其实都是 Linux系统,包括我国自己的中标麒麟系统其实也是基于 Linux内核搞出来的,都可以视为Linux系统大家族的成员。

2015年Linux基金发起推进区块链数字技术和交易验证的开源项目。

hyperledger

超级账本(Hyperledger)是linux基金会下的众多项目中的一个。是由IBM、因特尔,还有金融公司,GP摩根以及其他联合机构于2015年提出来的区块链项目。

超级账本主要包括4个框架项目:Sawtooth、Iroha、Fabric、Burrow。其中广为人知的是Fabric。

JavaScript

JavaScript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。

JavaScript是一种可以被浏览器解析的解释型脚本语言。也就是说,作为脚本语言的JavaScript不需要编译过程,就可以直接执行。

例如lisk就用的纯JavaScript来编写,以及ASCH等。

Node.js

Node.js 教程简单的说Node.js 就是运行在服务端的JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Nodejs平台强大的网络编程能力,对区块链的影响也是不可估量的。

不管是什么语言,区块链技术开发其实不需要掌握某种新的技术,不过是在现有技术的前提下,在新的逻辑框架中实现新功能。但是并不是说一个拥有10年经验的高级技术专家,就一定能在区块链开发中成为佼佼者。区块链技术开发需要的是既有扎实的技术,还能有区块链的思维和实际应用经验,这才真正是企业需求的人才,区块链开发人员前进的方向。

区块链技术最新的理论和实践进展

随着社区的繁荣,研究的深入,不同应用蓬勃发展,对于区块链技术的局限有了更深刻的认识,在此基础上,针对区块链的一些不足提出了很多解决方案,主要集中在共识机制,性能,隐私和安全,治理机制和跨链技术等方面。

首先来看共识机制。共识是各方对某种陈述达成一致的过程或结果。在博弈论中,每个人都知道的信息称为共有知识,仅是共同知识的一个层次。共同知识还要求每个人都知道别人也知道的信息,以至每个人都知道其他人知道,并且相互认同。以安徒生童话《皇帝的新装》为例,在小孩戳破真相之前,每个人都知道皇帝是裸着的。但这是共有知识,不是共同知识。

区块链技术通过信息广播,交易签名,投票表决的方式,可以巧妙地将共有知识转化为高阶的共同知识。其中,节点签名并广播起到了让其他人知道我知道并认可该区块,从而达成共识获得共同知识的作用。在比特币中,其规则“最长链是全网的有效链”即是一种共同知识,矿工作为经济理性人使用该共同知识来支持高阶信念,对其他矿工的决策进行猜测,最终形成纳什均衡。

有后继研究认为,中本聪原始论文中51%的安全算力假设是有问题的。自私挖矿策略的存在使得比特币的理论安全阈值下降。自私挖矿简单说就是,挖到块后不发布,继续挖,如果挖到第二个块,这时再发布出来。如果在挖第二个块的过程中,有别人挖出的其他块被广播出来,则立刻广播自己之前挖到的块。经过理论测算,如果一个矿工有1/3的算力,则自私挖矿是有利于自己的。因此,基于掌握的算力份额大小,大小矿工的影响力是不同的,需要用新的计算模型求解博弈均衡点。

分布式系统的共识算法研究由来以久,上世纪80年代就开始研究,Lamport提出的Paxos以及后来在此基础上发展出的各种BFT拜占庭容错算法皆属此类,其核心在于通过节点投票达成分布式系统的状态一致性。比特币另辟蹊径,在技术之外叠加经济激励,以共识机制保证系统状态的全局一致。

古典共识机制的问题在于,一旦参与投票节点数量增加后,其共识效率会大幅下降以至于无法使用;中本聪共识机制的问题在于浪费大量能源以及交易确认时间长。

康奈尔和麻省理工的研究员提出了将中本聪共识和BFT类共识进行有机结合的混合共识方案,是一个新的突破方向,有可能兼具两者优点,避免各自缺点。目前这方面的研究还在持续进行中。

技术改进的第二个方面是在隐私和安全方面。在公有链中,需要对交易数据、地址、身份等敏感信息进行保护,同时又能让记账节点验证交易的合法性;对于联盟链,在构建隐私保护方案的同时,需考虑可监管性/授权追踪。可以通过采用高效的零知识证明、承诺、证据不可区分等密码学原语与方案来实现交易身份及内容隐私保护;基于环签名、群签名等密码学方案的隐私保护机制、基于分级证书机制的隐私保护机制也是可选方案;也可通过采用高效的同态加密方案或安全多方计算方案来实现交易内容的隐私保护;还可采用混币机制实现简单的隐私保护。

最近比较有趣的一个趋势是,代币持有者投票的链上治理机制再度作为多目标决策机制兴起。代币持有者的投票有时会用来决定运行网络的超级节点由谁操作,如 EOS、NEO、Lisk 等系统中的委任权益证明(DPOS)机制;有时用来对协议参数进行表决,比如(如以太坊的 Gas 上限);有时用来进行表决或直接实行批量协议升级,如Tezos。在这些例子,投票都是自动进行的,也就是说,协议本身包含了更改验证程序集或更新其自身规则所需的一切逻辑,而且是根据投票结果来自动进行。

链上治理通常被认为具有以下几大主要优势。首先,与比特币所倡导的高度保守的理念不同,它可以迅速发展并接受必要的技术改进。其次,通过建立一个明确的去中心化框架,可以避免非正式治理上的已知缺陷,人们觉得非正式治理太不稳定,又容易出现链分裂,或是变得在事实上过于中心化。最后,链上治理有利于确保流程的贯彻执行,从而提高协调性和公平性,也允许更快的决策。

但代币投票机制饱受诟病的一点是,无论这些机制在何处尝试,其投票者参与度会往往很低。投票参与度低引发了两个问题。首先,投票要取得合法性认可比较困难,因为它只反映了少部分人的意见。其次,仅持有一小部分代币的攻击者就能够左右投票。

此外,有些人认为,链上治理存在风险,因为元系统一旦确定就难以再改变。正如直接写入的代码一样,一旦有缺陷,就会更快也更容易地被利用。同时,链上治理让普通节点运营者对治理的参与变得毫无必要。这使得普通节点运营者无需做任何决定,而只是遵循链上流程所做出的决策。那么当出现财阀式的少数人链上治理时,普通用户利益将会被不相容,有悖公有链的价值观。区块链属于公众,为了公共利益服务。它不是为了让加密货币大户变得更加富有。区块链并不应该由谁来占有,更不用说一小部分超级富豪了。因此,有人反对链上治理。

总体看,关于链上治理机制,仍处于争议和探索的过程中,尚未有统一的意见,需要我们进一步关注和研究。

——THE END——

小编语: 梦想还是有的,万一实现了呢!

上图点击进群哦!

为了方便交流,请扫上方二维码 “3点钟区块链&全球区块链资讯网001 ”

定期组织嘉宾分享,交流行业干货。

欢迎大家踊跃参与话题互动。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G1VVEU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券