Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

介绍几款编写Nodejs的编程语言产品

kekeya
145 0 0
很多小伙伴习惯于结合自己的技术背景来理解Nodejs的架构设计。下面将结合具体的编程语言简单介绍几款产品,以供参考。3 _; U+ D+ m3 |5 J1 J0 f
% }' v, l: q; }+ m
    1.C/C++
6 e" {2 f8 w4 }! O% @: l: d6 _4 {! o' R$ p7 m- ]# L
    这两个语言是无法逾越的,任何开发如果遇到瓶颈,基本上都会找到它们,自然应该排在第一一位来介绍。同时,区块链技术的鼻祖,比特币(协议层)就是用C++语言开发的,而且到目前为止,没有比比特币更加成功的区块链产品了。所以,无论你使用什么语言进行开发,在正式进入这个行业之前,都应该先研究一下比特币。
$ M! D: S3 B- Q% i6 O2 J. {0 P' y
6 i. O9 n/ a" W  t& L3 C1 k. O) m    比特币官方客户端钱包使用的是Qt,第三方钱包有Python语言开发的,特别是第三方整理的开发库(API包)很多都是Node.js设计的。比特币的架构与上面的架构设计基本相同,另外,因为共识算法采用的是工作量证明机制(ProofofWork,PoW),因此还有一些特殊的“挖矿”的过程。
" k* v7 D0 m2 C8 O; l3 N. K1 `0 |1 s- Y* X, q/ h( A. Q5 ]( h. D
    其他竞争币都是直接来自于比特币的分支,所以编程语言是相同的,具体的技术选型和技术实现上可能会有所改进,比如:莱特币使用了其他的加密算法。
0 Z3 }0 I' B! a# ?. t
% s  ?5 w8 J& K7 O% ~    官方网站:htps://bitcoin.org/
. u( m  e9 b# D7 k1 a* S! [5 }- ^! J& [! Z# R, ]5 h& }) Y
    源码库:https://github.Combitcoin; O1 o' e" R+ _0 d" W/ R/ v( J3 R

. N- K1 ~9 r( ]" P! K    2.Nodejs/JavaScript) i* H% _* c0 e7 T
* i+ G8 j7 u$ w: k
    Nodejs平台拥有强大的网络编程能力,再加上JvaScript脚本语言简单快捷,因此在区块链领域自然少不了它们的身影。
( j# \/ h1 a8 x! O1 V. F4 Q/ \! p( d9 |
    亿书便是这样一个区块链产品,亿书币是它的协议层,使用了著名的ExprsS开发框架,基于HTP开发而成。同时,它采用了授权股权证明机制(DPos),算法上的改进让它在处理交易时更加轻量,处理能力得到大大提升。同时,它提供了强大的协作机制,为数字出版,版权保护提供了便利它扩展了倒链功能,可以基于它开发任何去中心化的应用,从而为专业作者、博客爱好者和开发者提供了很多方便。从区块链基础概念到代码实现,从基本原理到开发设计思路,都将进行比较详细的探索。
7 S3 w" J  J6 m$ h! B7 x' E% q, W7 a. ?& ^' m! k$ S
    官方网站:http://eboookchain.org/
: k+ q' x$ {6 z0 p' s+ w6 I- d) [; f7 g. V! c! S; h/ m
    源代码:http://github.com/Ebookcoin
: n# s# U! g1 G; ~
9 M: o, [8 R9 l/ v    3、python9 k( Q$ B# A! f* {1 u
, t9 ?0 D4 i) f0 n& M
    如果您是Python语言爱好者,那么建议研究下以太坊(Ehereum)的Pyhon实现,尽管以太坊因为“TheDao”事件闹得沸沸扬扬,但从技术实现的角度来说,其仍然值得参考学习。# y$ F% N5 U! a! V# V
& P; M& J5 ~- V' v
    以太坊官方定位为一种开发管理分布式应用的平台,主攻方向就是“智能合约”,并为其指定了一种编程语言Solidity。以太坊的核心是以太坊虚拟机(EVM)。允许用户按照自己的意愿创建操作。以太坊给出了Go、Java、Python等多种语言的实现。
7 t; u' D) O2 g; Z+ s$ t8 r$ G+ s7 R/ J7 b1 M. a9 P
    其中以Python为基础的实现主要包括三个部分:
) a- A+ ?8 `$ ?$ u) Q) l- }! y4 @! W! b0 e$ q
    Pyethapp是客户端部分;Pyethereum是核心库,实现了区块链、以太坊模拟机和“挖矿”等功能;
1 L- [9 e( \" a' E& q) K3 e4 u% C3 `7 B. f
    Pydevp2p是点对点网络库,实现了节点发现、合约代码传输、加密签名等功能这三者组合在起就是完整的区块链实现,后面两个核心库共同组成了协议层。另外,go-ethereum是Go语言的完整实现;Ethereum(J)是纯Java实现,它可以嵌入任何Java/Scala项目。客户端方面还有Rust、Ruby、JavaScript等语言的实现。
" s% {, [9 |2 I# h# r, S7 O5 ]2 W$ [0 m3 D" H7 c- ~- y/ w
    官方网站:https://ethereum.org/  l  J$ K; ~$ l9 n" ^  x
0 K9 `$ ~: u! X/ a- P  |
    源码库:https://github.com/ethereum/pyethapp3 H9 n' e' K9 ^, o! b0 m
7 ]* c, j9 k* i6 q
    4、Go
7 S/ `0 G3 k2 u! t8 ]) _( k5 o4 N
2 t9 u) c' u- W3 _# u    在多核时代,Go语言备受喜爱,它可以让你用同步的方式轻松实现高并发,特别是在分布式系统、网络编程等领域,其应用非常广泛。所以,在区块链开发领域,也有很多使用Go语言开发的项目。其中,由Linux基金会主导的超级账本(HyperLeger),版本库的名字为Febric的就是其中一个。
( l( q% [4 w9 Q
. N# n  l2 k) C/ [2 @& k; ]    该项目试图为新-代的事务应用创建一种开放的分布式账本标准,支持许可式区块链(这种方式可能无法再现比特币那种强大的网络效应)。Fabric的开发环境建立在VirtualBox虚拟机上,部署环境可以自建网络,也可以直接部署在BlueMix上,' ]5 _' f- X; N/ j: W2 z% S- Q3 D
$ d, e* ]* j9 u4 P' H) R' o, Y
    部署方式可docker化,支持用Go和Javascript开发智能合约。它采用的是PBFT分布式算法,网络编程方面采用的是gRPC来做P2P通信,使用ProtocolBuffer来序列化要传递的数据结构,在架物设计上,Fabric可能与比特币等区块链产品有所不同,但上述的基本组成部分还是不可或缺的。
: Y4 G& I4 b8 K  x' c4 B7 |9 E, F$ d0 R$ [" A" |% _1 j2 _/ _+ T
    官方网站:https://www.hyperleger.org// Y4 d9 F+ v! D$ {5 i3 `
3 A1 T. R' P8 Z& e
    源码库:https://github.com/hyperledger
, o# [8 C+ I  x* o/ w7 L* p: q( D' G) e% h
    其他编程语言,比如C#等,也有具体事例,这里就不再列举了。总之,针对不同的编程语言,在具体的编码或架构设计上可能会有所差别,其差别甚至会很大,但是协议层所使用的技术并没有太大的变化。其中,网络编程是重点和难点,多数没有现成的框架可用,都是使用编程语言自身提供的库来进行设计和开发,所以比较底层,非常考验开发者的编程功底。; O7 K+ ^6 E7 Q: V

; Y. U- [, |. Z4 s# m+ i8 T3 W    区块链相关知识:
7 \* |; G2 {  }9 z  `* b, H  i3 O+ x; B- |
    1、基础知识
. d( G" h. q9 P  H, e5 L4 L
/ s" k7 o$ s: {4 l    区块链是新技术,与之相关的是其背后大量的新概念、新理论。这些知识虽然不直接体现在编码里,却是理解区块链、掌握区块链技术的基础知识,所以理当成为区块链技术不可或缺的一部分。这部分从基本概念入手,到工作原理的描述,基本能够将区块链的基础知识全部覆盖。学习区块链开发技术,首先要学习掌握这部分内容。+ v1 S. S* a' g$ |7 h
, B# ]1 E# P9 r1 D  b. {# U
    2.技术实现( `: t+ F) n# _+ K) h

/ K7 b$ z* O, w1 m3 H' o( c8 I8 S2 n    区块链是一项技术,但从上面的分析可以看出,它应该是一种架构应用,架构的实现理当是区块链技术实现的核心。正如大家所看到的,任何一款区块链产品,协议层必须包括点对点网络、密码学、数据储存和分布式算法4个部分,应用层也必然要提供钱包、客户端浏览器等基础应用。9 m6 {& s( N% F) _

: }& `9 @) w/ U    对于扩展层部分,区块链技术可以对接各种应用,比如金融、物联网、网络安全、版权保护、电子商务,等等,现有的很多技术都可以用在这里。只不过,如何与区块链结合,如何实现跨行业使用,自然是这部分内容研究的课题。所以,多研究和学习几款这样的开源产品,对提高自己的编码能力是很有帮助的。
3 u  O% z# P0 a' ]
2 X/ ?0 M4 c/ h    3、开发环境% b; }* K3 t: q# C0 f' E" e
4 I' S/ g1 W. S4 y3 {$ j* k# M
    区块链是多项技术的组合,有其自身的复杂性,个别应用对开发环境的依赖较大,开发工具与环境搭建是让开发者快速上手的重要内容。
  K3 a4 \, T- Y* t5 m+ D5 h8 ?7 k- G7 V! K* j
    4、项目实践
. E2 [" w3 u# S/ M! P& i$ v  S' g8 ?/ b3 Q2 k3 J# p! d9 L# j: U
    据说,短短数年,全球区块链产品已经达到了几千个,其中不乏创新应用。很多优秀的开源产品和项目实践就是最好的学习研究资料。
. P. U, o9 |3 M. {0 ]4 j6 [9 y" `! h% w0 D, {3 C& q
    5、开发文档
+ S! r5 ?2 t6 X; V% {! N& W, ~3 ^% R
    这个自然就不用多说了,每一种产品都会有自己的开发文档。此外,它是有心的开发者整理汇总的一些资源,可以帮助他们节省很多查询的时间。+ t7 f$ x1 i9 r1 i
& j! i6 O) a7 B
    在考虑这个知识体系的过程中,主要思考的是,读者循着这些标签去查阅文章,能否快速掌握区块链技术,并最终上手开发实现一个区块链产品。另外也刻意规避了与具体编程语言以及特定领域相关的词汇,唯一可以区分的就是这些节点之下对应的文章标签。所以,这些分类就显得非常中性。
3 l5 n: f4 ~- N4 b, d/ b1 J% y* X+ Y! y7 P3 `6 Z; n( G
    另外,随着区块链的发展,新概念必然层出不穷,若按照具体的实现进行分类,这个图谱就需要不停地修改下去。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

kekeya 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    2