区块链实战(3):用Solidity实现投票智能合约
本课程是《区块链实战》系列专题的第3个课程。本课程用Solidity语言实现了一个支持投票功能的智能合约。
¥20.00
超级会员免费
6 节 · 1305 人已学 李宁
跟我一起写Fabric区块链应用(从0到1搭建)
1、目前市面上的区块链课程讲原理的偏多,讲技术实现的偏少,本课程侧重于Fabric技术的应用实践; 2、目前市面上Fabric课程多是以官方教程为基础讲解,没有系统化的应用开发知识点总结和实践; 3、本课程整体上分为3个部分: 1)Fabric架构原理分析; 2)Fabric网络部署与链码编写; 3)Fabric应用从0到1开发。 其中第2、3部分占主要篇幅,讲师授课风格以代码驱动,在课程内完全手敲代码,推荐喜欢动手实践的同学跟着老师一起实践学习。 ⚠️特别注意⚠️:学习本门课程前需要提前具备Linux系统操作能力和Go语言基础开发能力,如果不具备建议做好准备再开始。 课程资料:本课程的笔记、代码、xmind资料可直接下载。 课程服务:讲师本人提供答疑,欢迎有问题直接交流。 软件版本:课程内Fabric基于2.3.3和2.4.0两个版本都可以运行。  
¥899.00 61 节 · 151 人已学 高野
区块链之智能合约快速入门
以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。 上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。 合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。   2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 [1]  自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。 作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。 比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,她可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。 最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球top金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。     智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。 区块链程序 以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在2016年5月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育,菠菜等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。较知名的应用有: 去中心化创业投资:The DAO用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental让独立艺术家在区块链上进行群众募资。 社会经济平台:Backfeed。 去中心化预测市场:Augur。 物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理IP创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。 虚拟宝物交易平台:FreeMyVunk。 版权授权:Ujo Music平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。 智能电网:TransActive Grid让用户可以和邻居买卖能源。 去中心化期权市场:Etheropt。 钉住汇率的代币:DigixDAO提供与黄金挂钩的代币,在2016年四月正式营运。Decentralized Capital提供和各种货币挂钩的代币。 移动支付:Everex让外劳汇款回家乡。 客户端软件 以太坊的两个主要的客户端软件是Geth和Parity。 企业软件 企业软件公司也正测试用以太坊作为各种用途。已知有兴趣的公司包括微软、
¥999.00 60 节 · 284 人已学 尹成
区块链综合高级实战培训
区块链起源于比特币,2008年11月1日,一位自称中本聪(Satoshi Nakamoto)的人发表了《比特币:一种点对点的电子现金系统》一文 4  ,阐述了基于P2P网络技术、加密技术、时间戳技术、区块链技术等的电子现金系统的构架理念,这标志着比特币的诞生。两个月后理论步入实践,2009年1月3日第一个序号为0的创世区块诞生。几天后2009年1月9日出现序号为1的区块,并与序号为0的创世区块相连接形成了链,标志着区块链的诞生 5  。 近年来,世界对比特币的态度起起落落,但作为比特币底层技术之一的区块链技术日益受到重视。在比特币形成过程中,区块是一个一个的存储单元,记录了一定时间内各个区块节点全部的交流信息。各个区块之间通过随机散列(也称哈希算法)实现链接,后一个区块包含前一个区块的哈希值,随着信息交流的扩大,一个区块与一个区块相继接续,形成的结果就叫区块链 6  。 什么是区块链?从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的“诚实”与“透明”,为区块链创造信任奠定基础。而区块链丰富的应用场景,基本上都基于区块链能够解决信息不对称问题,实现多个主体之间的协作信任与一致行动 7  。 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块 8  。 比特币白皮书英文原版 4  其实并未出现 blockchain 一词,而是使用的 chain of blocks。最早的比特币白皮书中文翻译版 9  中,将 chain of blocks 翻译成了区块链。这是“区块链”这一中文词最早的出现时间。 国家互联网信息办公室2019年1月10日发布《区块链信息服务管理规定》,自2019年2月15日起施行 1  。 作为核心技术自主创新的重要突破口,区块链的安全风险问题被视为当前制约行业健康发展的一大短板,频频发生的安全事件为业界敲响警钟。拥抱区块链,需要加快探索建立适应区块链技术机制的安全保障体系。 10 2008年由中本聪第一次提出了区块链的概念 4  ,在随后的几年中,区块链成为了电子货币比特币的核心组成部分:作为所有交易的公共账簿。通过利用点对点网络和分布式时间戳服务器,区块链数据库能够进行自主管理。为比特币而发明的区块链使它成为第一个解决重复消费问题的数字货币。比特币的设计已经成为其他应用程序的灵感来源。 2014年,"区块链2.0”成为一个关于去中心化区块链数据库的术语。对这个第二代可编程区块链,经济学家们认为它是一种编程语言,可以允许用户写出更精密和智能的协议 11  。因此,当利润达到一定程度的时候,就能够从完成的货运订单或者共享证书的分红中获得收益。区块链2.0技术跳过了交易和“价值交换中担任金钱和信息仲裁的中介机构”。它们被用来使人们远离全球化经济,使隐私得到保护,使人们“将掌握的信息兑换成货币”,并且有能力保证知识产权的所有者得到收益。第二代区块链技术使存储个人的“永久数字ID和形象”成为可能,并且对“潜在的社会财富分配”不平等提供解决方案 12  。 2016年1月20日,中国人民银行数字货币研讨会宣布对数字货币研究取得阶段性成果。会议肯定了数字货币在降低传统货币发行等方面的价值,并表示央行在探索发行数字货币。中国人民银行数字货币研讨会的表达大大增强了数字货币行业信心。这是继2013年12月5日央行五部委发布关于防范比特币风险的通知之后,第一次对数字货币表示明确的态度。 13  2016年12月20日,数字货币联盟——中国FinTech数字货币联盟及FinTech研究院正式筹建 14  。 如今,比特币仍是数字货币的绝对主流,数字货币呈现了百花齐放的状态,常见的有bitcoin、litecoin、dogecoin、dashcoin,除了货币的应用之外,还有各种衍生应用,如以太坊Ethereum、Asch等底层应用开发平台以及NXT,SIA,比特股,MaidSafe,Ripple等行业应用 15  。 公有区块链 公有区块链(Public Block Chains)是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链 16  。 联合(行业)区块链  
¥999.00 120 节 · 229 人已学 尹成
以太坊DAPP实战
以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。 上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。 合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。   2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 [1]  自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。 作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。 比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,她可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。 最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球top金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。     智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。 区块链程序 以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在2016年5月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育,菠菜等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。较知名的应用有: 去中心化创业投资:The DAO用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental让独立艺术家在区块链上进行群众募资。 社会经济平台:Backfeed。 去中心化预测市场:Augur。 物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理IP创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。 虚拟宝物交易平台:FreeMyVunk。 版权授权:Ujo Music平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。 智能电网:TransActive Grid让用户可以和邻居买卖能源。 去中心化期权市场:Etheropt。 钉住汇率的代币:DigixDAO提供与黄金挂钩的代币,在2016年四月正式营运。Decentralized Capital提供和各种货币挂钩的代币。 移动支付:Everex让外劳汇款回家乡。 客户端软件 以太坊的两个主要的客户端软件是Geth和Parity。 企业软件 企业软件公司也正测试用以太坊作为各种用途。已知有兴趣的公司包括微软、IBM、摩根大通。 德勤和ConsenSys在2016年
¥999.00 135 节 · 296 人已学 尹成
Go语言公链开发实战
根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链: (1)全网公开,无用户授权机制的区块链,称为公有链; (2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链; (3)所有网络中的节点都掌握在一家机构手中,称为私有链。 联盟链和私有链也统称为许可链,公有链称为非许可链。  公有区块链系统   公有链中,任何节点无须任何许可便可随时加入或脱离网络。从最早的比特币系统人手介绍公有链系统的发展现状。 点对点电子现金系统:比特币 与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。 节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。 区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。 内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。 邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。 共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。 密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。 签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。 脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。 本课程从零到一带领你实践一个小型公链。    
¥999.00 95 节 · 120 人已学 尹成
去中心化电子商务购物ebay实战
在我们开始构建应用程序之前,花一分钟的时间来了解在像Ethereum这样的去中心化平台上构建产品的动机。 eBay取得了巨大的成功,因为它使得买卖非常有效率。在互联网成为主流之前,人们只能在当地社区购买和出售商品,当然也可以在一定的地理范围内购物。随着越来越多的人上网,像eBay这样的公司完全可以体验整个线下购物拍卖的场景,任何人都可以在互联网上从世界任何地方买卖任何东西。 eBay对于消费者和商人都具有划时代的意义。 尽管这对大家都有好处,并且总体上改善了贸易和经济,但是它有一些缺点。 参与的商人都在受到公司的相关限制:公司可以随时决定是否阻止商家自行处理交易,这对商人来说可能是一个巨大的打击。 商家支付费用列出他们的产品,并支付销售佣金。付费本身并不是那么糟糕,因为eBay提供服务。然而,上市费有时太高,商家要么保证金很高,要么把这笔费用交给消费者。 商家/消费者不拥有他们的任何数据。评论、购买历史等都是这些公司所有。例如,如果商家想将自己的操作转移到另一个提供商,那么导出她的评论或其他数据是几乎不可能的。 在以太坊这样的平台上构建产品解决了这些问题。商户的账户不能被封锁,数据是公开的,所以它可以很容易导出,交易费用比中心化的公司少很多很多。
¥999.00 8 节 · 66 人已学 尹成
公链开发与智能合约开发
根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链: (1)全网公开,无用户授权机制的区块链,称为公有链; (2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链; (3)所有网络中的节点都掌握在一家机构手中,称为私有链。 联盟链和私有链也统称为许可链,公有链称为非许可链。    公有区块链系统   公有链中,任何节点无须任何许可便可随时加入或脱离网络。从最早的比特币系统人手介绍公有链系统的发展现状。   点对点电子现金系统:比特币 与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。 节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。 区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。 内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。 邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。 共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。 密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。 签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。 脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。 本课程从零到一带领你实践一个小型公链。   智能合约,Smart Contract,是一种旨在以信息化方式传播、验证或执行合同的计算机协议。   区块链领域的智能合约有以下特点: 规则公开透明,合约内的规则以及数据对外部可见; 所有交易公开可见,不会存在任何虚假或者隐藏的交易。   所以我们常说区块链技术具有“公开透明”“不可篡改”的特点,这些其实都是智能合约赋予区块链的。   程序员的世界里一致有个认知:相较于程序和机器,人更加不可控。人会作恶,但是代码并不会主观主动作恶。   而传统的契约行为,都是由人来制定规则,由人去执行。当然,遇到边界问题或者异常,也是由人去做界定。   但有了智能合约之后,这些就变得不一样了。   开发者通过智能合约去制定一套规则,然后发布到线上,人与智能合约进行交互,由机器去完成业务的部分,这样就规避了由人来做执行时可能造成的作弊行为。   静态类型的编程语言——Solidity,是以太坊的智能合约实现的编程语言,运行在以太坊的虚拟机 Ethereum Virtual Machine(EVM)上。   借由 Solidity,开发人员能够编写出可自我执行的应用程序,该程式可被视为一份具权威性且永不可悔改的交易合约,对已具备程式编辑能力的人而言,编写 Solidity 的难易度就如同编写一般的编程语言。   关于智能合约的应用,大名鼎鼎的 ICO 就是其中之一。 除了 ICO 之外,与物联网结合赋能智能家居、投票等等,都是智能合约的应用场景。换言之,能够用机器去实现既定的规则、提高效率,且能够规避人类的作弊行为的场景,基本都是智能合约的应用场景。
¥999.00 159 节 · 186 人已学 尹成
golang公链实战
  根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链: (1)全网公开,无用户授权机制的区块链,称为公有链; (2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链; (3)所有网络中的节点都掌握在一家机构手中,称为私有链。 联盟链和私有链也统称为许可链,公有链称为非许可链。    公有区块链系统   公有链中,任何节点无须任何许可便可随时加入或脱离网络。从最早的比特币系统人手介绍公有链系统的发展现状。   点对点电子现金系统:比特币 与传统分布式系统的C/S , B/S或三层架构不同,比特币系统基于P2P网络,所有节点对等,且都运行同样的节点程序。 节点程序总体上分为两部分:一部分是前台程序,包括钱包或图形化界面;另一部分是后台程序,包括挖矿、区块链管理、脚本引擎及网络管理等。 区块链管理:涉及初始区块链下载、连接区块、断开区块、校验区块和保存区块,以及发现最长链条的顶区块。 内存池管理:即交易池管理。节点将通过验证的交易放在一个交易池中,并准备好将其放入下一步挖到的区块中。 邻接点管理:当一个新比特币节点初始启动时,它需要发现网络中的其他节点,并与至少一个节点连接。 共识管理:比特币中的共识管理包括挖矿、区块验证和交易验证规则。比特币采用PoW共识机制,依赖机器进行哈希运算来获取记账权,同时每次达成共识需要全网共同参与运算,允许全网50%节点出错。 密码模块:比特币采用RIMEMD和SHA-256算法及Base-58编码生成比特币地址。 签名模块:比特币采用椭圆曲线secp256k1及数字签名算法ECDSA来实现数字签名并生成公钥。 脚本引擎:比特币的脚本语言是一种基于堆栈的编程脚本,共有256个指令,是非图灵完备的运算平台,没有能力计算任意带复杂功能的任务。 本课程从零到一带领你实践一个小型公链。。
¥999.00 46 节 · 163 人已学 尹成
区块链核心-密码与共识算法
什么是共识算法 背景 分布式系统集群设计中面临着一个不可回避的问题,一致性问题 对于系统中的多个服务节点,给定一系列操作,如何试图使全局对局部处理结果达成某种程度的一致? 这个一致性问题大致有如下的场景: 节点之间通讯不可靠的,延迟和阻塞 节点的处理可能是错误的,甚至节点自身随时可能宕机 节点作恶 举例说明,就比如有两家电影院同时售卖总量一定的电影票,在这样的场景下,要如何设计方式来保证两家电影院协调同步不出现超卖或者错卖的问题呢? 共识算法,就是解决对某一提案(目标,投票等各种协作工作),大家达成一致意见的过程 比如上述的买票问题,就可以有如下的设计: 1.每次卖票打电话给其他电影院,确认当前票数 2.协商售卖时间,比如一三五A卖,二四六B卖 3.成立个第三方存票机构,它统一发票 通过以上的设计,可以看出一个很重要的解决一致性算法的解决思路,即: 将可能引发不一致的并行操作进行串行化,就是现在计算机系统里处理分布式一致性问题基础思路和唯一秘诀 著名的共识设计理论 FLP 不可能性原理  共识算法的理论下限 提出该定理的论文是由 Fischer, Lynch 和 Patterson 三位作者于 1985 年发表,该论文后来获得了 Dijkstra(就是发明最短路径算法的那位)奖。 FLP 原理认为对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。 三人三房间投票例子 三个人在不同房间,进行投票(投票结果是 0 或者 1)。三个人彼此可以通过电话进行沟通,但经常会有人时不时地睡着。比如某个时候,A 投票 0,B 投票 1,C 收到了两人的投票,然后 C 睡着了。A 和 B 则永远无法在有限时间内获知最终的结果。如果可以重新投票,则类似情形每次在取得结果前发生 带入到计算机领域就是说,即便在网络通信可靠情况下,一个可扩展的分布式系统的共识问题的下限是无解。即可靠性的下限是0% CAP  分布式系统领域的重要原理 CAP 原理最早由 Eric Brewer 在 2000 年,ACM 组织的一个研讨会上提出猜想,后来 Lynch 等人进行了证明 • C(一致性):所有的节点上的数据时刻保持同步,即数据一致 • A(可用性):每个请求都能在一定时间内接受到一个响应,即低延迟 • P(分区容错):当系统发生分区时仍然可以运行的 定理:任何分布式系统只可同时满足二点,没法三者兼顾。即数据一致,响应及时,可分区执行不可能同时满足。 举个例子: 一个分布式网路上,某一个节点有一组依赖数据A,当网络无延迟,无阻塞时,依赖于X的操作可正常进行。但网络无延迟阻塞在现实世界中是没法100%保证的,那么当网络异常时,必然会产生分布式系统的分区和孤岛,那当一个执行操作在A分区之外时,如果要保证P,即当系统发生分区时仍可运行,就需要在分布式系统中多个节点有X的备份数据,以应对分区情况。则这时候就需要在C,A之间做出选择。 假如选择C,即要保证数据在分布式网络中的一致性,那么就需要在X每次改动时,需要将全网节点的X数据同步刷新成最新的状态,那么在等待数据刷新完成之前,分布式系统是不可响应X的依赖操作的,即A的功能缺失 假如选择A,即要突出低延迟的实时响应。那么在响应的时候,可能全节点的X数据并没有同步到最新的状态,则会导致C的缺失。 上面看上去有些绕,那么你只要记住这句话, CAP原理在分布式网络系统的应用讨论,其实就是讨论在允许网络发生故障的系统中,该选择一致性还是可靠性? 如果系统重视一致性,那么可以基于ACID原则做系统设计 即 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。 ACID 原则描述了对分布式数据库的一致性需求,同时付出了可用性的代价。 • Atomicity:每次操作是原子的,要么成功,要么不执行; • Consistency:数据库的状态是一致的,无中间状态; • Isolation:各种操作彼此互相不影响; • Durability:状态的改变是持久的,不会失效 相应的有一个BASE原则,(Basic Availiability,Soft state,Eventually Consistency)则强调了可用性。 经典的共识算法设计 业内,针对节点异常的情况,会有两种分类 1.故障的,不响应的节点,成为非拜占庭错误 2.恶意响应的节点,称为非拜占庭错误 Paxos 最早的共识算法  非拜占庭算法的代表 Paxos有三种角色: • proposer:提出一个提案,等待大家批准为结案。客户端担任该角色; • acceptor:负责对提案进行投票。往往是服务端担任该角色; • learner:被告知结案结果,并与之统一,不参与投票过程。即普通节点 系统运行由proposer驱动,当合法提案在一定时间内收到1/2以上投票后达成共识。  
¥999.00 91 节 · 74 人已学 尹成
已订阅内容
我的课程 精品专栏 图文专栏
登录后即可查看
七天热销榜
下载资源