主页 > imtoken官网苹果版 > 《Go语言Hyperledger区块链开发实战》第1章区块链技术基础

《Go语言Hyperledger区块链开发实战》第1章区块链技术基础

imtoken官网苹果版 2023-01-17 01:09:49

1. 比特币平台的发展。 2009年1月3日,中本聪挖出了比特币的第一个区块,即创世区块。 2010年5月22日是比特币的发展历程。 具有里程碑意义的一天。 这一天,早期的比特币矿工 Laszlo Hanyecz 用 10,000 个比特币为他的女儿买了两个披萨,大约相当于 41 美元。 2011年,津巴布韦经历了严重的通货膨胀。 进一步推高比特币的价值。 2013 年 11 月,1 比特币的价格飙升至 1000 美元。 2014 年 2 月,全球最大的比特币交易商 MT.Gox(昵称门头狗)遭到黑客攻击,损失了 85 万个比特币。 根据当时的市值,它的价值超过 4.5 亿美元。 现在1个比特币的市值已经达到了4万多美元。 越来越多的国家和企业接受并认可比特币。 2. 比特币挖矿 比特币系统是一个去中心化的分布式系统,有众多分布在世界各地的矿工参与记账,因此如何在所有矿工之间形成共识,防止矿工在记账时作弊是非常困难的。 重要的。 共识算法可以解决这个问题,实现不同节点上数据的一致性和正确性。 在比特币系统中,共识算法需要解决以下两个问题:(1)确定记账节点的选择机制; (2) 保证账本数据在全网保持正确性和一致性。

这个过程就是比特币挖矿。 比特币系统采用工作量证明(PoW,Proof of Work)共识算法。 比特币的区块头结构中包含一个“难度目标”字段,这是所有矿工的一道算术题。 比特币区块头还包含一个字段 Nonce比特币创世区块诞生时间,这是一个随机数集,用来寻找难度目标。 解决问题的过程就是不断调整Nonce的值,然后对区块头进行两次SHA256运算得到结果。 可以用下面的公式来表达运算过程: result = SHA256(SHA256(block header data)) 如果结果小于给定的难度目标值,则认为解算成功。 最先解决问题的矿工获得记账权。 网络中的节点收到打包块后,将按照以下步骤进行处理 (1) 验证打包块。 验证过程比较复杂,这里不再介绍。 (2) 如果验证失败,则该块被丢弃,不做任何处理。 比特币系统规定,只有通过 6 次确认的交易才算真正的交易。 这样即使有的矿工作弊,也不会因为没有得到足够的确认而无法成功。 (3) 如果验证通过,则意味着本轮挖矿结束,其他节点放弃竞争记账权的计算,将区块记录在自己的账本中。 1.2.3 以太坊 2013年底,Vitalik发布了以太坊(Ethereum)的第一本白皮书,吸引了一批认可以太坊概念的合作伙伴并启动了该项目。

2014年,以太坊陆续发布了多个版本的测试网,并开启了为期42天的以太坊预售,共募集了31531个比特币,按照当时的比特币汇率折合1843万美元。 2015年7月,以太坊网络正式发布,标志着以太坊区块链正式上线。 运行在以太坊平台上的智能合约是被称为“智能合约”的特殊应用。 智能合约的概念最早由法学学者Nick Szabo于1996年提出,他对智能合约的定义是:“智能合约”是以数字形式定义的一系列承诺,相关方可以就这些承诺(智能合约)执行协议。 . 以太坊的诞生使得智能合约从理论走向实践。 以太坊平台专为智能合约的执行而设计,所有参与者都可以开发自己的智能合约应用程序,使智能合约可以在分布式账本上存储和运行。 1.2.4 Hyperledger项目 Hyperledger项目的核心目标包括。 ? 通过使用企业级DLT(Distributed Ledger Technology,分布式账本技术)解决方案为商业交易提供支持。 ? 建立和支持技术社区。 ? 普及推广区块链技术,提供市场机会。

比特币创世区块诞生时间_比特币创世区块内容_比特币区块未确认交易

