Node.js区块链开发 随笔

本书主要讲述了区块链的基础一集js开发工程师如何开发区块链,不仅仅是互联网思维,调用api文档进行开发,而是在基础之上进行的拓展式的开发。

本书主要讲述了,加密货币的一些特征,以及node.js的基础,服务启动如何与链进行交互,以及node.js在区块链技术领域的调查描述,并进行了案例示范,其次对源码进行解读。从架构设计的角度,层层剖析区块链的设计原理,深刻解读相关概念和技术。从项目设计的角度谋篇,从项目入口程序出发,介绍了亿书项目的整体结构,分别介绍了P2P网络、加密解密、签名和多重签名、区块链、共识机制等区块链核心内容及其代码实现。还详细介绍了加密解密技术,函数式编程等编程方法论。让开发者更好的开发和应用区块链技术,帮助开发者从更深层次写代码。

 开始看本书本来当作工具书查询的,源码解析很清晰,对于开发者来说,代码实战比文字说明要来的清晰明了,从最基础的服务开始,监听端口启动服务,进行模块依赖,npm包的安装,对于新手来说十分的友好,可以当入门node.js的一次实践,由浅到深,js开放工程师可以渐进式的学习区块链的知识,无论是去中心化的还是中心化的项目都可以得心应手。

 从本书来说,首先了解概念,区块链。分布存储:区块链处于P2P网络之中,无论什么公链、私链,还是联盟链,都要采取分布式存储,使用一种机制保证区块链的同步和统一,公开透明,每个节点都有一个区块链副本,区块链本身没有加密,数据可以任意检索和查询,甚至可以修改,无法篡改。这是加密技术的巧妙应用,每一区块都会记录前一区块的信息,并实现验证,确保无法篡改。这里的无法篡改不是不能改,而是局部修改的数据,无法通过验证,要想通过验证,必须修改整个区块链,这在理论上可行,操作上不可行,区块链是公开的,从任一区块都可以向前追溯,直到第一个区块,并通过区块查到与之关联的全部交易。存在分叉,这是由P2P网络等物理环境,以及软件开发实践过程决定的,人们无法根本性杜绝。区块链的设计,确保本地区块链合法,未被篡改,处理新区块。加载后,该节点就可以处理网络中的交易了。同步区块链。确保本地区块链与网络中完整的区块链同步加密货币的概念,加密货币首先是一种数字货币。早在比特币出现之前,“数字货币”、“虚拟货币”、“电子货币”等就已经出现了,特别以“虚拟货币”居多,最简单的理解就是“货币数字化或虚拟化”。这里的货币是现实的法币,比如美元、人民币,数字化就是不用拿钞票,直接通过网银、支付宝等就可以支付。后来,在游戏平台,最早提出了游戏币的概念,通过法币直接兑换,然后,玩家使用它购买各种装备道具。接着,很多网站也推出了各种币,通过游戏的思维,用以吸引用户。这些所谓的数字货币,最直观的解释,其实就是“代币“,这些“代币“同样具有价值,有根据P2P网络,没有发行机构,总量基本固定,加密,电子通货等特点。

 其实这些加密货币也同样具有价值,目前市面上的交易所有法币交易和币币交易,去中心化的和中心化的,诠释了这些货币市场的交易。因为共识机制,多个节点,所以有着非常高的可靠性,Pow工作量证明机制,就是“按劳取酬”,挖矿难度自动调整、区块奖励逐步减半等,这些因素都是基于经济学原理,能吸引和鼓励更多人参与。但是也耗费电力,是对能源的直接消耗,,算力的提供已经不再是单纯的CPU了,而是逐步发展到GPU、FPGA,乃至ASIC矿机。用户也从个人挖矿发展到大的矿池、矿场,算力集中越来越明显。这与去中心化的方向背道而驰,渐行渐远,随着奖励减少,挖矿的成本高于挖矿收益时,人们挖矿的积极性降低Pos就由此产生,在创世区块内写明了股权分配比例,之后通过转让、交易的方式(通常就是IPO),逐渐分散到用户手里,并通过“利息”的方式新增货币,实现对节点的奖励,诠释了去中心化,节能,避免紧缩,但是只能通过IPO的方式发行,信用基础不够牢固,因此采用PoW+PoS的双重机制,通过PoW挖矿发行加密货币,使用PoS维护网络稳定,DPos社区选举的授权股权认证就产生了,能耗更低,更加去中心化,更快的确认速度比如EOS,有超级节点选举。

