-
【云享MindTalks系列总帖】云享MindTalks 由华为云DevCloud团队携手云享专家共同策划进行的系列轻量级知识分享类活动一周一个二十分钟,碎片化的时间学习高度压缩的知识内容各业界大咖纷纷现身微信群聊,以即时对话形式,来进行最直接的技术交流和思想碰撞他们将多年的学习历程结合一线实战经验,将方法,将结果,将他们看到的风景展现出来,予你方向!直达链接:点击此处【元宇宙漫游指南】系列读书会“元宇宙”作为真实世界的延伸与拓展,在技术演进和人类需求的共同推动下,元宇宙所带来的巨大机遇和革命性作用是值得期待的,但正因如此,我们更需要理性看待当前的元宇宙热潮,推动元宇宙产业健康发展。华为云联合国内知名出版社特别推出从理论到应用,全方位了解元宇宙!第一期回放地址https://bbs.huaweicloud.com/live/education_live/202111232000.html 第二期回放地址https://bbs.huaweicloud.com/live/education_live/202112072000.html 第三期回放地址https://bbs.huaweicloud.com/live/education_live/202112212000.html第四期回放地址https://bbs.huaweicloud.com/live/education_live/202201102000.html第五期回放地址https://bbs.huaweicloud.com/live/education_live/202201192000.html链一起·赢未来《区块链技术及应用第二版》读书分享会主讲人华为云BCS区块链平台内核的研发成员,先后参与了多项区块链国家标准、金融行业标准的制定和修订工作。目前担任中关村区块链产业联盟技术组副主席、广东省互联网协会区块链专业委员会委员、中国计算机学会CCF区块链专业委员会委员。书籍核心内容:本书主要包括区块链技术、政策与标准、区块链应用、区块链治理、展望区块链未来五个部分。近两年有了更多的思考和实践,同事区块链行业迅速向前,于《区块链技术及应用第一版》相比,第二版更多的篇幅介绍了区块链技术,丰富了区块链在各行各业的应用案例,探讨了区块链监管技术和发展方向,并展望了区块链的价值前景和发展趋势。内容大纲:第一期:系统地剖析近几年区块链技术发展与区块链行业发展情况。回顾第二期:华为云区块链在政务、金融、民生、供应链、文旅等相关领域具体落地应用分享及对区块链未来发展展望。回顾第三期:全面介绍华为区块链发展思路、双引擎战略及华为区块链特点和使用。回顾JAVA应用程序设计六周!大连理工资深教授浓缩多年本科Java教学精华,基础知识,项目实训,带您入门到精通!JAVA应用程序设计:基础入门JAVA应用程序设计:基础知识案例训练JAVA应用程序设计:面向对象知识JAVA应用程序设计:面向对象知识案例训练JAVA应用程序设计:高级编程知识JAVA应用程序设计:高级编程知识案例训练更多内容请关注华为云PaaS服务公众号,最新最全技术干货、福利活动尽在掌握!
-
2022年华为开发者大赛以“创想无限”为主题是华为ICT领域的顶级开发者赛事,旨在面向开发者全面开放华为各产业领域的技术成果爆火的技术热词,揭开科技的未定之天你对哪个领域更感兴趣呢,动动你们的鼠标,赶快参与投票吧【活动时间】2022年6月15日-2022年9月23日【参与方式】1、报名华为开发者大赛任意赛道云应用创新赛道 无人车赛道 代码上太空赛道 世界难题赛道 乾坤云服务赛道2、选择您喜爱的技术热词进行投票(数据统计以此为前提,完成以上两项才有抽奖资格)【奖品设置】从所有具有抽奖资格的投票者中抽取 幸运奖30份,每人奖励 15000码豆(码豆可在>会员中心<兑换实物奖品)⭐ 热词列表 ⭐序号技术热词技术详解开发案例实操演示1数字人元宇宙的主角,数字人生产线如何运作场景化AI案例,助力AI赋能千行百业AI开发过程中各类算法2元宇宙AR/VR、云渲染技术加持,漫游虚拟世界基于交互平台如何构建元宇宙基于GIS技术的数字孪生如何赋能元宇官网3NFT基于区块链技术,实现数字资产确权区块链开发指南华为云NFT云宝背后,区块链技术为你的数字资产保驾护航4零代码云原生时代,零代码工具降低开发门槛AppCube最佳开发实践数据工坊平台,0代码开发数据处理业务“快”人一步5云边端协同满足多场景需求,云边端协同打开了更大的想象空间最佳实践(一) 最佳实践(二) 最佳实践(三) 最佳实践(四)智能边缘平台 IEF操作指导 IoT数据分析 IoTA开发指南端边云一站式物联网开发,加速硬件智能化进程6数字孪生物联网正在使数字孪生变得更加多样化和复杂化IoT数据分析 IoTA最佳实践工厂也能玩出“科幻感”温馨提示1、奖项公布时间10月14日,为保证您顺利领取奖品,请于10月21日前填写收货信息并完成实名认证,否则视为放弃奖励。2、本次活动幸运奖将采用巨公摇号平台(https://www.jugong.wang/random-portal/)进行抽取,如您对评奖方式有异议,请勿参加本次活动。3、本活动最终解释权归华为云所有,其他事宜请参考【华为云社区常规活动规则】→点击去投票
-
【功能模块】区块链部分会议论文汇总(一)https://bbs.huaweicloud.com/blogs/364494【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
行业资讯一览2021年全球公共云市场2.74万亿人民币,同比增29.0%2022年6月29日,IDC发布的《全球公共云服务半年度跟踪报告》显示: 2021年全球公共云服务市场同比猛增29.0%,总收入高达4086亿美元(2.74万亿人民币)。这个市场包括基础架构即服务(IaaS)、平台即服务(PaaS)、SaaS–系统基础架构软件(SaaS–SIS)以及SaaS–应用程序。凭借在所有四个部署类别拥有全线产品,微软在2021年以14.4%的份额在整个公共云服务市场占据首位,收入 588.4 亿美元;AWS则以13.7%的份额紧随其后,收入 559.8 亿美元。(来源:牛透社)亚马逊云科技宣布成立量子网络中心6 月 29 日消息:亚马逊云科技宣布成立亚马逊云科技量子网络中心(CQN),致力于解决量子计算在基础科学和工程方面的挑战,并为量子网络开发新的硬件、软件和应用。据了解,亚马逊云科技量子网络中心是亚马逊云科技在量子计算领域的又一新举措,通过对量子研究和技术人员的持续投入,亚马逊云科技量子网络中心希望进一步推动量子网络在隐私、安全和计算等方面的能力。(来源:牛透社)2022移动互联网蓝皮书:公有云成我国云计算产业增长主要动力人民网研究院6月29日发布的《中国移动互联网发展报告(2022)》(以下简称《报告》)指出,2021年,在全球经济缓慢复苏背景下,我国云计算市场维持长期以来的高速增长。《报告》指出,SaaS(Software-as-a-service,软件即服务)市场在前一年279亿规模的基础上实现50%以上的增长。PaaS(Platform-as-a-Service,平台即服务)市场虽然整体规模仍然较小,但也正随着数据库、中间件、微服务等服务的日益成熟而收获更多关注,近几年年均增速超过100%。(来源:人民网)中国云计算标准和应用大会召开,华为云倡导、践行跨云互联互通6月30日,在第十一届中国云计算标准和应用大会上,华为云中国区副总裁胡维琦作为云计算产业代表应邀出席并表示,当前,租户跨云互联互通仍面临多重挑战,阻碍了数字化转型效率的提升,需要以政策为指导、标准为保障,推动企业跨云互联互通,助力企业高效数字化转型。(来源:新视线)机构:2021年中国智慧城市IT投资超1700亿元6月30日消息,根据IDC近日发布的报告,2021年中国智慧城市的IT总体投资达259亿美元(约合人民币1736亿元),年增长率为15%。IDC认为,我国智慧城市项目的普及率和支出规模目前均处于全球领先水平,这在很大程度上要归功于对5G、大数据、云计算、人工智能、物联网、区块链等新兴技术的重视。据IDC介绍,智慧城市未来的发展趋势是面向全域感知、网联化管理和体验优先,更加强调城市的治理效果。2022年,智慧城市建设将聚焦云上创新、数据治理、数据链接和新型基础设施建设,协同发展推动城市数字化转型。(来源:**网) 致远互联携手海克斯康,共拓万亿工业互联数字蓝海6月30日,中国协同管理软件及云服务领先厂商致远互联(688369.SH)与海克斯康制造智能技术(青岛)有限公司签署战略合作协议,双方将共同成立海致智造数字科技(上海)有限公司(以下简称“海致智造”)。“海致智造”将主要从事工业互联和数智制造领域的软件开发及销售业务,打造中国工业互联协同运营业务平台,结合各方的产品、技术、客户、人力资源及商务渠道,为企业和城市提供数字化赋能综合解决方案。(来源:牛透社)云商店一周动态6月上云新风向!云商店热榜揭晓以数据为基础,为更多企业提供上云参考坐标!华为云云商店6月热销榜和新品榜火热发布~点击查看本期上榜商品:【云动向】6月上云新风向!云商店热榜揭晓谁能上榜?为何要推出商品榜单?《榜单说明》为你解惑:说明 | 华为云云商店「商品推荐榜」黑湖 × 华为云IoT强强联手,让数据驱动智能制造在工业互联网基地中快速交付服务离散制造企业,帮助工厂低成本、高效率地实现从客户下单、原料入厂到成品出厂之间的全链路数字化管理……黑湖科技与华为云IoT联合解决方案架构及黑科技是如何实现这些的?点击链接,揭晓答案:黑湖 × 华为云IoT强强联手,让数据驱动智能制造金融业发展和消费者权益保护如何平衡?指纹支付、刷脸支付、远程开户……便捷生活的背后,是金融科技的飞速发展。然而,金融业发展中,合规却是永远无法绕开的问题。如何利用高科技作为金融领域砝码,实现金融业发展和消费者权益保护之间的平衡?华为云云商店得助AI智慧双录有方法:“智能化、自动化、平台化”的金融科技产品为展业降本增效、合规保驾护航!编辑 | 一只大月亮
-
>摘要:NFT是Web3世界中标记数据资产独特性的标识,是数据权益的载体。 本文分享自华为云社区《[加密数字艺术NFT背后你关心的六个问题](https://bbs.huaweicloud.com/blogs/358470?utm_source=csdn&utm_medium=bbs-ex&utm_campaign=other&utm_content=content)》,作者: 薛腾飞 。 # Connect Wallet 这是Web3中非常流行的一句话,其实也是Web3的核心要义,即“**以用户为中心**”。将身份主权、数据主权、数据权益等都归还给用户,身份的解释、移植,数据的确权、授权、使用等都需要各个服务通过“链接”用户的“钱包”来完成。以区块链为基础设施构筑上层应用,是实现这一能力的重要保障。 # 什么是NFT? 在我看来,**NFT是Web3世界中标记数据资产独特性的标识,是数据权益的载体**。不论是数字化的画作,桌椅、服装、汽车飞机等(有实物的),还是数字化的身份凭证、产权、公司品牌等(逻辑产物)都可以是NFT。 **独特性的标识为什么这么重要呢**?因为它能将其指代的物品和其他同类物品区分开。 为了进一步理解,首先要明确,有些物品是非同质的(Non-Fungible)需要被区分开的,例如房屋产权和艺术作品。有些物品是同质的,不需要被区分开,例如人民币和app积分,尽管有不同的编码,但编码不影响互相替换,因为面值一样;其次要区分开标识和标的物,标的物可以是区块链上原生的数据或者本身是数字化的,也可以是物理世界实际存在的物品,标识则是标的物在数字世界中的映射。 在数字世界中,“标识”将完成“标的物”独特性的指代和“标的物”价值承载的使命。例如一个艺术家将数字作品发布在社交平台,其作品会很快被复制多份,每一幅作品逐渐趋于同质化,没有区别。画作的价值也会越来越低,且没有人会知道画作的原作者是谁。但在Web3中,艺术家就可以通过NFT低成本的保证作品的独特性和价值,NFT中会有作品铸造时间、创建者、和当前所有者。只要是晚于铸造时间发布的都为抄袭者,画作所有权每次流转都可以承载不同的价值属性,无论流转多次都知道原作者谁。  # NFT能用来做什么? 海外市场NFT产业布局完善,行业竞争激烈。NFT以交易平台和时尚社交为主,NFT收藏、游戏、金融等同步发展。国内以数字藏品收藏和企业数字营销为主,逐步开始尝试数字人、游戏等。除此之外,NFT的应用场景还包括体育、文物和历史、音乐、票务等访问授权类。 ## 1.收藏品 稀缺性是收藏品的重要属性。区块链的不可篡改以及NFT本身的不可分割保证了数字藏品独特性。与球卡和邮票一样,数字收藏品的藏家会收藏他们认为有价值的数字产品以表示对某一公司、品牌或者游戏支持。有别于实物,无需运输时间,维护成本等开销。只需几秒完成转移,且永远不会折旧。CryptoPunks是以太坊上推出的最早的数字藏品NFT,类似的国内多家互联网平台联合博物馆、航天局等单位,发行了多款数字藏品,例如“故宫故苑”和“航天文创”。 ## 2.游戏 NFT是区块链游戏的基础,可以作为数字游戏世界中成就或游戏物品的所有权证书。移独一无二游戏物品(道具、头像、皮肤、角色等)归玩家所有,且无需托管,不受发行商控制。这些NFT的寿命会比游戏平台本身更长,一方面玩家可以永久收藏,另一方面也可以移植到游戏之外其他平台,实现游戏投入变现。 ## 3.数字营销 NFT“限量发行、独一无二”本身就是一种最好的饥饿营销手段,不定期的赋予每个NFT新的权益,发布新的玩法和活动也都是很好的营销策略。还可以基于NFT维护会员制度、增强用户粘性,完成破圈整合。国内有个很有趣、很有现实意义的的实践。福建省四坪村通过NFT吸引“云村民”并赋予权益,赋能乡村振兴。每一位数字藏品持有者可以作为村民享受多项权益,如享有家宴1次。不同时间不同事件还会解锁新的藏品及权益,丰富有趣。 ## 4.艺术品 在众多的艺术品中,我们以音乐为例,音乐产业是一个超级明星经济, 好的作品诞生涉及音乐人、唱片公司、娱乐公司、经纪人等。NFT可以帮助音乐人收益自主、拓宽收入来源;公平解决所有制作人员间的版税问题,交易中的数字所有权问题等。 除此之外,NFT音乐平台的用户运营,音乐演出的票务活动,知识产权保护等都已有很多创新项目在实践。 # 国内NFT技术产品有哪些? 随着NFT的火热,国内数字藏品发行平台百花齐放。据统计,其中注册资本大于500万的平台超过100家。市场繁荣的背后是几大技术供应商在提供底层区块链和NFT管理等相关技术能力,以联盟链为主,公链为辅。  # NFT 背的技术是什么? 知道了NFT是什么?能用来做什么?以及都有谁来参与之外,我们再来了解一下NFT背后的技术都有哪些。 ## 1.区块链 区块链是实现NFT的重要底座,赋予了NFT不可篡改、所有权明确、流转可追溯等特性。区块链融合了多种技术,包括密码学(加密算法、安全协议)、分布式共识算法(拜占庭或非拜占庭)、P2P网络通讯、智能合约、激励机制等。 应用的繁荣必将带动技术的生长。NFT应用的快速增长,大量用户接入区块链完成NFT的铸造发行、授权、流转等。这对传统的底层区块链提出了新的挑战和要求。 - 具备统一的链上用户身份标识,支持跨链、链跨应用的NFT所属权管理。 - 允许千级、万级节点接入,支持NFT平台发行方等加入链生态的构建与维护。 - 高吞吐,高并发的共识和记账能力,可以支撑NFT应用活动的峰值流量。 ## 2.智能合约协议 ERC(Ethereum Request for Common)“版本征求意见稿”是以太坊社区的开发者共同编写的,用来记录以太坊上应用级的各种开发标准和协议。其中一些技术标准和协议也逐渐成为了区块链应用的事实规范。 我们常提到的NFT就是在ERC-721标准提出后才开始普及流行的。ERC-721详细定义了NFT的所有权查看、授权管理、流转等。不同的数字藏品平台基于同样的协议完成设计,理论上就可以进行标准化的操作和解析。 随着对NFT的需求越来越丰富,社区也在不断提出新的标准来扩展NFT的使用场景和内涵:  ## 3. 去中心化存储 “一切皆可NFT”这句话从侧面表达了NFT对数字化数据的包容性。不论标的物是视频、音频、还是文字、图片、3D模型等各种数据格式,都可以在链上生成对应的唯一标识。标的物实际存储的位置通常有三种选择,NFT标识所在的业务区块链、去中心化存储系统、中心化的存储系统。  对于NFT而言,去中心化存储是最好的选择。它具有强隐私保护、低存储成本、高访问速度、数据冗余备份、开源等特点,可以充分的支撑Web3“以用户为中心”这一要义的表达。数据被加密并存储在多个位置或节点上,不依赖与中心化的存储节点和存储服务,下图可以极简的理解去中心化存储的工作原理。  值得关注和学习的几大去中心化存储产品有:  ## 4.应用生态 不难发现NFT发展背后的主要推动力就是用户对数据主权和数据价值自主控制意识的不断增强。构建完善的NFT应用生态,简单可以分为三层,身份协议层、 NFT合约协议层, 扩展应用协议层。 分布式数字身份真正具备身份的自主可控性、安全性、自解释性、可移植性、互操作性。在分布式场景下赋予每个用户自主控制和使用数字身份的能力,并针对身份数据等敏感信息进行隐私保护。基于分布式身份, NFT相关协议可以与多种扩展应用标准化集成。(详细了解可阅读《[区块链分布式身份技术解密——重新定义你的“身份”管理](https://bbs.huaweicloud.com/blogs/234838)》) 在标准化的身份协议层和NFT合约协议层之上,结合多样的业务场景定会生长出丰富的应用,例如可信数据交换、数据要素管理等。 # 如何发行自己的NFT 不论你是团队还是个人,想要发行自己的NFT都非常简单。 一种,是可以使用基于公链模式的数字自资产服务,支付手续费或者链使用费铸造发行NFT。例如支持多种公链的Opensea平台 另一种,可以使用基于联盟链模式的数字资产服务,订购服务通过集成SDK完成NFT的铸造发行及流转。例如[华为云的数字资产链服务](https://www.huaweicloud.com/product/bcs/dac.html)。
-
python区块链实现简版工作量证明 更新时间:2022年05月24日 16:48:41 作者:晓彬_ 这篇文章主要为大家介绍了python区块链实现简版工作量证明详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪目录说明回顾工作量证明哈希计算Hashcash实现说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,但根据个人的理解进行了一些修改,大量引用了原文的内容。文章末尾有"本节完整源码实现地址"。回顾在上一节,我们构造了一个非常简单的数据结构 – 区块,它也是整个区块链数据库的核心。目前所完成的区块链原型,已经可以通过链式关系把区块相互关联起来:每个块都与前一个块相关联。但是,当前实现的区块链有一个巨大的缺陷:向链中加入区块太容易,也太廉价了。而区块链和比特币的其中一个核心就是,要想加入新的区块,必须先完成一些非常困难的工作。在本文,我们将会弥补这个缺陷。工作量证明区块链的一个关键点就是,一个人必须经过一系列困难的工作,才能将数据放入到区块链中。正是由于这种困难的工作,才保证了区块链的安全和一致。此外,完成这个工作的人,也会获得相应奖励(这也就是通过挖矿获得币)。这个机制与生活现象非常类似:一个人必须通过努力工作,才能够获得回报或者奖励,用以支撑他们的生活。在区块链中,是通过网络中的参与者(矿工)不断的工作来支撑起了整个网络。矿工不断地向区块链中加入新块,然后获得相应的奖励。在这种机制的作用下,新生成的区块能够被安全地加入到区块链中,它维护了整个区块链数据库的稳定性。值得注意的是,完成了这个工作的人必须要证明这一点,即他必须要证明他的确完成了这些工作。整个 “努力工作并进行证明” 的机制,就叫做工作量证明(proof-of-work)。要想完成工作非常地不容易,因为这需要大量的计算能力:即便是高性能计算机,也无法在短时间内快速完成。另外,这个工作的困难度会随着时间不断增长,以保持每 10 分钟出 1 个新块的速度。在比特币中,这个工作就是找到一个块的哈希,同时这个哈希满足了一些必要条件。这个哈希,也就充当了证明的角色。因此,寻求证明(寻找有效哈希),就是矿工实际要做的事情。哈希计算获得指定数据的一个哈希值的过程,就叫做哈希计算。一个哈希,就是对所计算数据的一个唯一表示。对于一个哈希函数,输入任意大小的数据,它会输出一个固定大小的哈希值。下面是哈希的几个关键特性:无法从一个哈希值恢复原始数据。也就是说,哈希并不是加密。对于特定的数据,只能有一个哈希,并且这个哈希是唯一的。即使是仅仅改变输入数据中的一个字节,也会导致输出一个完全不同的哈希。本质上哈希是一个摘要算法。哈希函数被广泛用于检测数据的一致性。软件提供者常常在除了提供软件包以外,还会发布校验和。当下载完一个文件以后,你可以用哈希函数对下载好的文件计算一个哈希,并与作者提供的哈希进行比较,以此来保证文件下载的完整性。在区块链中,哈希被用于保证一个块的一致性。哈希算法的输入数据包含了前一个块的哈希,因此使得不太可能(或者,至少很困难)去修改链中的一个块:因为如果一个人想要修改前面一个块的哈希,那么他必须要重新计算这个块以及后面所有块的哈希。Hashcash比特币使用 Hashcash ,一个最初用来防止垃圾邮件的工作量证明算法。它可以被分解为以下步骤:取一些公开的数据(比如,如果是 email 的话,它可以是接收者的邮件地址;在比特币中,它是区块头)给这个公开数据添加一个计数器。计数器默认从 0 开始将 data(数据) 和 counter(计数器) 组合到一起,获得一个哈希检查哈希是否符合一定的条件:如果符合条件,结束如果不符合,增加计数器,重复步骤 3-4因此,这是一个暴力算法:改变计数器,计算新的哈希,检查,增加计数器,计算哈希,检查,如此往复。这也是为什么说它的计算成本很高,因为这一步需要如此反复不断地计算和检查。现在,让我们来仔细看一下一个哈希要满足的必要条件。在原始的 Hashcash 实现中,它的要求是 “一个哈希的前 20 位必须是 0”。在比特币中,这个要求会随着时间而不断变化。因为按照设计,必须保证每 10 分钟生成一个块,而不论计算能力会随着时间增长,或者是会有越来越多的矿工进入网络,所以需要动态调整这个必要条件。为了阐释这一算法,我从前一个例子(“I like donuts”)中取得数据,并且找到了一个前 3 个字节是全是 0 的哈希。实现这里我们实现一个简易的区块链,就不动态调节难度了,使用固定的难度。1234567891011class ProofOfWork(object): """ pow """ _N_BITS = 16 MAX_BITS = 256 MAX_SIZE = sys.maxsize def __init__(self, block, n_bits=_N_BITS): self._n_bits = n_bits self._target_bits = 1 << (self.MAX_BITS - n_bits) self._block = block这里的_n_bits就是难度值。 在比特币中,当一个块被挖出来以后,“n_bits” 代表了区块头里存储的难度,也就是开头有多少个 0。这里的 16 指的是算出来的哈希前 16 位必须是 0,如果用 16 进制表示,就是前 6 位必须是 0,这一点从最后的输出可以看出来。目前我们并不会实现一个动态调整目标的算法,所以将难度定义为一个全局的常量即可。16 其实是一个可以任意取的数字,其目的只是为了有一个目标而已,这个目标占据不到 256 位的内存空间。同时,我们想要有足够的差异性,但是又不至于大的过分,因为差异性越大,就越难找到一个合适的哈希。这里的_target_bits则表示满足要求的最大值,即一个上界,它是由1左移256-n_bits位来的。计算出来的哈希只要满足小于它就满足条件了。接下来我们要准备用于计算哈希的数据:1234567def _prepare_data(self, nonce): data_lst = [str(self._block.block_header.prev_block_hash), str(self._block.block_header.hash_merkle_root), str(self._block.block_header.timestamp), str(self._block.block_header.height), str(nonce)] return utils.encode(''.join(data_lst))nonce就是我们要不断尝试要寻找的值,就是上面 Hashcash 所提到的计数器,它是一个密码学术语。其他数据都是区块头的数据。我们需要把这些数据进行合并作为计算哈希的原数据。寻找nonce的方法:1234567891011121314151617181920def run(self): nonce = 0 found = False hash_hex = None print('Mining a new block') while nonce < self.MAX_SIZE: data = self._prepare_data(nonce) hash_hex = utils.sum256_hex(data) hash_val = int(hash_hex, 16) sys.stdout.write("try nonce == %d hash_hex == %s \r" % (nonce, hash_hex)) if (hash_val < self._target_bits): found = True break nonce += 1 if found: print('Found nonce == %d' % nonce) else: print('Not Found nonce') raise NonceNotFoundError('nonce not found') return nonce, hash_hex为防止溢出,我们要设定一个上线为int64的上限。然后我们不断循环寻找目标值,直到满足难度要求。当然,如果难度设计得过高,有可能寻找不到,所以也需要判断一下。所以我们再循环内做了一下事:1. 准备数据2. 用 SHA-256 对数据进行哈希3. 将哈希转换成一个大整数4. 将这个大整数与目标进行比较然后我们还需要很方便的去检验这个块的难度值是否满足我们的要求:12345678def validate(self): """ validate the block """ data = self._prepare_data(self._block.block_header.nonce) hash_hex = utils.sum256_hex(data) hash_val = int(hash_hex, 16) return hash_val < self._target_bits最后运行以前的main.py,结果如下:12345Mining a new block.........Block(_block_header=BlockHeader(timestamp='1548213145.24', hash_merkle_root='', prev_block_hash='', hash='00008fbcbe3a817641195652d9bad37fa8c974536f152f4bc575b3ead9dc6407', nonce=62489, height=0))Block(_block_header=BlockHeader(timestamp='1548213166.65', hash_merkle_root='', prev_block_hash='00008fbcbe3a817641195652d9bad37fa8c974536f152f4bc575b3ead9dc6407', hash='9e851f78295e7933cd9749f712d1f09f1408dff9bd37cc2f79f1c65d1ab39e2e', nonce=16184, height=1))Block(_block_header=BlockHeader(timestamp='1548213171.15', hash_merkle_root='', prev_block_hash='9e851f78295e7933cd9749f712d1f09f1408dff9bd37cc2f79f1c65d1ab39e2e', hash='f88e7a382dafc50b01c43cbbdbbdfa20ac2bffcf5ddf36b97439ff09203f8c2a', nonce=8286, height=2))可以看到这次我们产生三个块花费了25秒多,比没有工作量证明之前慢了很多(也就是成本高了很多)。参考:[1] proof-of-work[2] 完整源码
-
目录说明引言区块区块头区块链总结说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,但根据个人的理解进行了一些修改,大量引用了原文的内容。文章末尾有"本节完整源码实现地址"。引言区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是,区块链是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他“数据库管理员”的同意,才能向数据库中添加新的记录。 此外,也正是由于区块链,才使得加密货币和智能合约成为现实。在本系列文章中,我们将实现一个简化版的区块链,并基于它来构建一个简化版的加密货币。区块首先从 “区块” 谈起。在区块链中,真正存储有效信息的是区块(block)。而在比特币中,真正有价值的信息就是交易(transaction)。实际上,交易信息是所有加密货币的价值所在。除此以外,区块还包含了一些技术实现的相关信息,比如版本,当前时间戳和前一个区块的哈希。不过,我们要实现的是一个简化版的区块链,而不是一个像比特币技术规范所描述那样成熟完备的区块链。所以在我们目前的实现中,区块仅包含了部分关键信息,它的数据结构如下:123456789101112class Block(object): """A Block Attributes: _magic_no (int): Magic number _block_header (Block): Header of the previous Block. _transactions (Transaction): transactions of the current Block. """ MAGIC_NO = 0xBCBCBCBC def __init__(self, block_header, transactions): self._magic_no = self.MAGIC_NO self._block_header = block_header self._transactions = transactions字段解释_magic_no魔数_block_header区块头_transactions交易这里的_magic_no, _block_header, _transactions, 也是比特币区块的构成部分,这里我们简化了一部分信息。在真正的比特币中,区块 的数据结构如下:FieldDescriptionSizeMagic novalue always 0xD9B4BEF94 bytesBlocksizenumber of bytes following up to end of block4 bytesBlockheaderconsists of 6 items80 bytesTransaction counterpositive integer VI = VarInt1 - 9 bytestransactionsthe (non empty) list of transactions-many transactions区块头1234567891011121314151617class BlockHeader(object): """ A BlockHeader Attributes: timestamp (str): Creation timestamp of Block prev_block_hash (str): Hash of the previous Block. hash (str): Hash of the current Block. hash_merkle_root(str): Hash of the merkle_root. height (int): Height of Block nonce (int): A 32 bit arbitrary random number that is typically used once. """ def __init__(self, hash_merkle_root, height, pre_block_hash=''): self.timestamp = str(time.time()) self.prev_block_hash = pre_block_hash self.hash = None self.hash_merkle_root = hash_merkle_root self.height = height self.nonce = None字段解释timestamp当前时间戳,也就是区块创建的时间prev_block_hash前一个块的哈希,即父哈希hash当前块头的哈希hash_merkle_root区块存储的交易的merkle树的根哈希我们这里的 timestamp,prev_block_hash, Hash,hash_merkle_root, 在比特币技术规范中属于区块头(block header),区块头是一个单独的数据结构。完整的 比特币的区块头(block header)结构 如下:FieldPurposeUpdated when…Size (Bytes)VersionBlock version numberYou upgrade the software and it specifies a new version4hashPrevBlock256-bit hash of the previous block headerA new block comes in32hashMerkleRoot256-bit hash based on all of the transactions in the blockA transaction is accepted32TimeCurrent timestamp as seconds since 1970-01-01T00:00 UTCEvery few seconds4BitsCurrent target in compact formatThe difficulty is adjusted4Nonce32-bit number (starts at 0)A hash is tried (increments)4我们的简化版的区块头里,hash和hash_merkle_root是需要计算的。hash_merkle_root暂且不管留空,它是由区块中的交易信息生成的merkle树的根哈希。而hash的计算如下:1234567891011def set_hash(self): """ Set hash of the header """ data_list = [str(self.timestamp), str(self.prev_block_hash), str(self.hash_merkle_root), str(self.height), str(self.nonce)] data = ''.join(data_list) self.hash = sum256_hex(data)
-
目录说明引言选择数据库couchdbcouchdb的安装数据库结构序列化持久化区块链迭代器CLI测试一下说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,但根据个人的理解进行了一些修改,大量引用了原文的内容。文章末尾有"本节完整源码实现地址"。引言到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分,仅专注于 “存储” 这一点。选择数据库目前,我们的区块链实现里面并没有用到数据库,而是在每次运行程序时,简单地将区块链存储在内存中。那么一旦程序退出,所有的内容就都消失了。我们没有办法再次使用这条链,也没有办法与其他人共享,所以我们需要把它存储到磁盘上。那么,我们要用哪个数据库呢?实际上,任何一个数据库都可以。在 比特币原始论文 中,并没有提到要使用哪一个具体的数据库,它完全取决于开发者如何选择。 Bitcoin Core ,最初由中本聪发布,现在是比特币的一个参考实现,它使用的是 LevelDB。而我们将要使用的是…couchdb因为它:简单易用有一个web的UI界面,方便我们查看丰富的查询支持良好的python支持couchdb的安装直接安装,参考https://www.jb51.net/article/202914.htmdocker版couchdb安装,使用docker-compose安装couchdb1234567# couchdb.yamlversion: '2'services: couchdb: image: hyperledger/fabric-couchdb ports: - 5984:5984执行docker-compose -f couchdb.yaml up -d即可安装。使用http://ip:5984/_utils即可访问couchdb的后台管理系统。数据库结构在开始实现持久化的逻辑之前,我们首先需要决定到底要如何在数据库中进行存储。为此,我们可以参考 Bitcoin Core 的做法:简单来说,Bitcoin Core 使用两个 “bucket” 来存储数据:其中一个 bucket 是 blocks,它存储了描述一条链中所有块的元数据另一个 bucket 是 chainstate,存储了一条链的状态,也就是当前所有的未花费的交易输出,和一些元数据此外,出于性能的考虑,Bitcoin Core 将每个区块(block)存储为磁盘上的不同文件。如此一来,就不需要仅仅为了读取一个单一的块而将所有(或者部分)的块都加载到内存中。而我们直接使用couchdb。在 blocks 中,key -> value 为:keyvalueb + 32 字节的 block hashblock index recordf + 4 字节的 file numberfile information recordl + 4 字节的 file numberthe last block file number usedR + 1 字节的 boolean是否正在 reindexF + 1 字节的 flag name length + flag name string1 byte boolean: various flags that can be on or offt + 32 字节的 transaction hashtransaction index record在 chainstate,key -> value 为:keyvaluec + 32 字节的 transaction hashunspent transaction output record for that transactionB32 字节的 block hash: the block hash up to which the database represents the unspent transaction outputs详情可见 这里。因为目前还没有交易,所以我们只需要 blocks bucket。另外,正如上面提到的,我们会将整个数据库存储为单个文件,而不是将区块存储在不同的文件中。所以,我们也不会需要文件编号(file number)相关的东西。最终,我们会用到的键值对有:32 字节的 block-hash(转换为16进制字符串) -> block 结构l -> 链中最后一个块的 hash(转换为16进制字符串)这就是实现持久化机制所有需要了解的内容了。序列化为了方便我们查看,这里我们不直接使用二进制数据,而将其转换为16进制字符串。所以我们需要对区块内容进行序列化。让我们来实现 Block 的 Serialize 方法:1234567# class Blockdef serialize(self): return { "magic_no": self._magic_no, "block_header": self._block_header.serialize(), "transactions": self._transactions }直接返回我们需要的数据构成的字典即可,而block_header则需要进一步序列化。它的序列化同样也只需要返回具体的数据字典即可,如下:123# class BlockHeaderdef serialize(self): return self.__dict__反序列化则是把信息转换为区块对象。1234567# class Block @classmethod def deserialize(cls, data): block_header_dict = data['block_header'] block_header = BlockHeader.deserialize(block_header_dict) transactions = data["transactions"] return cls(block_header, transactions)首先反序列化块,然后构造成一个对象,反序列化Header:12345678910111213# class BlockHeader @classmethod def deserialize(cls, data): timestamp = data.get('timestamp', '') prev_block_hash = data.get('pre_block_hash', '') # hash = data.get('hash', '') hash_merkle_root = data.get('hash_merkle_root', '') height = data.get('height', '') nonce = data.get('nonce', '') block_header = cls(hash_merkle_root, height, prev_block_hash) block_header.timestamp = timestamp block_header.nonce = nonce return block_header持久化持久化要做的事情就是把区块数据写入到数据库中,则我们要做的事情有:检查数据库是否已经有了一个区块链如果没有则创建一个,创建创世块并将l指向这个块的哈希添加一个区块,将l指向新添加的区块哈希创建创世块如下:1234567# class BlockChain: def new_genesis_block(self): if 'l' not in self.db: genesis_block = Block.new_genesis_block('genesis_block') genesis_block.set_header_hash() self.db.create(genesis_block.block_header.hash, genesis_block.serialize()) self.set_last_hash(genesis_block.block_header.hash)添加一个区块如下:1234567891011121314def add_block(self, transactions): """ add a block to block_chain """ last_block = self.get_last_block() prev_hash = last_block.get_header_hash() height = last_block.block_header.height + 1 block_header = BlockHeader('', height, prev_hash) block = Block(block_header, transactions) block.mine() block.set_header_hash() self.db.create(block.block_header.hash, block.serialize()) last_hash = block.block_header.hash self.set_last_hash(last_hash)对couchdb的操作的简单封装如下:12345678910111213141516171819202122232425class DB(Singleton): def __init__(self, db_server_url, db_name='block_chain'): self._db_server_url = db_server_url self._server = couchdb.Server(self._db_server_url) self._db_name = db_name self._db = None @property def db(self): if not self._db: try: self._db = self._server[self._db_name] except couchdb.ResourceNotFound: self._db = self._server.create(self._db_name) return self._db def create(self, id, data): self.db[id] = data return id def __getattr__(self, name): return getattr(self.db, name) def __contains__(self, name): return self.db.__contains__(name) def __getitem__(self, key): return self.db[key] def __setitem__(self, key, value): self.db[key] = value区块链迭代器由于我们现在使用了数据库存储,不再是数组,那么我们便失去了迭代打印区块链的特性,我们需要重写__getitem__以获得该特性,实现如下:12345678# class BlockChain(object): def __getitem__(self, index): last_block = self.get_last_block() height = last_block.block_header.height if index <= height: return self.get_block_by_height(index) else: raise IndexError('Index is out of range')123456789101112# class BlockChain(object): def get_block_by_height(self, height): """ Get a block by height """ query = {"selector": {"block_header": {"height": height}}} docs = self.db.find(query) block = Block(None, None) for doc in docs: block.deserialize(doc) break return block根据区块高度获取对应的区块,此处是利用了couchdb的mongo_query的富查询来实现。CLI到目前为止,我们的实现还没有提供一个与程序交互的接口。是时候加上交互了:这里我们使用argparse来解析参数:1234567891011121314151617181920212223242526272829def new_parser(): parser = argparse.ArgumentParser() sub_parser = parser.add_subparsers(help='commands') # A print command print_parser = sub_parser.add_parser( 'print', help='Print all the blocks of the blockchain') print_parser.add_argument('--print', dest='print', action='store_true') # A add command add_parser = sub_parser.add_parser( 'addblock', help='Print all the blocks of the blockchain') add_parser.add_argument( '--data', type=str, dest='add_data', help='block data') return parserdef print_chain(bc): for block in bc: print(block)def add_block(bc, data): bc.add_block(data) print("Success!")def main(): parser = new_parser() args = parser.parse_args() bc = BlockChain() if hasattr(args, 'print'): print_chain(bc) if hasattr(args, 'add_data'): add_block(bc, args.add_data)if __name__ == "__main__": main()测试一下1234567891011# 创世块创建$python3 main.pyMining a new blockFound nonce == 19ash_hex == 047f213bcb01f1ffbcdfafad57ffeead0e86924cf439594020da47ff2508291c<Document 'l'@'191-2f44a1493638684d9e000d8dd105192a' {'hash': 'e4f7adac65bcbb304af21be52a1b52bb28c0205a3746d63453d9e8c182de927a'}>Mining a new blockFound nonce == 1ash_hex == 0df1ac18c84a8e524d6fe49cb04aae9af02dd85addc4ab21ac13f9d0d7ffe769<Document 'l'@'192-168ff7ea493ca53c66690985deb5b7ac' {'hash': '01015004e21d394b1a6574eb81896e1c800f18aa22997e96b79bca22f7821a67'}>Block(_block_header=BlockHeader(timestamp='1551317137.2814202', hash_merkle_root='', prev_block_hash='', hash='f20f3c74c831d03aaa2291af23e607896a61809b5ced222483b46795a456a1c5', nonce=None, height=0))Block(_block_header=BlockHeader(timestamp='1551317137.358466', hash_merkle_root='', prev_block_hash='f20f3c74c831d03aaa2291af23e607896a61809b5ced222483b46795a456a1c5', hash='e4f7adac65bcbb304af21be52a1b52bb28c0205a3746d63453d9e8c182de927a', nonce=19, height=1))Block(_block_header=BlockHeader(timestamp='1551317137.4621542', hash_merkle_root='', prev_block_hash='e4f7adac65bcbb304af21be52a1b52bb28c0205a3746d63453d9e8c182de927a', hash='01015004e21d394b1a6574eb81896e1c800f18aa22997e96b79bca22f7821a67', nonce=1, height=2))12345$python3 cli.py addblock --data datasMining a new blockFound nonce == 6ash_hex == 0864df4bfbb2fd115eeacfe9ff4d5813754198ba261c469000c29b74a1b391c5<Document 'l'@'193-92e02b894d09dcd64f8284f141775920' {'hash': '462ac519b6050acaa78e1be8c2c8de298b713a2e138d7139fc882f7ae58dcc88'}>Success!一切正常工作。
-
Gauss松鼠会携手CCF数据库专委会,共同打造中国数据库战略研讨系列主题论坛,本期的主题是区块链与数据库,届时,四位业界资深大咖将从不同维度,围绕区块链与数据库进行主题分享,同时,本次活动也是Gauss松鼠会第十二期技术群英会活动。直播时间:5月28日 9:00—12:00B站直播间地址:http://live.bilibili.com/22593189打开方式:复制网址在浏览器中打开或者识别下图中直播间二维码进入,也可以在B站搜索直播间“Gauss松鼠会”观看直播。
-
在加密货币市场逐渐步入寒冬时,曾在币圈大肆流传的 Virgil Griffith 被捕事件也终于在近日迎来了最终审判。据外媒 CoinDesk 报道,本周二美国纽约南区地方法官 Kevin Castel 对前以太坊开发者 Virgil Griffith 做出判决:Virgil Griffith 因帮助朝鲜使用加密货币逃避制裁,被判入狱 63 个月并需支付 10 万美元的罚款。那么这一切,究竟是如何发生的?一切似乎可追溯至 2019 年,一场在朝鲜平壤举办的加密货币会议。一、违反《国际紧急经济权力法》2019 年 11 月,身为以太坊基金会特别项目组成员的 Virgil Griffith 前往朝鲜参加这场加密货币会议,并在会上发表了关于加密货币和区块链技术的演讲——看似一切都很顺利也很正常,但美国检察官办公室和联邦调查局突然在 11 月 30 日宣布:已逮捕并指控以太坊开发者 Virgil Griffith。以下是美国当局对 Virgil Griffith 指控的部分信息:会前美国国务院已警告 Virgil Griffith 不允许前往朝鲜,但 Virgil Griffith 仍毅然决定亲自出席那场会议;会上 Virgil Griffith 在明知会违法制裁法律的情况下,向与会者分享了有关“朝鲜如何利用区块链和加密货币技术洗钱并逃避制裁”的高度技术性信息。综合以上行为,美国纽约南区检察官办公室认为 Virgil Griffith 违反了禁止向朝鲜出口商品、服务或技术的《国际紧急经济权力法》,最高可判 20 年有期徒刑。二、再次被捕后“意外”认罪被捕之后,Virgil Griffith 在 2019 年 12 月底以 100 万美元的保释金获准保释,条件是他不能进入加利福尼亚州,也不能访问其加密货币账户。可在 2021 年 7 月,Virgil Griffith 却因涉嫌试图违反保释条件再次入狱:美国检察官办公室表示,Virgil Griffith 为了支付律师费用,试图通过第三方访问他在 Coinbase 上的加密货币账户。再次被捕后,曾试图解释其“没有帮助朝鲜”的 Virgil Griffith 在 2021 年 9 月 27 日“意外”认罪了,还接受了 63 至 78 个月监禁、最高 100 万美元罚款的认罪协议。当时,Virgil Griffith 的律师 Brian Klein 在一份声明中表示:“Virgil 深感懊悔。撇开此次事件不谈,他曾为社会做出了许多重要贡献,我们将在法庭上提出这些贡献。他还有很多优秀的品质,任何人都不应该用这个错误来定义他。”(注:Virgil Griffith 以创建维基百科的索引工具 WikiScanner 而出名,此后在 2016 年加入以太坊加密货币平台后,一直是以太坊基金会的研究学者。)三、力挺 Virgil Griffith 的 V 神其实在 Virgil Griffith 首次被捕后,整个加密货币社区就为此产生了巨大分歧。当时,The Block 研究总监 Larry Cermak 发推称:“关于 Virgil Griffith 的事件,我认为 Virgil 和以太坊基金会的判断力都非常糟糕。Virgil 可能都没有意识到自己做错了什么,更令人震惊的是以太坊基金会居然没有介入。”与之相反的是,以太坊联合创始人 V 神(Vitalik Buterin)近几年对 Virgil Griffith 始终是支持的态度:不仅 2019 年在推特上发布了一份请愿书,要求释放 Virgil Griffith(不过该请愿书只获得了几百个签名),还在今年向纽约南区地方法官致信,请求法院对 Virgil Griffith 给予宽大处理。据报道 ,V 神在信中详细介绍了他与 Virgil Griffith 自 2013 年起、长达 7 年的友谊,并于 2016 年开始合作研究以太坊区块链工作。除了 V 神,包括 Virgil Griffith 亲属同事等在内的 40 余人也均致信请求法院对 Virgil Griffith 的宽大处理,其律师也要求法院考虑更为宽松的两年刑期。四、最终判刑:入狱 63 个月,支付 10 万美元罚款不过,从日前法院给出的最终判决来看,Virgil Griffith 并未因此获得从宽处理:被判入狱 63 个月(5 年零 3 个月)并需支付 10 万美元的罚款。据外媒 CoinDesk 透露,在 Virgil Griffith 被最终判刑前,他和他的律师可以在法庭上最后发表一次反对意见,所以整场“辩论”下来,Virgil Griffith 方面都在围绕着“要求宽大处理”而展开。其律师 Brian Klein 指出,考虑到 Virgil Griffith 在条件极其恶劣(伙食差、无法接受探访、保暖物资不足等等)的大都会拘留中心 (MDC) 艰难度过了 10 个月,建议法官考虑将这 10 个月算作双倍时间。除此之外,Brian Klein 还提供了一份近期对 Virgil Griffith 心理评估报告,结果显示 Virgil Griffith 患有两种人格障碍:自恋型人格障碍 (NPD) 和强迫性人格障碍 (OCPD)。Brian Klein 对此分析,这也就是 Virgil Griffith 当初不顾家人、朋友和政府等多方劝诫仍要前往朝鲜的原因,其精神科医生也认为 Virgil Griffith “不太可能再次犯罪”。在 Virgil Griffith 发言阶段,他本人诚心表示:“我已经吸取了教训,并为我在这里以及我所做的一切都感到非常愧疚。”然而,做出最后判决的美国纽约南区地方法官 Kevin Castel 并不为以上言行所打动,因为他查阅了 Virgil Griffith 的一系列短信和电子邮件:不仅明确地要帮朝鲜相关政权逃避制裁,还有一张“十分可恶”的会议照片——Virgil Griffith 身穿朝鲜传统西装,站在写着“不制裁!”的黑板前,满脸笑容。Kevin Castel 总结道:“实际上,Virgil Griffith 就是想成为一个加密英雄——希望自己能因勇敢面对政府制裁、无畏且高贵的行为受到钦佩和赞扬。”原文链接:https://blog.csdn.net/csdnnews/article/details/124178337
-
美东时间2022年2月17日,英特尔在线上举行了2022年投资者大会,公布了其主要业务部门的产品路线图及重要执行节点。内容涵盖了数据中心与人工智能、客户端计算、加速计算系统与图形、英特尔代工服务、软件与先进技术、网络与边缘计算的未来发展蓝图以及最新技术进展。英特尔CEO帕特·基尔辛格(PatGelsinger)表示:“科技的持续发展正推动半导体市场的持续、长期需求。到2030年,市场规模有望突破1万亿美元。在这一发展机遇下,我们希望通过加大创新力度、深化与客户和合作伙伴的合作,同时利用好我们的核心优势拓展传统市场并颠覆新市场,到2026年实现营收同比增长10%-12%的目标。”1、营收低迷,制定“复兴计划”近年来,英特尔营收虽然保持了连续增长的态势,但是从具体数额和同比涨幅看,已经出现了明显的放缓迹象。英特尔2021年第四季度财报显示,本季度营收为205.28亿美元,与上年同期的199.78亿美元相比增长3%;净利润为46.23亿美元,与上年同期的58.57亿美元相比下降21%。整个2021财年,英特尔营收790亿美元,与2020财年的779亿美元相比增长1%,净利润199亿美元,与上一年的209亿美元相比下降5%。其中,英特尔客户端计算事业部2021年第四季度营收101亿美元,同比下降7%,全年营收405亿美元,同比微增1%。这是拖累整体业绩的主要因素。从英特尔四季度财报来看,总体来看,PC相关的CCG部门营收同比下降7%,而泛数据中心业务部门DCG,物联网部门IOT表现强势,同比增速高达20%和36%。此外,可编程解决方案事业部PSG营收同比增长15%,而非易失性存储解决方案事业部NSG营收却同比下降了18%。面对日益激烈的行业竞争,英特尔在去年2月份重新请回了阔别英特尔十余年之久的帕特·基尔辛格(PatGelsinger),希望他能够再次“救英特尔于水火”。在他的领导下,英特尔推出了一系列的改革计划。2021年3月,英特尔宣布全新的IDM2.0战略,将未来的制造方向确定为“英特尔工厂+第三方产能+代工服务组合”。在投资者大会上,英特尔阐述了未来公司战略关键要素以及长期增长规划。为全面增强在业界的整体竞争力,英特尔公布了几款新的数据中心芯片以及下一代英特尔至强产品全新架构策略:未来几代至强将同时拥有基于性能核(P-core)和能效核(E-core)的双轨产品路线图,以将两个优化的平台整合为一个通用、定义行业发展的平台。以更大限度地增强产品的每瓦性能和细分功能。英特尔表示,从2022年第一季度开始交付Sapphire Rapids处理器,采用Intel 7制程工艺制造;2023年推出Emerald Rapids,采用Intel 7制程工艺制造;2024年推出Sierra Forest和Granite Rapids,将基于Intel 3制程工艺制造。尽管增长乏力,但PC相关的CCG部门仍是英特尔最为核心的部门。英特尔预计,随着PC比以往任何时候都更加重要,CCG将继续成为英特尔增长的重要贡献者。2021年,全球个人电脑出货量超过3.4亿台,比2019年增加27%。英特尔预计,这一市场将保持强劲势头并进一步增长。同时,英特尔对AXG部门(加速计算系统与图形)寄予了厚望。作为英特尔的增长引擎,到2026年,AXG部门三大业务将为英特尔带来近100亿美元的收入。三大业务包括:视觉计算集团,其中包含英特尔用于游戏、内容创建和元应用程序的GPU;超级计算集团,包含英特尔用于高性能计算、人工智能和媒体处理的处理器;以及定制计算组,其中包含用于区块链、边缘超级计算等的定制芯片。区块链作为公共分类账,在计算机网络上保存交易记录,近年来越来越热门。英特尔公司推出了一款用于区块链应用,如比特币采矿和铸造NF的新芯片,该芯片将于今年晚些时候发货。英特尔表示,其芯片是一种节能的"加速器",旨在加速需要大量计算能力的区块链任务,从而消耗大量能源。2、稳步推进,发力代工服务目前,英特尔的IDM2.0“复兴计划”正在稳步推进过程中。在投资者大会上,英特尔CFO还特别提到了对Tower半导体(TowerSemiconductor)的这笔收购,称2026年代工市场规模将达1400亿美元。2月15日,英特尔宣布将以每股53美元的现金收购Tower半导体,总企业价值约为54亿美元,以支持英特尔代工计划IDM 2.0。2021年,英特尔曾试图收购格芯(Global Foundries),但以失败告终。Tower与格芯类似,但规模更小。Tower,Statistics显示,Tower半导体占全球代工市场份额的1.4%,是排名第六的代工厂。ower半导体生产的半导体和电路可以用于从汽车和消费品到医疗和工业设备的所有领域,在以色列、加利福尼亚、德克萨斯和日本设有制造工厂。对于英特尔,此次收购将有助于扩大英特尔的代工服务,并推进英特尔成为全球主要代工产能供应商的目标。这项交易能让英特尔提供极其广泛的先进节点,并在成熟节点上提供差异化专业技术。目前,该交易已获得英特尔和Tower半导体董事会的一致批准,并需要获得某些监管部门的批准和惯例成交条件,包括Tower半导体股东的批准。这项交易预计将在约12个月内完成。作为IDM2.0规划的一部分,英特尔已于近期宣布加入RISC-V国际基金会成为其高级会员,并投资10亿美元支持RISC-V发展。RISC-V国际基金会是一个指导RISC-V技术和社区的管理联盟。英特尔表示,已准备好一笔可观的基金,以帮助大大小小的新老公司利用英特尔代工服务(IFS)构建颠覆性技术。新的10亿美元投资基金旨在利用最新的创新芯片架构和先进的封装技术加快客户的上市时间。英特尔特别提及,英特尔代工服务部门(IFS)正在组建一个专门的汽车团队,为汽车制造商提供完整的解决方案,与Mobileye的合作让英特尔代工服务(IFS)能够为汽车客户交付先进的制程技术。Mobileye是英特尔的以色列子公司,主要开发自动驾驶汽车和高级驾驶辅助系统。2017年3月,英特尔宣布同意以153亿美元收购Mobileye,轰动一时。Mobileye开发了一种名为EyeQ芯片的定制加速器处理器芯片。EyeQ芯片的首批客户是宝马、通用汽车和沃尔沃等汽车制造商。截止2021年,Mobileye EyeQ系统芯片出货量突破1亿颗。目前,Mobileye的自动驾驶测试汽车已在位于美国、欧洲和亚洲的全球多座城市开跑。英特尔日前表示,准备将Mobileye进行拆分上市,有望在2022年冲击自动驾驶芯片第一股。英特尔给Mobileye的估值是500亿美元。值得关注的是,英特尔正在将领先的能力和产能带回美国。2022年1月21日,英特尔在美国俄亥俄州建厂的消息引起大量关注。英特尔计划200亿美元建造两座先进制程工厂。IDM2.0公布之后,这次的建无疑是战略性的。英特尔表示,将于2022年底开始建设,将于2025年开始生产。该计划最终的投资额或将高达1000亿美元,共覆盖建设8家制造厂。
-
导读:本文介绍区块链技术,包括区块链的概念、原理、特点和通用应用这4个部分。大年初一,区块链及金融智能知识分享给你,祝你牛年发大财!作者:王健宗 何安珣 李泽远来源:大数据DT(ID:hzdashuju)01 区块链概念区块链可以借由密码学,串接并保护内容的串联交易记录(又称区块)。在区块链中,区块内容具有难以篡改的特性,每一个区块都包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用Hash树计算的散列值表示)。用区块链串接的分布式账本能让交易双方有效地记录交易,且可永久查验。02 区块链原理区块链技术可以认为是要解决互联网时代下的“拜占庭将军问题”,即在网络中的中心节点和信息传递通道都缺乏可信度的情况下,如何使网络中的各个节点达成共识。区块链技术在去中心化、各节点无须事先信任的情况下,通过加密算法、共识机制和特定的数据存储方式,构建一个集体维护的可靠的数据模式,实现数字资产在网络节点之间的转移。区块链采用了特定的“块—链”存储结构(见图2-2)。▲图2-2 “块—链”存储结构首先,数据被按时间顺序划分成区块,每一个区块存放一段时间内的所有价值交换信息,所有节点存储这段时间内的数据,并且永久保存,各个节点通过特定的计算争夺领导权,将下一时间段的信息进行打包分发,并通过某种特定的信息添加到上一区块的后面,构成区块链结构。这种区块链结构的特点就是可以保证数据的完整性,因为每一个区块都会存储它被创建之前的所有价值交换信息;还可以保证数据的严谨性,因为一旦新的区块被加入链中,之前的区块就再也不能修改。区块链实现了从记录到传输再到存储的全面分布式的模式,数据传输、数据验证、数据存储都去中心化,所有参与者共同构建数据库。区块链采用非对称加密算法以提高数据的可信赖度,非对称加密即指加密和解密使用不同的密码,即公钥和私钥。加密数据所用的密码被称为公钥,是所有人都知道的、可以用来给信息加密的密码;解密数据所用的密码被称为私钥,是只有该信息的接收者知道并用于解密的密码。公钥加密的信息只有使用对应的私钥才可以解密。实际情况中,假设甲向乙发送一个信息,甲、乙各自生产一对公钥与私钥用以加密和解密,甲、乙分别保管自己的私钥并向对方告知公钥,如果甲向乙发送信息,那么甲用乙的公钥进行加密并向乙发送加密后的信息,乙收到消息后用自己的私钥解密,网络中其他参与者均无法解密。这种算法强度高的加密方式保证了区块链信息的可信赖度。区块链使用数学方法解决信任问题,用算法代替中心化的第三方机构,为人们创造信用,帮助人们达成共识。区块链利用脚本使系统可以直接定义完成价值交换活动所需要的条件,有了脚本,区块链技术就有机会使系统不断成长,去处理一些新出现的交易模式,确保其时效性和实用性。脚本中包含大量指令,每次价值交换都会记录指令,比如接收价值的一方如何接收,以及花费掉自己曾收到的留存价值需要满足什么附加条件等。脚本的可编程性使其可以灵活改变花费掉留存价值的附加条件,如增加所需公钥的数量。它也可以在发送价值时规定价值再转移的条件。区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成(见图2-3)。▲图2-3 区块链技术体系第一层:数据层,存储底层数据、非对称数据加密和时间戳等基础数据。第二层:网络层,含有分布式组网机制、数据传播机制、数据验证机制等。第三层:共识层,封装有各类共识机制算法,确定记账决定方式,这关系到整个系统的安全性和可靠性。目前较为知名的由共识层封装的共识机制有工作量证明机制(PoW,Proof of Work)、股份授权证明机制(DPoS,Delegated Proof of Stake)、权益证明机制(PoS,Proof of Stake)等。第四层:激励层,在区块链技术体系中使用的经济手段,包括经济激励的发行以及分配,多出现在公有链中。第五层:合约层,封装区块链系统中的脚本代码、算法以及智能合约,帮助区块链灵活地处理数据。第六层:应用层,封装了各种应用场景和案例,如电商购物、新闻浏览、视频观看等。03 区块链特点区块链技术具有去中心化、信息不可篡改、信息透明和可共同维护等特点,下面将分别进行详细阐述。1. 去中心化去中心化就是指网络中各个节点的地位相等,传输内容和交易数据不再需要通过某个中心节点进行(见图2-4),数据也不再存储在中心节点上,这样可以防止因中心节点权力过大而引起的风险。区块链模式中,每个节点都存储数据交易中所有的价值交换数据,取代了中央计算机存储所有信息的模式。▲图2-4 去中心化网络另外,每个节点不仅会参与数据存储,还会验证其他节点记录信息的正确性。只有当某个记录的正确性被大部分节点认同,或者所有节点的对比结果一致时,它才可以被写入链中。同时,为了保护数据信息不会因节点受攻击或其他意外而丢失,区块链会对所有数据进行分布式存储(将数据存储在网络中的每一个参与的节点中),并实时更新,极大地提高了数据库的安全性。2. 信息不可篡改区块链网络中,每个参与节点都保存一份完整的交易历史记录,这样,任何一个节点想篡改这些历史记录,别的节点都可以拿出自己的数据备份进行证伪。所以,信息一旦被写入区块中,就不能更改、撤销了。3. 信息透明区块链中的项目和数据都是公开透明的。区块链项目组会公示项目信息和项目代码,区块中的数据经处理后被公开在区块链上,意味着所有的交易信息都是公开可见的。极短时间内,区块信息会被发送到网络中的所有节点上,实现全网数据同步,每个节点都能回溯交易双方过去的所有交易信息。4. 可共同维护在整个区块链系统中,无论是价值的提供者还是价值的接收者,都可以充当维护者,共同维护整个区块链信息的可靠性。区块链系统是开放的,除了价值交易双方的私有信息被加密外,系统还由其中所有参与节点共同维护,任何一个节点都可以通过公开的接口查询区块链数据和开发相关应用,共同维护整个系统的信息透明度和可信赖性。04 区块链通用应用区块链技术已经广泛应用于生活中各个领域,例如金融、医疗、内容社交平台、慈善、教育、版权保护、投票等。1. 金融区块链具有的信息透明、不可篡改的特点,在金融领域得到深入应用。各类金融资产如股权、债券、基金等都可以被融入区块链中,以“数字资产”的形式在区块链上进行存储和交易。跨境支付、数字货币、数字票据、支付清算、征信管理、证券交易和保险管理等方面也能从区块链技术中获益。例如,传统的证券交易需要由证券公司、银行、中央结算机构以及交易所多方协同工作才能共同完成,导致效率低、成本高,容错率也很低,一个环节出现漏洞就会造成巨大的问题和损失。然而,在区块链技术应用在证券交易中后,各参与方便可独立地完成整个结算流程。再比如,跨境支付是金融领域的重要组成部分,但效率低、速度慢。然而,在区块链点对点的技术应用到跨境支付领域后,汇款通道变得透明,交易历史数据可追溯,让收款方、汇款方都安心,也大大提高了效率和速度。2. 医疗区块链在医疗信息安全与隐私保护方面有着极其重要的应用。在当前中心化的信息管理系统下,各种黑客攻击和系统漏洞导致信息安全问题极大,而医疗领域存储着很多用户的私密资料,数据泄露问题一旦发生,就会造成极其严重的后果。因此,医疗领域需要森严的安全措施保护数据。区块链的去中心化的特点则有针对性地解决了这个问题。去中心化的病人医疗健康信息数据存储与共享的建立大大有益于医疗行业。3. 内容社交平台目前,很多内容社交平台都是中心化的,如抖音、微博、微信公众号等,中心化的意思是中心决定节点,节点必须依赖中心,节点离开了中心就无法生存。因此,平台需要做的就是提供平台,然后用户通过平台为自己带来流量,进而利用流量获利。区块链技术可以给内容社交平台注入新的血液,它利用分布式管理将平台去中心化,在新的去中心化系统中,每个人都是一个节点,任何人也都可以成为一个中心。这样平台可以将权力分散到用户身上,用户也可以贡献出自己的力量并获得平台的奖励和经济回报。4. 慈善人们捐赠爱心、传递善意是一件美好而伟大的事,但是层出不穷的慈善黑幕事件给这件美好的事情增添了污点。慈善体系的不透明为这类事情提供了契机,也引发捐赠者对这个行业的担忧。区块链技术可以大大提高慈善领域的信息透明度,让捐赠者有权对慈善体系和流程进行监督,进而鼓励捐赠者放心捐助,形成良性循环,改善慈善事业。如利用区块链技术建立公开透明的、不可篡改的信息体系,从善款的流向到受捐赠者的身份确认,建立慈善领域的监督问责机制,增加捐赠者对机构的信任和信心,同时也保护了捐赠方和受赠方的隐私。5. 教育教育系统中,学历认证一直十分重要,人工验证纸质版证书的效率低下,且纸质版证书有丢失的风险。区块链由所有参与者进行维护且不可篡改,使用区块链存储和保护学生的证明文件,可以简化流程并提高学历认证的效率。学生的学历信息和档案记录等全部存储在区块链中,当学生需要证明自己学历和相关信息时,只需让对方加入链并看见自己的文件即可。同时,区块链具有去中心化的特点,证书不会因为中心机构关闭而消失,数据永远存在。6. 版权保护版权保护在中国一直是大家十分关注且亟待解决的问题。但是版权登记成本较高、效率低,以及版权保护的效率低、效果差的问题一直存在。将区块链技术应用到版权保护领域,对版权所有者和其版权产出的数据进行存储,可以实现对所有权的溯源,从而达到保护版权的目的。更高效、便捷、有效的保障内容生产者权益的方式,能激励更多的创作者继续创造新的内容,创作者通过将作品记录于区块链,实现对原创作品的追踪,一旦发生纠纷或者盗用事件,可以尽快展开进一步的措施。7. 投票在部分国家,投票被用于进行总统选举。投票本着公平公正、少数服从多数的原则,但是由于系统透明度低,投票结果容易引起部分参与者的怀疑。区块链去中心化和透明化的特点正好可以有针对性地解决这个问题,使投票透明、真实性强。关于作者:王健宗,博士,某大型金融集团科技公司资深人工智能总监、高级工程师,中国计算机学会大数据专家委员会委员、高级会员,美国佛罗里达大学人工智能博士后,曾任美国莱斯大学电子与计算机工程系研究员、美国惠普公司高级云计算解决方案专家。何安珣,某大型金融集团科技公司高级算法工程师,中国计算机学会会员,中国计算机学会青年计算机科技论坛(YOCSEF深圳)委员。拥有丰富的金融智能从业经验,主要研究金融智能系统框架搭建、算法研究和模型融合技术等,致力于推动金融智能的落地应用与价值创造。李泽远,某大型金融集团科技公司高级人工智能产品经理,中国计算机学会会员,长期致力于金融智能的产品化工作,负责技术服务类的产品生态搭建与实施推进。本文摘编自《金融智能:AI如何为银行、保险、证券业赋能》,经出版方授权发布。延伸阅读《金融智能》点击上图了解及购买转载请联系微信:DoctorData推荐语:这是一部讲解如何用AI技术解决银行、保险、证券行业的核心痛点并帮助它们实现数智化转型的著作。作者从金融智能一线从业者的视角,深入剖析了传统金融行业的痛点与局限,以及金融智能的特点与优势,阐明了人工智能等技术在金融业的必要性,并针对金融智能在银行、保险和证券业的诸多应用场景,给出了具体解决方案。划重点????干货直达????揭秘Deepfake换脸视频背后的技术细节盘点最重要的7个Python库手把手教你用ECharts画饼图和环形图终于有人把智能语音处理讲明白了————————————————版权声明:本文为CSDN博主「大数据v」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/zw0Pi8G5C1x/article/details/113798270
-
区块链和物联网已经独自颠覆了多个行业。当这两种技术交叉时会发生什么?物联网是根本上改变我们连接事物和周围世界的方式,世界将比以往任何时候都更加互联、更加以数据为中心、更加信息灵通。当看起来势不可挡的区块链行业遇到物联网行业这个不可移动的物体时,会发生什么?要理解为什么这两种技术有如此多的重叠,就必须理解区块链作为一种技术是什么,它的特性使其独特地适合于解决某些挑战,以及使其成为一个如此有前途的领域的背景。什么是区块链?区块链是一个列出交易的分布式分类账。每个“区块”包含了匿名用户进行的公开交易的列表,然后这些列表被链接在一起,创建了所有交易的全面历史记录。在集中式信任模型中,一方拥有分类帐,因此负责验证交易是否正确 (Alice不能用Alice没有的钱支付Bob)。由于区块链是一个分布式模型,因此需要有一个协议来定义共识(“社区如何才能相信Alice的账簿是正确的?”)。因此,添加新块是具有挑战性,而修改旧块必须非常困难。有许多方法可以做到这一点,并且关于这个主题已经有很多完整的白皮书,但是有两个流行的协议是:工作量证明: 所有用户竞争解决一个决定链中下一个块是什么的数学难题。权益证明: 与其让每个人同时竞争(这种方式效率极低且耗电),不如随机选择网络中的一个用户来执行此计算,其中他们被选中的机会随着他们投入的硬币数量而增加,或锁定在区块链上。每个块都以加密方式链接到每个前一个块,因此过去的任何更改都会影响所有未来的块。这使得更改区块链中先前的区块变得异常困难,这使其安全且不可变。该系统让位于一些有益的特性:去中心化:不再存在一个单一的失败点。不可变性:记录是公开的。改变本质上是困难的,因为它们需要计算上的昂贵证明。透明度:每一笔交易,以及进行交易的用户(通过他们的公开密钥匿名识别)都对其他人可用。安全性/弹性:公开密钥加密允许安全交易,数字签名允许所有权证明自动化:在使用智能合约完成一组标准后,交易可以自动完成物联网应用区块链这些属性使区块链适用于各种应用程序。其中最引人注目的是加密货币,去中心化的信任、安全性和不可变性在构建有效的金融交易系统中至关重要。您还可能看到物联网领域的问题与区块链特别打算解决的问题之间的相似之处。物联网的一些问题包括:安全性:如何确保不安全的设备不会引起DDoS攻击?透明度:我们如何允许网络的授权用户查看任何设备之间的所有数据交易?速度:我们如何能够快速处理数十亿连接设备之间的事务/协调?成本:如何在不积累高开销成本的情况下,使物联网网络继续以最高性能运行?区块链可以帮助解决其中的许多问题。由于区块链的加密安全特性,您可以确保网络中的不良参与者不会引起DDoS攻击或更改以前注册的有效数据的记录。由于缺乏中央授权,用户不必担心由中央授权操作网络而产生的开销成本。相反,是由社区来运作,费用由社区来分担。区块链公司IOTA通过创建一个特殊的分布式账本来记录和执行机器和设备之间的交易。它的独特之处在于它不是严格意义上的区块链。相反,它是一个有向非循环的事务图,这消除了对“矿工”的需要,但维持了区块链的去中心化。这一点很重要,因为没有矿工,网络就没有费用。这使得微交易得以蓬勃发展,这种交易通常只涉及不到一美分的费用,而且完全超过了其他连锁店的费用。这也允许更快的速度,因为事务不需要“挖掘”来验证。任何时候进行交易,付款人都必须验证另外两个随机交易。针对物联网应用的区块链技术的优化研究。新南威尔士大学的研究人员提出了一种新的基于物联网的区块链架构,消除了传统区块链的限制,提出了一种体系结构,包括带有局部不可变账本的隔离和集中管理的系统。这些系统或节点以点对点的“覆盖”网络相连接。它们首先被分组在一个具有民选“Cluster Head”的簇中。每个集群都有一个用于生成块的唯一公钥,这允许其他簇头授权块生成器。这种体系结构允许对分类账进行分布式管理,这有助于减少计算开销,同时维护经典区块链的安全性和不可变性。可以说,物联网和区块链已经从根本上颠覆了我们的世界。物联网打乱了我们与事物的关系,使我们能够从周围的任何东西获取数据,使我们能够构建以前不可能实现的解决方案。无论如何,在区块链和物联网的交叉领域正在进行着有趣的工作,这表明我们可能处于真正革命性事物的前沿。
-
提到区块链,很多人第一反应可能是投机取巧的投资,但实际上,作为一项技术来应用的区块链,它正在一点点改写当下的互联网行业。被誉为“数字经济”之父、《区块链革命》的作者唐·泰普斯科特(Don Tapscott)曾提到,“区块链代表着互联网的第二个时代,它将深刻改变行业”。如果把互联网比作信息之路,那么区块链的目的就是为它加上红绿灯、照明设施、信号标志等,让信息之路更安全可信。通过互联网技术实现了信息的流通,而通过区块链则可以实现价值的流通。这是华为云区块链服务架构师张子怡的思考,他深耕于区块链技术多年,曾参与多篇区块链标准及白皮书的编写,也是hyperledger社区贡献者,推动了区块链开源生态的发展。由云上安全到区块链服务,一次新的尝试张子怡和区块链的结缘可以说是天时地利人和。此前,他一直在微软、甲骨文、websense等公司从事安全、云计算相关的研发工作。加入华为以后,早期也是以老本行为主,技术能力过硬的他曾在2个月内完成一款容器安全产品的设计开发工作。在这款产品公测后不久,张子怡遇到了一个新的机会,一个和区块链相关的项目孵化,此时恰巧处于区块链商业化探索的初步阶段,他决定试试。简单来说,区块链是一组使用密码学算法产生的区块,每个区块按时间顺序依次相连,形成链状结构,它集成了分布式数据存储、点对点传输、共识机制、加密算法等技术,具备去中心化、共识、可信、不可篡改、可追溯等特性。其中涉及到的一些技术和张子怡之前深耕的安全技术也是一脉相承的。2018年,经过对分布式共享账本、共识算法、密码学及智能合约等技术的学习和研究,以及通过对于、开源项目hyperledger fabric的增强和优化,华为云在公有云的基础上设计和开发了基于kubernetes的云原生区块链服务BAAS平台,在业界首先公测了自己的区块链服务。彼时区块链的发展也进入了2.0时期,以行业应用和服务民生应用为方向,并衍生出一系列适合不同场景的技术方案。在应用场景上围绕数字政务、金融、医疗、版权、工业、环保等主要行业开展应用试点。也正是在此期间,华为云正式商用了区块链服务,如下图所示,张子怡和团队们基于云多租场景打造了成员动态准入,节点弹性伸缩和快速故障恢复的云原生区块链服务。它构建于Docker和Kubernates之上,具备高可靠性和扩展性,与其他云服务完全打通,无数据膨胀和性能等问题,具体特性有:成员动态加入:通过邀请机制可快速、动态添加联盟链成员。节点弹性伸缩:通过K8s实现节点弹性伸缩和快速故障恢复。灵活部署:同时支持私有链和联盟链部署方式,规划支持混合部署模式。互联互通能力:充分使用现有 IT 基础设施,并连接周边生态和业务合作伙伴。张子怡表示,在华为云区块链服务商用后,他们还基于不同的使用主体和场景,推出了不同的加密算法,包含ecdsa以及国密,并全方位的支持国密算法,满足监管需求。区块链3.0时代,新的机遇和挑战随着业务的发展及技术的进步,区块链技术也越来越趋于成熟,逐步向区块链3.0时代迈入。作为整个社会的数字经济基础设施,区块链的融合技术的特质越来越明显,它与云计算、大数据和人工智能等新兴技术交叉演进,将重构数字经济发展生态,促进价值互联网与实体经济的深度融合。但张子怡也提到,区块链要在技术层面成为基础设施,还有不少难题需要解决:性能问题:交易性能低、规模扩展难;隐私与安全问题:安全隐私保护能力弱;易用性问题:与现有业务体系不兼容,改造成本高;生态联通问题:生态不互通,数据孤岛连通协同难。为了支撑新的业务发展并克服上述提到的这些挑战,张子怡所在的部门设计和研发了新的华为自研区块链服务,并于2021年正式发布上线,服务平台的架构如下图: “在性能方面,我们将记账过程交易处理由串行化改为有条件并行化,并优化记账过程中的磁盘IO效率,极大提升了一致性吞吐量。”张子怡详细地解释了自研区块链服务的几个关键特性。首先是自研高性能Raft可信共识、硬件密码学加速引擎,基于可信环境实现软硬件协同安全隐私保护。自研链利用TEE可信执行环境,执行共识核心逻辑,将BFT问题转化为CFT问题,保留BFT共识安全性,同时大幅提升效率。通过优化网络结构,提升使用效率,扩展了网络节点规模。创新性快速拜占庭容错算法FBFT,使用3f+1个节点,能容忍最多1/3拜占庭错误节点,将网络复杂度由O(n2)降低到O(n)。张子怡强调,“在我们的不懈努力下,现已突破十万级CTPS交易性能,通过信通院认证,实现业界第一的突破。”再就是分层管理联盟链网络。传统区块链网络采用Gossip协议进行数据同步,但Gossip本身存在较多冗余消息,使得网络性能随节点数量增加而快速下降。所以,华为云自研链采用分层管理,数据同步从核心向边缘扩散,减少冗余消息量,减轻性能影响,实现万级的联盟节点网络。张子怡提到的第三个关键特性是可信的智能合约引擎。传统区块链节点上的智能合约运行在REE侧,安全级别低,合约逻辑可能会被恶意篡改,导致状态数据的变更不可信。而且REE侧对数据加密缺乏根密钥保护,也不够安全。“自研链利用可信执行环境承担智能合约运行,安全级别高,结合远程证明,防止合约逻辑被恶意篡改,确保交易结果可信。数据保护根密钥在TEE内保存,防止数据被窃取并**。”同时自研链的区块链节点支持冷存储能力,可大量节约存储资源,并提供混合云、边缘云等部署管理能力,实现跨云跨域的容灾设计,充分满足差异化组网诉求等。在易用性方面,华为云区块链服务提供一键部署,全生命周期管理及可视化智能合约管理,多语言支持。另外,通过多云底座,基于双内核引擎,华为云还提供区块链中间件,支撑不同应用场景,打造高效、安全、易用及开放的区块链服务。最后未来随着数字经济的发展,区块链将作为新型基础设施推动互联网向下一代可信互联网演变,打破传统企业边界的限制,传统的商业模式也将发生深刻改变。张子怡也感慨道,“虽然这些变化将推动社会经济的发展,但过程是艰难的,要求我们必须投入大量的资源去夯实基础设施,作为坚实的底座来承载快速发展的可信业务需求与变化,这也正是华为区块链助力数字经济快速发展的定位与目标。”
-
>摘要:本文通过介绍华为如何在同态加密及零知识证明框架的集成介绍来介绍了一些对金融领域交易隐私保护的思路,通过代码结和应用场景描述了zksnark如何集成到现有联盟链体系保护交易隐私。本文分享自华为云社区[《区块链交易隐私如何保证?华为零知识证明技术实战解析》](https://bbs.huaweicloud.com/blogs/306971?utm_source=zhihu&utm_medium=bbs-ex&utm_campaign=paas&utm_content=content),作者:麦冬爸 。 # 什么是零知识证明? 证明者在不泄露任何有效知识的情况下,验证者可以验证某个论断是正确的。图1给出一个有趣的例子,Alice把自己的签名的信封放到一个保险箱中,Bob说他知道这个保险箱的密码,Alice让Bob证明给她看。Bob打开保险箱,把信封拿出来给Alice。Alice验证信封上的签名,确认了Bob确实知道这个密码。这个例子就是Bob没有告诉Alice密码却证明自己知道密码的的过程很好的解释了零知识证明的概念。基于非对称加密和数字签名的证书认证过程,其实也是一个零知识证明的过程,验证者并不需要知晓CA证书,就可以验证对方是由CA签发的下一级证书。零知识证明技术不管应用于金融还是其他领域,都可以对隐私保护,性能提升,或者安全性等场景带来很多帮助。下面,主要从隐私维度来分享华为零知识证明相关技术。  图1 零知识证明 # 零知识证明应用于同态加密保护交易隐私,使能金融业务 目前金融转账交易场景中对于隐私保护已经越来越重视,隐私也成为区块链急需解决的一个重要问题。那基于如下问题, A向B转账10元,需要区块链节点记账,但是不想让区块链节点知道交易金额以及最新余额,也是金融场景中一个非常常见的问题。   图2 同态加密 基于这种场景如何解决区块链技术应用于金融的隐私和可用性?华为目前引入同态加密(解决隐私问题)。同态加密(英語:Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。 换言之,这项技术令人们可以在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中无需对数据进行解密。在此基础上创新式提出了**同态加密范围证明**(一种针对数字的零知识证明技术,在不泄露具体数字值的情况下,获得数字的范围,从而验证数字所代表的交易的有效性)。 基于集成到区块链系统中的同态加密库以及修改同态加密库实现的零知识证明能力实现了隐私转账的能力,一个密文和另一个密文相加或相乘实现转账中的密文交易,零知识证明在整个的计算过程中不暴露任一方的信息证明对方可以完成转账这一流程,在不泄露具体数字的情况下得到数字的范围。从而验证数字所代表交易的有效性。 # 使用同态加密库的app端sample代码示例 下面我们看一下零知识证明在代码中是如何应用的,Demo代码使用地址:[概述_区块链服务 BCS_开发指南(Hyperledger Fabric增强版)_附录_同态加密_华为云](https://support.huaweicloud.com/devg-bcs/bcs_devg_0020.html)。下面讲解的代码都可以在上面的地址中下载全量代码查看。  图3 同态加密链代码1   图4 同态加密链代码2 图3是同态加密的链代码,首先定义好一个transaction的结构,在进行初始化,基于Query方法可以根据B的地址调用链码获取B的公钥 ,第二个红框获取A的当前加密余额,PrepareTxInfo方法构建A向B的转账信息,最后通过invoke调用完成A到B的转账的过程。在图4 transfer链代码方法中,首先通过getstate获取A和B两个账户的当前余额,然后最重要的一步,要去验证他的余额,所以说我们这个方法validatetxinfo,基于范围/等式证明验证交易数据的合规性,基于同态加密算法计算交易后的账户余额,最后更新交易后A账户和B账户的余额。同态加密的这一步中,应用了零知识证明的相关的这个技术和能力来实现了这个同态加密更加的高效和安全。 # 基于zksnark的零知识证明技术 ## 交互式证明和非交互式证明  图5 交互式证明 零知识证明又分为交互式证明和非交互式证明,有两个有趣的例子很好的解释了这个概念。如上图5所示,男子向女子声称有CD处的钥匙,女子不相信说“你拿出来给我看啊”,男子想“你让我拿我就拿多没面子啊”,男子说”这样吧,按下面步骤玩个游戏” 1.女子站在A点 2.男子从B点走到C点或者D点 3.男子从B点消失后,女子从A点走到B点 4.女子喊话“从左边出来”,或者“从右边出来” 5.男子按照女子的要求从对应一侧走出 女子说“你肯定作弊,刚才我喊左边出来,你刚好就是从左边进去的”, 男子说:“你回到A点,我们再来一遍” 如果每次都成功,说明B确实有CD处的钥匙,该证明是需要A,B不停的交互。 非交互式零知识(NizK)证明方案由算法设置、证明和验证定义,具体来说,我们有params=Setup(),其中输入是安全参数,输出是ZKP算法系统的参数。证明语法由证明=证明(x,w)给出。该算法接收某些NP语言L的实例x和见证w作为输入,并输出零知识证明。验证算法接收证明作为输入,并输出位b,如果验证者接受证明,则该位等于1。通俗一点就比如说我有一个秘密,我不想告诉别人,但是我又得让别人相信。我是知道这个秘密的,类似于这种,但是我们为什么需要有这种非交互式呢?因为交互式证明的其实只对原始的验证者有效,其他的任何人都不能够信任这个证明。这种场景下呢,就会导致这个验证者可以和这个证明人串通,证明人可以伪造证明。验证者也可以用这种方式做一些伪造。因此,验证者必须保存一些数据,直到相关的证明被验证完毕。这样就会造成一些秘密参数泄露的这种风险。这种交互式证明也有它的用处,就比如说一个证明人只想让一个特定的验证者来去验证,但是这个证证明人和验证者必须保持在线,并且去对每一个验证者执行同样的计算。 ## 什么是zk-snark? zk-SNARK 是 Zero-knowledge succinct non-interactive arguments of knowledge 的缩写,他的意思是: zero knowledge:零知识,即在证明的过程中不透露任何隐私数据: succinct:简洁的,主要是指验证过程不涉及大量数据传输以及验证算 法简单; non-interactive:无交互。证明者与验证者之间不需要交互即可实现证 明,交互的零知识证明要求每个验证者都要向证明者发送数据来完成证明, 而无交互的零知识证明,证明者只需要计算一次产生一个 proof,所有的验 证者都可以验证这个 proof。 zk-SNARK 是证明某个声明是真却不泄露关于该声明的隐私信息的一 个很有创新性的算法,他可以证明某人知道某个秘密却不会泄露关于这个 秘密的任何信息。这个算法可以解决什么问题呢? 它是对所有零知识证明问题的通用解决方法,由加密数字货币zcash首次使用并开源。zk-SNARK的优点: 1.通用库,可以解很多零知识证明问题 2.验证证明性能较高(300tps) zk-SNARK的不足: 1.底层模型不容易理解,用户需要根据具体的零知识证明问题,在上层构建自己的业务模型,这块开发的工作量较大。 2.生成每笔交易时延较长(57s) ## 应用场景 ZKP的应用场景包括匿名可验证投票、数字资产安全交换、安全远程生物识别认证和安全拍卖,具体如下。 匿名可核查投票:投票是保障一个国家或控股公司民主的重要组成部分。然而,选民的隐私可能在投票过程中被泄露。此外,投票结果很难得到安全的核实。ZKP是实施匿名可核查投票的一种可用方法。根据ZKP的使用,符合条件的选民可以在不泄露身份的情况下投票表决显示他们的权利。此外,ZKP允许符合条件的选民要求提供可核查的证据,证明他们的选票包含在负责报告投票结果的机构的最终计票中。 数字资产的安全交换:数字资产是二进制数据的集合,它们是唯一可识别和有价值的。如果两个用户希望交换其数字资产,则用户的隐私,包括身份和交换数字资产的内容,可能会在交换过程中泄露。根据ZKP的使用,数字资产可以在不泄露用户隐私的情况下交换。此外,ZKP生成了可验证的证据,其中包含数字资产交换的过程。 安全远程生物识别身份验证:远程生物识别身份验证是一种可用于通过使用指纹、面部图像、虹膜或血管模式等生物识别模式识别用户访问权限的方法。但是,在实施远程生物识别认证时,用户的生物识别模式可能会泄露给不受信任的第三方。使用ZKP可以解决这个问题。此外,ZKP生成还提供了可核查的证据,其中包括识别用户访问权限的过程。 安全拍卖:政府拍卖是政府从多个供应商中选择最低出价的拍卖,这些供应商以竞争性方式销售其商品和服务。本次拍卖包括两个阶段。在第一阶段,多个供应商投标,但公众不知道。在第二阶段,这些投标是开放的。政府选择中标供应商,后者出价最低。然而,中标供应商的选择可能会泄露其他中标供应商的投标和身份。ZKP可以解决这个问题。ZKP为每个输标供应商生成可核查的证据。该证明证实输标供应商的投标与中标供应商的投标之间的差额是正的。 ## zk-snark应用于区块链的挑战及实现 零知识证明是指一方(证明者)向另 一方(验证者)证明一个陈述是正确的, 而无需透露除该陈述正确以外的任何信 息,适用于解决 任 何NP问题。而区块 链 恰好可以抽象成多方验证交易是否有效 (NP问题)的平台,因此,两者是天然相 适 应的。将零知识证明应用到区块 链中 需要考虑的 技 术 挑战分为两大类:一类 是适用于隐私保护的区块链架构设计方 案,包括隐秘交易所花资产存在性证明、匿 名资产双花问题、匿名资产花费与转移、隐 秘交易不可区分等技术挑战;另一类是零 知识证明技 术 本身带来的 挑战,包括 参 数 初始化阶段、算法 性能以及安 全问题 等技术挑战。 华为集成了zksnark架构到区块链系统中来解决上面的挑战。我们知道有多种方法可以为区块链启用zkSNark。这些都降低了配对函数和椭圆曲线操作的实际成本。 1. 提高合约虚拟机的性能 相较第二种更难实现。可以在合约虚拟机中添加功能和限制,这将允许更好的实时编译和解释,而无需在现有实现中进行太多必要的更改。下面的转账场景就是基于此种方案的实现。 2. 仅提高某些配对函数和椭圆曲线乘法的在合约虚拟机的性能 通过强制所有区块链客户端实现特定的配对函数和在特定椭圆曲线上的乘法作为所谓的预编译契约来实现。好处是,这可能更容易和更快地实现。另一方面,缺点是我们固定在一定的配对函数和一定的椭圆曲线上。区块链的任何新客户端都必须重新实施这些预编译的合同。此外,如果有人找到更好的zkSNark、更好的配对函数或更好的椭圆曲线,或者如果在椭圆曲线、配对函数或zkSNark中发现缺陷,必须添加新的预编译合同。 ## 转账应用  图6 转账初始化 图6包含了对这个余额初始化的一个过程,及生成交易也就是真正转账的过程,下一步就是验证,证明,完成验证,最后一步,才是生成交易,也就是收款的一个过程。拿初始化举个例子,比如说爱丽丝初始化了一个100块钱的一个余额,然后鲍勃十块钱。转账的过程如下,爱丽丝转20块钱给鲍勃,就会生成生成一对Spending key / Paying Key ,相当于临时交易的一个账户,Paying Key给对方,Spending Key留给自己,用于证明交易链上的交易是谁的。 然后再基于这个生成相应的这个交易和相关的证明。完成交易生成这一步。下一步进行转账的验证证明的这个过程,验证逻辑如下, 验证逻辑:Nullifier NF.axxxxx1 和NF.axxxxx2 是否在Nullifiers 列表中,也就是说,是否有被花过;验证NF.axxxxx1 和NF.axxxxx2 是格式是否合法的花费凭据,且对应的commitment在链上(Proof + Merkle tree root),这里有需要验证Merkle tree root在 是有效的;验证input == output 金额守恒,即:100 + 0 = 80+0+20;数字范围满足要求:100-20 >0 && 20 > 0,把这个过程都验证完了以后呢,最后一步就是完成验证。完成验证的话,他其实还会做一些这个类似于交易内容的隐藏,身份隐藏,交易行为的隐藏,来保护整个的这个转账交易的过程的这个安全性。包括做一些类似于混淆电路的能力。有混淆的交易内容,且加密,验证者并不知道使用链上是哪个Commitment作为输入,只知道没有被花过,且在链上。身份隐藏让其无法确定接收方是谁,交易行为隐藏让其无法确定这个交易是发送还是接收。做一些安全性的保证之后呢,然后来完成整个的验证的过程。最后,生成交易,然后收款,整个转账过程就结束了。基于零知识证明的一个简单的一个能力,包括一个基础的转账,被华为集成在整个零知识证明使用接口中。集成的整个零知识证明架构也能用来开发一些零知识证明基础应用,做一些简单的解决方案。 # 总结 交易隐私保护这块的技术应该是比较多的,零知识证明技术并不一定是一个最好的选择,在安全领域中还有很多诸如同态,秘密分享,不经意传输,或者基于TEE硬件的一些隐私保护能力,可以去做一些隐私保护。但是零知识证明其优点也是很显著,未来区块链的隐私保护仍然任重而道远,如何实现快速高效、可信的零知识证 明算法以及如何实现能够抵抗量子计算 的零知识证明算法,都是需要进一步解决 的问题。基于线上我们提供的一些基本的能力,要是大家感兴趣,可以到之前的网址下载相应的代码示例。
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签