主页 > 老版本imtoken > 人才稀缺的区块链,程序员入门必看这四大技能

人才稀缺的区块链,程序员入门必看这四大技能

老版本imtoken 2023-03-23 05:50:58

以太坊中secp256k1加密算法_以太坊7月1日改算法_以太坊共识算法是什么

作者| 清素德

区块链(BlockChain)是Block and Chain的直译。 其数据结构如图1所示,即每个区块保存指定时间段内的数据记录,并通过密码学方式,构建一条安全可信的链条,形成一个不可篡改的分布式账本,为所有成员共享。

比特币区块分为两部分:区块头和区块体。 区块头大小为80字节,包括4字节的版本号、32字节(256位)的上一个区块的哈希值、32字节的Merkle根节点、4字节的时间戳、4 -byte 部分的难度值和 4 字节的随机数。 区块体包含 10 分钟内选择的交易记录。 第一笔交易(coinbase交易)是一种特殊的交易,用于奖励矿工比特币,由矿工自己添加到区块中。

以太坊7月1日改算法_以太坊共识算法是什么_以太坊中secp256k1加密算法

图1 区块链数据结构示意图

基本概念

区块链是一种综合创新以太坊中secp256k1加密算法,交叉集成了许多现有技术。 因此,要了解区块链,首先要了解区块链中集成了哪些技术。

P2P网络

如图2所示,P2P(Peer-to-Peer)网络是一个端到端的网络。 P2P网络分为结构化(如基于Chord的P2P网络)和非结构化P2P网络(如Gnutella)。 比特币的区块链使用非结构化的 P2P 网络。 整个网络没有集中的硬件或管理机构。 任何节点既是服务器又是客户端。 任何节点只要安装相应的客户端软件,即可接入P2P网络(如BT软件),参与区块链的记录和验证,不超过1/3的节点会损坏、退出或甚至植入了恶意代码。 影响整个系统的运行。

以太坊中secp256k1加密算法_以太坊共识算法是什么_以太坊7月1日改算法

图2 传统中心化系统与P2P网络的拓扑对比

加密算法和数字签名

加密技术分为对称加密、非对称加密和散列(Hash)加密。 对称加密是指使用相同的密钥进行加密和解密,非对称加密是指使用一对密钥对进行加密和解密,而哈希加密主要是对数据进行哈希运算,使用固定的哈希结果值验证信息没有被篡改。

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

在非对称加密技术中,公开和分发的密钥称为公钥,不能公开和自行保管的密钥称为私钥。 用公钥加密的东西只能用对应的私钥解密。 反之亦然。 如图3所示。

以太坊7月1日改算法_以太坊中secp256k1加密算法_以太坊共识算法是什么

图3 非对称加密RSA算法简化示例图

非对称加密算法包括 RSA、DSA 和 ECC。 区块链采用基于椭圆曲线加密技术的数字签名(ECDSA),具体实现为secp256k1。 ECDSA相当于DSA和非对称加密ECC的结合。 与RSA算法相比,ECDSA具有计算量小、存储空间小、带宽要求低等特点。

基于数字签名的通信机制的工作原理,如图4所示,在发送消息时,发送方使用哈希函数从消息文本中生成文件摘要,然后用自己的私钥对该摘要进行加密。 摘要将作为邮件的数字签名与邮件一起发送给收件人。 接收方首先使用与发送方相同的散列函数从收到的原始消息中计算出消息摘要,然后使用发送方的公钥解密附加在消息上的数字签名。 如果得到的明文相同,那么接收方就可以确认传输的文件没有被篡改,是安全可靠的。

以太坊中secp256k1加密算法_以太坊共识算法是什么_以太坊7月1日改算法

图4 数字签名流程示意图

安全哈希算法(Secure Hash Algorithm,简称SHA)是由美国国家安全局开发、美国国家标准技术研究院(NIST)发布的一系列密码哈希函数,包括SHA-0、SHA-1、SHA-2和SHA-3系列. 比特币的区块链采用的是SHA-256哈希加密算法,该算法于2001年发布,属于SHA-2分支。 由于SHA256的伪随机性,只要输入相同的数据,就会得到相同的结果。 如果输入的数据稍有变化,就会得到不同的结果,如图5所示。SHA256也是一种单向不可逆算法,即很容易根据一个输入数计算出SHA256的结果,但它几乎不可能根据 SHA256 的结果来反转输入的数字。 此外,比特币还使用ripemd160算法生成比特币钱包地址。

以太坊中secp256k1加密算法_以太坊7月1日改算法_以太坊共识算法是什么

图5 哈希加密示意图

默克尔树

