精华内容
下载资源
问答
  • 尚硅谷最权威区块链学习路线图 尚硅谷最权威区块链学习路线图
  • 区块链学习视频,资源搜索不易,链接挂了请私信楼主补链接!区块链学习视频,资源搜索不易,链接挂了请私信楼主补链接!
  • 二、区块链学习-区块链的概念1、 概述2、本质3、工作原理4、技术特点5、区块链的层次模型6、共识算法7、去中心化 参考书籍:《深度探索区块链:Hyperledger技术与应用》 @著 张增骏 董宁 朱轩彤 陈剑雄 1、 概述  ...
  • 区块链学习资料

    2018-05-23 19:15:25
    区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于...
  • 区块链学习笔记

    2018-12-13 15:52:20
    个人学习记录,翻译的一点区块链官方的文档,要深入学习的请到官网查看英文文档
  • 区块链学习

    2018-03-09 17:42:14
    联盟区块链的构建模型,共识机制的设计,记账机制设计
  • 区块链学习入门做一个整理,逐步添加完善,有原创内容,也有网络转载整理分享。暂时取名叫入门到崩溃,欢迎志同 道合的朋友一块来补充完善。 大致整理汇总区块链入门学习相关资料,虽然题目是“入门到崩溃”,希望...
  • 区块链学习视频.txt

    2019-08-13 11:05:36
    全网最火付费课程,从0到1,全面视频学习区块链,里面对区块链有详细的讲解
  • 区块链笔记 好好享受〜 内容 等等
  • 三、区块链学习-区块链的技术平台1、比特币2、以太坊3、瑞波4、区块链商用平台:超级账本5、技术平台的对比 参考书籍:《深度探索区块链:Hyperledger技术与应用》 @著 张增骏 董宁 朱轩彤 陈剑雄 1、比特币  比特币...
  • FISCO BCOS开源社区已沉淀过百篇文章,覆盖了区块链学习各个阶段。为了方便大家对应自身学习阶段找到合适的教程,我们按照区块链学习成长路径对社区文章进行整理排序,希望沿着这份路径规划,大家都能成为独当一面的...

    在这里插入图片描述

    FISCO BCOS开源社区已沉淀过百篇文章,覆盖了区块链学习各个阶段。为了方便大家对应自身学习阶段找到合适的教程,我们按照区块链学习成长路径对社区文章进行整理排序,希望沿着这份路径规划,大家都能成为独当一面的区块链专家。

    我们将区块链学习划分成入门、进阶与专业三个阶段,分别对应本文中初学乍练、攀山越岭、炉火纯青三大模块,随着模块难度提升,学习者对区块链的认知将逐步深入。

    我们也将社区应用、给社区提Issue/PR的方式整理在最后,方便大家了解区块链应用方向。【学习更多V:FISCOBCOS010】

    在这里插入图片描述

    模块目标
    厘清区块链基本概念
    上手FISCO BCOS轻松搭链

    在这里插入图片描述

    亲朋好友都能看懂的区块链

    在这里插入图片描述

    学习区块链需要克服的困难
    新人必学技能树
    说信任区块链时究竟在信任什么?
    区块链世界里不能信什么?
    区块链上的交易真的是“点对点”吗?
    区块链是怎样的一种“分布式系统”
    如何解释“我篡改了区块链”这个问题

    在这里插入图片描述

    参考文档搭起你的第一条链并让它跑起来

    点击查看

    如遇网络问题,可使用国内镜像和CDN加速功能

    国内环境搭建指南

    借助工具快速搭链

    一键搭链神器build_chain | 控制台

    开发你的第一个DAPP

    零基础入门,五步轻松构建应用

    一些复杂业务需要智能合约的实现

    快速入门| 视频教程 | 视频教程 II
    外部账户| ABI接口 |JAVA合约代码

    在这里插入图片描述

    模块目标
    深入应用开发、智能合约编写
    熟悉区块链系统运维配置

    在这里插入图片描述
    交易解析工具 | CRUD功能
    CNS合约命名 | 链上信使AMOP
    存证合约实例 | 开发工具箱 | CA证书

    趁手工具让开发更流畅

    ①SDK

    多语言SDK | Java SDK | Python SDK
    Python SDK镜像 | Node.js SDK

    ②中间件平台WeBASE

    了解WeBASE | 数据导出组件
    节点前置组件 | WeBASE交易 | 使用场景

    ③分布式身份解决方案WeIdentity

    数字时代的身份基础设施建设
    WeIdentity v1.6.0

    ④ChainIDE

    http://live.vhall.com/932699598

    ⑤Ansible For FISCO BCOS

    Ansible介绍和操作演示

    ⑥数据治理通用组件

    了解数据治理组件

    ⑦多方协作治理组件

    了解多方协作治理组件

    ⑧跨链协作平台WeCross

    白皮书 | 功能特性
    入门教程 | 核心接口

    ⑨可信预言机Truora

    了解Truora

    区块链基本设计规范

    一文说清“链上”和“链下”
    联盟链要对区块链做减法

    在这里插入图片描述

    Solidity合约

    基础介绍 | 概念与演进 | 编写指导
    基础特性 | 高级特性 | 设计模式
    编程攻略 | 运行原理 | 测试 | 实操技巧
    实操技巧 II | Solidity 0.6

    预编译合约

    原理解析 | 开发指南

    在这里插入图片描述
    generator介绍 | 证书说明 | 配置说明
    网络端口 | 权限控制 | 角色权限
    日志规范 | 落盘加密

    国密版FISCO BCOS

    国密特性 | 国密版部署

    在这里插入图片描述

    模块目标
    了解区块链底层如何架构
    其中功能如何实现

    在这里插入图片描述

    群组架构

    群组架构原理 | 群组架构实操

    数据存储

    分布式存储原理 | 分布式存储体验
    RocksDB | 存储结构

    共识算法

    rPBFT共识算法 | 基于VRF的rPBFT
    PBFT空块处理

    网络网络压缩

    流量控制流量控制实现 | 策略

    在这里插入图片描述
    多维走读源码方法论

    在这里插入图片描述

    性能优化系列

    区块链的速度困境 | 性能优化方案
    DAG并行交易执行引擎
    共识与同步流程优化
    全方位并行处理 | 性能分析工具
    并行合约开发框架

    其他

    JavaSDK性能提升
    性能压测工具Caliper
    同步模块优化 | 同步性能优化
    交易池优化 | 共识优化

    在这里插入图片描述

    隐私特性与密码学

    ①FISCO BCOS隐私特性

    群/环签名 | 同态加密
    椭圆曲线 | ECDSA解析

    ②WeDPR数据隐私保护方案

    全平台SDK | 核心算法组件
    选择性认证披露场景
    隐私保护系列科普

    在这里插入图片描述
    在这里插入图片描述

    基于FISCO BCOS的数百落地应用
    可助启发区块链学习
    社区提供一展身手的大赛机会

    在这里插入图片描述
    一夜刷屏的区块链已革新哪些行业?附案例

    公益/社会治理

    粤澳健康码跨境互认系统
    绿色出行普惠平台
    互助急救联盟链 | 家政诚信
    社会治理场景下的区块链应用

    金融

    券商区块链 | 网贷良性退出平台

    物联网

    家电跨平台互联

    文化版权

    “人民版权”平台 | “人民版权”发展报告
    版权交易系统

    司法领域

    司法存证取证
    inBC区块链存证服务系统

    智慧城市

    澳门智慧城市建设
    长安城梦想小镇

    智慧溯源

    农业产业全过程溯源云平台
    火眼防伪应用
    区块链可信数据平台
    区块链溯源场景下的区块链应用

    智慧建造

    伊OS透明建造解决方案

    物流金融惠运链

    惠运链

    在这里插入图片描述

    工信部第四届中国区块链开发大赛

    10个获奖项目中5个基于FISCO BCOS研发

    金链盟应用大赛

    启动发布会 | 30强名单
    10强名单 | 颁奖礼

    第四次工业革命黑客松

    赛事精彩 | 赛果公布

    FinTechathon金融科技高校大赛

    首届

    OpenHealth | 紫荆路Tank | BitHacks

    第二届

    紫荆路航空团 | 深大Keep Water

    BSN第一次开发者大赛

    获奖情况 | 作品下载

    BSN第二次开发者大赛

    10个获奖项目中8个基于FISCO BCOS研发
    长虹启思实验室 | 建信筑和

    在这里插入图片描述

    社区建有完善的开源协作机制
    欢迎参与共建FISCO BCOS

    SIG兴趣小组

    关于SIG
    CTSC-SIG:智能合约编译技术小组
    CC-SIG:跨链技术小组
    NC-SIG:网络架构与共识小组
    AS-SIG:节点架构与存储小组
    上贸大SIG

    合作伙伴计划

    合作伙伴计划正式招募
    首批合作伙伴公示

    在这里插入图片描述
    如何参与共建FISCO BCOSFISCO
    BCOS开源项目开发协作指南

    在这里插入图片描述

    FISCO BCOS开源三周年

    开源三周年成绩单
    下一代FISCO BCOS技术路径
    致社区伙伴一封信
    三年磨一剑助力产业数字化

    FISCO BCOS国产化支持

    银河麒麟操作系统完成兼容互认证
    FISCO BCOS为区块链国产化带来的启示

    助力腾讯云入选教育部1+X
    安永加入金链盟开源工作组
    全面通过工信部电子标准院测试
    通过中国信通院可信区块链评测
    成为BSN首个适配国产底层
    FISCO BCOS设计思路面面观
    FISCO BCOS价值解析

    荣誉奖项

    获颁OSCAR尖峰开源项目及开源社区
    荣获工信部“中国优秀开源项目”
    “人民版权”入选工信部优秀应用案例
    区块链存证服务获香蜜湖金融科技创新奖

    版本迭代

    v2.6.0 | v2.5.0
    v2.4.0 | v2.3.0 | v2.2.0 | v2.1.0
    v2.0.0-rc3 | v2.0.0-rc2 | 2.0发布

    展开全文
  • 区块链学习课表

    2018-05-28 00:15:14
    从0----1学习 区块链一个全面课表,知识总结, 从0----1学习 区块链一个全面课表,知识总结,仅供参考
  • 区块链学习.docx

    2020-12-10 11:54:52
    区块链技术是比特币诞生之后,从比特币中提取出其中的技术体系架构(去中心化),称之为“区块链技术”,并且在这之后不断的发展完善 区块内容 区块头:区块编号、上一区块HASH值、本区块HASH值、挖矿随机数、挖矿...
  • 区块链学习笔记(初识区块链)

    千次阅读 多人点赞 2019-08-05 12:38:52
    区块链 区块链比比特币更加迷人,区块链具有革命性的意义,它是一个创造信任的机器 AI是生产力的提升,区块链是生产关系的变更,可能使人类的生产结构产生重大变革,淡化国家的权利机构 比特币按字节数收费 一.发展...

    区块链

    区块链比比特币更加迷人,区块链具有革命性的意义,它是一个创造信任的机器
    AI是生产力的提升,区块链是生产关系的变更,可能使人类的生产结构产生重大变革,淡化国家的权利机构
    比特币按字节数收费

    一.发展阶段
    v1.0

    比特币,点对点金融支付

    v2.0

    引入智能合约,ETH(以太坊)为代表,主要与金融领结合

    智能指的是smart,小巧,灵活

    以太坊做出的东西有点像苹果的App Store,所有人都可以在上边开发,执行

    以太坊诟病,所有应用都用一条链,导致网络拥堵

    智能合约指的是把一个合同数字化,用代码维护,表示

    IPFS:星际文件存储

    V3.0

    区块链与社会,区块链与各个行业融合,物联网,存储,游戏,(物联网+区块链)区块链+
    EUS:类似微软的操作系统,商业化,性能大幅度提升
    区块链大火,人们失去理智
    阿里走在区块链技术专利的前列

    二.协议分层
    在这里插入图片描述

    pow全网记账,pos全网随机选一个记账,dpos选出少数人记账
    DBFT 拜占庭容错机制,小米应用的技术
    区块链中的token 放在金融领域就是账单,放在游戏里就是积分

     数据层

    1. 区块链数据
    2. 链式结构
    3. 数字签名
    4. 哈希函数(数字摘要)
    5. Merkle树
    6. 非对称加密

     网络层

    1. P2P网络
    2. 传播机制
    3. 验证机制

     共识层
    有共识机制去中心化才有意义,才具备可信度,否则只是数据共享
    拜占庭将军问题、保证全网账本一致性。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

     激励层

    1. 发行机制
      一次性发完?慢慢挖?增发?
    2. 分配机制
      合约层
      1.智能合约
      在这里插入图片描述

     应用层
    1.转账记账等

    三.区块链特点

    1.去中心化
    2.不可伪造
    3.不可篡改
    4.不可复制:资产的转移
    5.匿名
    6.基于密码学:非对称加密
    7.分布式
    8.可溯源
    9.账本公开
    匿名货币是加密的,如何公开透明,所以呼吁禁止
    Xmr(门罗链)xmc(门罗原链)

    四.区块链的应用场景分类

    1. 公有链
      所有人都可以随时加入,每个节点平等,都有交易和记账,开放式
      *比特币
      *以太坊
      *EOS
      *NEO
      *量子链
      *比原链
      *并通链
      *墨客链
      在这里插入图片描述
      在这里插入图片描述

    主流项目(按照分类来写,共链,应用,协议等等)
    Augur,SNT,以太猫(待补充)

    五.区块链的相关概念
    *算力
    *矿工 节点,算力厉害,网络好
    *挖矿
    1.矿场
    集中矿机设备的场所
    2.矿池:负责打包,丢个矿场计算
    一个软件,矿场和普通矿工接入,矿池负责打包,接入的设备负责挖矿
    (主流的矿池:鱼池,蚁池,币网,国池等)
    *分叉
    1.代码升级时不同社区意见发生分歧时的结果
    2.分叉后会得到等量的新币种,称为糖果
    3.软分叉(链出bug,解bug很难,只能分叉)
    旧节点接受新协议产生的区块,毫无感知,新老协议共同维护一条链
    4.硬分叉
    旧节点拒绝接收新节点创造的区块,从此分裂为两条独立的链
    案例:以太坊分叉,分为ETC(以太经典 ,有自己的链),ETH(以太坊 v神 )

    *叔块(以太坊的概念,比特币叫孤块即链分叉,二选一,选最长链)
    *共识机制
    *侧链 (平行且独立于主链的链条,可以和主链资产交互,弥补主链的功能的缺失,可以理解成插件,但它很安全)
    *只能合约(可以触发支付,不需要中间人)
    转账、手续费(比特币手续费可给可不给,以太坊必须给,智能合约里每字节都消耗gas,最小单位叫wei eth=xxxx wei,gas数量gas价格=消耗的eth(xxx wei))

    *节点
    1.轻节点(存储东西少,只存储和自己相关的交易,依赖于连接的全节点,可以做简单的确认操作)
    2.全节点
    *钱包(软件,可发起交易,查看余额等,维护公钥私钥,一个客户端可以创建多个钱包,可以有多个地址)
    1.功能
    创建私钥公钥,保存私钥,相当于钱包,可以存多个地址
    2. 种类
    1 PC钱包
    2 手机钱包
    3 纸钱包(卡片,私钥和地址,扫码支付)
    在这里插入图片描述

    4 网页钱包(blockchain .info)
    5 冷钱包(硬件设备,不联网)
    6 热钱包(联网)(冷即断网,热即联网)
    7 全节点钱包
    同步所有数据
    8 轻节点钱包
    仅同步和自己相关的交易数据
    9 中心化钱包(交易平台)
    &零知识证明
    在不向对方提供任何个人信息的条件下使对方相信某个论断是正确的一种技术,
    解决验证问题,例如ZCASH币
    &扩容方式
    1 隔离见证(提出验证信息,存放更多交易信息)
    将每笔交易中的数字签名移除,从而容纳更多的交易
    2 硬分叉
    BCH和BTC

    六.应用领域
    四类应用
    1数字资产
    *一般数字资产
    比特币,莱特币
    *匿名数字资产
    达世币(混币),门罗币,大零币(ZCASH)

    2全球结算
    瑞波币 Ripple 2017年明显

    3 平台类
    *Golem
    计算资源交易平台,用户租用算力,依赖平台参与者数量GNT
    *Augur
    群体智慧、市场预测平台

    4 应用类
    1 智能合约案例:
    *房屋租赁
    按月支付房租,发放钥匙
    *设立遗嘱
    自动分配财产
    *储蓄钱包
    将钱放入合约中,降低丢失秘钥风险
    *作物保险
    金融衍生品,收成差有补偿,收成好有钱赚
    *金融租赁
    跳过银行和律师,直接向金融机构几款,省去中间费用
    *博彩发行
    类似于彩票发行,将发放信息写入区块,全民参与下注,结果产生后自动处理现金

    区块链适用领域
     证券交易
     供应链金融
     征信体系
     互助保险
     公益事业
     档案管理(档案上链)
     专利保护(时间戳)
     商品溯源
     防伪
     支付清算

    存在问题
    1 安全性问题
    *被骗无法撤销
    *打入错误地址无法找回
    *合约存在欺诈、bug等
    2 存储问题,账本过大
    *ipfs协议解决(星际文件传输系统,HTTP可以被代替,访问网页经常出现404,服务端删除数据,那么就访问不到了,访问一个资源是按照IP地址访问的,ipfs是按照内容访问的,每个文件做一个hash值即索引,真正访问文件是按hash值访问,离你最近的节点会把内容反馈给你,如果该项目成功那么世界上就没有404了。为所有提供网络存储的人提供一种奖励,提供押金,如果作恶,有相应的惩罚 )
    &filcoin项目
    &墨客子链ipfs
    *以太坊 swarm

    私密性
    数据透明度高,所有信息公开,地址和人士分离的,若一旦对应上,一切资产透明,
    是一把双刃剑,无隐私。

    意外情况
    1 执行合约的风险
    远程回收(锁定)汽车时,汽车的状态?如果是在运行,存在危险
    高速公路急刹车不让你用,很危险

    区块链上目前缺少应用,app
    以太猫实现其实很简单,不过被炒到天价

    (本笔记内容整理自网络资源,侵删)

    展开全文
  • 区块链学习总结

    千次阅读 2021-03-29 17:04:41
    区块链学习总结 区块链 区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部事务通过密码学算法计算并记录到一个...

    区块链学习总结

    区块链
    区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部事务通过密码学算法计算并记录到一个数据块(block),生成该数据块的hash用于链接下个数据块,系统所有参与节点来共同检验记录是否为真,并且每个区块的内容都由后续子链上的区块来保证其内容不可被篡改。 各个参与节点可以在新区块产生确认及奖励分配上达成共识,从而逐渐形成的一个庞大、去中心化的公开账本。

    01 对比特币的认识
    2008年,中本聪(Satoshi Nakamoto)发表了一篇题为“比特币:一种点对点的电子现金系统”的论文描述了比特币的模式。
    新区块的创造过程是一个区块创造权的竞争的过程,即通过工作量证明来选定新区块的创造者。在任何一个特定的时间点上,整个区块链系统范围内的,所有竞争者在同时开始,共同针对同一特定新候选区块进行哈希运算比赛。获胜的条件是最先算出符合该特定新候选区块要求的哈希值。获胜的(只能有一个获胜者)奖励是伴随该新区块一起发行的全部新比特币。当一个新区块被创造出来了,所有的竞争者马上重新开始进行对下一个区块创造权的竞争。
    新区块的创造速度大概是10分钟一块。
    比特币的存储依靠的就是分布式账本技术。比特币就是一串数据代码。所有的比特币就是记录于区块链中各自对应的区块内,然后分布式存放于比特币系统的各个节点上。比特币区块链就像是一个由比特币系统所有的节点共享的统一电子账本。
    比特币的使用就是比特币的交易,也就是比特币所有权的转换。比特币的使用主要是通过加密技术来实现的
    02 对以太坊的认识
    以太坊是一个具有智能合约功能的开放区块链平台,使开发人员能够建立和发布各种分布式应用。通过在以太坊上编程建立各种分布式应用可以解决诸如:投票、域名、金融交易、众筹、公司管理、合约、知识产权、硬件集成的智能资产等等各方面问题。
    以太坊,与比特币区块链技术一样,使用激励驱动的安全模式。共识达成基于选择具有最高总难度的区块。矿工创建区块,其他人检测有效性。
    以太币是于2015年7月30日开始发行的。类似于比特币,以太币的发行方式也是采用工作量证明机制(POW)。通过工作量证明机制,以太坊每年发行15,626,576枚以太币。以太坊计划于2017年末将以太币的发行方式改为权益证明机制(POS)。届时,每年的新发行的以太币数量为1000万枚。以太币的总发行量是没有上限的。

    以太坊是通过在比特币区块链系统基础上进行修改和创新而产生的。以太坊本质上就是:区块链+智能合约
    (1) 什么是以太坊虚拟机
    同比特币区块链系统不同,以太坊设计了以太坊虚拟机(EVM)专门用来运行智能合约。太坊虚拟机是一个同网络,文件系统或者其他操作过程隔绝开来的封装起来的计算机代码运行环境.

    (2)以太坊的账户
    以太坊的基础单元是账户. 这些账户可以通过消息传递来发生互动变化。每个账户都有一个与之关联的状态和一个20字节的地址。所有价值和信息的转移都体现为账户状况的变化.以太坊区块链通过控制所有账户的变化实现其各种功能.
    以太坊有两类账户: 外部账户和合约账户,他们被存放于同一地址空间上.外部账户是由人类用户通过对应的公私钥来掌控。而合约账户则是由被存储在其内部的代码掌控。智能合约指的是合约账户中的那些对被发送来的交易进行自动处理的程序代码。用户可以通过在区块链中存储程序代码来创建新的智能合约。
    以太坊账户状态的变化就是指以太坊账户组成成分发生的变化。以太坊账户含有四个组成部分:
    (1) 序号(nonce):如果账户是一个外部拥有账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号。
    (2) 余额(balance): 此地址拥有Wei的数量。
    (3) Merkle 树根的哈希值: Merkle树会将此账户存储内容的哈希值进行编码,默认值是空值。
    (4) 代码哈希值:此账户太坊虚拟机内的代码的哈希值。对于合约账户,就是被哈希的代码并作为代码哈希值保存起来。对于外部账户,代码哈希值是一个空字符串的哈希值。
    (3)以太坊的交易和交易费用
    太坊区块链系统只有两种类型的交易:合约创建和消息通信。
    以太坊所有的交易都是在外部账户触动下发生的.合约账户不会自发地产生任何行动. 只有当外部账户发出交易时,合约账户才会执行相应的操作。以太坊通过规定节点必须与运算结果保持一致,从而保证智能合约严格确定执行。
    在以太坊中一个重要的概念就是费用(fees). 发生在以太坊区块链系统内的交易而产生的每一次计算都会要求相应的费用。这个费用是以”gas”的来支付。gas就是用来衡量在一个具体计算中要求的费用单位。gas 价格(gas price)就是你愿意在每个gas花费ETH的数量,以“gwei”进行衡量。“Wei”是ETH的最小单位,1ETH表示10^18Wei. 1gwei是1,000,000,000 Wei。
    发生交易时,交易发送者先设置gas limit和gas price。gas limit和gas price就代表着发送者愿意为执行交易支付的Wei的最大值。以太坊用户必须向以太坊区块链系统支付少量交易费用。交易的发送者必须在激活的合约账户的每一步为所有的运算和数据存储付费。如果在他们的账户余额中有足够的Ether来支付这个最大值费用,那么就没问题。在交易结束时任何未使用的gas都会被返回给发送者,以原始费率兑换。费用通过以太坊Gas结算,以太币的形式支付的。这样可以帮助太坊区块链系统避免被滥用或被恶意攻击.
    交易费用由节点收集,节点在以太坊网络中完成收集、传播、确认和执行交易的工作。矿工们将交易活动分组:交易记录(以太坊区块链中账户状态的更新)被分组存放在区块中;节点通过互相竞争决定添加权;获得添加权的节点将新的区块添加到区块链的上。获得添加权的节点会得到以太币奖励,通过这些奖励激励节点为以太坊区块链系统贡献硬件和电力。
    (4)以太坊的状态变化机制
    第一步,检查交易的格式是否正确(即有正确数值)、签名是否有效和随机数是否与发送者账户的随机数匹配。如否,返回错误。
    第二步,计算交易费用,并从签名中确定发送者的地址。从发送者的账户中减去交易费用和增加发送者的随机数。如果账户余额不足,返回错误。
    第三步,设定初值GAS = STARTGAS,并根据交易中的字节数减去一定量的Gas值。
    第四步,从发送者的账户转移价值到接收者账户。如果接收账户还不存在,创建此账户。如果接收账户是一个合约,运行合约的代码,直到代码运行结束或者燃料用完。
    第五步,如果因为发送者账户没有足够的钱或者代码执行耗尽燃料导致价值转移失败,恢复原来的状态,但是还需要支付交易费用,交易费用加至矿工账户。
    第六步,否则,将所有剩余的燃料归还给发送者,消耗掉的燃料作为交易费用发送给矿工。

    03 **对Hyperledger的认识
    04 了解其他那些区块链项目 Corda EOS
    05 公链、联盟链、私链的区别
    中本聪巧妙地将以下几个成熟的技术和理论组合的一起,并以此为基础构建区块链技术:
    基于去中心化的分布式算法而建立起点对点对等(P2P)网络。
    基于非对称加密算法。
    基于分布式一致性算法,解决了分布式场景下的拜占庭将军问题。
    基于博弈论而精心设计的奖励机制,实现了纳什均衡,确保整个系统的安全和稳定运行。
    如果同时具有上述四点要素,可以认为这是一种公共区块链技术,简称公有链。如果只具有前三点要素,将其称为私有区块链技术,简称私有链。而联盟链则介于两者之间,可视为联盟成员内的一种私有链。这里主要介绍公有链和私有链。

    公链是指全世界任何人都可读取的、任何人都能发送事务且能获得有效确认的、任何人都能参与共识过程的区块链。共识过程决定哪个区块可被添加到区块链中和明确当前状态。作为中心化或者准中心化信任的替代物,公有链的安全由加密数字经济维护。加密数字经济采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是完全去中心化的。
    私有链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

    私有链相比于公有链的优点:

    事务的效率更高:比特币区块链目前每秒可完成7笔事务,而私有链目前最高可以到每秒10万笔,并且还有提高的空间。显然后者更适应现实世界金融事务的需求。
    事务可以回滚:这点对于中心化机构也很重要,在某些情况下,某些事务会因为错误或法律的问题而被要求修改、撤销。
    事务费用更低:目前公有链的事务费用是每笔0.10美元,而且随着时间流逝币值趋于增长,导致事务费用也在增长。而私有链的事务费用将会降低一到两个数量级。
    仍然是基于分布式网络,保留了分布式记账系统的优点。
    提供了更好的隐私保护:公有区块链因为其透明共享总账本的设计,本身不提供隐私保护功能。而私有链可以对读取权限进行限制,从而提供更好的隐私保护。
    验证者是公开透明的,不存在一些矿工出于共谋原因而致的51%攻击风险。
    节点可以很好地连接:节点互相可以很好地连接,故障可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成事务。

    私有链的缺点:

    违背了区块链去中心化的本质,重新引入了若干“信任节点”;

    其参与者需要经过审核和验证,从而严格限制了其规模,其安全性容易受到威胁。因此,私有区块链更适合为传统机构所用。

    公有链的优点:

    保护用户:免受开发者的影响——在公共区块链中的用户更多、更广泛,程序开发者无权干涉
    用户的使用方式。反过来说,区块链可以保护使用这些程序的用户。
    网络规模效应——公共区块链是开放的,因此有可能被许多外界用户使用和产生一定的网络效应。而在公有链上运行的应用越多,节点越多,那么该区块链条也会越可信。
    因此使用公有链,还是私有链,完全根据需求而定。

    06 了解哪些共识算法
    07 说说最熟悉的共识算法
    08 看过哪些书
    09 以太坊智能合约
    10 拜占庭问题
    在互联网大背景下,当需要与不熟悉的对方进行价值交换活动时,人们如何才能防止不会被其中的恶意破坏者欺骗、迷惑从而作出错误的决策。进一步将“拜占庭将军问题”延伸到技术领域中来,其内涵可概括为:在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识
    11 51%算力攻击
    在比特币网络中,采用PoW共识机制来解决如何获得记账权的问题,采用“最长链共识”解决如何记账的问题。
    所谓51%的攻击,就是利用比特币网络采用PoW竞争记账权和“最长链共识”的特点,使用算力优势生成一条更长的链“回滚”已经发生的“交易行为”。
    51%是指算力占全网算力的51%,比特币网络需要通过哈希碰撞来匹配随机数从而获得记账权,算力衡量的是一台计算机每秒钟能进行哈希碰撞的次数。
    算力越高,意味着每秒钟能进行越多次的哈希碰撞,即获得记账权的几率越高。
    在理论上,如果掌握了50%以上的算力,就拥有了获得记账权的绝对优势,可以更快地生成区块,也拥有了篡改区块链数据的权利。
    实际上,当恶意攻击者持有比特币全网占比比较高的算力时,即使尚未达到51%的比例,也可以制造相应的攻击,比较典型的就是双花问题。
    12 Sybil攻击
    在对等网络中,但节点通常具有多个身份标识,通过控制系统的大部分节点来消弱冗余备份的作用
    13 Eclipse攻击
    Eclipse攻击是一种网络级的攻击,攻击者模仿所有其他节点的入流量和出流量,达到将受害者与网络上的其他节点隔离的目的。这种攻击意味着通过让最新的区块信息不能到达节点来达到隔离节点的目的。事实上,比特币网络也易受到eclipse攻击。但在以太坊网络上,两个节点就足以发起eclipse攻击。
    14 DDoS攻击
    是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。
    15 Merkle Tree数据结构
    A、Merkle树结构
    由一个根节点(root)、一组中间节点和一组叶节点(leaf)组成。叶节点(leaf)包含存储数据或其哈希值,中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。所以Merkle树也称哈希树。
    B、哈希树的特点
    叶节点存储的是数据文件,而非叶节点存储的是其子节点的哈希值(Hash,通过SHA1、SHA256等哈希算法计算而来),这些非叶子节点的Hash被称作路径哈希值(可以据其确定某个叶节点到根节点的路径),
    叶节点的Hash值是真实数据的Hash值。因为使用了树形结构, 其查询的时间复杂度为 O(logn),n是节点数量。
    在这里插入图片描述

    默克尔树的另一个特点是,底层数据的任何变动,都会传递到其父节点,一直到树根。
    16 哈希算法
    哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。

    哈希算法最重要的特点就是:

    相同的输入一定得到相同的输出;
    不同的输入大概率得到不同的输出。
    哈希算法的目的就是为了验证原始数据是否被篡改。
    17 看过那些白皮书 bitcoin ethereum EOS
    18 未来你看好那些区块链项目
    19 区块链的应用场景
    20 以太坊协议 ERC20 ERC721 ERC223 ERC875

    21.什么是挖矿?
    挖矿是在区块链网络达成共识的过程。挖矿有两个目的。首先,它在生成的块中创建新的代币。其次,它通过向网络提供工作证明,包括分布式计费中的交易;也就是说,证明所生成的块是有效的。
    22.比特币实现中的交易和块是如何加密的?
    比特币块不以任何方式加密:每个块都是公开的。阻止修改和保证数据完整性的是一个称为块哈希的值。块的内容是使用在比特币的一种特殊Hash函数来处理,它的实现和得到的值包含在区块链中。
    23.什么是软分叉?
    在分类帐中的块包括以建立最长链的方式,即具有最大累积难度的链。分叉是有两个候选块竞争形成最长的区块链,两个矿工发现工作问题的证明方法在很短的时间内没有同步对方的情况。造成网络分割,因为某些节点得到块从矿工#1和而另外一些得到矿工#2。 分叉通常在一个块中得到解决,因为这种情况再次发生的概率变得非常低,因为下一个块出现,所以很快有一个新的最长链,将被认为是主要的。
    **24.**什么是双重支出?
    这是与数字货币有关的主要问题之一。 事实上,这是一个数字通证被多次使用的条件,因为通证通常由易于克隆的数字文件组成。它只会导致通货膨胀,组织不得不承受巨大的损失。 区块链技术的主要目标之一是尽可能地消除这种方法。

    ------开发基础篇--------
    01 go语言问题
    02 solidity语言语法问题
    03 c/c++语言语法问题
    04 java语言语法问题


    以太坊

    问:以太坊的有价通证叫什么?
    答:以太(ETH:Ether)

    问:Wei和以太有什么区别?
    答:Wei是一个面额,像美分到美元或便士到磅。 1 ETH =10^18 Wei

    问:以太坊的平均出块时间是多少?
    答:大约14秒

    问:以太坊的平均块大小是多少?
    答:大约2KB,实际值取决于具体情况。

    问:以太坊是否支持脚本? 如果是这样,支持什么类型的脚本?
    答:是的。 它支持智能合约

    问:你如何得到以太?
    答:有几种方法:
    1.成为一名矿工
    2.用其他货币换取
    3.使用以太Faucet,例如 https://faucet.metamask.io
    4.接受别人的赠送

    问:以太从哪里来的?
    答:在2014年预售中首次创建了6000万个。另外,在挖出新块时也会生成以太。

    问:什么是节点?
    答:一个节点本质上是一台连接到网络的计算机,它负责处理交易。

    问:你熟悉多少种以太坊网络?
    答:有三种类型的网络 - 实时网络(主),测试网络(如Ropsten和Rinkeby)和私有网络。

    问:与以太坊网络交互的方式有哪些?
    答:可以使用电子钱包或DApp

    问:你可以“隐藏”一个以太坊交易吗?
    答:不可以。所有交易对每个人都是可见的。

    问:交易记录在哪里?
    答:在公共账本上。

    问:这些网络的ID是什么?
    答:Live(id = 1),Ropsten(id = 3),Rinkeby(id = 4),Private(由开发人员分配)

    问:我可以在Rinkeby测试网络中挖一些以太,然后转移到Live网络吗?
    答:不可以。不能在不同的以太坊网络之间传递以太。

    问:为什么需要私有网络?
    答:有很多原因,但主要是为了数据隐私、分布式数据库、权限控制和测试。

    问:你如何轻松查看有关交易和区块的详细信息?
    答:使用区块链浏览器,如etherscan.io或live.ether.camp

    问:私有网络的交易和区块信息怎么查看呢?
    答:可以使用开源浏览器客户端,例如https://github.com/etherparty/explorer

    问:区块链的共识是什么?
    答:遵循特定协议(如以太坊)验证交易(创建块)的过程。

    问:区块链中两种常用的共识模型是什么?
    答:工作量证明(POW)和权益证明(POS)。

    问:简单地解释下工作量证明。
    答:它实际上是矿工为了证明自己的工作量并验证交易而对一个计算密集型问题的求解。

    问:以简单的方式解释权益证明。
    答:区块的创建者是根据节点所持有的财富和股权随机选择的。 它不是计算密集型的。

    问:以太坊使用什么共识模式?
    答:截至2018年初,它使用工作量证明,但今后将切换到权益证明。

    问:怎么挖以太币?
    答:使用钱包或geth客户端。

    问:用什么来对交易进行签名?
    答:用户的私钥。

    问:丢失私钥后还能恢复以太坊账户吗?
    答:可以,可以使用助记词组。


    以太坊节点软件(Geth)

    问:有哪些方法可以连接到一个以太坊节点?
    答:IPC-RPC、JSON-RPC和WS-RPC。

    问:那么Geth是什么?
    答:Geth是以太坊的客户端。

    问:连接到geth客户端的默认方式是什么?
    答:默认情况下启用IPC-RPC,其他RPC都被禁用。

    问:你知道geth的哪些API?
    答:Admin、eth、web3、miner、net、personal、shh、debug和txpool。

    问:你可以使用哪些RPC通过网络连接到geth客户端?
    答:可以使用JSON-RPC和WS-RPC通过网络连接到geth客户端。 IPC-RPC只能连接到同一台机器上的geth客户端。

    问:如果启动geth时使用了-rpc选项,哪些RPC会被启用?
    答:JSON-RPC。

    问:哪些RPC API是默认启用的?
    答:eth、web3和net。

    问:如何为JSON RPC启用Admin API?
    答:使用-rpcapi选项。

    问:选项-datadir有什么作用?
    答:它指定了区块链的存储位置。

    问:什么是geth的“快速”同步,为什么它更快?
    答:快速同步会将事务处理回执与区块一起下载并完整提取最新的状态数据库,而不是重新执行所有发生过的交易。

    问:选项–testnet是做什么的?
    答:它将客户端连接到Ropsten网络。

    问:启动geth客户端会在屏幕上输出大量文字,应该如何减少输出信息?
    答:可以将–verbosity设置为较低的数字(默认值为3)

    问:如何使用IPC-RPC将一个geth客户端连接到另一个客户端?
    答:首先启动一个geth客户端,复制它的管道位置,然后使用同一个datadir启动另一个geth客户端并使用–attach选项传入管道位置。

    问:如何将自定义javascript文件加载到geth控制台中?
    答:通使用–preload选项传入js文件的路径。

    问:geth客户端的帐户存储在哪里?
    答:在keystore目录中。

    问:为了进行交易,需要对账户进行什么操作?
    答:必须先解锁该账户 - 可以传入账户地址或账户序号来解锁。 也可以使用–password选项传入一个密码文件,其中包含每个账户的密码。

    问:你提到了一些有关账户序号的内容。 什么因素决定账户的序号?
    答:添加帐户的先后顺序。

    问:是否可以使用geth进行挖矿?
    答:可以,使用–mine选项开启。

    问:什么是“etherbase”?
    答:这是接收挖矿奖励的帐户,它是序号为0的帐户。

    智能合约和Solidity

    问:什么是智能合约?
    答:这是用多种语言编写的计算机代码。 智能合约存在于以太坊网络上,它们根据预定规则执行动作,规则是由参与者在这些合约中商定的。

    问:智能合约可以使用哪些语言编写?
    答:Solidity,这是最常用的语言,也可以使用Serpent和LLL。

    问:你能举出一个智能合约的用例吗?
    答:卖方-买方应用场景:买方在智能合约中存入款项,卖方看到存款并发送货物,买方收到货物并放行付款。

    问:什么是Metamask?
    答:Metamask是一个可以帮助用户在浏览器中与以太坊网络进行交互的工具

    问:Metamask使用哪个以太坊节点?
    答:它使用infura.io

    问:Metamask不支持什么?
    答:挖矿和合约部署。

    问:执行合约是否免费?
    答:不,调用合约方法是一个交易,因此需要支付费用。

    问:访问智能合约的状态是否免费?
    答:是的,查询状态不是交易。

    问:谁执行合同?
    答:矿工。

    问:为什么调用智能合约的方法需要付费?
    答:有些方法不会修改合约的状态,也没有其他逻辑,只是返回一个值,这样的方法是可以免费调用的。 调用那些改变合约状态的方法则需要付费,因为它们需要gas来执行。

    问:为什么需要gas?
    答:由于矿工在他们的机器上执行合约代码,他们需要gas来覆盖执行合约代码的成本。

    问:是不是gas的价格决定了交易什么时候被处理?
    答:即是,也不是。 gas价格越高,交易成功的可能性就越大。 尽管如此,gas价格并不能保证更快的交易处理。

    问:交易中的gas使用量取决于什么?
    答:这取决于合约所用的存储量、指令(操作码)的类型和数量。 每个EVM操作码都对应一个固定的gas用量。

    问:交易费是如何计算的?
    答:gas用量*gas价格(由调用方指定gas价格)

    问:如果智能合约的执行成本低于调用方指定的gas用量,用户是否得到退款?
    答:是的

    问:如果智能合约的执行成本高于指定的gas用量,会发生什么情况?
    答:用户不会得到退款,并且一旦所有的gas用完,执行就会停止,合约也不会改变。

    问:谁支付智能合约的调用费用?
    答:调用合约的用户。

    问:节点在什么上面运行智能合约代码?
    答:EVM - 以太坊虚拟机。 EVM遵循EVM规范,该规范是以太坊协议的组成部分。 EVM只是节点上的一个进程。

    问:为了运行智能合同,EVM需要什么?
    答:它需要合约的字节码,是通过编译Solidity等更高级别的语言编写的合约来生成字节码。

    问:粗略的说,EVM有哪些组成部分?
    答:内存区域、堆栈和执行引擎。

    问:什么是Remix?
    答:开发,测试和部署合约的在线工具。 适合快速构建和测试轻量级合约,但不适合更复杂的合约。

    问:在Remix中,可以连接哪些节点?
    答:可以使用Metamask连接到公共节点、也可以链接到使用Geth搭建的本地节点,或者在Javascript VM中模拟的内存节点。

    问:什么是DApp,它与App有什么不同?有什么不同?
    答:App通常包含一个客户端,这个客户端会与一些中心化的资源(由一个组织拥有)进行通信,通常客户端通过一个中间层连接到中心化的数据层,如果中心化的数据层中的信息丢失,不能很轻松地恢复。
    DApp表示去中心化应用程序。 DApps通过智能合约与区块链网络进行交互。 DApp使用的数据驻留在合约实例中。
    中心化数据可能比去中心化数据更容易受到破坏。


    DApps和web3

    问:DApp的前端是否局限于某些技术或框架?
    答:不受限制。可以使用任何技术来开发DApp的前端,比如HTML,CSS,JS,Java,Python…

    问:前端用什么库连接后端(智能合同)?
    答:Web3.js库。

    问:在DApp的前端需要哪些东西才能与指定的智能合约进行交互?
    答:合约的ABI和字节码。

    问:ABI有什么作用?
    答:ABI是合约的公开接口描述对象,被DApps用于调用合约的接口。

    问:字节码有什么作用?
    答:节点上的EVM只能执行合约的字节码。

    问:为什么要使用BigNumber库?
    答:因为Javascript不能正确处理大数。

    问:为什么需要检查在Web DApp代码的开始部分是否设置了web3提供器(Provider)?
    答:因为Metamask会注入一个web3对象,它覆盖其他的web3设置。

    问:为什么要使用web3.js版本1.x而不是0.2x.x?
    答:主要是因为1.x的异步调用使用Promise而不是回调,Promise目前在javascript世界中
    是处理异步调用的首选方案。

    问:如何在web3 1.x中列出账户?
    答:web3.eth.getAccounts

    问:.call和.send有什么区别?
    答:.send发送交易并支付费用,而.call查询合约状态。

    问:这样发送1个以太对吗:.send({value:1})?
    A:不对,这样发送的是1 wei。 交易中总是以wei为单位。

    问:那么为了发送1个以太,我必须将这个值乘以10^18?
    答:可以使用web3.utils.toWei(1,‘ether’)。

    问:调用.send()时需要指定什么?
    答:必须指定from字段,即发送账户地址。 其他一切都是可选的。

    问:web3.eth.sendTransaction()的唯一功能是将以太发送到特定的地址,这个说法是否正确?
    答:不对,也可以用它调用合约方法。

    问:你是否知道以太坊的可扩展性解决方案?
    答:2层协议。可能的解决方案是状态通道(state channels)和Plasma。

    Solidity
    问:Solidity是静态类型的还是动态类型的语言?
    答:它是静态类型语言,这意味着类型在编译时是已知的。

    问:Solidity中与Java“Class”类似的是什么?
    答:合约。

    问:什么是合约实例?
    答:合约实例是区块链上已部署的合约。

    问:请说出Java和Solidity之间的一些区别。
    答:Solidity支持多重继承,但不支持重载。

    问:你必须在Solidity文件中指定的第一件事是什么?
    答:Solidity编译器的版本,比如指定为^ 0.4.8。 这是必要的,因为这样可以防止在使用其他版本的编译器时引入不兼容性错误。

    问:合约中包含什么?
    答:主要由存储变量、函数和事件组成。

    问:合约中有哪些类型的函数?
    答:有构造函数、fallback函数、修改合约状态的函数和只读的constant函数。

    问:如果我将多个合约定义放入单个Solidity文件中,我会得到什么错误?
    答:将多个合约定义放入单个Solidity文件是完全正确的。

    问:两个合约之间交互的方式有哪些?
    答:一个合约可以调用另一个合约,也可以继承其他合约。

    问:当你尝试使用部署一个包含多个合约的文件时会发生什么?
    答:编译器只会部署该文件中的最后一个合约,而忽略所有其他合约。

    问:如果我有一个大项目,我需要将所有相关的合约保存到一个文件中吗?
    答:不需要。可以使用import语句导入其他合约文件,例如import “./MyOtherContracts.sol”;。

    问:我只能导入本地合约文件吗?
    答:还可以使用HTTP协议导入其他合约文件,例如从Github导入:import “http://github.com/owner/repo/path_to_file”;。

    问:EVM的内存分成了哪些部分?
    答:它分为Storage、Memory和Calldata。

    问:请解释一下Storage。
    答:可以把它想象成一个数据库。 每个合约管理自己的Storage变量。 它是一个键-值数据库(256位键值)。
    就每次执行使用的gas而言,在Storage上读取和写入的成本更高。

    问:请解释一下Memory。
    答:这是一个临时存储区。 一旦执行结束,数据就会丢失。 可以在Memory上分配像数组和结构这样复杂的数据类型。

    问:请解释一下Calldata 。
    答:可以把calldata视为一个调用堆栈。 它是临时的、不可修改的,用来存储EVM的执行数据。

    问:哪些变量存储在Storage,那些变量存储在Memory?
    答:状态变量和局部变量(它们是对状态变量的引用)存储在Storage区域, 函数参数位于Memory区域。

    展开全文
  • 区块链学习线路

    2018-05-13 09:48:40
    Go语言与区块链学习线路图解,各个阶段需要学习的内容和需要达到的目标。
  • 区块链学习——区块链的技术栈

    万次阅读 多人点赞 2018-04-19 09:36:35
    摘要我在区块链学习的上一篇博文,链接:区块链学习——区块链技术理念与工作流程中,简单介绍了区块链的技术理念以及工作流程,本文我将继续介绍区块链技术栈。我们知道,区块链本身只是一个数据的记录格式,就像们...

    摘要

    我在区块链学习的上一篇博文,链接:区块链学习——区块链技术理念与工作流程中,简单介绍了区块链的技术理念以及工作流程,本文我将继续介绍区块链技术栈。

    我们知道,区块链本身只是一个数据的记录格式,就像们平时使用Excel表格、Word文档一样,按照一定的格式将我们的数据存储在电脑上。与传统记录不同的是,区块链将产生的数据按照一定的时间间隔,分成一个个的数据块记录,然后再根据数据块的先后关系串联起来,也就是所谓的区块链了。按照这种规则,沿着时间线不断增加新的区块,记录下发生的每一笔操作。

    这种数据记录的方式很新颖,在这种记录方式下,数据很难被篡改或者删除,有朋友可能会说,这有什么不好修改或者删除的,比如我在电脑上保存的Excel数据,再怎么复杂我也能修改啊!如果区块链的数据格式只是应用在单机环境或者一个中心化的服务器上,那确实是,毕竟自己对自己的数据拥有完全支配的权利。然而,事实上并不是如此。

    事实上,区块链是一整套技术组合的代表,在这一组技术的配合下,才能显示区块链技术的优点。无论是什么样的区块链系统,不管是比特币、莱特币、以太坊还是其他的,核心结构和工作原理都是相同的。我们来看看最基本的技术组合有哪些吧。


    如上图所示,这是区块链系统结构的基本组成,各种系统本质上都是在这个经典结构之上直接实现或者扩展实现。这些零部件装配在一起,组成了一个区块链软件,运行起来后就成为一个节点,多个这样的节点在不同的计算机上运行起来,就组成了一个网络。在这个网络中没个节点都是平等的,大家相互为对方提供服务,这种网络称为点对点的“对等网络”。下面我们来依次解释一下

    1.区块链账本

    如上所述,区块链账本它表示一种特有的数据记录形式。区块链就是“区块+链”,所谓的区块就是指数据块的意思,每个数据块之间通过某个标志连接起来的,从而形成一条链,我们看一下示意图:


    如图所示,一个区块一个区块地衔接,区块之间通过某种方式串联起来,就比特币来说,大约是每10分钟产生一个区块,区块中主要包含了交易事务数据以及区块的摘要信息。我们来看看比特币中区块链数据的组成示意图:


    通过上图可以看到比特币中区块链账本的数据组成以及关系,并且可以看到区块链数据在逻辑上分成了区块头和区块体,每个区块头中通过梅克尔根关联了区块中众多的交易事务,而每个区块之间通过区块头哈希值(区块头哈希值就是一个区块的身份证号)串联起来。这是一种链条格式,链条最大的特点就是一环扣一环,很难从之间去破坏。比如有人篡改了中间的2号区块,那么久的同时把2号区块后序的所有区块都要更改掉,这个难度就很大了。在区块链系统中,一个节点产生的数据或者更改的数据要发送到网络中的其他节点接受验证,而其他节点是不会通过验证一个被篡改的数据的,因为跟自己的本地区块链账本数据匹配不起来,这也是区块链数据不可篡改的一个很重要的技术设计。

    这个格式还有个很巧妙的地方,如果数据总是由一个人来记录的,那自然也没什么,但是如果放到网络中,大家共同来记录这个数据,那就有意思了,每个区块数据由谁来记录或者打包,有一个规则。比如说掷骰子,大家约定谁能连续3次掷出三次6点,那就让他记录下一个区块的数据,为了补偿他的劳动投入,奖励给他一些收益。比特币正是通过这种方式不断发行新的比特币出来,奖励给打包记录区块数据的那个人的比特币就是新发型的比特币。

    2.共识机制

    所谓共识,就是指大家达成一致的意思。在区块链系统中,每个节点必须要做的事情就是让自己账本和其他节点的账本保持一致。如果在传统的软件系统中,这几乎不是问题,因为有一个中心服务器存在,也就是所谓的主库,其他库向它看齐就行。在实际生活中,很多事情人们也是按照这种思路来的。但是区块链是一个分布式的对等网络结构,在该结构中没有哪个节点是“老大”,一切都要商量着来。在区块链系统中,如何让每个节点按照规则保持数据一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法。

    共识算法其实就是一个规则,每个节点都要按照这个规则去确认自己的数据,并且我们要从所有的节点中选举出一个最具有代表性的节点,那么如何筛选呢?其实就是设置一组条件,就像我们筛选运动员、尖子生一样,给一组指标让大家来完成,谁完成得更好,谁就有机会被选上。在区块链系统中,存在着多种这样的筛选方案,比如PoW(proof of work工作证明)、PoS(Proof of stake权益证明)、DPoS(Delegate proof of stake委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等等。区块链系统就是通过这些删选算法或者共识算法使得网络中各个节点的账本数据达成一致。

    3.密码算法

    密码算法的应用在区块链系统中很巧妙,应用点也很多,我在这里不详细介绍密码的原理,就从几个很关键的应用来介绍一下。

    首先我们回顾下区块链账本格式。通过上述讲解我们知道,区块链账本就是一个链接起来的一个个区块。到底是通过什么技术来链接的呢?学过数据结构的同学都知道,数据结构中有一种变量叫指针(Java中没有指针概念)它是可以用来指向某个数据地址的。区块之间的连接,往往不是靠数据地址来关联的,而是靠一种叫做哈希值的数据来关联,什么是哈希值?这是通过密码算法中的哈希算法计算得出的。哈希算法可以通过一段数据计算得出一段摘要字符串,这种摘要字符串与原始数据是唯一对应的。什么意思呢?如果对原始数据进行修改,哪怕只是一点点的修改,那么计算出来的哈希值都会发生完全的变化。区块链账本对每个区块都会计算出一个哈希值,称为区块哈希。通过区块哈希来串联区块。这有一个很好的作用就是,如果有人篡改了中间的某一个区块数据,那么后面的区块就都要进行修改,这个时候并不是简单地修改一下后面区块地址指向就能结束的。由于后面的区块是通过区块哈希来指向的,只要前面的区块发生改动,这个区块哈希就无效了,就指不到正确的区块了。

    当然密码算法在区块链中的应用远不止这些,比如通过密码算法来创建账户地址、签名交易事务等等,这些应用在后面会介绍。

    4.脚本系统

    脚本系统在区块链中是一个相对抽象的概念,也是一个及其重要的功能,可以说是区块系统之所以能形成一个价值的网络,依靠的就是脚本系统。它就像一个发动机一样,驱动着区块链系统不断地进行各种数据的收发。所谓脚本,就是指一组程序规则。在区块链中有些程序的规则是固定的,比如在比特币系统中,只能进行比特币的发送与接收,这个与发送与接收的过程就是通过实现在比特币中的一组脚本程序来完成的。而有些系统是允许用户自行编写一组程序规则的,编写好后可以部署到区块链账本中,这就可以扩展区块链系统的功能,比如以太坊就是通过实现一套可以自定义功能的脚本系统,进而实现了只能合约的功能。

    脚本系统使得在区块链中可以实现各种各样的业务功能。本来大家只是通过区块链来财务记账,通过脚本系统,大家可以使用区块来记录各种各样的数据,比如订单、众筹账户、物流信息、供应链信息等,这些数据一旦可以记录到区块链上,那么区块链的优点就能充分发挥出来。有关脚本系统的具体使用和开发,我后面会讲解。

    5.网络路由

    这个功能模块比较简单。区块链系统是一个分布式的网络,这些网络中的节点如何来彼此进行通信呢?依靠的就是网络路由功能。在分布式的网路结构中,不存在一个指定的服务器,大家没办法通过一个服务器来直接交换彼此的身份信息,就只能依靠彼此联系并传播信息。在区块链系统中,这个功能一般会定义成一种协议,称为“节点发现协议”。

    除了要发现节点外,更重要的一个功能就是同步数据。节点要保持自己账本数据是最新的,就必须时时更新自己的数据。从哪更新呢?既然没有服务器下载下来,那就通过邻近的节点了。通过向邻近节点发送数据请求来获得最新的数据,节点彼此都充当服务者和被服务者,通过这种方式,网路中的每个节点都会在某一个时刻达成数据上的一致。

    网络路由可以说是区块链系统的触角,通过大量的触角将每个节点连入网络,从而形成一个功能强大的区块链共识网络。



    展开全文
  • 入门级区块链学习资料.pdf;这个文档里面给出了区块链的相关技术资料链接,供参加参考学习,共同提高进步。
  • 完成本学习路径后,您将能够:  了解数字分类账背后的基本概念,更具体而言,了解区块链技术以及开源 Hyperledger 项目。  根据开源 Hyperledger Fabric 框架创建区块链网络。  使用 IBM Blockchain Platform ...
  • 区块链学习资料.zip

    2019-09-16 17:39:24
    我们认为这也将是一个很好的资源所需的众多学科感兴趣的人了解区块链技术。 我们希望这个平台是一个学习的地方,任何人都能使用,无论他们的专业程度。我们的目标是覆盖相关的一系列广泛的话题TLU空间,从一个初学者...
  • 区块链学习——区块链分类

    千次阅读 2018-04-21 16:08:46
    摘要在我的区块链上一篇博文中,简单介绍了区块链的架构,链接:区块链学习——区块链架构。那么本文我将继续简单介绍一下区块链的分类。根据网络范围根据网络范围,区块链可以分为公有链、私有链、联盟链。1.公有链...
  • 一、go语言+区块链学习线路图 二、go语言+区块链学习后的市场价值及对应薪资 三、go语言+区块链课程资源 1.go语言基础深入浅出 2.kotlin视频教程 3.20小时入门学会go语言 4.go语言web开发beego框架深入浅...
  • Love-Ethereum区块链学习

    2021-01-17 10:37:09
    区块链学习
  • 2020最新区块链学习路线图.jpg
  • 区块链学习收集的资料
  • 区块链学习:通过写作共同学习和推广区块链

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,987
精华内容 21,194
关键字:

区块链学习