• 近期,百度、小米、京东、360、联想等行业巨头纷纷开出高薪招聘区块链开发,甚至有公司开出了500万的年薪在找区块链工程师。 喂,正在埋头苦干、默默搬砖的你,有没有想过自己有一天也可以过上年薪百万的日子? ...

     

    近期,百度、小米、京东、360、联想等行业巨头纷纷开出高薪招聘区块链开发,甚至有公司开出了500万的年薪在找区块链工程师。

    喂,正在埋头苦干、默默搬砖的你,有没有想过自己有一天也可以过上年薪百万的日子?

    想要成为年薪百万的区块链工程师,那你先得成为区块链工程师;要成为区块链工程师,那你先得是工程师才行!

    所以如果你想成为年薪百万的区块链工程师,你的打怪进阶路线可以概括为:

    开发工程师  区块链工程师  年薪百万的区块链工程师

    第一关

    如何成为开发工程师?

    工程师有各种各样的,我们这里指的并不是开挖掘机的,是特指有一定的编程基础,至少有一门语言的编程经验,接受过写代码debug洗礼,爱过痛过的开发工程师,俗称“码农”

    而那些只是看过几天某个流行语言的语法或者视频,再或者只是写过hello world是远远不够的。

    如果你恰好是熟悉go或者c++语言,那么你在学习以太坊或者比特币这些经典的区块链技术实现的时候会更具有优势。

    上面说的都是些外功,而内功则不容易看出高低对于开发工程师,不仅需要具有一定外功基础,也要日积月累修炼内功。

    在区块链技术中,内功包括了高等数学、近世代数、离散数学、图论等数学基础,还有包括了诸如计算机组成,编译原理,计算机网络,数据结构,操作系统,算法,设计模式,网络安全等计算机基础。

    这些东西类似武林秘籍中的“易筋经”,短期打架帮不上忙,但是时间越长,内功的作用就会越明显。

    第二关

    如何成为区块链工程师?

    进入这一关的前提是你已经是个开发工程师了,并且具有一定的内外功基础。

    那么接下来,你需要掌握区块链的核心原理和技术

    首先,有个创世块,就是区块链的第一个区块。

    然后,我们分解动作:有交易的产生,交易的传递,交易的接收,交易的确认,到区块的产生、传递和确认。

    循环这个过程又有新的区块的产生,同时我们把一个能够代表前一个区块的一个记号记录在这个新产生的区块中。这样所有的区块就从创世块开始串在一起,形成一个链条,这个链条就是区块链。

    在这个过程中,交易信息可能会被伪造和篡改,那么我们需要用密码学的方法保证数据的安全

    我们还要学习通过p2p网络进行信息的传递,通过共识算法来实现分布式的节点之间能够达成一致,通过基于时间戳的区块链来保证事件发生的顺序的不可篡改,通过学习特定的数据存储结构来存储区块中的数据等等。

    掌握了上述基本操作还不够,你还需要学习区块链技术的开发语言

    目前,区块链技术从1.0(以比特币为代表)发展到2.0(以以太坊为代表)。在2.0的一般架构中,主要分为主链开发区块链应用开发两部分。

    我们以苹果手机的系统做类比,主链开发就像开发一个苹果操作系统,在上面可以运行各种各样的APP;

    应用开发就是开发能够在主链上运行的应用程序,比如微信等等。

    主链开发的主要语言有go语言、C++、Java等,比如比特币最主要的开发语言是C++,以太坊和超级账本Hyperledger的主要开发语言都是go。

    现有主链的技术方案中,go语言是应用最多的,当然也有一些新链采用了一些例如rust等新的语言。

    区块链应用开发就是常见的智能合约的开发,智能合约的开发语言在各主链中不尽相同。

    我们以以太坊为例,应用最广泛的智能合约开发语言是solidity,这是一种类似JavaScript的高级语言。

    学会go之后我们是不是就可以编写主链程序了?如果你是天才,那是有可能的。

    如果你说“师傅,我只想学几招打几个街头小混混,我不想称霸武林”,那你可以只学学应用开发,先学习solidity的基本语法,然后针对具体的应用场景开发应用即可。

    不过,由于以太坊是支持图灵完备的,所以你写应用的时候需要格外小心,不然很容易伤到自己。

    著名的“THE DAO”事件就是一个武艺不精者失手伤了一群人的例子。

    按理说,应该是先学习主链的开发,然后再学习上面的应用。

    但是,应用开发相对主链更形象,更有趣一些,也更容易入手一些,所以也可以先学习应用开发,有一些直观的感受后再来逐步啃主链这个硬骨头。

    如果你能走到这一步,那么恭喜你,你已经成为一名区块链工程师了 —— 张嘴要个30K应该没有什么问题,能不能拿到50k就要看你的修为了。

    不过你要是想成为一派宗师,现在还为时尚早,搞不好还会被人打得落花流水。

    第三关

    如何成为年薪百万的区块链工程师?

    要想成为一派宗师,那你必须得有两把刷子才行。

    你可能想问,我每天勤学苦练,每天不断地写代码行不行。我只能说,有可能。

    回想一下,我们见过的武林宗师,有的靠师承名门,有的靠天赋异禀,有的靠运气好。

    这里我们说的师承名门的人,就是我们在“第一关”里提到的内功深厚之人,比如那些原来就是密码学专家,分布式系统专家,软件专家的人,在掌握区块链技术之后融会贯通,把自己的内功融入到区块链的技术中,自创一派,这就是年薪百万的武林宗师了。

    当然,也有天赋异禀的人,原来就懂一些计算机编程,后来看到了区块链的技术,不断钻研,理解越来越深,并自创一套,比如杨过这样的。

    也有像复制忍者“卡卡西”一样的,集各家之所长,为我所用,并加以改进,创出一个博采众长的技术。

    当然,对于大多数人来说,可能不一定师承名门,也不一定天赋异禀,那就需要我们用科学的方法,投入足够的努力来学习、实践,方能成为一代大侠,就像郭靖这样。

    所以,成为年薪百万的区块链工程师,具体的进阶路线可以总结如下:

    • 1. 掌握一定的编程基础并有实践经验当然要是会go和js,后面学起来能节省学语言的时间

    • 2. 学习区块链技术原理,这里需要学习密码学知识,共识算法,p2p网络等

    • 3.学习solidity面向对象编程,以太坊应用的开发、部署、测试

    • 4. 接下来学习主链的开发为了更好地学习,我们先来学习前辈以太坊、比特币的源码实现

    • 5. 最后,需要我们自己完整地设计并实现自己的主链和应用开发

    与其说这是大侠的一生回顾,不如说,这是新一代大侠的诞生路径。希望这篇文章梳理的内容能够帮助你快速学习区块链技术。

     

     

    本文作者:魏红心,链块学院执行院长,清华大学电子系博士

    链块学院:专注于区块链技术研发与教育

     

    —————END—————

     

     

    本文完,获取更多资讯,敬请关注区块链工程师。

     

    展开全文
  • 区块链核心技术开发与应用培训班 课程为多期多地点,内容相似。具体请加微信咨询: 各企事业单位、高等院校及科研院所: 2018年伊始,区块链就火热来袭。2018年2月份,人民网上线区块链专版;2018年3月份,工信...

    区块链核心技术开发与应用培训班

    课程为多期多地点,内容相似。具体请加微信咨询:

    各企事业单位、高等院校及科研院所

    2018年伊始,区块链就火热来袭。2018年2月份,人民网上线区块链专版;2018年3月份,工信部牵头组建区块链标准委员会;同时,发改委成立区块链投资研究中心。区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人们的生产力,电力解决了人们基本生活和生产的需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式。在全国的两会上,众多的委员也都热议区块链。那么到底什么是区块链?他到底神奇在哪里?徐小平说,区块链技术带来的影响再强调都不为过!吴晓波说,未来十年一定是区块链的世界!大多数人说,10年后我们看区块链就像今天看互联网一样。如果未来区块链像水一样,我们今日如何抢到一张船票,航行在区块链的海洋?

    目前,区块链技术已经在金融业、供应链管理、文娱产权保护、制造业、医疗数据、认证管理、公共管理、法律和审计、物联网、大数据 云计算、AI、游戏等行业中得到越来越多的应用。

    中国管理科学研究院职业资格认证培训中心特举办“区块链核心技术开发与应用培训班”。本次对前沿区块链技术的方法及应用进行了全面的讲解,同时进行深入的应用讨论,帮助参加学员掌握、利用区块链技术进行具体的科研和工程技术工作的开展。

    本次培训由北京中际英才文化传媒有限公司、北京宏盛元亨文化交流中心承办。通知如下: 

    一、培训目标:

    课程中通过细致讲解,能够把握区块链的技术发展趋势,使学员掌握该技术的本质,即以数据加密、时间戳和分布式共识算法等基础技术为依托,实现链式存储、智能合约和隐私保护等高级功能的分布式账本技术。

    1、学习区块链技术的概念、发展历程、技术流派和典型应用场景;

    2、了解企业级区块链平台的架构设计和功能模块;

    3、通过区块链实际项目案例加深对区块链技术的认知和理解。

    4、在各个行业中的具体应用案例及场景。

    二、培训专家: 

     来自中国科学院计算技术研究所、清华大学、北京大学、人民大学等科研机构和大学的高级专家,拥有丰富的科研及工程技术经验,长期从事区块链、网络安全等领域的教学与研究工作。

    (机房上课,每人一台电脑进行实际案例操作,赠送 U盘拷贝资料及课件和软件)

    三、时间地点:   第一天报到、授课三天,大学机房上课,理论和实践结合

    201807月20 — 20180723    北京

    中国管理科学研究院职业资格认证培训中心                             

                                                                 二零一八年五月二十八日     

     

     

     

    四、培训课程大纲

    第一讲、区块链去中心化应用需求、基本问题和技术要素及体系结构

    (1)去中心化的概念、应用需求与应用场景

    (2)去中心化的维度和基本问题

    (3)去中心化的技术要素及系统体系结构

    (4)典型区块链平台的比较

    (5)典型区块链平台的安装与简单应用开发实习

    第二讲、区块链关键算法、技术方法

    (1)区块链数据结构以及变种:K-V存储模式、账户中心存储、交易中心存储模式

    (2)密码学技术:对称/非对称加密技术;隐私保护技术方法

    (3)故障容错(Paxos算法及变种)、拜占庭容错算法(PBFT算法及变种)、POW和POS共识算法及变种

    (4)智能合约原理与代码解析

    (5)典型区块链应用开发以及智能合约实现

    第三讲、区块链前沿技术方法:

    去中心化系统的效率和可扩展性技术方法

    (3)并发与多链技术方法

    (3)状态同步机与分片技术方法

    (3)复杂合约代码解析与操作实现

    第四讲,典型的去中心化系统

    (3)比特币系统体系结构与关键技术方法

    (3)以太坊体系结构与关键技术方法

    (3)超级账本的体系结构与关键技术方法

    (3)BigChain的体系结构与关键技术方法

    第五讲技术趋势和应用创新

    (3)价值转移和金融交易

    (3)版权、身份认证、溯源与追踪

    (3)信息集成和城市计算

    (3)国防联合指挥系统的网络和数据的主动防御

    (3)知识验证与分享

    (3)可信计算与协作:从真实到可信的技术趋势;从可信到协作的技术趋势

    第六讲智能合约及Solidity编程实战

    (1)匿名方法、修改器、代币部署演示

    (2)建立加密代币、建立标准代币部落币「BLC」

    (1) 智能合约--“投票”“公开拍卖”“创建属于自己的代币”

    (3)以太坊web3接口

    第七讲以太坊网络及去中心化应用Dapp项目实战

    (1)以太网网络类型

    (2) 构建本地私有网络,自定义创世区块

    (3)在本地私有网络上挖矿

    (4)以太坊DAPPDE架构设计

    (5)开发以太坊Dapp应用

    (6)手动添加静态节点

    (1)以太坊web3接口

    (2)搭建以太坊在线钱包

    (3)在Windows上搭建truffle 的开发框架

    (3)在ubuntu上安装以太坊客户端及运行

    第八讲、辅助课程

    (1)通过一个App的演示深入理解区块链运行原理

    (2)比特币钱包BitPay使用教程

    (3)ETH与以太坊代币钱包MyEtherWallet使用教程

    (4)如何确定数字货币安全性

    (5)学后交流、微信群、QQ群建立;

     

     

    五、参会对象:

    各省市、自治区从事金融、互联网、物联网、云计算、医疗、文 化、娱乐、物流、制造业、认证公证、公共 管理、法律和审计、旅游行业等领域相关的企事业单位技术骨干、科研院所研究人员和大专院校相关专业教学人员及在校研究生等相关人员,以及区块链广大爱好者;

    六、费用标准:

    A,每人4300元(含报名费、培训费、午餐费、资料费、证书费)住宿可统一安排,费用自理。

    B,每人4800元(含报名费、培训费、午餐费、资料费、证书费)住宿可统一安排,费用自理。

    七、颁发证书:

    参加相关会议并通过考试的学员,可以获得:

    A类,由中国管理科学研究院职业资格认证培训中心颁发的《区块链核心技术应用工程师》(高级)专业技能资格证书,官方网站查询,该证书可作为有关单位专业技术人员能力评价、考核和任职的重要依据。

    B类,由工信部人才交流中心颁发的《区块链核心技术应用工程师》国家紧缺人才培养工程证书,该证书直接纳入工信部人才库。(加上A类共两本证书)

    注:请学员带两寸彩照两张(背面注明姓名)、身份证复印件和学历证明复印件各两张。

    展开全文
  • 为了让广大区块链技术爱好者更好地学习区块链技术,木姜子科技和问我学院联合推出区块链技术培训课程,为适应广大学员的的技术基础情况,我们将课程分为6个阶段。您可以参加其中任何一个阶段的学习,也可参与所有...

    为了让广大区块链技术爱好者更好地学习区块链技术,木姜子科技和问我学院联合推出区块链技术培训课程,为适应广大学员的的技术基础情况,我们将课程分为6个阶段。您可以参加其中任何一个阶段的学习,也可参与所有课程的学习;如果你没有任何基础,我们建议你学习整个体系的课程,如果你已经掌握其中的某一个阶段或者某几个阶段,建议您选择学习。

    课程简介

    本次课程是由木姜子科技和问我学院联合推出的区块链重磅课程,课程涵盖了从编程语言,密码学到区块链底层技术理论与实践。学完本次课程,您将掌握这些技术:go语言,js 和 NodeJs, 区块链钱包技术,区块链公链底层原理与代码实战,公链底层原理与代码实战,区块链浏览器技术,链上代码(合约)技术;你将能够基于 COSMOS,ETH 和 Fabric 来开发自己的公链或者联盟链;你将对 docker, nginx, K8s, elasticsearc, levelDB, rocksDB,密码学等等对技术有所了解,并能基于 docker, nginx, K8s部署自己的项目。

    以下是各个阶段的学习费用:

    第一阶段:Go语言

    学习费用为: 1500 元

     

    第二阶段:NodeJs 和 H5 (为区块链浏览器开发做准备)

    学习费用为: 1500 元

     

    第三阶段:Go语言开发区块链钱包(BTC,ETH和OMNI系列)

    学习费用为: 2000 元

     

    第四阶段:公链联盟链(Cosmos, Ethereum和Fabric)

    学习费用为: 2000 元

     

    第五阶段:区块链浏览器(Cosmos, Ethereum和Fabric)

    学习费用为: 2000 元

     

    第六阶段:公链钱包和合约开发

    学习费用为: 2000 元

    注意:整体打包价格为 1 万元

     

    需要学习的联系博主

     

    展开全文
  • 原文链接:【链块技术 01期】区块链中的密码算法 近两年,随着区块链日益火爆,密码算法也再次高频地出现在各大报端。 密码的目标 密码学DavidKahn在他的被称为“密码学圣经”的著作中是这样定义密码学的:...

     

    原文链接:【链块技术 01期】区块链中的密码算法

    近两年,随着区块链日益火爆,密码算法也再次高频地出现在各大报端。

    密码的目标

    密码学DavidKahn在他的被称为“密码学圣经”的著作中是这样定义密码学的:“密码术(cryptology)就是保护。”

    保护什么呢?

    首要的当然是保护信息本身不被别人获取(机密性);同时,保护信息不被伪造、篡改(完整性);能够验证信息的发送者(可认证);另外,也需要防止信息发出者抵赖(不可抵赖)

    密码的分类

    密码学分为密码编码学密码分析学两大分支:

    • 前者的目标是构建功能更强大、更有效的新的加解密算法;

    • 后者的目标则是发现已有密码算法的弱点,以便不用秘钥就能还原明文。

    现代密码学中将密码算法分为对称加密非对称加密两类。

    • 对称加密,加解密采用预先分配好的相同的密钥;

    • 非对称加密,加密和解密采用预先分配好的秘钥,但是加密和解密采用不同的密钥。

    实现非对称加密算法有多种方法,大多数都是基于求解数学难题的,主要包括三类:大整数分解、离散对数和椭圆曲线。

    1、大整数分解类问题:

    给出两个大约数,很容易就能将它们两个相乘。但是,给出它们的乘积,找出它们的因子就不那么容易了。这就是许多现代密码系统的关键所在。

    2、离散对数类问题:

    目前,人们还没有找到复杂性在多项式范围内的求解离散对数问题的算法。

    3、椭圆曲线类问题:

    就是将离散对数问题应用于椭圆曲线上的点。

    需要注意的是,这些问题只是看上去不可解,因为历经多年仍未能找到一个简单的解决办法,一旦找到了一个解决办法,那么基于这些问题的加密算法就不再安全了。

    非对称加密算法可以用于加解密信息(主要是用于对称加密的密钥信息传递),也可以用于数字签名和身份认证等。

    提起数字签名,不得不提起密码学领域的另一个知识:哈希函数

    数字签名的标准方法通常是,给定一个消息m,利用哈希函数先创建一个定长的消息摘要h(m),之后用私钥签署摘要S[h(m)]。所签署的消息以(m,S[h(m)])对的形式发送。通过公钥恢复h(m)的值,并将h应用到所接收到的消息m上,验证消息的真实性。

    这个过程如下图所示:

    其中,消息摘要是对消息内容进行哈希运算,获取唯一的摘要值来指代原消息内容。

    密码算法详解

    区块链中涉及的密码学知识主要包括哈希算法和椭圆曲线等,本文着重介绍一下这两种算法。

    (一)哈希算法

    1、哈希定义

    哈希算法能计算任意长度消息的摘要,该摘要非常短且通常是固定长度的。哈希函数没有密钥,且函数本身是算法公开的。

    例如计算一段话“helloblockchainworld,thisisyeasy@github”的SHA-256Hash值。

    $echo"helloblockchainworld,thisisyeasy@github"|shasum-a256

    db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90

    这意味着对于某个文件,无需查看其内容,只要其SHA-256Hash计算后结果同样为

    db8305d71a9f2f90a3e118a9b49a4c381d2b80cf7bcef81930f30ab1832a3c90

    则说明文件内容极大概率上就是“helloblockchainworld,thisisyeasy@github”。

    2、哈希特性

    对于安全用途来说,哈希函数具备如下特性:

    • 正向快速给定明文和哈希算法,在有限时间和有限资源内能计算得到哈希值

    • 逆向困难给定哈希值,在有限时间内很难逆推出明文

    • 输入敏感原始输入信息发生任何改变,新产生的哈希值有很大不同

    • 冲突避免很难找到两段内容不同的明文,使得它们的哈希值一致

    冲突避免有时候又称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。

    如果给定明文前提下,无法找到与之碰撞的其他明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生Hash碰撞的明文,则称算法具有“强抗碰撞性”。

    3、常见算法

    目前常见的专用哈希算法包括MD5和SHA系列算法、RIPEMD系列算法。

    • MD4(RFC1320)是MIT的RonaldL.Rivest在1990年设计的,MD是MessageDigest的缩写。其输出为128位。MD4已被证明不够安全。

    • MD5(RFC1321)是Rivest于1991年对MD4的改进版本。它对输入仍以512位进行分组,其输出是128位。MD5比MD4更加安全,但过程更加复杂,计算速度要慢一点。MD5已被证明不具备“强抗碰撞性”。

    • SHA(SecureHashAlgorithm)并非一个算法,而是一个哈希函数族。NIST(NationalInstituteofStandardsandTechnology)于1993年发布其首个实现。目前知名的SHA-1算法在1995年面世,它的输出为长度160位的Hash值,抗穷举性更好。SHA-1设计时模仿了MD4算法,采用了类似原理。SHA-1已被证明不具备“强抗碰撞性”。为了提高安全性,NIST还设计出了SHA-224、SHA-256、SHA-384和SHA-512算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。

    • RIPEMD(RACEIntegrityPrimitivesEvaluationMessageDigest),是HansDobbertin等3人在MD4、MD5的基础上,于1996年提出来的。算法共有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。RIPEMD建立在MD的基础之上,所以,其添加数据的方式和md5完全一样。

    目前,MD5和SHA1已经被破解,一般推荐至少使用SHA2-256或更安全的算法。

    4、SHA256

    SHA-256属于SHA家族一员,SHA-2算法簇中的一类。对于小于264位的消息,产生一个256位的消息摘要。

    SHA-256的计算过程分为两个阶段:消息预处理和主循环。

    在消息预处理阶段,主要完成消息的填充和扩展,将所有输入的原始消息转换为n个512比特的消息块;主循环阶段,对每个消息块利用SHA-256压缩函数进行处理。具体计算步骤如下:

    • 步骤1:填充附加位特。填充消息使其长度n≡(448mod512)。填充由一个1和后续0组成。其中,448=512-64预留了长度位。

    • 步骤2:附加长度。在填充后的消息后附加64位的长度信息。

    • 步骤3:初始化缓存。哈希函数的中间值及最终结果保存在256bit的缓存中,缓存由8个32位的寄存器(A、B、c、d、e、f、g、h)表示,将这些寄存器初始化为如下的整数(十六进制):

      A=0x6A09E667,B=0xBB67AE85,C=0x3C6EF372,D=0xA54FF53A,

      E=0x510E527F,F=0x9B05688C,G=0x1F83D9AB,H=0x5BE0CD19

    • 步骤4:以512位分组为单位处理消息并输出结果。

    所有的512-bit分组处理完毕后,对于SHA-256算法最后一个分组产生的输出便是256-bit的消息摘要。

    (二)椭圆曲线

    1、椭圆曲线定义

    密码学中采用有限域上的椭圆曲线,一般有两种:一种是定义在以素数p为模的有限域GF(p)上;另一种则是定义在特征为2的伽罗瓦域GF(2^m)上。本文简要介绍第一种。

    所谓有限域上的椭圆曲线,简单来说就是满足下面式子要求的曲线(x,y,a,b都是小于素数p的非负整数):

    2、椭圆曲线性质

    椭圆曲线有如下两个性质:

    • 1)椭圆曲线关于X轴对称;

    • 2)画一条直线跟椭圆曲线相交,最多有三个交点。

    3、椭圆曲线上的运算

    由于椭圆曲线加密进行的运算实际上都是在椭圆曲线上进行的,所以需要定义一些椭圆曲线上的运算(注意:“加法”和“乘法”的定义仅仅是为了方便描述)。

    • 1)椭圆曲线的0点

      定义坐标系中距离X轴无穷远点为椭圆曲线上的一个特殊点,称为0点。上述第二条性质可以加强为:过曲线上任意两点(可重合)的直线必定与曲线相交于第三点。

    • 2)椭圆曲线上点的加法

      设椭圆曲线上有两点A和B,过这两点的直线与该曲线相交于第三点C,C点关于X轴对称得到D点,则D为A和B两个点的和,记作D=A+B。很明显,D点也在该曲线上。所以椭圆曲线上两点之和也是曲线上的点。

      特别地,如果两点重合,则作椭圆曲线在A点处的切线,与曲线相交于B,B点关于X轴对称得到C点,则C点为A点与自身的和,记作C=A+A。

    • 那么关于这个加法,我们可以得到以下结论:

      椭圆曲线上的加法满足交换律,即A+B=B+A

      A点为A点和0点之和,即A+0=A

    因为0点是无穷远点,所以过A点与0点的直线是垂直于X轴的,它与曲线相交于另一点B点,那么B点关于X轴对称的点就是A点。

    4、椭圆曲线上点的乘法
    设P是椭圆曲线上的一个点,那么正整数k乘以点P的结果由下面的式子定义,注意式子中的加法是上面提到的椭圆曲线上点的加法:

    1∗P=P
    2∗P=P+P
    3∗P=2∗P+P

    k∗P=(k−1)∗P+P

    5、公钥生成

    实际应用中,我们并不需要关心椭圆曲线的众多参数如何选取,只要从密码学家们精心挑选的一堆曲线中选择一个就行了。比特币选择secp256k1生成公钥。

    由私钥生成公钥的过程如下:

    • 1)选取基点P

    确定椭圆曲线一个点作为基点P,由于所有的点构成一个有限群,那么基点P必然可以作为一个生成元生成一个子群。记这个子群的阶数为n,也就是说P点累加n次得到群的单位元(无穷远点),记做nP=0(无穷远点)。

    • 2)选取私钥

    • 3)计算公钥

    公钥点Q定义为K个P相加(即k乘以点P)。

    密码学在区块链中的应用

    密码学在区块链中的应用场景主要包括地址生成、交易签名和共识机制等。

    1、钱包地址生成

    以比特币系统为例讲解密码学在钱包地址生成中的应用。

    1)私钥

    比特币系统一般通过调用操作系统底层的随机数生成器来生成256位随机数作为私钥。比特币私钥的总量大,极难通过遍历全部私钥空间来获得存有比特币的私钥,因而密码学是安全的。

    2)公钥

    比特币的公钥是由私钥首先经过Secp256k1椭圆曲线算法生成65字节长度的随机数。

    3)钱包地址

    将公钥进行SHA-256和RIPEMD160双哈希运算生成20字节长度的摘要结果,再经过2次SHA-256哈希算法和Base58转换形成33字符长度的钱包地址。

    公钥生成过程是不可逆的,即不能通过公钥反推出私钥。比特币的公钥和私钥通常保存在比特币钱包文件,其中私钥最为重要。丢失私钥就意味着丢失了对应地址的全部比特币资产。

    2、交易签名

    交易签名的场景则是由发送者A采用自己的私钥对信息进行加密后发送给接收者B,B使用A的公钥对信息解密,从而验证信息是由A发送的。

    3、共识机制

    哈希函数的难题友好性构成了基于工作量证明(POW)的共识算法的基础。比特币挖矿的工作量证明算法中,通过计算区块的SHA-256哈希值小于难度值完成挖矿。

    4、Merkle树

    区块链的数据结构使用前后区块的哈希值作为指针构造Merkle树,用来进行完整性验证处理。

     

    参考文献:

    [1]邹均,张海宁等.区块链技术指南[M].北京:机械工业出版社,2017

    本文作者:魏红心,链块学院执行院长,清华大学电子系博士

    链块学院:专注于区块链技术研发与教育

     

    --------------END--------------

     

    本文完,获取更多资讯,敬请关注区块链工程师。

     

    展开全文
  • 区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点...

    转载自:http://blog.csdn.net/u012562943/article/details/60779241

    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。

    1. 技术人员看待区块链的正确姿势

    区块链虽然是一个新兴的概念,但它依赖的技术一点也不新,如非对称加密技术、P2P网络协议等。好比乐高积木,积木块是有限的,但是不同组合却能产生非常有意思的事物。

    我接触过一些工程师,初次接触区块链时,不约而同的表达了:都是成熟的技术,不就是分布式存储嘛。站在工程师的角度,第一反应将这种新概念映射到自己的知识框架中,是非常自然的。但是细究之下发现,这种片面的理解可能将对区块链的理解带入一个误区,那就是作为一个技术人员,忽略了区块链的经济学特性——一个权力分散且完全自治的系统。

    区块链本质上是一个基于P2P的价值传输协议,我们不能只看到了P2P,而看不到价值传输。同样的,也不能只看到了价值传输,而看不到区块链的底层技术。

    可以这么说,区块链更像是一门交叉学科,结合了P2P网络技术、非对称加密技术、宏观经济学、经济学博弈等等知识,构建的一个新领域——针对价值互联网的探索。

    那 什么是价值互联网 ?价值互联网可以是当下如日中天的电子商务所衍生的支付业务。但,真的只是支付领域吗?很显然这是不够的,一级资本市场,实体资产确权与转移,证券登记交割、征信与反欺诈。我们再仔细想想,我们的各大电商平台的专业差评师,恶意刷单还少吗?

    如今的金融领域,除了支付比较便利之外,在其他绝大部分的业务中,我们就像是被套着锁链走路一样,我们反复确认,反复审核,反复监督,我们反复构建一个又一个的大大小小的高可用集群,保证线上服务的可靠性与连续性,我们雇佣一个又一个的安全工程师,交付一个又一个的渗透测试项目。为什么?因为作弊的成本太低了,低到只要改数据库的一行记录就可以提取上百万的资金。

    强大的互联网给了我们成本几乎为零的高速信息传输通道,却没有一个成本低廉可靠的高速价值传输通道,那么这也就是区块链即将带来的。

    区块链是一个公共的分布式总账,下面从技术角度简单介绍一下:

    想象有一个100台的分布式数据库集群,现在的情况是这100个节点实际上的拥有者是一个机构,并且所有节点处在该机构的内网当中,所以这个机构想让这100个数据库节点干嘛就干嘛,换句话说这100个节点之间是处于一个可信任的环境,并且受控于一个实体,这个实体具有绝对仲裁分配权。

    另外的情况是这样的,想象这100个节点分别归不同的人所有,且每个人的节点数据都是一样的,即完全冗余,并且所有的节点是处在广域网当中,换句话说就是这100个节点之间是不信任的,且不存在一个实体,它拥有绝对仲裁权。

    现在考虑第二种情况,采用什么样的算法(共识模型)能够提供一个可信任的环境,使:

    • 每个节点交换数据过程不被篡改;交换历史记录不可被篡改;

    • 每个节点的数据会同步到最新数据,且承认经过共识的最新数据;

    • 基于少数服从多数的原则,整体节点维护的数据本身客观反映了交换历史。

    区块链本质上就是要解决以上第二种情况的一种技术方案,更确切的说应该叫分布式的冗余的链式总帐本方案。有关区块链的一些要素,在我以往的文章里有总结过一些:

    • 包含一个分布式数据库

    • 分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本

    • 区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体

    • 区块链只对添加有效,对其他操作无效

    • 基于非对称加密的公私钥验证

    • 记账节点要求拜占庭将军问题可解/避免

    • 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。

    • 共识过程能够解决double-spending问题

    所以作为一个技术人员,不应当只看到了区块链所依赖的技术,更应该关注区块链以外的点和面,综合来看,区块链将会有趣得多。

    2. 区块链的一般性架构介绍

    有关区块链本身的发展史,网络上资料比较多,本文不再赘述。

    而有关区块链技术的介绍,在各个区块链平台的社区是有详细资料的,但是针对这些资料的总结,以及抽象出一共通概念的介绍,还是凤毛麟角,本文尝试总结一下。

    在介绍之前,我想稍微介绍一下公有链,联盟链的概念,这些概念是以太坊创始人Vitalik提出的,我在这些概念的基础上做了一些研究。

    其实区分公有链、联盟链很简单,只要看这个区块链的访问权限就可以了,如果访问该区块链需要获得链上节点的许可,那么这是一个联盟链,否则是公有链。

    根据名称,我们也可以”望文生义“,公有表示一个完全开放的网络,联盟表示一个半开放的网络,成员之间是共享的,非成员身份是没有自由访问权限的,所以我们也称联盟链为许可链。

    下面我们来看几个比较主流的区块链平台(公有链,皆开源):

    • 比特币 Bitcoin

    • 以太坊 Ethereum/经典以太坊 Ethereum Classic

    • 比特股 Bitshares

    我一般戏称为”三巨头“,从生态上来看,比特币是最为成熟稳定的,以太坊更像是一个冲在前面的勇士,比特股相比前两位生态要小很多,但是从创新的角度,也不亚于前两位。

    其他的很多项目,是从这三个区块链上衍生出来的,所以以这三个为基础,基本上可以吃透区块链了。

    不得不提的还有Linux基金会项目——HyperLedger项目(主打联盟链,开源),也是旨在打造一个通用的区块链技术,不过我认为目前尚在开发迭代当中,还没有具体的应用案例,按下不讲。

    另外还有一些银行寡头间的联盟链项目——R3 CEV项目(联盟链,闭源),以及中国的R3项目——ChinaLedger(联盟链,闭源),当然这些不是开源的,我无法获得有用的资料进行分析,所以就不展开了。

    从技术上来看,针对不同的业务场景,对区块链有不同需求,比如实时结算业务,要求区块链提供秒级的交割,相对应的就是出块速度的要求,而出块速度过快往往会导致区块链分叉(fork),形成孤儿链,孤儿链是无效的,那么交易也就作废了,影响了区块链的最终一致性。

    如果频繁产生分叉造成相当比例的用户交易失效,那么可以认为系统是不可靠的。

    如果我们将这种实时性要求比较高的业务安插到联盟链中,就可以控制风险,通过调整共识算法,利用快速一致共识模型(Consensus Model)来避免上述问题,虽然不如公有链那么健壮,但对某些特殊场景足够了。

    所以架构层面,对公有链和联盟链的技术也要差异化对待。

    不过客户端整体的设计还是有一些通用的概念的,如下图:

    一个区块链至少分为三层,最底层是一些通用的基础模块,比如基础加密算法,网络通讯库,流处理,线程封装,消息封装与解码,系统时间等;

    中间一层是区块链的核心模块,一般包含了区块链的主要逻辑,如P2P网络协议,共识模块,交易处理模块,交易池模块,简单合约或者智能合约模块,嵌入式数据库处理模块,钱包模块等等;

    最上面一层,往往都是基于Json Standard RPC的交互模块,基于Json-RPC,我们还可以做出更好的UI界面,也可以是一个web-service。

    如果区块链 支持智能合约,可能还要分更多的层,比如增加BaaS层,区块链上的智能合约提供自治的服务,比如下面这张以太坊的架构图(来自Google,仅作参考):

    这种分层更加关注的是区块链本身的分层,即业务上的视角,而不完全是技术的。

    我们再转向比特币的设计:

    比特币几个模块之间的耦合度其实比较高,而且有不少历史包袱,比特币的发明者——中本聪在开发比特币的时候,使用VC++开发,而VC++的标准库中的sstream流处理性能非常感人,不得不放弃,自行实现了了基于vector 的流处理容器。而随着c++11的推出以及标准库的更新迭代,性能不可同日而语。

    从整张图我们可以看出,比特币的模块比较少,也比较简单。chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密还有存储相关的,mem-pool是未确认的交易池。得益于比特币核心开发者的不朽贡献,相比中本聪时代的比特币代码,现在的比特币代码质量已经相当不错了。

    以上无论哪种设计,一般都要从P2P网络协议作为切入,作为一个P2P钱包,既要提供Service也要提供Client,作为Service依赖P2P网络协议,作为Client依赖Json-RPC。

    需要指出的是,目前”三巨头”所使用的账户模型是不同的(所谓账户模型是指账户记账方法),比特币使用UXTO模型,以太坊和比特股使用账户余额模型。

    UXTO模型(Unspent Transaction Outputs (UTXOs) ):此模型表达了一种转移的概念,即任何产生的新币,在以后的生命周期中,只有转移,没有消亡,转移实质上是由加密算法的签名与验证控制的:

    账户余额模型:账户余额模型摒弃了这种强验证的账户模型,即账户余额回归到数字加减,这样做提升了交易的效率。

    3. 共识算法与分布式

    终于来到重点了,本文每节其实都可以展开成为独立的文章,内容所限,简单讲。

    所谓区块链共识过程,在上文有所提及,是指如何将全网交易数据客观记录并且不可篡改的过程。目前"三巨头"分别使用不同的共识算法(Consensus Algorithm), 比特币使用工作量证明PoW(Proof of Work),以太坊即将转换为权益证明PoS(Proof of Stake),比特股使用授权权益证明DPoS(Delegated Proof of Stake)。

    以上这些算法我称之为“经济学”的算法,所谓经济学的算法,是指让作弊成本可计算,且让作弊成本往往远大于作弊带来的收益,即作弊无利可图,通过这种思想构造一个用于节点之间博弈的算法,并使之趋向一个稳定的平衡。

    相对应的我们还有计算机领域的分布式一致性算法,例如Paxos、Raft,我也称之为传统分布式一致性算法。

    他们之间的最大区别是:系统在拜占庭将军(Byzantine Generals Problem)情景下的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。然而无论是Paxos还是Raft算法,理论上都可能会进入无法表决通过的死循环(尽管这个概率其实是非常非常低的),但是他们都是满足safety的,只是放松了liveness的要求, PBFT也是这样。

    下面是一些传统分布式一致性算法和区块链共识过程的异同点。先来看相同点:

    • Append only

    • 强调序列化

    • 少数服从多数原则

    • 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志

    这是不同点:

    • 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题;

    • 传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。

    考虑上面的不同点,结合公有链和联盟链的特征,我们有:

    • 联盟链:半封闭生态的价值网络,存在对等的不信任节点,如某某协会成员之间。

    • 公有链:开放生态的价值网络,这层主要是为行业链和私有链提供全球交易网络。

    由于联盟行业链其半封闭半开放特性,使用Delegated Proof of XXX 是可行的,可以考虑以传统一致性算法作为基础加入拜占庭容错/安全防护机制进行改进也是可以的。

    而针对公有链,PoW/Pos/DPos等“经济学”的算法可能是最优算法。

    技术上,以上不同的共识算法,我们很多新开发区块链都相应的支持一个特性:共识模块可插拔,以应对不同场景下的要求。

    下图是一张未来区块链生态示意图:

    公有链提供可信可靠的价值传输网络,上面可以继续组建去中心化应用(DAPP)或者部署联盟链,甚至传统数据库都行,在上层搭建C端应用。

    4. 数字资产与价值流通网络

    这里有张未来区块链发展的示意图:

    ref: Metaverse元界白皮书-CN(概要)

    “三巨头”中,比特币在“数字货币”处,比特股在“去中心化交易所”附近,以太坊在“去中心化组织”处。而实际上,区块链和现实的接触点,还在图示位置。

    所以区块链仍是一个正在成长的事物,结合图5,我们希望构建一个基础设施完善的价值传输网络,上层应用丰富的区块链生态,仍然需要付出巨大的努力。

    下一步目标,是将资产数字化(类比资产证券化),例如我们可以将珍稀物品(艺术品/古董)数字化、知识产权数字化、票据基金等收益权数字化,将极大的提升市场运作效率,配备智能合约,甚至人工智能,可编程社会不再是梦想。

    精彩问答

    问题:还是感觉太抽象,至今都还不能具象化的理解这个区块链,也没找到具象化的解释。

    正如区块链这个名词一样,它是被创造出来的,并没有以往的概念可以映射到上面,所以容易费解。我们不谈这个概念,我们只需要想想我们的互联网还需要什么。正如比特币白皮书提到的,一个点对点的现金系统,他使用的前提要求是很低的,不需要注册,不需要手机号,一个点对点的网络,只要你用设备接入,那么你就可以使用。区块链这个概念也一样,目的是构建一个点对点的生态,解构权力带来的不对称。它本身只是一个共享的总账本,不同于网络中多节点自己记账,再对账,这就瓦解了中心权力。

    问题:区块链技术在互联网身份认证方面如何应用?

    这个问题很好。我目前所做的区块链项目是涵盖了这个概念的,也就是你所说的互联网身份认证。我们认为它是使区块链接入现实业务的必要一环。

    在我们的设想中,首先什么是身份?身份不单单是一个ID号,一个密码,而是一个使用者所有的操作记录集,这个记录集的代号才是身份。正如账户丢失,然后申诉一样,申诉的内容才是真正定位到你这个人。区块链也一样,它需要一样ID,同样它也需要自动验证你历史记录的合法性。目前互联网的身份认证是依赖公安系统的,最简单的方案就是把公安系统中的身份系统映射到区块链中。另外一个方案也是用户自定义记录集,根据交易历史核对身份。当然再更远的未来,结合人工智能,区块链可能有更好的表现。

    问题:实时交割数据如果放到联盟链中,联盟链的数据是否要最终同步到公有链?按分享所说,联盟链的数据对公有链来说是不可信任的,联盟链和公有链中数据是什么关系?

    我认为不可能所有机构都愿意把资产放到公有链上的,一定会出现并存的现象。理想的情况当然完全使用公有链搭建去中心化应用。联盟链和公有链直接的数据是单纯的引用关系,我认为开放的关键数据集,如用户身份应该沉淀到公有链,让用户自己管理,而机构比较私有的关键数据,应该使用访问权限将它与公有链隔离,所以联盟链的数据和公有链的数据我认为是互补的。也就是说,联盟链的数据是否要同步到公有链,这个要是视机构本身的需求而定。另外,公有链的外部数据引用,我们称之为data-feed,这个东西就要把人的因素引入了,比方说法务,律师,政府机构等等,作为一个仲裁者帮助引用数据,好坏可以让市场评价信用,正如对一个机构评级一样,如果这样就很透明开放了。

    问题:有一些很有趣的实体项目比如智能门锁,无人租车,这些都是线下项目,怎么做到互联互通呢?

    首先区块链的项目都是跨平台的,也就是说嵌入式设备可以依托区块链的低信用成本的优势,自动记账,可以是联盟链的,也可以是直接基于某个公有链的DAPP,这些账本是共享的,这些数据在发生引用关系的时候,可以进入公有链通道,打通两者关系。

    其次,任何具体的区块链项目,都是需要依托一个公有链进行的,正如现在很多落地项目都是基于“三巨头”,然而其实目前并没有一个让大家都特别满意的标准,让大家都服,所以我我们还要拭目以待。

    问题:多谢分享,能谈谈最后一张图中区块链发展的各个阶段可能对传统金融行业尤其是银行业的影响吗

    对银行业的影响,我认为现阶段影响不大,尤其是国内。这个要视区块链发展的程度而定。我所了解的,央行已经开始着手自己的数字货币了,这对银行来说,顶多就是再来一次IT架构升级的事儿而已,可以帮助银行业降低IT成本,也可以方便加强监管。但如果在更远的未来,银行可能不会特别封闭,变成一些区块链的代理节点,也会被所有人所监督,而不是几个特殊机构。

    问题:如果公有链能够记录所有历史,有没有技术能破坏或封禁,有没有生命终结的那天?

    有一点技术风险,通用量子计算商用的时候,目前的加密技术很多都失效了,基于密码学的区块链受影响最大(当然现在的中心化架构也会受到影响)。这取决于理论研究的成果,如果出现了新的密码学理论可以抵抗量子计算就没问题。如果从P2P网络的角度,是没有任何机构或个人能封禁的,只要有两个节点还能做交易也能记账,这个区块链就是alive的。

    从经济学的角度,区块链的生死也不主要在于加密技术是否被攻破,而主要在于链上聚集了多少财富和利益,链上的数据有多少价值,如果没有价值了,链自然就死了,反之如果被攻破了,不过是分叉、或者等待新的加密算法出来之后进行数据迁移,这一点跟中心化数据库恢复备份没有什么太大区别。

    展开全文
  • 随着区块链概念理论的不断成熟以及强劲技术的不断深耕,区块链已经成为投资圈中备受关注的热点,从区块链1.0时代落地数字货币比特币、莱特币等,打开了区块链通向新弯道的高速路口,到区块链2.0时代开始通过智能合约...
  • 包括:“区块链工程技术人员”“城市管理网格员”“互联网营销师”“信息安全测试员”“区块链应用操作员”“在线学习服务师”“社群健康助理员”“老年人能力评估师”“增材制造设备操作员”等9个新职业。...
  • 传播智慧我们用心,人生冲锋你们用力第一阶段 区块链与Go编程第1天区块链与Go语言区块链的前世今生区块链现状与就业区块链前景区块链与go语言go语言开发环境的搭建 第2天 Go语言基础标识符关键字字面量操作符表达式...
  • 区块链技术指南学习笔记区块链是什么 区块链是什么 区块链是金融科技(Fintech)领域的一项重要基础...区块链技术尚处于快速发展的早期阶段,涉及分布式系统、密码学、博弈论、网络协议等诸多学科知识,为学习和实...
  • P3 搭建区块链底层技术 P4 待续,实验学习, P5 待续,研究理论, P6 待续,实战检验, 绪言 很多技术都是互通的,关键是我们学在表面还是深入本质。 小伙伴说是吵概念、忽悠人的东西。我不以为然,从域名寻找...
  • 区块链基础:密码学 多年互联网从业经验; 有丰富的的企业网站、手游、APP开...
  • 点击上方“中兴开发者社区”,关注我们每天读一篇一线开发者原创好文比特币可能是一场庞氏骗局,但区块链技术却真实存在。2013年以来,比特币受到了全世界投资者的狂热追捧,虽然几经涨跌,大部分国家监管方对其态度...
  • 传播智慧我们用心,人生冲锋你们用力第一阶段:区块链及其行业及Golang编程第一周- Go语言快速入门:(a)了解区块链从业人员的薪资结构组成(b)了解区块链公司中的职能分类(c)如何快速转型成为区块链高端人才(d...
  • #subheadlines div {font-size: 17px;} #dvContent table[name=logo_release]+p+div[id^=prni_] {clear:both;} ...
  • 课程名称:区块链技术深度剖析 课程编码: 课程学分:2学分 课程学时:32学时 适用专业:网络空间安全,信息安全  《区块链技术深度剖析》  The Depth of Analysis Blockchain Technology  教学大纲 一、...
  • 以太坊社区开发者Vlad Zamfir解释道:“这是一门独立的学科,旨在研究去中心化数字经济学中的协议,这些协议被用于管理商品及服务的生产、分配和消费。...”区块链技术是运行在加密经济学理论基础之上的。我们不妨将...
  • 技术苍穹,迭代未休,区块链技术乘破竹之势而来,已然问鼎2018年技术圈开年“关键词Top榜”。当爆炸式的知识需求,遇上业内资源捉襟见肘的困窘现状,区块链技术及应用峰会(BTA)·中国踏浪而至,一叶扁舟,以渡正在摸...
  • 索引 Angaroa的实现 repo Understanding Serenity, Part I: Abstraction: 中文翻译 ...隔离见证技术 - set wit: segregated witness IBLTs: 可逆式布鲁姆查找表(IBLT) , 如何促进比特币的去中心化, 弱区块(weak bl
  • 内容简介 在这本实用指南中,作者解释了为...读者将了解到区块链的加密存储台账、scarce-asset 模型和点对点技术如何提供比当前软件模型更灵活、更具激励性的结构。 了解使去中心化数据、财富、身份标识、计算和带...
  • 区块链技术 好文收藏

    2018-07-06 05:54:18
    区块链技术基础汪晓明对区块链、以太坊的思考黎跃春区块链博客区块链技术博客区块链架构Blockchain区块链架构设计之一:成员管理Blockchain区块链架构设计之二:分布式账本技术对比Blockchain区块链架构设计之三:...
1 2 3 4 5 ... 20
收藏数 832
精华内容 332