Merkle 树是区块链的基本构建块。 区块链可以在没有 Merkle 树的情况下工作,但在可扩展性方面存在很大挑战,以将所有交易记录包含在区块头中。 如图6所示,区块链中的每个区块都由区块头和区块体组成。 区块头包含 Merkle 根节点字段。 通过区块体中的所有交易记录,以二叉树的形式两两迭代拼接和哈希,我们可以得到一个最终的哈希值,我们称之为默克尔根哈希。 Merkle root hash相当于区块中所有交易记录的快照,通过与Merkle root hash的比较,可以很容易地检测到区块中交易记录的任何变化。 Merkle根哈希主要用于简单支付验证(SPV),在验证交易是否在区块中时也能大大降低网络传输成本。

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

图6 Merkle树图

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

工作机制证明

工作量证明机制,简单来说就是一种共识机制,确认你是否完成了一定的工作量。 比特币的区块链主要依靠计算数学难题来衡量工作。 For each block, when a certain number of transaction records are selected, the version number, timestamp, and difficulty value are filled in to generate the corresponding Merkle root hash. 很容易看出,这些值是在选择交易记录后确定的,唯一可以改变的是随机数(Nonce)的值。 如图7所示,系统需要根据难度值对整个区块头进行两次SHA256算法计算,得到的哈希结果应小于一个阈值。 根据上述SHA256算法的伪随机性,只有通过不断的尝试和枚举才能找到对应的随机数来证明工作量。

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

图 7 工作量证明机制示意图

除了工作量证明(PoW)等共识机制外,还有权益证明(PoS)、委托权益证明(DPoS)、拜占庭容错(BFT)、实用拜占庭容错(PBFT)等。 环境中的共识机制和需要可信环境的共识机制,如PaxOS、Raft。 表 1 是一个简单的比较。

表1 共识机制简单对比表

以太坊中secp256k1加密算法_以太坊7月1日改算法_以太坊共识算法是什么

运行机制

接入网络和认证

节点通过安装相应的软件(如Bitcoin Core)访问区块链。 节点启动后主要在P2P网络上发现邻居节点,链接邻居节点,传输P2P消息,下载区块链验证。 节点可以选择下载完整的区块链进行验证,也可以只下载区块头,通过默克尔树节点进行简单支付验证(SPV)。

钱包软件可分为手机钱包、桌面钱包、网络钱包和纸钱包,均支持用户私钥的存储。 根据私钥是否由种子生成,钱包也可以分为确定性钱包和非确定性钱包。 主要区别在于私钥的备份和轻松恢复。

区块链存储和接收

比特币的区块链使用Berkeley DB(文件数据库)作为钱包数据库,使用LevelDB(键值数据库)存储区块索引和UTXO(Unspent Transaction Output,未花费的比特币交易输出)。 当一个节点启动时,它会将整个区块链的索引从 LevelDB 加载到内存中。 当收到一个新区块时,节点检测新区块中的所有交易,并验证交易格式、交易大小、交易签名、UTXO是否匹配、交易签名、脚本合规性等。

如果验证成功,则检查前一个区块头是否与链头区块的哈希值一致。 如果一致,则更新 UTXO 数据库和回滚交易数据库。 如果不是,则将该块放入孤立块池中。 当节点发现网络中存在另一个更长的区块链时,它需要打破现有区块并重新组织区块链。 如果验证不成功,该区块将被丢弃,继续等待新区块的到来(矿工将继续计算新区块的数学题)。

以太坊共识算法是什么_以太坊7月1日改算法_以太坊中secp256k1加密算法

扮演“矿工”角色的节点始终在收集网络中广播的交易记录,并致力于计算新区块的数学问题,即工作量证明。 如果其他节点发送的新区块验证成功,除了更新UTXO数据库和回滚交易数据库外,该节点会立即开始计算下一个新区块。 新区块的构建优先考虑交易内存池中优先级高的交易记录。 优先级计算如下:

如果自身的工作量证明计算成功,该节点会立即将区块广播给全网,其他节点收到新区块,并如前所述,进行相应的验证和存储。

整个区块链的运行机制如图8所示。

以太坊中secp256k1加密算法_以太坊共识算法是什么_以太坊7月1日改算法

图8 区块链运行机制示意图

其他相关

脚本语言

区块链使用的脚本语言不是图灵完备的语言,不支持循环,只能进行栈操作。 这种脚本语言的优点是不允许矿工提交无限循环的脚本,更注重安全性的考虑,但可扩展性有限。 以以太坊为首的区块链编程平台,支持图灵完备的编程语言,引领区块链进入2.0时代。 由于支持循环等复杂操作,以太坊使用Gas(燃料)机制来防止死循环的发生,保证系统的安全性。

消息队列

比特币区块链使用零消息队列(ZMQ)作为消息分发和消息队列管理的工具。 与很多人熟悉的RabbitMQ相比,ZMQ不像是传统意义上的消息服务器,更像是一个底层的网络通信库,可以在多线程、内核和宿主机之间弹性伸缩,网络通信,进程通信和线程通信被抽象成统一的API接口。

挖矿设备和算法演进

从支持复杂指令(CISC)、适合串行计算的CPU矿机时代,矿机逐渐向集约化、高速ASIC矿机和规模效益型矿池演进。