区块链可以简单的分为三个层次,协议层、扩展层和应用层,应用层包括,客户端,交易网站,第三方扩展BTC ETH EOS进行的币币交易法币交易,扩展层包括智能合约各种侧链应用,B/S架构的产品中的服务端,以及一些文档图片视频的储存,协议层又包括网路层和储存层,网络层包括通过挖矿网络保证节点安全的出块,储存层则是储存区块,用到的技术有网络编程、分布式算法、加密签名、数据存储技术。

因为职务是前端工程师,js肯定是最熟悉的语言,也因为Nodejs平台强大的网络编程能力,先下载node.js安装包,npm install koa2 pm2,使用pm2就可以快速起一个服务,pm2的简单实用,无论是调试还是线上,都可以自动重启,对项目进行路由拆分,然后就可以提供接口了,简单的后台就搭建好了,还可以提供静态资源的服务,就可以用来开发一个简单的p2p网路服务,设置Access-Control-Allow-Origin为*,允许所有的客服端使用,这样,对于编写接口进行实现,一个简单的后台就实现了,本书也有很多关于node.js运行机制数据流,异步操作,捕获异常。作为简单的p2p网路首先要做的是初始化节点,在没有其他任何节点信息的情况下,仅仅靠网络扫描去寻找其他节点,将是一件很难完成的事情,在配置文件里面config.json进行节点配置,其次在写入节点,就是持久化,或者保存到数据库,或者保存到某个文件。我在开发区块链浏览器的时候使用的mongo数据库,进行数据存储,提供接口供外部查询,数据入库然后对于区块进行解析,区块,交易,地址提供持久化存储。根据业务逻辑不同,进行分表查询,依赖超级节点以及提供的api服务。用数据库的概念理解,区块链就是一张“自引用”的数据库表。每条记录代表一个区块,这条记录(区块)记录着它前面(时间上)一条记录的信息,可以直接查询到前一条记录,因此从任何一条记录开始都可以往前顺序追溯,直到第一条记录。普通自引用表结构,通常使用ID作为关联外键,加密货币使用的是经过加密处理的信息字段,具有签名认证作用,可实现自我验证,防止被篡改。本书的peer.js产品提供初始节点列表,保障了初始化节点快速完成,不至于成为孤立节点,节点具备跨域访问能力,任何节点之间都可以自由访问,节点具备自我更新能力,定期查询和更新死掉的节点,保障网络始终畅通,实现了p2p网络。

加密算法对于区块链技术来说尤其重要,私钥和公钥更为贴心与先进,用私钥签名的信息,公钥可以认证确认,相反也可以。这就为网络传输和加密提供了便利。这就是“非对称加密”,私钥必须始终保持机密,因为一旦被泄露给第三方,相当于该私钥保护之下的比特币也拱手相让了。私钥还必须进行备份,以防意外丢失,因为私钥一旦丢失就难以复原,其所保护的比特币也将永远丢失。Node.js的Crypto模块,提供了一种封装安全凭证的方式,用于HTTPS网络或HTTP连接,也对OpenSSL的Hash,HMAC,加密,解密、签名和验证方法进行了封装,sha256hash算法(除此之外,还有MD5,sha1,sha512等),通过node.js自带的crypto模块,简单加密生成一个哈希值cypto.createHash(‘256‘).update(‘data‘).digest()就可以生成简单的hash,用户角色仅仅就是一个地址,该地址是可以是转账交易操作,要生成一笔交易。这里是指一条包含交易双方加密货币地址、数量、时间戳和有效签名等信息,而且不含任何私密信息的合法交易数据;广播到网络。几乎每个节点都会获得这笔交易数据。验证交易合法性。生成交易的节点和其他节点都要验证,没有得到验证的交易,是不能进入加密货币网络的。写入区块链。签名就是一个数字资产的多个签名。签名标定的是数字资产所属和权限,多重签名预示着数字资产可由多人支配和管理。在加密货币领域,如果要动用一个加密货币地址的资金,通常需要该地址的所有人使用他的私钥进行签名,这样极大的保证了安全性。

 

原文地址:https://www.cnblogs.com/yuxiazi/p/10390635.html

时间: 2025-01-10 09:21:27

Node.js区块链开发 随笔的相关文章

Node.js区块链开发pdf

下载地址:网盘下载 开发人员.本书涉及前端.后台的方方面面,无论是前端开发人员,还是后台开发者都可以学习参考. 架构师.区块链本身是分布式.云计算的典范,本书详细描述了一款区块链产品的架构设计,他们可以通过本书学习掌握区块链是如何基于P2P网络构建复杂的自适应系统的. 高校学生.教师.科研人员等.本书内容在网络上分享的过程中,已经有大学老师作为教参用在实际教学之中,本书从概念到代码实现,理论与实践结合紧密,深入浅出,适合系统研究学习区块链技术. 学习Node.js的读者.本书介绍了Node.js