? 提供用于社区开发的工具集。 ? 提供社区驱动的开放式基础设施。 Hyperledger 项目包含的子项目 1.2.5 区块链开发语言 Solidity:以太坊推出的智能合约开发语言。 由于受到以太坊的影响以及Solidity是一门专注于开发智能合约的语言,它是一种被广泛使用的区块链编程语言。 Java:作为一种历史悠久、流行度很高的编程语言,Java拥有超过900万开发者。 许多区块链应用程序是使用 Java 语言开发的。 · GO:是Google于2009年推出的开发语言,也是本书的主题之一。 其他流行的开发语言几乎都是上个世纪的产物。 GO语言是近年来非常流行的新兴开发语言。 具有语法简洁、并发度高、运行高效等特点。 更适合区块链底层系统的开发。 Fabric 区块链和以太坊官方客户端 Geth 都是使用 GO 语言开发的。 · · JavaScript:最常用的前端脚本语言,用于开发网络应用程序。 开发区块链应用程序时经常使用 JavaScript。 · Python:近几年非常流行的编程语言。 作者撰写本书时,Python在知名的TIOBE开发语言榜单中排名第一。 · C#:微软推出的一种编程语言,广泛用于Windows应用程序和Web应用程序的开发。

比特币创世区块诞生时间_比特币区块未确认交易_比特币创世区块内容

C++:经典的编程语言,更适合区块链底层系统的开发。 比特币是使用 C++ 开发的。 Go语言区块链开发实战教学老师: 职位: 第一章区块链技术基础 学前小知识 区块链技术不仅奠定了比特币、以太坊等传奇品牌的技术基础,也上升到了中国的国家战略。 本书的主题是使用Go语言开发基于Hyperledger Fabric的区块链应用。 作为第一章,我们首先介绍区块链技术的基础知识,为后续的学习打下基础。 知识点 1.1 区块链的工作原理和底层技术 1.2 经典区块链平台 1.1 区块链的工作原理和底层技术 1.1.1 分布式系统的概念 1.1.2 什么是比特币系统 1.1.3 共识算法用比特币挖矿 1.1.4双花问题 1.1.5 区块链技术赋予比特币价值 1.1.1 分布式系统的概念 所有的区块链应用都是分布式系统。 所谓分布式系统是指建立在网络上的软件系统。 在分布式系统中,一组独立的计算机按照统一的规则各司其职,紧密合作,呈现给用户的是一个统一的整体。 好像只有一台服务器。 分布式系统在大数据、云计算、物联网以及本书介绍的区块链技术等领域有着广泛的应用。

比特币区块未确认交易_比特币创世区块内容_比特币创世区块诞生时间

1.1.2 区块链技术总体架构 “区块链”一词最早出现在中本聪的论文《比特币:一种点对点电子现金系统》中。 (1) 我们可以把参与比特币系统的每一台计算机都称为一个节点。 (2) 每个节点将新交易收集到一个块中。 (3) 节点可以创建链上的下一个区块,将当前区块的哈希值作为新区块的“前一个哈希”字段值。 区块链架构示意图 区块链设计 1. 存储层 存储层主要实现区块链的存储功能,涉及数据存储(存储格式、区块大小)、加密算法等技术细节。 2、网络层实现分布式网络编程,涉及网络通信协议(点对点通信)、共识算法等技术细节。 共识算法包括比特币采用的工作量证明(PoW,算力多者记账)和以太坊采用的权益证明(PoS,份额多者记账)。 在分布式系统中,还有一种非常常用的共识算法,就是投票。 节点投票形成共识。 3. 扩展层 扩展层是对经典区块链技术的补充和扩展。 企业级应用是区块链扩展层的一个主要发展方向。 区块链技术发展初期,应用场景多为公链应用,大家可以选择参与。 正因如此,当时很少有企业愿意应用区块链技术。 还有一个因素:没有专门针对企业应用的区块链项目,大部分公链项目都需要使用数字货币进行支付。

比特币创世区块内容_比特币区块未确认交易_比特币创世区块诞生时间

数字货币价值波动太剧烈比特币创世区块诞生时间,企业难以控制项目成本。 Hyperledger Fabric是以Hyperledger Fabric为代表的企业级区块链,实现了完整的权限控制和安全保障,可以解决企业之间的信用问题。 产业链上下游环节之间,企业之间可能存在信息交互与合作。 如果采用传统的离线记账方式,显然效率低下。 许多企业都有自己的信息系统,但它们之间又相互孤立,形成了信息孤岛。 打通这些信息孤岛的成本是巨大的,而且它们之间也存在信任问题。 联盟链由产业链相关企业共同开发建设。 信息上传到链上,不能随意修改,可以解决企业间的信用问题。 只要相关企业做好科普工作,就可以大大提高企业之间的合作效率,打通信息孤岛,最终形成行业大数据。 4. 应用层 应用层主要负责实现区块链技术在生产、交易、流通和社会生活中的应用。 目前,区块链技术还处于科普和底层基础设施建设阶段。 在这个阶段完成之前,区块链技术大规模应用的条件还不成熟。 目前比较经典的区块链应用包括金融交易、存证、溯源、数字资产、公益(慈善、众筹、...)等。 1.1.3 加密算法 1. 哈希算法 2. 对称加密算法 3.非对称加密算法 四、国密算法 1、哈希算法 哈希是一种可以将不同长度的数据映射为固定长度数据的函数。