基于工作量证明机制的算法容易导致矿工算力集中的问题。 有人将这种“中心化”归咎于 SHA256 算法。 这时,基于SCRYPT算法的莱特币(Litecoin)进入了人们的视线。 其内存占用大、计算时间长、并行计算困难的特点限制了矿工的“军备竞赛”。 莱特币的成功导致了更多算法的交叉融合,衍生出串行算法(Quarkcoin)、并行算法(HeavyCoin)和多用途算法(PrimeCoin,一种在证明工作量的同时寻找大素数的素数币)。

开源项目和工具

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

区块链的开源项目

比特币

比特币是最早、最成功的在现网运行区块链的开源项目。 核心技术框架采用C++开发,共识算法为PoW,每秒交易量(TPS)不超过7,开源许可协议为MIT。

以太坊

以太坊(Ethereum)是一个支持图灵完备脚本运行的区块链开发平台。 基于智能合约,降低用户构建DApp应用的门槛。 目前以太坊正式版本为1.0,采用POW共识算法。 公网TPS为25笔交易。 未来将采用类POS的Casper算法,区块链的确认速度将得到大幅提升。 在计划的2.0版本中,TPS有望达到2000TPS。

超级账本结构

Hyperledger Fabric 是 IBM 的开源区块链项目。 开发环境可适配各种环境(virtualbox虚拟机、自建网络和IBM的BlueMix),支持Docker、插件式共识算法,注重基于角色的权限控制和企业级安全机制。 主要开发语言为Go语言,支持Java、Java、Python等语言,交易频率TPS最高可达100K。 其子项目Iroha助力区块链移动应用开发,值得关注和进一步跟进。

开放链

OpenChain 是区块链技术公司 Coinprism 的开源工具,面向大型企业和金融机构。 基于独特的分布式账本技术,帮助用户部署自己定制的区块链以太坊中secp256k1加密算法,为用户降低交易成本和结算时间。

比特股

BitShares 提供的 BitUSD 等锚定资产是虚拟货币历史上最重要的变革之一,消除了虚拟货币估值大幅波动的问题。 BitShares 创新性地提出了 DPoS 共识算法。 核心技术框架采用C++语言开发,适用于公链和联盟链。 在比特股2.0中,交易频率TPS最高可达100K。

波纹

Ripple是世界上第一个开放的支付网络,也是目前最成功的区块链技术公司。 其核心产品瑞波协议本质上是一个实时结算系统。 通过引入新的共识机制RPCA,只要特殊节点投票,即可在极短的时间内完成交易的验证和确认。

薄荷糖

以太坊共识算法是什么_以太坊7月1日改算法_以太坊中secp256k1加密算法

Tendermint 由美国公司 Tendermint 推出,是第一个实现分片技术的公共区块链。 Tendermint主核负责管理所有区块链分区,支持比特币分区和以太坊分区,具有很大的灵活性。 共识引擎通过 Tendermint 套接字协议(TMSP)连接到应用程序,不依赖于特定的编程语言,因此开发者可以使用任何编程语言来编写智能合约。

科尔达

Corda是R3CEV于2016年12月上旬开源的区块链平台,采用类区块链分布式账本,基于行业标准工具,通过创新的智能合约和数据处理,为金融服务设计了一种新型的分布式分类。 账户平台。

具体对比图如表2所示。

表2 开源项目对比表

以太坊7月1日改算法_以太坊中secp256k1加密算法_以太坊共识算法是什么

以太坊的集成开发环境 (IDE)

Remix 是以太坊的官方 IDE,允许开发者在以太坊区块链上创建和部署合约和去中心化应用程序。 它包括一个solidity源代码调试器,Solidity是以太坊开发的一种智能合约语言,可以将智能合约代码编译成以太坊虚拟机(EVM)可识别的字节码。 另外,如果要与以太坊节点进行交互,主要使用Web3.js API; 对于与节点的低级交互,您需要使用 JSON RPC API。 主流以太坊项目对比如表3所示。

表3 以太坊主流项目对比表

以太坊共识算法是什么_以太坊中secp256k1加密算法_以太坊7月1日改算法

总结

区块链以数据公开透明、信息安全可靠、来源可追溯等诸多特性,降低建立信任的成本,提高网络协同效率,加速全球价值流动,推动下一个时代的不断演进。 ——一代信息基础设施。

本文重点介绍区块链1.0的基本概念、运行机制、相关技术以及开源项目和工具。 简要介绍四个方面,希望能帮助读者理清概念、理清思路、开阔视野。 ,广泛应用区块链技术,有效完善业务规则,开创“区块链+”新浪潮。

注:本文来源于青素德2017年撰写的一篇技术文章。

作者简介: 清速德,博士,就职于中国信息通信研究院产业与规划研究所(原工信部电信研究院)。 目前担任CSDN区块链知识库客座编辑。