Redux+React Router+Node.js全栈开发

详情请交流  QQ  709639943 01.Java深入微服务原理改造房产销售平台 02.跨平台混编框架 MUI 仿豆瓣电影 APP 03.Node.js入门到企业Web开发中的应用 04.Redux+React Router+Node.js全栈开发 05.Java秒杀系统方案优化 高性能高并发实战 06.企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+面试一步搞定 09.Java Spring

区块链开发中使用的最流行的编程语言

我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的应用程序,因此缺乏能力强大的区块链开发人员.随着数十亿人进入这一领域,区块链开发商的薪酬和需求不断升级,项目互相竞标,以吸引留在市场上的最佳区块链人才.这种淘金热可能让一些开发人员怀疑他们是否具备了进入这个行业所需要的东西,特别是在这个新行业中最受追捧的编程语言.几乎所有流行的编程语言都在区块链行业

区块链开发:以太坊网络

区块链开发:以太坊网络 一.geth Geth 又名Go Ethereum. 是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目.Geth 可以被安装在很多操作系统上,包括Windows.Linux.Mac的OSX.Android或者IOS系统 Geth官网:https://geth.ethereum.org/ Geth的Github地址:https://github.com/ethereum/go-ethereum Ubuntu安装geth客户端: 官方教程:https://githu

快速使用node.js进行web开发

首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这是一个比较好的学习模式和过程.由于这本书是2012年出的,书中的一个web教学项目是开发一个微博.从2012到现在,node.js及其生态环境发生了很大改变,所以关于该书的学习如果照着书本显然是过于陈旧的.到目前为止,node.js的web开发框架已经升级到了Express4.12.1,对于Mong

区块链开发技术路线选择的思考(之一)

现在整个技术社区的注意力主要还是在 Web 和移动开发上面,相关人才供销两旺.不过个别有心人已经开始转向大数据分析.深度学习.VR/AR 这些前景看好的技术.最近几个月区块链非常火,所以也有极少数开发者在关注区块链的开发技术. 应该比较客观的看待现在区块链的这一把火.目前无论在中国还是在国外,讨论区块链最积极最热闹的主要是政府官员.金融政策研究者.技术未来学家和学院派学者,跟他们相比,真正在写代码的人发出的声音很小.官员们重视,说明这个技术的潜在影响力巨大,学者重视,说明还有很多技术问题有待解决

区块链开发技术路线的思考(二)

在前一篇文章里讨论了基于 Ethereum 和 Hyperledger 开发区块链项目的优缺点.我的结论是明显的,两者志向远大,假以时日或许会一飞冲天,但现阶段的成熟度都还不够.如果你有心现在投入区块链的开发,那么我的建议是,基于 Bitcoin 自建链,同时关注甚至参与 Ethereum 或 Hyperledger 核心项目,帮它们夯实地基. Bitcoin 无疑是最成熟.质量最佳.讨论最深入的区块链项目,如果按照关注度来算市场份额的话,在区块链领域,Bitcoin 可能三分天下有其二.它目前

区块链开发(五)区块链ICO:互联网进化的驱动力

区块链开发(五)区块链ICO:互联网进化的驱动力 李赫 2016年10月8日 由于区块链不可篡改的特性,在众多区块链组织和公司的共同努力下,互联网将逐步从中心化的信任进化到由算法.数据为核心的去中心化信任.随着中心化的信任中介被逐渐削弱和替代,互联网的运作方式将被以区块链为代表的系统所改变.因此,区块链不仅是一种技术,更是一个关于互联网进化的故事,尽管这个故事还有些遥远,但它已经有了萌芽和初步的发展. 区块链ICO,正是符合去中心化趋势,通过全球众筹,可以将沉淀在全球的小额资金充分利用起来,形成

深圳区块链商城开发,深圳区块链开发,深圳区块链商城开发技术

深圳区块链商城开发,深圳区块链开发,深圳区块链商城开发技术是当前主流的技术,那么,区块链到底是什么呢?深圳区块链商城开发,深圳区块链开发,深圳区块链商城开发技术又是什么呢? 狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一 种链式数据结构, 并以 密码学方式保证的不可篡改和不可伪造的分布式账本. 广义来讲,区块链技术是利用块链式数据结构来验证与存储数据.利用分布式节点共识算法来生成和更新 数据.利用密码学的方式保证数据传输和访问的安全.利用由自动化脚本代码组成的智能合约来编