区块链发展的三个阶段:比特币为代表的货币区块链技术为1.0、以太坊为代表的合同区块链技术为2.0、实现完备权限控制和安全保障的Hyperledger项目代表3.0。
![](https://img.kancloud.cn/f9/4f/f94fd03dc04050cfde295763d2dd08ba_622x356.png)
> 一、区块链1.0架构 –数字货币
1、基本架构
![](https://img.kancloud.cn/de/85/de85f3964e852c36e5bc29dd1a9bb890_640x470.png)
2、BTC(比特币)
定义
比特币是由系列概念和技术作为基础构建的数字货币态系统。
比特币并不是线下法定货币的替代物,而是非法定货币当局发行和管理的,主要模仿黄金的模式,完全由互联网基础协议和严格的加密技术保护和支持的、全新的、去中心化的网络货币(虚拟货币),由此也形成了一套不同于、也不受制于现实社会法律的新的货币规则和体系,并且可以与法定货币进行买卖或兑换
历史
诞生时间:
2009年1月3日诞生,block1 是在1月9号才被挖出来。
产生背景:
2008年,爆发全球金融危机。当时有人用“中本聪’的化名发表了一篇论文,描述了比特币的模式。
第一次公允汇率:
2010年5月,弗罗里达程序员用1万枚比特币购买了25美元的披萨优惠券。
影响
它首无前例的在不同国界,不同种族之间建立了通用的互联网信用体系。
特征
去中心化、世界流通、专属权、无隐藏成本、数量固定、发行不受控、交易方便、交易费用低廉。
生态图
![](https://img.kancloud.cn/b8/ef/b8ef6adc9343e50581e197a0a4ae24bd_640x320.png)
基本概念
区块:
个区块就是若交易数据的集合,它会被标记上时间戳和之前个区块的独特标记。区块头经过哈希运算后会成份作量证明,从验证区块中的交易。有效的区块经过全络的共识后会被追加到主区块链中。
地址(公钥):
特币地址(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由串字符和数字组成,以阿拉伯数字“1”开头。就像别向你的email地址发送电邮件样,他可以通过你的特币地址向你发送特币。
区块链:
区块链是串通过验证的区块,当中的每个区块都与上个相连,直连到创世区块。
确认:
当项交易被区块收录时,我们可以说它有次确认。矿们在此区块之后每再产个区块,此项交易的确认数就再加。当确认数达到六及以上时,通常认为这笔交易较安全并难以逆转。
难度:
整个络会通过调整“难度”这个变量来控制成作量证明所需要的计算。
难度标:
使整个络的计算致每10分钟产个区块所需要的难度数值即为难度标。
难度调整:
整个络每产2,106个区块后会根据之前2,106个区块的算进难度调整。
矿费:
交易的发起者通常会向络缴纳笔矿费,以处理这笔交易。多数的交易需要0.5毫特币的矿费。
矿:
矿指通过不断重复哈希运算来产作量证明的各络节点。
创世区块:
创世区块指区块链上的第个区块,来初始化相应的加密货币。
哈希:
进制数据的种数字指纹。
络:
特币络是个由若节点组成的以播交易信息和数据区块的P2P络
作量证明:
作量证明指通过有效计算得到的块数据。具体到特币,矿必须要在满全标难度的情况下求解SHA256算法。
奖励:
每个新区块中都有定量新创造的特币来奖励算出作量证明的矿。现阶段每区块有25特币的奖励。
私钥:
来解锁对应(钱包)地址的串字符,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh
交易:
简单地说,交易指把特币从个地址转到另个地址。更准确地说,笔“交易”指个经过签名运算的,表达价值转移的数据结构。每笔“交易”都经过特币络传输,由矿节点收集并封包区块中,永久保存在区块链某处。
钱包:
钱包指保存特币地址和私钥的软件,可以它来接受、发送、储存你的特币。
基本趋势
随着总量的增加,新币的制造速度会减慢,直到2140年达到2100万个总量上限。
比特币交易平台
Bitstamp、BTC-e、BTCChina (比特币中国)、OKCoin、火币网、云币网。
注意事项
备份钱包
价值、步骤、钱包加密、恢复钱包。
3、LTC(莱特币)
莱特币网络每2.5分钟(而不是10分钟)就可以处理一个块,因此可以提供更快的交易确认。
莱特币网络预期产出8400万个莱特币,是比特币网络发行货币量的四倍之多。
莱特币在其工作量证明算法中使用了由Colin Percival首次提出的scrypt加密算法,这使得相比于比特币,在普通计算机上进行莱特币挖掘更为容易。
区块链1.0的局限:比特币的1M的区块大小导致在交易频次越来越高、人们需求越来约多的情况下,转账速度变得越来越慢。这个问题可以由扩容解决,所以出现了之后的比特现金和比特黄金,以及比特钻石等。
> 二、区块链2.0架构 – 可编程区块链
区块链2.0是数字货币与智能合约相结合,对金融领域更广泛的场景和流程进行优化的应用。最大的升级之处在于有了智能合约。
智能合约是1990年代由尼克萨博提出的理念,几乎与互联网同龄。由于缺少可信的执行环境,智能合约并没有应用到实际产业中,自比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境。
所谓智能合约,是指以数字化形式定义的一系列承诺,包括合约参与方可以在上面执行这些承诺的协议。智能合约一旦设立指定后,能够无需中介的参与自动执行,并且没有人可以阻止它的运行。可以这样通俗的说,通过智能合约建立起来的合约同时具备两个功能:一是现实产生的合同;一个是不需要第三方的、去中心化的公正、超强行动力的执行者。
1、基本架构
![](https://img.kancloud.cn/40/52/405275a292358744360b83a6a1a5c2ea_640x453.png)
2、以太坊
组成部分
数字货币以太币(Ether)
用来构建和发布分布式应用的以太脚本(EtherScript)。
应用场景
以太坊可以用来创建去中心化的程序、自治组织和智能合约
特点
智能合约(smart contract):存储在区块链上的程序,由各节点运行,需要运行程序的人支付手续费给结点的矿工或权益人。
叔块(uncle block):将因为速度较慢而未及时被收入母链的较短区块链并入。使用的是有向无环图的相关技术。
权益证明(proof-of-stake):相较于工作量证明,可节省大量在挖矿时浪费的电脑资源,并避免特殊应用集成电路造成网络中心化。(尚未实现)
闪电网络(lightning network):可提升交易速度、降低区块链的负担,提高可扩展性。(尚未实现)
开发社区稳固,不断成长,勇于使用硬分叉(hard fork)。
专用开发语言
Serpent(类python)
Solidity(类JavaScript)
Mutan(类Go)
LLL(类Lisp)
网站
www.ethereum.org
三、区块链3.0架构 – 超越货币、金融范围的区块链应用
区块链3.0-智能化物联网时代,超出金融领域,为各种行业提供去中心化解决方案。区块链的应用领域扩展到人类生活的方方面面,在各类社会活动中红实现信息的兹证明,不再依靠某个第三人或者机构获取信任或者建立信任,实现信息的共享,包括在司法、医疗、物流等各个领域,区块链技术可以解决信任问题,提高整个系统的运转效率。
1、基本架构
![](https://img.kancloud.cn/fa/b5/fab53bfbc71ae3f9b87c62a210435263_640x433.png)
2、应用场景
自动化采购
智能化物联网应用
供应链自动化管理
虚拟资产兑换、转移
产权登记
3、产品举例
ZEC
ZCash,建立在零知识证明隐私保密技术,基于Zerocash protocol,可隐藏转帐金额。
DGD
DigixGlobal,数字黄金,由英国伦敦金银市场协会认证的以太坊资产平台,一种金本位数字支付系统。
SC
Sia,去中心化的云存储。
ZCoin
建立在零知识证明隐私保密技术,基于Zerocoin protocol,不能隐藏金额。
ICO
通过发行代币(Coin或者Token)的方式众筹融资,高风险、高收益。
- linux
- lanmp
- lanmp
- apache
- Apache2.4.x与Apache2.2.x的一些区别
- 跨域请求 Apache 服务器配置
- apache服务器安装配置ssl数字证书,https访问
- put请求跨区
- apache允许跨域请求 & ajax 自定义header
- 自定义header
- 安装最新版openssl
- nginx
- 解决Nginx出现403 forbidden的方法
- nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
- 如何用linux命令查看nginx是否在正常运行
- nginx反向代理
- nginx 编译安装
- nginx重定向
- 一个域名对应多个vue项目
- 关于http和https允许请求设置header问题
- nginx配置ssl证书
- 配置宝塔nginx支持tp5路由规则
- nginx获取自定义请求头header
- mysql
- 创建还量表
- 解决Navicat 出错:1130-host . is not allowed to connect to this MySql server,MySQL
- mysql慢查询
- explain
- 索引
- sphinx
- coreseek(sphinx)错误:WARNING: attribute 'id' not found - IGNORING原因及解决方法
- coreseek在windows安装问题和使用步骤
- coreseek常见错误
- coreseek php操作
- mysql5.6升级5.7.21
- sql操作
- mysql函数
- phpmyadmin上传文件大小限制
- mysql主从复制
- 单机主从配置
- 修改mysql端口后修改相应的phpmyadmin端口
- MERGE分表
- MySQL 5.7.22 多实例安装(二进制免编译安装模式)
- 解决phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory错误
- Mysql服务器无法存emoji表情的解决方案
- /var/run/mysqld 目录每次重启后都需要手动去创建并赋权mysql用户才能起到mysql
- mysql排序
- mysql关键字冲突
- mysql备份
- mysql5.7密码修改
- 更改MySQL数据库目录位置
- mysql5.6安装
- 字符集与排序规则
- mysql 锁
- mysql事务性
- php
- centos7 升级 php 5.4 -> php5.6
- php扩展
- linux切换默认php版本(宝塔)
- vsftpd
- 关于vsftp出现Restarting vsftpd (via systemctl): Job for vsftpd.service failed because the control 的解决办法
- vdb
- fdisk
- parted
- 磁盘小知识
- CentOS7.x系统根目录分区扩容
- Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令
- 添加swap交换区
- root
- Centos创建和修改用户及密码命令
- linux 命令终端提示符显示-bash-4.2#解决方法
- firewall
- centOS7下安装GUI图形界面
- 在Linux主机上,安装上传下载工具包rz及sz
- ping: www.baidu.com: Name or service not known centos7
- linux中 you have newmail in /var/spool/mail/root
- CentOS7启动SSH服务报:Job for ssh.service failed because the control process exited with error code.......
- ifconfig,netstat 命令找不到解決办法
- CentOS7系统时间与真实时间相差8小时
- Centos7:利用crontab定时执行任务
- crontab命令
- /usr/bin/curl 执行外链
- speedtest-cli命令,网速测试
- yum 卸载命令
- 用户管理
- PATH环境变量
- rpm 命令
- 防火墙和网络的安装
- nohup
- vim命令
- 清理缓存命令
- 错误集
- tar解压包的时候出现错误 gzip: stdin: not in gzip format
- 在linux下创建自定义service服务
- 时钟同步
- 查找大文件
- redis
- yum安装
- redis主从复制
- php用法
- redis表的特性
- redis 锁
- redis事务
- redis主从配置+哨兵模式
- redis应用场景
- redis高并发集群下常见问题
- redis思维导图
- 脑图1
- 脑图2
- redis编码
- redis字符串编码
- hash编码
- list编码
- set编码
- zset编码
- 内存回收和内存共享
- redis小知识点
- ffmpeg
- yum安装ffmpeg
- ffmpeg-php类库安装及使用
- make安装
- WebRTC
- 房间服务器
- 信令服务器
- 打洞服务器
- PHP识别二维码(php-zbarcode)
- centos7.4安装Imagemagick
- 第二种方式
- linux小知识
- 查看日志命令
- linux CPU使用率过高或负载过高的处理
- swoole安装
- mq安装
- RabbitMQ安装
- php-amqplib使用--基本使用
- RabbitMQ使用技巧
- tp5
- problem
- thinkphp5的mkdir() Permission denied问题
- 5.5版本以上”No input file specified“问题解决
- 路由带参数的翻页,第二页无数据
- 报错A non well formed numeric value encountered(Thinkphp5时间戳自动转换问题)
- order排序没反应
- tp5分页--搜索
- tp5文件上传---宝塔
- 小知识
- return
- volist标签中使用eq标签 下拉列表选中selected
- TP5写入避免某字段重复的问题
- tp5 --url大小写
- tp5接收数组
- json存储与查询
- 接收参数为null
- php替换str_replace的使用方法,支持多个替换
- postman传数组参数
- Request 排除变量传参
- sql连表统计查询
- php循环
- 模型column方法
- 修改器与获取器
- mysql数据库group与order不能同时使用
- mysql三表查询
- json数据
- 获取数组第一个获第二个元素的键值
- mysql除以100计算
- mysql分组统计
- tp5.1 高级查询之 表里2字段比较大小
- whereOr()用法
- param数字参数,不能用==判断相等,需要用=来判断
- if判断
- tp5随机排序
- 短链接算法
- $_FILES["file"]二进制数据获取
- 跨域
- web.config
- iis: httpd相应标头
- thikphp模板中一维数组如何循环
- tp5 视频上传及自定义命名
- 搜索附近的人
- 小程序
- uploadFile:fail Error: unable to verify the first certificate
- 安卓手机打开小程序提示:request:fail ssl hand shake error
- tp5.1引入库文件
- composer
- tp5小知识
- TP5.1隐藏public和index.php
- tp5扩展
- 二维码
- phpexcel
- 谷歌验证码
- 谷歌验证码2
- mysql时间统计
- union合并查询并分页
- tp5底层框架学习
- php未知函数
- 类的知识点
- 三大设计模式
- 反射机制
- php常用内置类
- php小知识点
- 变量,函数名,参数前加&,什么意思
- PHP中 比较 0、false、null,'' "
- php小常识
- php缓存
- Trait特性
- php -- 取路径:getcwd()、DIR、FILE 的区别
- php关于类的常用概念
- php 类与对象全面了解
- php命名空间与引入
- php常见魔法常量
- php常见魔法函数
- PHP 超级全局变量
- tp5.1本身小知识
- 框架运行流程
- 框架教程总结
- 类的自动加载
- 配置文件
- ArrayAccess用法
- yaconf学习
- yaml学习
- config类重点
- php小知识2
- 多语言切换
- jwt(token)
- redis连接池
- 百度富文本
- 图片路径转换
- layui
- 复选框
- 获取视频第几帧作为封面图
- mysql查询
- FIND_IN_SET(str,strlist)
- PHP
- 函数取整
- array
- 日期
- header
- php获取一维,二维数组长度的方法
- php中数组和字符串的相互转换
- php对数组开头与末尾的元素进行插入与移除
- 队列
- PHP substr截取中文字符出现乱码的问题解疑
- foreach遍历数组并添加属性(下标)
- 数组排序
- PHP实现保留两位小数的三种方法
- 对象转数组
- php小知识
- 阻塞IO和非阻塞IO,异步与同步的区别
- 后台运行
- 超时
- php 高精度计算的问题
- move_uploaded_file
- PHP SplQueue 队列简介
- @,&&等php符号
- PHP命令行脚本接收传入参数的三种方式
- php执行linux命令
- 一些封装函数
- PHP获取文件大小
- PHP 生成随机字符串与唯一字符串
- PHP去除emoji表情
- ip
- php把时间计算成几分钟前,几小时前,几天前的函数
- https
- ssl证书
- 远程登入密码和端口修改
- apache配置https
- problems
- 响应状态status为canceled,解决办法
- PHP Restful PUT方法的参数提交及接收
- HTTP之预检,两种请求
- http增删改查理解
- js
- js数组与字符串的相互转换
- js移除Array中指定元素
- 使用sessionStorage、localStorage存储数组与对象
- 子页面调用父页面方法
- input文件上传
- 随机字符串
- 数组操作
- js 传递数组
- token接入验证
- 用文件来保存token
- 删除用户资料
- 微信function
- 接入验证及点击事件
- 基础token
- 获取用户资料
- curl
- 链接分享
- 网页授权登入
- 微信被动回复用户消息
- 生成微信二维码
- WxPay
- 单一文件,不能加额外参数
- tp5引用微信支付官方库文件
- 微信二维码支付
- 其他
- 手机端发送ajax请求,后台有可能会接收不到到请求(360浏览器和ie浏览器)
- 短信发送
- git
- postman无法正常返回结果Could not get any response
- web服务器配置
- 高并发方案
- nginx防盗链和限制请求速度
- 高并发概念与测试工具
- 定时秒杀方案
- web接口
- yzdd
- 接口1
- 接口2
- spx
- 接口说明
- 新闻表sbh_artnews字段说明
- 用户表sbh_homeuser
- 用户认证表sbh_usertrue
- txsh
- 接口_txsh_1
- chat消息格式
- 表字段
- txsh_第三方接口
- GatewayWorker
- 向对方发送消息,对方会掉线
- 负载均衡
- html
- html中引入调用另一个html的方法
- python
- linux安装--python3.6
- Centos7卸载Python2.7之后恢复yum
- pycharm汉化
- python错误集
- fatal error: Python.h: No such file or directory
- Python小知识
- python中两个重要的工具setuptools和pip的安装
- 基础知识点
- 学习笔记
- tornado基础流程
- 请求与响应
- 以太坊
- 以太坊账户管理
- 一些方法的更新弃用
- 小知识点
- web3.eth.accounts 和 web3.eth.personal 创建account的区别
- web3.py中sendTransaction和sendRawTransaction之间的区别
- 测试网和主网区别
- 以太坊gas、gaslimit、gasPrice、gasUsed详解
- web安全
- web渗透--全面介绍
- 大概介绍
- xss--介绍
- sql注入-介绍
- 文件上传下载-介绍
- 越权--介绍
- xxe--介绍
- 暴力破解
- xss漏洞安全编码系列详解
- 反射型
- DOM型
- 存储型
- 图片隐写
- sql注入详解
- 数据库和其他--介绍
- mysql爆破
- web安全--工具
- sqlmap
- 介绍与安装
- sqlmap攻击方式
- Sqlmap中的其他
- sqlmap--get攻击
- sqlmap--post攻击
- sqlmap--常用选项及命令
- sqlmap--详解
- sqlmap--查看
- web安全简单总结
- api功能扩展
- 阿里云短信
- 阿里云短信sdk新版用法
- 阿里云对象存储 OSS
- 七牛云上传
- qq邮箱发送短信验证码
- 通过ip获取归属地
- 支付插件
- zoujingli
- swoole
- swoole启动关闭方案
- swoole服务端主动推送消息
- 创建websocket--systemctl自定义启动服务
- 创建php脚本来启动关闭websocket服务
- swoole小知识
- 进程/线程结构图
- 区块链
- 区块链概念理解
- usdt小知识点1
- 区块链架构1.0、2.0与3.0梳理
- 理解usdt和代币,智能合约,基础货币
- 波场tron
- 账号创建
- 代币转账