比特币创世区块诞生时间_比特币创世区块内容_比特币区块未确认交易

因此,散列函数也称为汇总函数,或散列函数。 哈希算法MD5处理的最大报文长度得到的摘要数据的长度没有限制,128位数据,表示为32位十六进制字符串SHA1 264位160位数据SHA-224 264位 240位数据 SHA -256 264位 256位数据 SHA-384 2128位 384位数据 SHA-512 2128位 512位数据 SM3 264位 256位数据在线进行MD5处理data A group of centralized systems for MD5 processing of data结果待处理消息摘要数据123456 E10ADC3949BA59ABBE56E057F20F883E 123456789701234567890 D726DA56936D0A63A2B4D8D3ECA0D07B 123 202CB962AC59075B964B07152D234B70 1 C4CA4238A0B923820DCC509A6F75849B abcdefghijklmnopqrstuvwxyz C3FCD3D76192E4007DFB496CCA67E13B 比特币系统中采用SHA-256算法计算区块的摘要信息。

FD80DEDA69B71529B1BC7A275FD00A45 区块链是近年来炙手可热的新兴技术。 它不仅催生了比特币、以太坊等著名的分布式应用平台,还被确定为国家战略,成为国家发展的关键IT技术。 在区块链发展初期,大部分项目属于公链项目,企业使用区块链技术的成功案例并不多。 区块链技术3.0可以实现具有完整权限控制和安全保障的企业级区块链——联盟链。 联盟链可以解决企业之间的信用问题。 由产业链相关企业共同开发建设。 信息上传到链上,不能随意修改。 为打造高可信度的企业级区块链应用项目。 27969908728DE0176CD7FDB95B9C6B91 2. 对称加密算法 3.非对称加密算法 4.国密算法? SM1:对称加密算法,密钥长度为128位,算法未公开,固化在芯片中。 ? SM2:开源非对称加密算法,可用于数据加密、解密和数字签名。 ? SM3:一种用于生成数据摘要的开源哈希算法。 ? SM4:一种开源的对称块加密算法,密钥长度为128位。 ? SM7:对称块加密算法,密钥长度为128位,适用于非接触式IC卡。 ? SM9:身份密码算法,身份密码以用户的身份(如邮箱、手机号、QQ号、微信账号等)作为公钥,省略了数字证书和公钥交换的过程,使得安全系统易于部署和管理,非常适合端到端的离线安全通信。

? ZUC祖冲之算法:我国自主研发的流密码算法,是用于移动通信网络的国际标准密码算法。 1.1.4 区块链的分类 1. 公链 2. 私有链 3. 联盟链 1. 公链上的任何人都可以参与公链的运行,包括以下操作: (1) 读取区块中的数据; (2) 发起交易; (3) 作为矿工参与挖矿。 2. 私有链是由特定组织控制的区块链,整个网络由该组织的成员机构组成。 共识算法由指定的一组节点完成。 私有链只是一定程度的去中心化。 通常用于企业的内部运营和管理。 私有链可以有效保护企业的商业秘密; 由于参与共识过程的节点较少,交易速度非常快; 并且不需要向矿工支付交易费用,成本低。 3. 联盟链联盟链是由机构(企业)共同打造的区块链,适用于商业伙伴之间的交易、结算、清算等B2B应用场景。 对于企业来说,需要考虑区块链的以下要求 · 参与者必须是经过认证的、可识别的或可识别的。 · 参与者需要获得授权。 · 可以高效地处理交易,以免影响商机。 · 低延迟交易确认,使交易可以快速记录在区块链中。 · 交易数据的私密性和保密性应满足业务交易的需要。 1.2 经典区块链平台 1.2.1 区块链技术发展阶段 1.2.2 比特币 1.2.3 以太坊 1.2.4 超级账本项目 1.2.5 区块链开发语言 1.2.1 区块链技术发展阶段 (1) 区块链1.0:以数字货币为代表比特币是区块链1.0的经典应用。

(2)区块链2.0:以太坊的诞生拉开了区块链2.0的序幕,智能合约的概念拓展了区块链的应用场景。 (3)区块链3.0:区块链3.0的经典应用是实现完全权限控制和安全保护的企业级区块链——联盟链。 联盟链可以解决企业之间的信用问题。 由产业链相关企业共同开发建设。 信息上传到链上,不能随意修改。 1.2.2 比特币 比特币平台是区块链技术应用的第一个项目,也是最经典的区块链平台。 一、比特币平台的发展历程 二、比特币挖矿