首页> 搜索结果页
"广东虚拟主机购买" 检索
共 8 条结果
经营性备案办理途径及注意事项
云栖号快速入门:【点击查看更多云产品快速入门】不知道怎么入门?这里分分钟解决新手入门等基础问题,可快速完成产品配置操作! 如果您的网站涉及经营性业务,在网站完成ICP备案后,您还需要为网站办理经营性ICP许可证。 办理经营性备案 商品或服务的在线平台或第三方卖方需获得经营性ICP许可证。申请经营性ICP许可证,您必须先有一个有效的ICP备案号,即先完成ICP备案。经营性备案有两种办理途径:您可联系当地通信管理局咨询并办理,阿里云可协助提供资质以及接入协议,具体办理要求需您登录当地经营性备案网站查看。您也可以直接登录阿里云经营性备案网站互联网信息经营许可证(ICP)咨询代理服务进行办理。 经营性备案所需合同的申请流程,请参见如何申请合同。请使用购买阿里云服务器的账号在线自助申请。云虚拟主机变更操作系统或升级服务器配置后会变更IP。如果IP变更,办理经营性备案所需的合同,请提交工单获取。 云虚拟主机变更操作系统或升级服务器后会变更IP。如果IP变更,办理经营性备案所需的合同,请提交工单获取。 经营性备案的IP注意事项 办理经营性备案时,目前部分省份对备案IP有特殊要求。 北京市:要求合同IP、指向IP、报备IP需保持一致,且服务器所在地必须为北京当地。 广东省(除深圳):要求合同IP、指向IP、报备IP均必须为广东当地服务器IP。备案归属地为深圳则无特殊要求。 辽宁省:要求合同IP、指向IP、报备IP需保持一致。 上海市、河北省:要求合同IP与实际指向IP需保持一致。 若您为以上省市的用户,且需要修改备案IP,请参见以下步骤进行修改。 1.登录阿里云ICP代备案管理系统。2.单击变更网站信息,根据您的变更情况修改网站备案信息,并在网站备注中增加说明,例如,变更IP为:xxx,机房所在地修改为xxx(根据您的服务器节点填写所在地)。单击提交备案初审。3.根据系统提示完成后续操作,直至管局审核通过。 4.如您还有其他有关经营性备案的问题,请通过智能在线咨询。 本文来自 阿里云文档中心 备案 经营性备案 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
文章
2020-03-27
ECS7天实践训练营入门班第三组精选文章(2)
第一步 开通云服务器 在这里我本人选择的是centos8.2的镜像 第二步搭建LAMP 环境 安装Apache服务 安装Apache服务及其扩展包 yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql 启动Apache服务 systemctl start httpd.service 安装MySQL数据库 1.下载安装mysql wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server 2.启动 MySQL 数据库 systemctl start mysqld.service 3.查看MySQL初始密码 grep "password" /var/log/mysqld.log 4.登录数据库 mysql -uroot -p 5.修改MySQL默认密码 set global validate_password_policy=0; #修改密码安全策略为低(只校验密码长度,至少8位)。 ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678'; 6.授予root用户远程管理权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678'; 输入exit退出数据库 3.上传文件到服务器 本人使用的是FXP上传的,上传到指定目录,重启http,就可以访问啦 本次课程如下 进入 https://ecs-buy.aliyun.com/#/prepay 就可以选择购买 ECS 产品了,根据产品购买页面我们一步一步来讲。 一、计费方式: 包年包月可以理解为是预付费产品,我们得先购买一个月或者几个月几年的ECS产品才能使用ECS,适合于长期稳定使用服务器的场景,比如说做网站。而按量付费可以理解为是后付费产品,我们需要保证有 100元的余额才可以使用按量付费,按量付费就是用几个小时就扣几小时的钱,适合于测试或者跑数据的场景。 二、地域 地域(Region)和可用区(Zone)是两个概念: 地域就是服务器的数据中心所放在的城市,例如华东1是在杭州,华东2是在上海,不同地域的ECS不可内网互联。 可用区是同一地域下的不同数据中心,在同一个地域距离较近,可以通过光纤连接,内网可以互联。 一般来说,地域的选择,就是看您的业务中,哪个地域访客最多、转化率最高,而不是离管理者最近。例如我的博客访客主要来自广东省,那么【华南1-深圳】自然是我首选的;例如我是阿里速卖通上的外贸企业,客户主要分布在拉美国家,我的官方就不可能建设在【华东1】,而是应该选择【美国东部1(弗吉尼亚)】。 三、网络 网络分经典网络和专有网络: 经典网络是阿里云最早期的网络方式,同一地域内的所有ECS、OSS、RDS都可以互联,然后通过安全组来实现访问的控制。 专有网络则是用户自有一个虚拟路由网络和交换机,只有同一网络、交换机下的ECS、RDS等产品才能互联,专有网络还可以绑定弹性IP,就算换ECS了,IP依旧可以保持不变。 尽量以选择专有网络为先。 四、实例系列 实例就是云服务器的规格,包括CPU、内存等。可以点击【选择其他实例规格】来查看所有可选的实例。 可根据需要来选择合适的规格,这里可以选择【入门级(共享)】实例。 五、公网带宽 公网带宽则分按使用流量和按固定带宽计费: 按流量计费顾名思义就是用多少流量扣多少钱,不同地域的每G流量资费不一样。 按带宽计费就是先买断多少M的带宽,后面无关用多少流量都不计费。 一般来说正常建站最好有至少2M的带宽,并配合OSS来放置资源会比较好。 六、镜像 公共镜像:是由阿里云官方提供公共基础镜像,仅包括初始系统环境。请根据您的实际情况自助配置应用环境或相关软件配置。 自定义镜像:基于用户系统快照生成,包括初始系统环境、应用环境和相关软件配置。选择自定义镜像创建云服务器,节省您的重复配置时间。 共享镜像:是其他账号的自定义镜像主动共享给您使用的镜像。阿里云不保证其他账号共享给您的镜像的完整性和安全性,使用共享镜像需要自行承担风险。 镜像市场:提供经严格审核的优质镜像,预装操作系统、应用环境和各类软件,无需配置,可一键部署云服务器。满足建站/应用开发/可视化管理等个性化需求。 七、存储 存储主要分系统盘和数据盘,系统盘就是整个操作系统所安装的虚拟硬盘,而数据盘则是提供挂载到某一盘符或者目录下。 数据盘的安全可靠性更高,推荐将网站数据存放于数据盘所挂载的目录或盘符下。 而普通云盘则是阿里云最早提供的云盘,在三盘副本和高可靠性下性能孱弱,只存在于无I/O优化的实例。高效云盘则是在三盘副本和高可靠性下提供 1240~3000 IOPS的磁盘性能,在60G以下性价比凸显。SSD云盘则是买的越大性能越好,最大提供20000 IOPS 的性能,磁盘大于60G的情况下有购买价值,性能明显。 八、其他 购买量,就是购买多长时间,以及多少台相同配置的ECS。 九、安全设置 设置密钥,就是通过密钥文件登入 Linux 系统,而非通过密码,必须拥有密钥文件才可以登入系统。 自定义密码,就是通过密码登入Linux系统或者Windows 系统,推荐新手使用该方式。 创建后设置,就是生成实例了再通过重置密码的方式修改密码,不推荐! 2.安装网页运行环境 一般来说阿里云提供的公共镜像是一个空白的Linux发行版或者Windows Server,具体的运行环境我们还是需要自行搭建,对于新手来说一下子就提高了使用ECS的学习成本,这里我们使用云市场的现有镜像,无需安装,开箱即用! 一般来说,主流的建站环境就是 LAMP 环境,它是 Linux + Apache Httpd + MySQL + PHP 的缩写,是网页环境的黄金搭档,可以兼容几乎所有的HTML和PHP运行需求。 这里推荐使用 LAMP环境(Ubuntu16.04 Apache PHP7.1),因为这个镜像提供了比较丰富的工具:例如OSS备份、Let’s Encrypt等,而且Apache、PHP 等组件可以自行升级,更加安全! 使用云市场的镜像有以下几种方式。 一、购买ECS时选择 还记得在购买ECS的使用选择公共镜像吗?我们可以在这一步就选择镜像市场,然后在搜索框输入关键词:LAMP环境(Ubuntu16.04 Apache PHP7.1) *二、已购ECS更换镜像* 如果已经购买了ECS,想更换为镜像市场的镜像应该怎么办? 1. 停止ECS(强制停止更快)。 2. 然后在 配置信息 —— 更换系统盘 就可以和第一步一样选择镜像市场的镜像了~ 三、直接在镜像页面购买 进入:https://market.aliyun.com/products/53398003/cmjj016263.html 就可以像购买ECS一样购买并使用镜像了。 四、设置安全组 1、进入【本实例安全组】 2、点击【配置规则】3、点击右上角【添加安全组规则】4、设置内容: 授权类型:全部授权对象:0.0.0.0/0 这就是默认开放所有端口且允许所有IP访问了。 这是VPC(专有网络)的设置,如果是经典网络,设置公网出入方向的内容即可,不要输入内网的。 *五、查看* 访问:http://你的公网iP/就可以看到:点击【探针】,就可以查看PHP运行环境和相关服务数据了。 第三步:制作个人简历网页 拥有一个个人简历网页总还是能给自己加分不少的,特别是在互联网企业,简历这种东西一定要新颖并且内容一定能差,以免给人一种头重脚轻的感觉。 这里需要通过 Visual Studio Code(后面简称VSC) 编辑并制作简历页面。 下载地址:https://code.visualstudio.com/Download 在附件中有提供一份响应式的HTML简历模板,就是resume文件(下载地址:https://edu.aliyun.com/course/147/material/6435/download) 一、修改HTML标题: 将以下图片中的“王小明的个人简历” 改成你的名字或者 XX的简历。 二、然后其他的部分,我们只需要复制页面中的文字并在VSC中搜索即可,然后替换: 例如,我要修改年龄这一段: 复制 “年 龄:25” 到 VSC 中搜索: 换成我们真实的年龄,保存之后再打开 index.html 文件就可以看到更改后的结果了! 三、修改技能的百分比 用VSC打开,可以看到: class="s90" 中的,s90 表示 90%,s100即100%以此类推 四、修改作品中的图片: 在这一区域中,将图片替换为你的图片即可: 第四步:将简历上传到服务器一、安装FileZilla 用过虚拟主机的朋友可能会知道虚拟主机一般使用FTP传输文件,而我们使用 Linux 发行版,其实也可以通过 SFTP 协议传输文件,常见的 FTP 软件基本上都支持 SFTP 协议。 这里我们推荐免费开源,而且非常好用的跨平台 FTP 软件,支持中文哟 —— FileZilla 下载地址:https://filezilla-project.org/download.php?type=client 只需要在主机栏中声明 sftp:// 协议,就可以连接了,就可以看到远程 Linux 上的目录了: 二、上传 因为绑定域名需要涉及备案,所以我们这里以公网IP访问先介绍: 1、进入/data/wwwroot/default/ 目录,创建一个old文件夹,将目录上的原始文件全部搬到old内。 2、将简历上传至/data/wwwroot/default/ 目录下: 然后在浏览器中直接访问:http://ecs公网ip就可以可以访问了! 简历页面已下载到文件中 附录: 云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务, 助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。 了解产品详情: https://www.aliyun.com/product/ecs 基于ECS搭建云上博客 开发者云将免费提供一台基础环境的 CentOS 6.4 64 位的 ECS(云服务器)实例。跟着场景指引,你可以在这台服务器上安装和部署LAMP 环境并安装 WordPress,快速搭建自己的博客。 复制下方链接,领取免费ECS资源,30分钟完成基于ECS的博客搭建! 领取链接: https://developer.aliyun.com/adc/scenario/fdecd528be6145dcbe747f0206e361f3?spm=5176.14319553.J_8315879550.2.3c2413bfKDFSk9
文章
弹性计算 · 关系型数据库 · MySQL · Linux · 网络安全 · Apache · PHP · 数据库 · 数据安全/隐私保护 · 对象存储
2020-08-12
ECS7 - 搭建简历网站
一、总览 进入 https://ecs-buy.aliyun.com/#/prepay 就可以选择购买 ECS 产品了,根据产品购买页面我们一步一步来讲。 二、关于ECS及其购买 计费方式 包年包月可以理解为是预付费产品,我们得先购买一个月或者几个月几年的ECS产品才能使用ECS,适合于长期稳定使用服务器的场景,比如说做网站。而按量付费可以理解为是后付费产品,我们需要保证有 100元的余额才可以使用按量付费,按量付费就是用几个小时就扣几小时的钱,适合于测试或者跑数据的场景。 地域 地域(Region)和可用区(Zone)是两个概念: 地域就是服务器的数据中心所放在的城市,例如华东1是在杭州,华东2是在上海,不同地域的ECS不可内网互联。 可用区是同一地域下的不同数据中心,在同一个地域距离较近,可以通过光纤连接,内网可以互联。 一般来说,地域的选择,就是看您的业务中,哪个地域访客最多、转化率最高,而不是离管理者最近。例如我的博客访客主要来自广东省,那么【华南1-深圳】自然是我首选的;例如我是阿里速卖通上的外贸企业,客户主要分布在拉美国家,我的官方就不可能建设在【华东1】,而是应该选择【美国东部1(弗吉尼亚)】。 网络 网络分经典网络和专有网络: 经典网络是阿里云最早期的网络方式,同一地域内的所有ECS、OSS、RDS都可以互联,然后通过安全组来实现访问的控制。 专有网络则是用户自有一个虚拟路由网络和交换机,只有同一网络、交换机下的ECS、RDS等产品才能互联,专有网络还可以绑定弹性IP,就算换ECS了,IP依旧可以保持不变。 尽量以选择专有网络为先。 实例系列 实例就是云服务器的规格,包括CPU、内存等。可以点击【选择其他实例规格】来查看所有可选的实例。可根据需要来选择合适的规格,这里可以选择【入门级(共享)】实例。 公网带宽 公网带宽则分按使用流量和按固定带宽计费: 按流量计费顾名思义就是用多少流量扣多少钱,不同地域的每G流量资费不一样。 按带宽计费就是先买断多少M的带宽,后面无关用多少流量都不计费。 一般来说正常建站最好有至少2M的带宽,并配合OSS来放置资源会比较好。 ## 镜像 公共镜像:是由阿里云官方提供公共基础镜像,仅包括初始系统环境。请根据您的实际情况自助配置应用环境或相关软件配置。 自定义镜像:基于用户系统快照生成,包括初始系统环境、应用环境和相关软件配置。选择自定义镜像创建云服务器,节省您的重复配置时间。 共享镜像:是其他账号的自定义镜像主动共享给您使用的镜像。阿里云不保证其他账号共享给您的镜像的完整性和安全性,使用共享镜像需要自行承担风险。 镜像市场:提供经严格审核的优质镜像,预装操作系统、应用环境和各类软件,无需配置,可一键部署云服务器。满足建站/应用开发/可视化管理等个性化需求。 存储 存储主要分系统盘和数据盘,系统盘就是整个操作系统所安装的虚拟硬盘,而数据盘则是提供挂载到某一盘符或者目录下。 数据盘的安全可靠性更高,推荐将网站数据存放于数据盘所挂载的目录或盘符下。 而普通云盘则是阿里云最早提供的云盘,在三盘副本和高可靠性下性能孱弱,只存在于无I/O优化的实例。高效云盘则是在三盘副本和高可靠性下提供 1240~3000 IOPS的磁盘性能,在60G以下性价比凸显。SSD云盘则是买的越大性能越好,最大提供20000 IOPS 的性能,磁盘大于60G的情况下有购买价值,性能明显。 其他 设置密钥,就是通过密钥文件登入 Linux 系统,而非通过密码,必须拥有密钥文件才可以登入系统。 自定义密码,就是通过密码登入Linux系统或者Windows 系统,推荐新手使用该方式。 创建后设置,就是生成实例了再通过重置密码的方式修改密码,不推荐! 在这里我本人选择的是 centos 8.2的镜像其中安全组设置内容:授权类型:全部授权对象:0.0.0.0/0 这就是默认开放所有端口且允许所有IP访问了。 这是VPC(专有网络)的设置,如果是经典网络,设置公网出入方向的内容即可,不要输入内网的。 开通云服务器之后访问: http://你的公网IP/ 就可以看到:点击【探针】,就可以查看PHP运行环境和相关服务数据了。 三、搭建 LAMP 环境 安装 Apache 服务 安装Apache服务及其扩展包 yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql 启动 Apache 服务 systemctl start httpd.service 安装 MySQL 数据库 1、下载安装 MySQL wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server 2、启动MySQL数据库 systemctl start mysqld.service 3、查看MySQL 初始密码 grep "password" /var/log/mysqld.log 4、登录数据库 mysql -uroot -p 5、修改 MySQL默认密码 set global validate_password_policy=0; #修改密码安全策略为低(只校验密码长度,至少8位)。 ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678'; 6、授予 Root 用户远程管理权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678'; 7、输入 exit 退出数据库 四、制作简历主页 拥有一个个人简历网页总还是能给自己加分不少的,特别是在互联网企业,简历这种东西一定要新颖并且内容一定能差,以免给人一种头重脚轻的感觉。 这里需要通过 Visual Studio Code(后面简称VSC) 编辑并制作简历页面。 下载地址:https://code.visualstudio.com/Download 在附件中有提供一份响应式的HTML简历模板,就是resume文件(下载地址:https://edu.aliyun.com/course/147/material/6435/download) 一、修改HTML标题: 将以下图片中的“王小明的个人简历” 改成你的名字或者 XX的简历。 二、然后其他的部分,我们只需要复制页面中的文字并在VSC中搜索即可,然后替换: 例如,我要修改年龄这一段: 复制 “年 龄:25” 到 VSC 中搜索: 换成我们真实的年龄,保存之后再打开 index.html 文件就可以看到更改后的结果了! 三、修改技能的百分比 用VSC打开,可以看到: class="s90" 中的,s90 表示 90%,s100即100%以此类推 四、修改作品中的图片: 在这一区域中,将图片替换为你的图片即可: 五、将简历上传到服务器 一、安装FileZilla 用过虚拟主机的朋友可能会知道虚拟主机一般使用FTP传输文件,而我们使用 Linux 发行版,其实也可以通过 SFTP 协议传输文件,常见的 FTP 软件基本上都支持 SFTP 协议。 这里我们推荐免费开源,而且非常好用的跨平台 FTP 软件,支持中文哟 —— FileZilla 下载地址:https://filezilla-project.org/download.php?type=client 只需要在主机栏中声明 sftp:// 协议,就可以连接了,就可以看到远程 Linux 上的目录了: 二、上传 因为绑定域名需要涉及备案,所以我们这里以公网IP访问先介绍: 1、进入/data/wwwroot/default/ 目录,创建一个old文件夹,将目录上的原始文件全部搬到old内。 2、将简历上传至/data/wwwroot/default/ 目录下: 然后在浏览器中直接访问:http://ecs公网ip/ 就可以可以访问了! 附录: **云服务器 ECS(Elastic Compute Service)**是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。 了解产品详情: https://www.aliyun.com/product/ecs基于ECS搭建云上博客开发者云将免费提供一台基础环境的 CentOS 6.4 64 位的 ECS(云服务器)实例。跟着场景指引,你可以在这台服务器上安装和部署LAMP 环境并安装 WordPress,快速搭建自己的博客。点击此处链接,领取免费ECS资源,30分钟完成基于ECS的博客搭建!
文章
弹性计算 · 关系型数据库 · MySQL · Linux · 网络安全 · Apache · 数据库 · 数据安全/隐私保护 · 对象存储 · RDS
2020-09-13
【阿里云 MVP 月度分享】轻量应用服务器的介绍和开通流程详解
前言 我是2015年加入的阿里云开发者论坛当版主的,到2017年遇到比较多的问题就是很多新手用户并不会操作 ECS 了,很多对云计算产品不理解的用户甚至还会误解为什么会有一个买了却不能开箱即用的产品,这也是我一直坚持做我的入门级场景教程 《云计算的1024种玩法》 订阅的原因。在 2013年前后的时候我记得是那时候万网推出了 轻云服务器 然而仅仅只是实现了资源独享的虚拟主机而已并没有体现出 IaaS 云服务应有的优势,而云市场服务商提供的 ECS 应用镜像质量也是良莠不齐。 很显然目前的痛点: 就是买了 IaaS 却不会用 PaaS、SaaS 的自由度不高 ECS 附加功能太多还用不到,价格贵 介绍 所以就有了轻量应用服务器(轻量应用服务器),基于 ECS 发展出的轻量服务器,完美解决了上述的三个痛点: 轻量应用服务器 是 IaaS 产品但是提供定制化应用镜像且有可视化控制台可以操作,不怕新手不会用。轻量应用服务器 在提供 提供定制化应用镜像的同时,用户依旧可以拥有 root 权限,对系统进行个性化操作 精简了一些 ECS 的功能,比如说安骑士。把安全组的操作也做了适当减法更适合用户操作 购买 这里就介绍一下购买和开通 轻量应用服务器 需要注意的几个点。 首先,我们进入 https://www.aliyun.com/product/swas 轻量应用服务器的页面,然后点击 立即购买 地域 地域和 ECS 的地域(Region)相对应,也就是服务器所在的物理地域,不过呢,不同地域的网络环境不同,我们选择地域不应该是距离开发者近,而是应该是距离目标访客近。 例如我在杭州,而我的网站主要客户却是在山东,那么我们就应该首选 北京 作为地域。 目前轻量提供了 华东1(杭州)、华北2(北京)、华南1(深圳)三个地域,就顺便介绍一下适合服务的地域了。 华东1(杭州) 适合服务南方的所有地域,华东、华南是最佳选择。 华北2(北京)适合服务北方的所有地域,华北、东北是最佳选择。华南1(深圳)仅适合服务广东省的用户。 具体网络测评可以查看:《阿里云全球十五个节点评测分析及服务器地域选择攻略》 镜像 应用镜像 是轻量应用服务器团队制作的精品应用,可以帮助我们快速实现 Web 环境的搭建、安装和使用,并且提供后台图形化操作。 如果要开启后台图形化操作功能,必须要勾选: 系统镜像 是和 ECS 一致的默认空白镜像,需要人工自行配置,在轻量上使用系统镜像基本上就失去了其便利性,只有轻量对比 ECS 的价格优势了。 套餐 套餐就是配置了,不同于 ECS 的弹性配置,轻量的配置都是已经搭配好了的,最低是 1C1G1M 的配置,配合其他 OSS、CDN 等产品,也可以应付。 一般来说,1C1G1M 的配置可以应付 2~3 个访问量极小的网站,适合新手入门,如果有其配置无法应对网站的访问需求,完全可以弹性升级。 时长与数量 这个没啥好说的,买的越久越便宜。 OK,到这里我们就完成了 轻量应用服务器 的购买入门了,如果有疑问可以在下面回复提问。
文章
弹性计算 · 应用服务中间件
2018-01-02
ECS7天实践训练营入门班第三组精选文章(3)
1. 开通云服务器 进入 https://ecs-buy.aliyun.com/#/prepay 就可以选择购买 ECS 产品了。 一、计费方式 包年包月可以理解为是预付费产品,我们得先购买一个月或者几个月几年的ECS产品才能使用ECS,适合于长期稳定使用服务器的场景,比如说做网站。而按量付费可以理解为是后付费产品,我们需要保证有 100元的余额才可以使用按量付费,按量付费就是用几个小时就扣几小时的钱,适合于测试或者跑数据的场景。 二、地域 地域(Region)和可用区(Zone)是两个概念: 地域就是服务器的数据中心所放在的城市,例如华东1是在杭州,华东2是在上海,不同地域的ECS不可内网互联。 可用区是同一地域下的不同数据中心,在同一个地域距离较近,可以通过光纤连接,内网可以互联。 一般来说,地域的选择,就是看您的业务中,哪个地域访客最多、转化率最高,而不是离管理者最近。例如我的博客访客主要来自广东省,那么【华南1-深圳】自然是我首选的;例如我是阿里速卖通上的外贸企业,客户主要分布在拉美国家,我的官方就不可能建设在【华东1】,而是应该选择【美国东部1(弗吉尼亚)】。 三、网络 网络分经典网络和专有网络: 经典网络是阿里云最早期的网络方式,同一地域内的所有ECS、OSS、RDS都可以互联,然后通过安全组来实现访问的控制。 专有网络则是用户自有一个虚拟路由网络和交换机,只有同一网络、交换机下的ECS、RDS等产品才能互联,专有网络还可以绑定弹性IP,就算换ECS了,IP依旧可以保持不变。 尽量以选择专有网络为先。 四、实例系列 实例就是云服务器的规格,包括CPU、内存等。可以点击【选择其他实例规格】来查看所有可选的实例。 可根据需要来选择合适的规格。 五、公网带宽 公网带宽则分按使用流量和按固定带宽计费: 按流量计费顾名思义就是用多少流量扣多少钱,不同地域的每G流量资费不一样。 按带宽计费就是先买断多少M的带宽,后面无关用多少流量都不计费。 一般来说正常建站最好有至少2M的带宽,并配合OSS来放置资源会比较好。 六、镜像 公共镜像:是由阿里云官方提供公共基础镜像,仅包括初始系统环境。请根据您的实际情况自助配置应用环境或相关软件配置。 自定义镜像:基于用户系统快照生成,包括初始系统环境、应用环境和相关软件配置。选择自定义镜像创建云服务器,节省您的重复配置时间。 共享镜像:是其他账号的自定义镜像主动共享给您使用的镜像。阿里云不保证其他账号共享给您的镜像的完整性和安全性,使用共享镜像需要自行承担风险。 镜像市场:提供经严格审核的优质镜像,预装操作系统、应用环境和各类软件,无需配置,可一键部署云服务器。满足建站/应用开发/可视化管理等个性化需求。 七、存储 存储主要分系统盘和数据盘,系统盘就是整个操作系统所安装的虚拟硬盘,而数据盘则是提供挂载到某一盘符或者目录下。 数据盘的安全可靠性更高,推荐将网站数据存放于数据盘所挂载的目录或盘符下。 而普通云盘则是阿里云最早提供的云盘,在三盘副本和高可靠性下性能孱弱,只存在于无I/O优化的实例。高效云盘则是在三盘副本和高可靠性下提供 1240~3000 IOPS的磁盘性能,在60G以下性价比凸显。SSD云盘则是买的越大性能越好,最大提供20000 IOPS 的性能,磁盘大于60G的情况下有购买价值,性能明显。 八、安全设置 设置密钥,就是通过密钥文件登入 Linux 系统,而非通过密码,必须拥有密钥文件才可以登入系统。 自定义密码,就是通过密码登入Linux系统或者Windows 系统,推荐新手使用该方式。 创建后设置,就是生成实例了再通过重置密码的方式修改密码,不推荐! 2. 安装网页运行环境 一般来说阿里云提供的公共镜像是一个空白的Linux发行版或者Windows Server,具体的运行环境我们还是需要自行搭建,对于新手来说一下子就提高了使用ECS的学习成本,这里我们使用云市场的现有镜像,无需安装,开箱即用! 一般来说,主流的建站环境就是 LAMP 环境,它是 Linux + Apache Httpd + MySQL + PHP 的缩写,是网页环境的黄金搭档,可以兼容几乎所有的HTML和PHP运行需求。 这里推荐使用 LAMP环境(Ubuntu16.04 Apache PHP7.1),因为这个镜像提供了比较丰富的工具:例如OSS备份、Let’s Encrypt等,而且Apache、PHP 等组件可以自行升级,更加安全! 一. 更换镜像 打开云服务管理控制台,停止ECS(强制停止更快)。 然后在 配置信息 —— 更换操作系统 选择镜像市场,然后在搜索框输入关键词:LAMP环境(Ubuntu16.04 Apache PHP7.1) 二、设置安全组 进入【本实例安全组】 点击【配置规则】 点击【手动添加】 设置内容 三、查看 访问:http://你的公网ip 3. 制作个人简历网页 通过 Visual Studio Code(后面简称VSC) 编辑并制作简历页面。 响应式的HTML简历模板,就是resume文件(下载地址:https://edu.aliyun.com/course/147/material/6435/download) 一、修改HTML标题: 将以下图片中的“王小明的个人简历” 改成你的名字或者 XX的简历。 二、然后其他的部分,我们只需要复制页面中的文字并在VSC中搜索即可,然后替换: 保存之后再打开 index.html 文件就可以看到更改后的结果了! 三、修改作品中的图片: 在这一区域中,将图片替换为你的图片即可: 4. 将简历上传到服务器 一、安装FileZilla 推荐免费开源,而且非常好用的跨平台 FTP 软件,支持中文哟 —— FileZilla 下载地址:https://filezilla-project.org/download.php?type=client 只需要在主机栏中声明 sftp:// 协议,就可以连接了,就可以看到远程 Linux 上的目录了。 二、上传 进入/data/wwwroot/default/ 目录,创建一个old文件夹,将目录上的原始文件全部搬到old内。 将简历上传至/data/wwwroot/default/ 目录下: 然后在浏览器中直接访问:http://ecs公网ip就可以可以访问了!
文章
弹性计算 · 安全 · 关系型数据库 · Linux · 网络安全 · Apache · PHP · 数据安全/隐私保护 · 对象存储 · RDS
2020-08-12
阿里云智能--基础产品技术月刊 2019年8月
一、商用产品技术TOP1 智能接入网关SAG发布集中控制台配置功能,提升企业客户网络管理维护效率在规模较大的企业用户场景,企业线下IDC之间以及访问云上资源,会在多地域部署阿里云智能接入网关SAG,传统的本地web配置,因为IT管理人员经验和技能水平参差不齐,造成配置错误、遗漏等多种问题,管理维护效率较低。针对此场景,智能接入网关发布了集中控制台配置功能,可以由总部IT人员在阿里云SAG控制台中统一进行配置,大大提升了可以在日常交付、运维等场景的效率。同时,控制台还可以自定义升级时间,在业务低峰期升级,降低升级期间的业务影响。 TOP2 E-HPC发布混合云异步缓存渲染计算并通过墨境天合测试8月28日,EHPC渲染混合云异步缓存方案发布,得到渲染客户认可。该方案基于云上NAS构建文件缓存层,异步缓存创新实现了缓存预热过程中无需重复拉取单个渲染素材,有效解决渲染任务在混合云场景下专线受限的问题,并能够实现用户线下资产到云上的透明迁移/备份。方案易用性、稳定性均得到客户认可,在渲染行业预计有广泛市场。 TOP3 神龙服务器+ZStack专有云完成首单输出神龙服务器+ZStack专有云完成首单输出,中标6xx所SCC+ZStack高通量循环分布式训练环境建设专有云项目,5xxx万,该项目和百度云PK,充分发挥神龙服务器兼具虚拟化和算力无损输出的特性,满足6XX所动态虚机伸缩和HPC高性能过程模拟的两大场景需求。 对象存储OSS 支持设置Bucket标签,以及按Bucket标签进行授权管理OSS 支持设置对Bucket设置标签,并按标签查询Bucket,以及结合访问控制RAM,按标签进行授权。针对企业客户,Bucket数目较多时,通过自定义标签,Bucket的查看、检索、授权更便捷。该功能有如下特点:· 支持对Bucket设置、修改、读取标签,标签包含Key、Value;· 支持按标签,查询过滤Bucket列表;· 访问控制RAM Policy,支持按Bucket标签进行授权策略管理;直击数据分析痛点,SLS日志服务重磅推出数据加工功能据公开数据统计,大数据分析从业者80%的精力消耗在数据规整上。应对企业内纷繁复杂的非结构化数据,ETL数据加工提供如下硬核能力:•对各类数据的规整、富化、汇总、分发等处理;•全托管、实时、高吞吐;•面向日志分析领域,提供丰富算子、开箱即用的场景化UDF(Syslog、非标准json、AccessLogUA/URI/IP解析等);•丰富的生态,阿里云大数据产品(OSS、MC、EMR、ADB等)、开源生态(Flink、Spark等)集成能力,降低数据分析门槛;块存储4.1.3 版本全网发布重点功能和技术突破包括:•Geo 2.0云盘热迁移功能,支持全网2.0块存储的磁盘在线迁移;•ESSD 支持BYOK,在线磁盘扩容能力;•单块云盘可保留快照数目提升到 256个;预留实例券商业化发布8月12日,弹性计算推出预留实例券的付费方式,通过解耦账单和具体计算资源,直接交付计算力,提供灵活性和成本优化的最佳平衡,是DevOps下的最佳选择。让阿里云有能力承接需要对财资精细化管理,同时部署DevOps的大型客户,如SAP。阿里云是该功能的第一个国内云计算提供厂商。快照国际站商业化阿里云国际站快照服务已于2019年8月21日正式商业化发布。快照作为一种云原生的数据保护服务,用户可通过控制台、API等方式针对云盘创建快照。当云盘发生故障时(例如,感染病毒、配置错误、数据误删除等),可通过快照快速恢复数据。另外阿里云也提供自动快照策略,可以根据不同保护需求创建不同的自动快照策略。8月10日,ROS新控制台内测上线新控制台基于整个视觉体验以及功能易用性,重新打造,核心目标通过交互以及功能的变更提高用户的开发效率快速解决问题。依托OneConsole丰富的UI组件库,也提高了开发效率,具备全球加速、全球同发能力,保证了全球访问体验的一致性、访问时间也降到了2秒以内。8月29日新版API上线新版API使用RPC风格,所有参数都提取出来,便于使用,移除了旧版不合理参数,鉴权的最小单元为stack,简化授权逻辑,同时解决老板API传参难、返回结果不一致等问题。在使用方面也优化了传参,简化了使用方式。具有很好的兼容性,新老版本API可以任意穿插调用。8月15日DDH支持虚拟机热迁移灰度上线客户对独占主机上的虚拟机需要进行运维操作时,借助热迁移能力进行业务无感的进行运维操作,大大提高了产品的体验和云计算业界的产品核心竞争力。标志着阿里云智能云服务器热迁移能力越来越成熟志,热迁移从真正后台工具迈向产品能力开放。8月15日,DDH虚拟机支持升降级功能发布上线DDH开放产品规格升降功能,让DDH客户有更多控制能力,用户可以根据实际现实业务的发展需求,灵活变通升降机自己的宿主机服务器,操作方便灵活性极高。8月23日,“抢占实例”定时功能灰度上线开抢占实例虽然具有非常大的价格优势,但是存在释放不可预期的问题,针对该特性目前中国云市场很多客户都不能很好的利用起整个资源,目前上线的“抢占实例”定时长功能最大可以保障客户6个小时的资源不会被抢占,提前预定保证目标实例的使用时间,从产品功能的角度给予客户更多的云服务器资源。镜像导出功能ECS镜像导出功能全网开放,并设定了更为开放合理的业务规则,用户可以通过该功能导出自己的自定义镜像,完成线下测试和数据备份的需求。在此之前,导出功能一直是以白名单方式开放,平均每个月有大约150 ~ 180个导出白名单申请工单。导出功能的开放,方便用户进行导出操作,节省了提交和处理工单的时间,同时也节省了研发工程师每天处理白名单的时间。OOS 六地域开服基于ROS的OOS上云解决方案OOS 六地域开服基于ROS的OOS上云解决方案,可1天上线6地域(张家口,北京,呼和浩特,孟买,伦敦,德国),大大简化了云上交付部署的周期和难度。Serverless Kubernetes升级2.0架构,平均费用降低近五成8月份Serverless Kubernetes全面升级2.0架构,支持多命名空间创建、CRD、RBAC功能,同时增强了安全性和隔离型,并新增新加坡、香港、悉尼。ASK 2.0架构可以更好的支持云原生应用的Serverless化部署。8月份ECI平均售价降低46%,其中cpu降价30%,内存降价65%。基于ECI创建的pod费用则对应降低。容器服务ASK( Serverless Kubernetes) 可以让用户无需管理和维护集群与服务器,即可快速创建Kuberentes 容器应用,并且根据应用实际使用的容器实例(ECI)资源进行按需付费。使用Serverless Kubernetes,用户可专注于设计和构建应用程序,而不是管理运行应用程序的基础设施。阿里云容器服务 ACK 增强资源弹性策略配置,支撑千级节点短时扩容自动弹性伸缩容器服务弹性方面的重要功能,用户可配置资源的自动伸缩策略。本次优化使得用户可以配置多个伸缩组,以期到达临界状态时可以弹出多种规格的资源,满足不同类型应用如高计算应用、GPU 计算任务的运行。此外,用户在配置自动伸缩策略时更可以指定多可用区的调度策略,如优先级策略、成本优化策略、可用区均衡策略,满足用户在集群跨多个可用区时的资源调度需求。阿里云容器服务 ACK 增强集群自定义能力,支持指定本地域名容器服务进一步加强集群的用户自定义能力。当用户拥有多个集群时,用户需要个性化定义本地域名以更好地管理这些集群和服务。容器服务在用户创建集群时提供这一配置项,简化了用户后期的管理工作,也提高了运维效率。如今,阿里云容器服务ACK已经开放cluster-domain信息的可配置项,支持用户自定义Cluster-domain(用于服务发现地址的本地域名)。阿里云容器服务 ACK 支持一键部署多种开源项目阿里云云原生应用中心有各种开源免费的容器化应用,如Apache、Hadoop、Cassandra、Redis等开源项目,一贯以来深受开发者的喜爱。容器服务 ACK 应用目录已经将云原生应用中心(APP Hub)的应用统一对接进来,用户可在容器服务-应用目录-App Hub中选择应用,并一键式将其部署到容器服务的集群,免去用户需要自己搭建Kubernetes集群并使用命令行部署应用的麻烦步骤。阿里云边缘Kubernetes集群托管公测进行时,开启云边端一体化云原生体验阿里云容器服务于8月1号正式公测“边缘Kubernetes集群托管”服务,该服务面向CDN、IoT等诸多边缘计算场景,为用户带来云边一体的云原生体验。阿里云边缘容器 ACK@Edge 是致力于云边端一体化的云原生边缘容器产品:向上作为底座支撑边缘计算领域PaaS构建;向下支持ENS、IoT自有节点等边缘算力资源接入,并支持边缘自治、边缘安全容器、边缘智能等;同时也致力打造云端AI、流计算等能力向边缘下沉的通道和平台,拓宽云产品边界。随着边缘计算的需求爆发,以及IoT、CDN等边缘场景规模的逐步壮大,ACK@Edge将持续在规模性、稳定性方面发力,助力提升边缘计算业务创新效率。ACK@Edge更多详情可参考https://help.aliyun.com/document_detail/124723.html阿里云容器服务 ACK 持续完善SLB集成,大量新功能放出容器服务Cloud Controller Manager(CCM)是容器集群中的核心组件,承担着K8s管理各种云资源的责任,尤其是用户经常用到的负载均衡、VPC等网络资源。本次 CCM 版本更新,包含了如下新增功能: 支持创建带有访问控制的SLB。由容器服务创建的SLB可以指定白名单访问的IP网段,进一步增强了安全能力。 支持设定SLB在cordon/drain时是否移除不可调度的节点。Cordon/drain是K8s维护时重要功能,但目前社区并没有一个统一的标准来确定一旦节点进入维护状态时是否需要把节点从SLB的后端去除。CCM提供了这样一个接口,可以让用户选择是否从SLB后端去除的策略,保证了维护的灵活性。 支持在Terway ENIi网络模式下直接将pod挂载到SLB后端。Terway ENI是容器服务最新推出的网络插件,其核心是将节点的弹性网卡(ENI)的IP直接挂载到容器实例(Pod)。CCM则将以往是SLB后挂节点的方式改为SLB后挂容器实例,这样免去了流量在节点上的转发,提升了网络性能。4.支持Local模式的Service按照Node上的Pod数量为Node设置权重。CCM可根据节点上Pod的数量来调整流量分配到各个节点的占比,实现多能者多劳。这一功能只对Local模式下的Service有效。 免运维,低成本,应用上云新模式 | 阿里云轻量级分布式应用服务 SAE 上线4大 region阿里云轻量级分布式应用服务 SAE 上线北京、上海、杭州、深圳 4 个 region,满足更多用户的部署需求,帮助用户避免闲置资源浪费,免去底层运维,还能快速启用Kubernetes、微服务架构,解决业务通点。详情:https://yq.aliyun.com/articles/712712告别诊断烦恼 | 应用实时监控 ARMS 上线智能和实时诊断功能重点上线容器 Pod 监控、应用实时诊断,Prometheus 监控开放 Grafana 自定义大盘能力,支持在死锁及 OOM 场景下的实时报警。新增支持国产达梦数据库插件。详情:https://yq.aliyun.com/articles/713826全景还原报错现场 | 应用实时监控 ARMS 上线用户行为回溯功能企业对前端性能要求越来越高,前端性能监控的产品层出不穷,JS错误诊断更是其中举足轻重的一个环节。ARMS 新上线的用户行为回溯功能可全景还原JS报错现场。详情:https://yq.aliyun.com/articles/714237开发部署效率提升12倍 | 阿里云Web应用托管服务上线多语言功能阿里云Web应用托管服务支持移动类和API类应用,同时支持 Java、Node.js、PHP、Go 和 Python 语言编写并构建应用程序,在无需管理底层基础设施的情况下,即可简单、高效、安全和灵活地对应用进行部署、扩缩、变更配置和监控,并提供相关托管方案。详情:https://yq.aliyun.com/articles/714244阿里云应用高可用服务 AHAS 流控降级实现 SQL 自动防护功能在影响系统稳定性的各种因素中,慢 SQL 是相对比较致命的,可能会导致 CPU、LOAD 异常、系统资源耗尽。AHAS 提供了丰富的 SQL 场景支持,不需要更改代码即可实现SQL识别与防护。详情:https://yq.aliyun.com/articles/715115阿里云企业级分布式应用 EDAS 上线多语言服务,并支持全链路灰度EDAS基于 Service Mesh 实现服务注册发现,并提供应用托管和服务发现、链路追踪、负载均衡等服务治理能力,支持单应用的灰度流量控制台和多应用的全链路灰度。详情:https://help.aliyun.com/document_detail/126680.html阿里云全局事务 GTS 原生支持Spring Cloud全局事务服务 GTS 原生支持 Spring Cloud,实现在 Spring Cloud 分布式服务框架下的服务调用中自动传递 GTS 事务,用户不再需要自行处理事务传递和还原。详情:https://help.aliyun.com/document_detail/126129.html阿里云微服务引擎MSE公测上线微服务引擎 ( Microservice Engine,简称:MSE ) 提供全托管的服务注册和配置管理集群,如 ZooKeeper、Nacos 和 Eureka 等,完全兼容开源产品标准接口,无需代码修改开箱即用,并为客户提供相应的监控和运维工具。详情:https://www.aliyun.com/product/mse消息队列多款子产品发布新版本专有云Kafka进入K8s,发布第一个版;RocketMQ 提供Pull接口支持,满足流计算场景;RocketMQ多语言SDK内核方面,完成内核可插拔,同时支持原生CPP内核和GraalVM内核;RocketMQ完成对terraform的支持;消息队列AMQP支持JMS客户端。云数据库MongoDB开通TDE服务密钥加密功能云数据库MongoDB版(ApsaraDB for MongoDB)开启TDE加密功能后,可对数据文件执行实时I/O加密和解密,数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密,即所有新创建的集合都会被加密。如果业务上有特殊需求,您可以在创建集合时,指定该集合不被加密。TDE所使用的密钥,由密钥管理服务KMS(Key Management Service)统一生成和管理,云数据库MongoDB不提供加密所需的密钥和证书。香港/新加坡区域开通 FIPS 140-2 Level 3 HSM提供FIPS验证的加密密钥安全HSM,这是一款云托管硬件安全模块(HSM)服务,通过FIPS 140-2 Level 3验证的HSM,3级验证模块提供物理防篡改,基于身份的身份验证。级别3的标准要求“关键安全参数”进入和离开模块的接口之间的物理或逻辑分离,以更易读的形式,没有单个身份或角色能够访问内部加密密钥HSM,因此确保HSM中托管的加密密钥的安全性。极速NAS上海开通服务密钥功能极速NAS选择服务密钥时,可以将用户写入的数据先加密后再持久化存储,在读取数据时,先将加密保存的数据解密后,再返回给用户。首先需要用户开通KMS,通过KMS获取服务密钥,利用RAM链式角色授权NAS服务账号和用户KMS进行交互,完成加解密操作。云安全中心为DevOps打造更简单实用产品使用体验• 结合云原生安全特性为 DevOps 提供恶意IP拦截、恶意下载源清理、二进制病毒查杀、持久化木马深度清除等安全告警一键处置闭环能力,极大的提升中小企业的安全运营能力,保障业务的安全运行• 全新的数据智能算法引擎提供 RDS SQL 注入威胁检测能力,助力 DevOps 快速识别数据库攻击,让黑客撞库、脱库、盗窃敏感数据等攻击行为无处隐藏• 全新的资产中心发布,为 DveOps 提供云上域名、服务器、云产品资产的统一管控能力,同时指出自动化统计分析云上资产安全态势,助力快速清点资产分布、类型、风险、状态情况配置审计1.0 公测配置审计( Alibaba Cloud Config,以下简称Config)是一项面向资源的审计服务。它为您提供您在阿里云上的资源列表、当前配置快照、历史配置快照等信息,帮助您了解资源配置的历史变更详情。同时它还支持您配置合规审计规则,来监控资源部署和资源配置的合规性。当您的资源配置发生变更时,Config会将变更快照以文件的形式保存到您指定的OSS中。当出现“不合规”情况时,Config将按照您的订阅设置向您发送告警。帮助您在面对大量资源时,轻松地实现基础设施的自主监管,持续保证合规性。Spinnaker阿里云集成 1.0 完成Spinnaker是开源社区中著名的CICD平台,提供了对基础设施和程序全局性的视图,配置、管理、运维都更简单。阿里云全面集成Spinnaker,让用户可以在Spinnaker中管理阿里云的服务器、网络等基础设施并部署应用。智能接入网关发布公网ACL功能智能接入网关提供上云组网的能力,相对于专线方式更经济、支持弹性扩容、支持ZTP免安装配置部署,但是需要线下接入Internet。对于珠宝零售类门店,接入Internet意味着可能会被外部从Internet入侵。公网ACL功能可以定制公网访问策略,防止公网入侵。智能接入网关发布流日志功能支持对于智能接入网关的流量能够实时分析,从而实现故障定位和运维监控,同时支持基于流日志分析业务构成,指导业务优化。智能接入网关支持QoS功能智能接入网关支持企业内海量门店同时接入,门店的业务有ERP、订单和AO办公等不同业务系统,每种业务对于网络性能有不同需求,QoS功能将不同业务的流是区分开来,支持对不同优先级的流量设置不同的带宽,从而避免各种业务系统之间争抢带宽的现象,导致关键业务的带宽无法得到保证。虚拟网络VPC发布ECS&ENI的等价及主备路由功能,助力打造跨AZ容灾和负载均衡的NFV开放网络平台阿里云网络产品致力于打造开放稳定的NFV生态平台,通过基于ECS和ENI网卡的虚拟VNF网元实现具体的网络功能,平台的核心是网络业务和流量的编排能力,编排的基础是网元的安全可靠部署,虚拟网络VPC发布了ECS和ENI的等价和主备路由功能,支持跨AZ容灾部署方式和水平扩容能力,同时通过统一的健康检查,提供故障秒级的自动切换能力。虚拟交换机支持网络带宽突发能力,支持低规格ECS的业务突发需求场景阿里云针对云服务器ECS提供网络带宽的突发能力,针对客户业务存在网络突发需求,通常需要购买更高网络规格的实例来应对突发的业务,虚拟网络交换机的网络带宽突发支持能力,可以通过购买低规格的ECS降低成本同时满足业务突发的需求。目前支持的实例主要有计算型实例规格族c6,内存型实例规格族r6,通用型实例规格族g6等类型。 二、技术项目进展TOP 1 盘古稳定性持续提升• EBS线主动发现流量不均,自动rebalance打散热点chunk的功能,在EBS线打开灰度并上线。达到预期效果,流量倾斜问题得到显著改善。• Hang盘天基自动重启的功能,完成开发和测试验证,已经在EBS线和ADS线完成上线,将线上支持同学的之前手工完成的步骤实现了自动化。• EBS 1.0 trace分析完成,能够自动关联分析硬件问题,大块写,磁盘偶发抖动,网络异常等事件,有助于提前发现硬件异常。• 盘古在OXS线版本发布和Hotfix 1个月上线的能力建设,在OXS线上得到验证,升级 NormalFile Hotfix,302个集群已经全部升级完毕。• OSS貔貅3集群掉电演练,包括机器上下电演练、jbod掉电演练、机柜掉电演练、整集群掉电演练等。• 支持ASW升级,完成了代码开发和测试,已经在OSS线灰度上线中,即将开始ECS线的升级上线。• 新版Env keeper开始线上灰度发布,本版本进行了重构以及稳定性增强。• 专有云升级,消除老旧版本的已知问题风险。盘古升级完成47%,本次为第一次盘古在专有云单独升级,大大加速了升级节奏。• 盘古机型盘型准入在OSS/NAS上线,能有效阻止非标硬件上线,标准化线上硬件环境,提升硬件稳定性。 TOP 2 弹掌柜,ECS资源评估中心上线ECS资源评估中心正式上线,在主动运维、ASW轮转评估,havs资源升级,渠道实例上线等相关业务上实现了资源的快速准确评估,为业务的开展提供了重要的数据支撑。
项目简介:ECS资源评估中心是ECS针对资源影响变化做出的实时评估引擎,通过实时对资源分布、调度域分布、资源影响度、用户感知度进行准确的分析,实现精准的数字化结果评估,为业务开展提供资源影响评估能力。离线评估与实时评估已完成商用,接下来会结合资源事件中心,将每一步的操作影响同步给对应的资源使用方。 TOP 3 经典网络实例迁移到VPC支持私网IP和mac地址不变经典网络实例迁移到VPC支持私网IP和mac地址不变是弹性计算ECS管控8月份最重要的技术升级之一,无损迁移是虚拟机迁移的终极要求,只有无损才能实现对用户零打扰。阿里云经典实例迁移到VPC因为网络属性(公网IP、私网IP、mac地址)会发生变更,经常对用户业务造成影响。为此,弹性计算团队与VPC网络团队紧密合作,于2018年做到了实例迁移公网IP保持不变收获了广大用户的认可,但私网ip和mac不变问题一直未得到解决,问题的难点是需要根据用户经典网络拓扑来规划VPC网络并且要保证迁移过程中未完成迁移的经典网络实例与已经迁移到VPC的实例之间内网保持互通,两个团队克服各种困难终于于2019年8月份上线美西,成为第一个支持私网IP和mac地址保持不变的地域,9月份全网完成上线。这个能力有三个主要意义:1)给经典实例大客户(GC6、GC7)整体迁移到VPC扫除了技术障碍;2)之前困扰用户因为软件license绑定mac地址导致迁移后软件失效的问题将得到解决;3)加速经典实例迁移进度,加速老旧IDC裁撤,回收运维成本。 大数据文件存储POV的主体框架已经搭建完成,端至端的全链路已经打通,项目基本上达到了预定的阶段目标,全链路端至端的写IO延迟在170us左右,还有进一步性能优化的空间。目前POV产品管控通路、Proxy、POV通路以及LightSDK等各个模块的研发都在有序推进之中。预期在9月份可以有一个完整的系统推出,并且早日与搜索等业务对接,开始评测业务性能,为明年集团上云的终态方案做准备。女娲服务化技术演进女娲池化女娲架构女娲服务化技术演进女娲池化女娲架构,在控制爆炸半径的基础上,提高数倍的机器利用率, 同时支持存量集群的在线迁移,已经经过测试环境和预发环境的验证,下周会灰度上线,本周组织块存储/供应链同学,展示女娲最新的池化进展与上线计划,反响强烈,得到了块存储同学的认可。快照Quota上限提升ECS单盘快照个数上限从64提升至256,同时支持自动快照和手动快照单独计算上限,即单磁盘能够同时支持自动快照256块以及手动快照256块。在提升到256之前,经常有数据安全非常敏感的用户提需求给阿里云,希望能够将快照的上限提升以扩大数据备份的时间窗口,在提升上限之后不仅自动快照时间窗口延长了3倍而且用户还能随时创建手动快照并不占自动quota。计算性能SLA体系建设和性能提升目前ECS云服务项目第一阶段“基线”进展顺利。在各兄弟团队大力配合下,目前项目组已经梳理出影响ECS产品竞争力的核心性能项,并进一步细化到针对这些性能项的监控项,且达成一致,为整个项目打下了坚实基础。通过明确性能项和监控项,我们可以为ECS建立完整的性能评价体系,并及时衡量性能指标,让我们的云服务器建设能力可追踪、可衡量、可评价,从而确保我们云服务器的产品竞争力。ECS物理机业务模板配置整台物理机该是怎么部署,是否开NUMA,是否开HT,电源模式,软件进程的资源分配模式,都可以通过配置模板完整地进行描述,配置模板就如同虚拟机的meta信息一样,决定了物理机的软硬件等一切信息。使得ECS的所有物理机一切变得有序可查,版本化管理,对物理机的管理更加精准。提升线上资源使用效率。当前模板功能已经上线,新增物理机已经全部覆盖。ECS调度系统一阶段主要稳定性提升一期ECS调度系统是ECS创建生产系统,面下下一代基地型机房需要持续进行稳定性和性能提升。项目1期主要优化目标大客户批量创建的场景下,调度系统的性能和成功率。目前1期的进展:北京灰度发布优化了大并发场景下ECS的调度性能,在单可用区500并发的压力下,调度性能提升了10倍,成功率100%。弹掌柜,弹性SLA项目开发完毕弹性SLA是让用户的弹性quota能够具备可感知、可信任、可依赖,提升用户心智的重要产品,通过精细化千人千面的quota模型,让用户未来能开的弹性资源可见、可用、可信、可靠,让阿里云的用户体验能够站在行业前列的重要项目。目前进展:开发完毕,测试中。NC资源调度平台项目打造精细化的NC资源管理平台,包括VPORT、HOST内存、HOST HT、PPS、IOPS、功耗上架等多维度精细化的动态资源管控调度;科学管理整个机型的生命周期,包括产品机型上线评估、百变机型模版部署扩容、机型定制资源变配、保障性能SLA的资源超卖调度。
进展:产品机型评估上线,在机型上线前,提前识别碎片问题并制定改进策略,可减少约4%碎片;与成本中心对接计算成本价,提升成本价计算精准度2+%;资源超卖评估科学评估6代产品的超卖指标。百变机型模版发布,成功支持F6配置5代6代等多个产品,有效保障6代机型和集团上云等机型产品上线。资源变配成功支持20多个可用区的ESSD商业化以及大客户特定产品规格的售卖,为机型定制柔性生产打下基础。产品可用区资源推荐规划项目产品可用区资源推荐规划系统定位智能化用户资源推荐,解决断供推荐、基地引流、上云解决方案等问题,提前识别用户需求并推荐合适的解决方案。当前进度:产品推荐和资源规划接口与ECI,ESS等产品对接,提高产品迭代和资源满足复用度;流失用户挖潜输出40+流失用户并进行系统闭环。网络产品虚拟硬件网关XGW-H支持QoS功能,助力集团上云和大促随着集团业务的高速发展以及集团逐步上公有云,VPC网关需要承载10T以上的专线流量,且要求区分不同流量的优先级,在突发场景,保证例如电商的流量不受影响,传统的X86网关已经不足以承担当前规模的流量,新一代硬件网关XGW-H提供了单台3.2T带宽的转发能力,同时针对集团业务提供QOS的打标能力,对集团不同业务进行金银铜流量等级分类,保障大数据等低优先级业务不影响其它高优先级业务稳定性运行,目前硬件网关顺利承载了618大促和88大促的业务流量,今年还会继续保障99大促和双11大促的集团业务。阿里云网络UIS为赛会和直播提供高品质网络传输服务UIS提供高质量的端和服务之间连接,本周为全球女性创业者大会提供中国到东南亚的直播加速服务,为会议直播和马老师演讲保驾护航;同时FIBA正式采用UIS用于比赛场馆网络加速,目前测试的加速效果很好,UIS为互联网内容提供加速服务的竞争力正在逐步体现。 三、学术、科研、技术成果TOP1 数据库存储DBFS技术交流热烈• OLAP ADB交流:与ADB存储引擎同学就写优化、一写多读、冷热数据分离、行列混合及智能索引等相关技术展开讨论与合作。• TSDB交流:部署完成张北弹外测试集群,并针对TSDB 2.0的合作进行了深入讨论。• 业界技术跟踪:团队内部讨论业界文件系统的技术演进方向,重点讨论了Btrfs、Ext4、Zfs,以及文件快照技术COW和ROW,并在ATA发文一篇。 TOP 2 第二届阿里云-CCF存储专委会优秀学术论文论坛在杭州举行8月23日,第二届阿里云-CCF存储专委会优秀学术论文论坛在2019全球闪存峰会期间(中国十佳闪存论文学术专场)举行,CCF-存储专委会主任、华中科技大学计算机学院院长冯丹教授与阿里云存储部门负责人吴结生研究员均出席了此次会议,并在现场为6位在CCF-存储专委会优秀论文评选活动中获得卓越论文奖的学者们进行颁奖。6位卓越论文奖学者们对论文进行了详尽的介绍,为此次闪存主题盛会献上了一场学术盛宴。 TOP 3 阿里云携ESSD高性能云盘亮相2019全球闪存峰会,领跑微秒存储时代2019年8月22日,2019全球闪存峰会在杭州召开,吸引了浪潮、华为、戴尔科技集团、IBM、新华三、联想凌拓、Memblaze、PureStorage等众多国内外科技领学者和专家参加。阿里云存储团队负责人吴结生带队,在主论坛发表《ALL IN CLOUD-面向云时代的存储技术演进和挑战》,以及《对象存储海量数据管理能力和应用最佳实践》、《混合云加速企业云智能应用》 、《分布式块存储在云计算场景的应用》 、《开放式接口SSD在阿里巴巴数据中心的实践和应用》、《基于全闪的核心业务系统上云架构与应用》 等五个分论坛演讲。持续打造企业存储品牌影响力,增大核心产品ESSD的曝光。 ESSD大规模商业化媒体发布会在北京举行8月26日,ESSD大规模商业化媒体发布会在北京举行,存储产品Alex Chen和块存储研发负责人对媒体发表演讲,根据新闻简讯,阿里云透露,正投入自研数据存储“超级高速”,核心存储产品ESSD已率先采用这一最新的自研存储网络协议,并实现大规模商用,数据传输效率提高50%。Spring Cloud Alibaba 毕业,这是Spring社区的唯一一个国产开源项目经过一年多的孵化,Spring Cloud Alibaba 作为 Spring 社区的唯一一个国产开源项目,正式从 Spring Cloud Incubator 孵化器毕业,并发布了适配 Spring Cloud Edgware、Finchley、Greenwich 三个版本的新版本。详情:第一、RocketMQ spring-cloud-stream-binder毕业正式进入Spring官网Spring Cloud Stream是一个用于构建与共享消息传递系统相连的高度可扩展的事件驱动的微服务的框架。该框架提供了一个灵活的编程模型,该模型基于已经建立和熟悉的Spring习语和最佳实践。详情:https://spring.io/projects/spring-cloud-stream第二、Dubbo 开发者社区日上海站成功举办会上,Dubbo 分享了2.7.3/4新版本的内容,以及2019 roadmap,另外,来自工行、携程、信用算力的嘉宾分享了他们在Dubbo上的实践。第三、VCS 百城战役 Kick Off,Kafka 完成第一期赋能培训专利科研方向: 一种多维度资源碎片的处理方法和装置,目前进度: 审批中;专利科研方向:一种基于物理机变配时间的虚拟机调度方法,目前进度: 审批通过。云原生生态建设 8月31日,Kubernetes & Cloud Native 深圳站闭幕K8s & Cloud Native meetup 到场160余人,阿里云、蚂蚁、广东三维家几位讲师倾囊相授,沙龙资料及视频回顾。https://developer.aliyun.com/live/1315 《CNCF x Alibaba 云原生技术公开课》16视频及考试已上线。 云原生应用大赛进展顺利,charts参赛作品目前已有33个提交,其中 31个已经merge。阿里云网络产品团队参加SIGCOMM峰会,分享产品背后的网络技术 全球网络顶级会议2019 SIGCOMM峰会本周在北京召开,网络产品团队联合AIS网络,技术发展部在峰会开始前,邀请领域内专家参加了“阿里网络峰会”。同时,在SIGCOMM峰会现场,对网络产品背后的网络技术进行了重点宣传,展示了下一代网络技术的“NFV平台”,智能网络平台“齐天·大圣”,阿里的智能WAN(SAG-CCN)等在阿里云超大规模的应用背后的核心网络技术,吸引了国内外很同行和多媒体的认可和关注。阿里云安全团队参加阿里安全生态峰会,云原生安全定义下一点云安全架构2019阿里安全生态峰会在北京召开,阿里巴巴集团安全部,蚂蚁安全和阿里云联合举办,阿里云安全肖力在主论坛分享《原生安全 承云起势》发布云原生安全的六大核心能力,且原生安全能力将定义企业下一安全架构,助力企业打造更可控,更透明,更智能的新安全体系。阿里云安全发布《2019年上半年云上企业安全指南》本月阿里云安全发布《2019年上半年云上企业安全指南》是基于对云安全中心监测到的威胁情报进行分析,形成的一份云上企业安全建设指南。通过对云上企业安全建设现状及多维度威胁情报的分析,给出企业安全建设目前存在的突出问题以及面临的主要安全风险,让企业可以清晰地了解到做好云上安全建设的核心发力点;并通过提供针对性的安全建议及行动指南,助力云上企业用最少的时间、精力、成本建设更强壮的安全体系。Gartner2019年云安全技术成熟度曲线报告,阿里云机密计算被提名近日,全球信息技术研究机构Gartner发布了2019年云安全技术成熟度曲线报告(Gartner,Hype Cycle for Cloud Security,2019,Jay Heiser,Steve Riley,23 July 2019),首次将机密计算(confidential computing)列入其中,阿里云因在机密计算领域的诸多实践被列为典型厂商,且是亚太唯一云服务商。阿里云安全研究成果入选人工智能顶级会议 IJCAI 2019, 业界首次用AI解决又一难题8月国际人工智能组织联合会议IJCAI 2019(International Joint Conference on Artificial Intelligence 2019)在中国澳门召开。阿里云安全4篇AI研究论文在诸多论文中脱颖而出,其中一篇被主论坛收录,三篇被AIBS Workshop 收录。论文深入解析了AI技术在网络安全、数据安全和内容安全领域研究成果和场景化应用,展示了阿里云安全在智能安全领域的领导性。《基于公共云的 HPC 集群实现及自动伸缩闲时计算研究》在《计算机工程与科学》2019年7月刊发表何万青在HPC China2019学术年会当选中国计算机学会高性能专委会换届选举当选常委。(完)
文章
容器 · 安全 · 弹性计算 · 存储 · 数据安全/隐私保护 · 云安全 · Cloud Native · Java · Spring · 调度
2019-09-09
区块链技术指南.
区块链技术指南 邹均 张海宁 唐屹 李磊 等著 图书在版编目(CIP)数据 区块链技术指南 / 邹均等著. —北京:机械工业出版社,2016.11 ISBN 978-7-111-55356-4 I. 区… II. 邹… III. 电子商务-支付方式-指南 IV. F713.361.3-62 中国版本图书馆CIP数据核字(2016)第268750号 区块链技术指南 出版发行:机械工业出版社(北京市西城区百万庄大街22号 邮政编码:100037) 责任编辑:高婧雅 责任校对:殷 虹 印  刷: 版  次:2016年11月第1版第1次印刷 开  本:186mm×240mm 1/16 印  张:17.75 书  号:ISBN 978-7-111-55356-4 定  价:69.00元 凡购本书,如有缺页、倒页、脱页,由本社发行部调换 客服热线:(010)88379426 88361066 投稿热线:(010)88379604 购书热线:(010)68326294 88379649 68995259 读者信箱:hzit@hzbook.com 版权所有 ? 侵权必究 封底无防伪标均为盗版 本书法律顾问:北京大成律师事务所 韩光/邹晓东 本书作者 邹均:中关村区块链产业联盟专家、服务合约(Service Contract)方向博士,关注与实践区块链技术与应用。擅长云计算、大数据、软件定义存储。现为海纳云CTO,曾任IBM澳洲金融行业首席软件架构师、多个云计算公司高管,是融智北京高端外国专家。在国际会议期刊发表论文20余篇,获2015年澳中校友会ICT和媒体类别杰出校友奖,区块链相关论文获2016年IEEE ICWS最佳博士论文奖。 张海宁:VMware中国研发中心云原生应用首席架构师,西蒙弗雷泽大学计算机科学硕士,多年软件全栈开发经验,Harbor企业级容器Registry开源项目负责人,Cloud Foundry中国社区最早的技术布道师之一,国内最早的iOS开发者。在VMware公司先后负责开源PaaS平台Cloud Foundry、大数据虚拟化、软件定义存储VSAN等领域的技术布道和解决方案推广。目前着重关注区块链、容器和云计算等领域的研究和开发工作。之前曾担任IBM资深软件工程师、Sun公司资深解决方案架构师等职务。 唐屹:广州大学教授、理学博士,专注于区块链安全与应用、网络信息安全、分布式计算等,为国外知名安全公司开发过椭圆曲线密码软件,获密码科技进步二等奖(省部级)。主持或参与完成多项国家级或省部级自然科学基金与人才计划等重点项目。 李磊:合肥工业大学副教授,Macquarie大学博士。擅长数据挖掘、社会计算、智能计算。获2011年澳洲最优博士论文提名,并多次担任IEEE国际会议的程序委员会委员及组织者。在社会计算和区块链等领域发表论文40余篇,被引用350余次。 刘天喜:深圳拓邦股份有限公司总经理助理,高级工程师、北京大学博士。在移动通信、集成电路、移动互联网、物联网等领域深耕多年,擅长技术产业研究、行业分析和战略规划,主导或参与中国工程院、中央网信办、工信部、国资委等十余项产业研究课题。发表学术论文10余篇。 陈晖:区块链PPk开源项目发起人和主要开发者、巴比特网站专栏作者与区块链技术版版主。对网络与通信技术有深入实践与研究,十余年的软件研发和项目管理经验。通过深度实践以比特币为代表的数字加密货币领域,率先提出“区块链+网络通信”将最大化发挥区块链革命性价值的观点,并着力以开放开源项目的形式推动区块链与网络通信领域融合的技术创新和应用发展。 曲烈:Macquarie大学博士,曾任Macquarie大学研究员、助教。从事信息安全、密码学、区块链、服务计算以及信息系统等领域的研究。多次在国际知名会议和期刊发表论文,并受邀宣讲。 郑晓明:中国电信云计算分公司工程师、Macquarie大学博士,专注于云计算、云存储、监控系统、推荐系统、模式识别等,近期研究区块链相关技术。 序一:什么是区块链 2015年是国外区块链的元年,世界许多重大组织,包括高盛、花旗银行、英国央行、美国央行等机构纷纷在区块链上面投资。大量的投资从2015年10月开始便进入了区块链,原因是在《华尔街日报》刊登一篇的文章,里面报道区块链经过了多次的实验和验证,许多金融机构证实了区块链是一个颠覆性的技术。之前华尔街日报甚至宣称,区块链是最近500年以来在金融领域最重要的突破。而这500年来有多少科技上的突破,但华尔街日报却说区块链是人类历史上在金融领域最大的突破。这可能是因为出现了一个新的货币媒介,而每一次新货币媒介出现,都会引发社会和经济上的重大改革。 2016年1月,英国首席科学家建议英国政府把区块链技术列为英国国家战略,这是区块链历史上一个重大突破,原因是基于华尔街以及金融机构对区块链的评价。但自从2016年1月以后,区块链的评价是基于科学历史悠久的英国官方的评价。从各样指标来看,英国在科学上的建树经常是排名第二,仅次于美国。而世界科学排名第二的英国甚至把区块链列为国家战略,表示区块链的重要性毋庸置疑,而且有深远的影响。能够成为国家战略必须在科学上被验证过,另外还必须带来巨大的商业价值,两者都不可缺少才能成为国家战略。笔者曾在2016年3月拜访英国首席科学家,他们认为,区块链可以在各行各业使用,带来行业公平,例如:诚实报税、政府监管、反洗钱、国家安全等。 2016年可以说是中国区块链元年,因为在2016年区块链在中国受到极大的重视。首先是1月的时候,人民银行宣布要使用数字货币。然后在30日以后,许多中国的组织单位就开始投资区块链。中国许多大学也开始研究区块链技术,大型金融机构都纷纷表态成立区块链团队来研究区块链,区块链的讨论班以及研讨会如雨后春笋一般大量涌现。 但到底什么是区块链?笔者在2015年开始研究区块链,就发现了一件事情:学生们在实验,提出来的区块链模型、算法,或者架构都是有偏差的,而且有时候偏差甚大,例如,在设计私有区块链的时候把公有区块链的全部思想搬过来。结果不像私有区块链,但也不像原来的公有区块链。另外发觉很多人对相关的算法不熟悉,所以有的时候会有一些错误的看法,例如拜占庭将军的问题是一门专门的学问,而区块链只是用了一个近似的算法,若是把两者混为一谈,就会让人感到迷惑。 再加上在讨论区块链时,有时候会有情绪化、宗教化或者政治化的言语出现,原来在数字货币领域,数字货币的先锋常带有一些政治思想,如无政府主义。再加上原来的数字货币过去有洗钱、犯罪的记录,所以在讨论时,有时候会失去焦点。这一点在英国首席科学家的报告里也有提出来,他们认为应该重视区块链,把区块链当做一门科学技术来看,而且是一门有助于经济的科学技术,而不是吹捧任何政治思想,或传递宗教概念。 笔者从今年初开始多次提出应该以系统工程角度来发展区块链技术,例如基于云计算、软件工程、数据库等系统工程技术来开发区块链,区块链不只是一个加密技术或是数字货币,而是一门系统工程。区块链不是某些特殊政治思想的乌托邦,或洗钱的工具,而是一门科学家和工程师可以研究的系统工程,而且这项技术可以成为国家战略,改变各行各业的流程以及基础设施。英国首席科学家已经做出这样的判断,英国央行也做出了类似的决定,英国政府已经派了两位部长来领导这项计划,这就是我们所期 待的。 所以我非常高兴像邹均、张海宁、唐屹、李磊、刘天喜、陈晖、曲烈、郑晓明这些年轻的学者们开始书写区块链技术,因为现在市面上有关区块链的书都是在讲解区块链的概念及应用场景,但是今天描述区块链技术的书却很少。我们希望读者能多了解区块链技术,多发展区块链技术,并且加以应用。只有我们了解区块链技术之后,才能真正理解区块链的意义,而不会随波逐流,人云亦云,并且有自己的判断,希望读者们能够认真读这本书,了解区块链技术,相信必定会大有收获。 蔡维德 美国亚利桑那州立大学荣誉教授,北航区块链实验室主任 序二:区块链——未来已来, 只是尚未流行 比特币诞生于2008年美国次贷危机的末期。在比特币白皮书,即中本聪的论文《比特币:一种点对点的电子现金系统》中,还没有“区块链”这个词,只有“区块”(Block)和“链”(Chain)。一些人为这种超越主权、不会滥发的虚拟数字货币而欢欣鼓舞,开始积极投入到挖矿、炒币中,甚至发行自己的数字货币进行筹资(ICO),俗称“币圈”。而另一些人,包括很多专家和学者,则专注于比特币底层技术,对区块链(Blockchain)技术和应用进行深入地研究,考虑能否将这个技术加以改进,运用到更多的领域中去,俗称“链圈”。 七年之后,以2015年10月美国《经济学人》杂志发表的《信任的机器》(The Trust Machine)的封面文章为标志,大家意识到,作为比特币底层技术的“链”,其价值远大于比特币本身。区块链可以让人们在没有中央权威机构监督的情况下,对彼此的互相协作建立起信心。简单来说,它是一台创造信任的机器。华尔街开始热捧区块链。Gartner发布的2016年技术炒作曲线图表明,当前区块链正处于期望的最高点,即“过度期望期”,这也意味着在未来不久的一段时间,区块链将坠入“期望幻灭期”。人们对区块链的过度期望,实际暗示着对其存在很多误解,其中最典型的有三个,因为其关键词的首字母都是D,所以笔者将其归纳为“3D误区”。 误区一——区块链是一种颠覆性(Disruptive)的新技术 首先,区块链不是一项新技术,而是一个新的技术组合。其关键技术,包括P2P动态组网、基于密码学的共享账本、共识机制(拜占庭将军问题,即一种分布式场景下的一致性问题)、智能合约等技术,都是已经有十年以上的老技术了。但是,中本聪将这些技术很巧妙地组合在一起,并在此基础上引入了完善的激励机制,用经济学原理来解决传统技术无法解决的问题。 其次,这个技术组合虽然有其独到的创新之处,但并非是颠覆性技术,是现有技术的有力补充。目前大部分人已经认同,区块链是“价值互联网”的基础协议,从这个角度看,其地位与当前“信息互联网”的HTTP协议相当,两者都是建立在TCP/IP协议之上的应用层协议,同是互联网的两大基础协议。因而,两者是互补而非颠覆的关系。 最后,这个技术组合,并未颠覆现有业务,而是引入了新的思想,去改善和改造现有业务模式,从而为大众提供更好的、普惠的服务。《华尔街日报》在2015年1月曾发表题为《比特币与数字货币的颠覆性革命》的文章,认为比特币的数字货币发行机制可能“颠覆”目前各国央行的法定货币发行模式,这算是最接近“颠覆”性的区块链案例。而实际上,比特币在经过8年多的发展后,虽然总市值发展到了100亿美元,但在全球经济活动中的比重还是微不足道。与此同时,也确实有一些国家的央行,如英国和中国,在考虑摈弃比特币的挖矿机制后,通过借鉴数字货币的一些机制,在一定范围内实现可跟踪、可追溯、数字化的法定货币。 误区二——区块链就是去中心化(Decentralized)的 首先,很多人认为Decentralized是区块链的核心特征,并将其翻译为“去中心化”。然而这个最早由国内“币圈”所做出的翻译,多少有一点主观和政治化的色彩。作为软件系统的网络架构一般有三种模式:单中心、多中心、分布式。单词Decentralized只是表明不是单中心模式,可能为多中心或弱中心,也可能是分布式的。所以在中国台湾地区,大多将Decentralized翻译为“分散式的”而不是“去中心化的”。 其次,在中本聪的整篇论文中并没有提到过Decentralized,而只有Peer-to-Peer(P2P)。在2016年6月召开的W3C区块链标准会议上,以太坊的核心开发团队EthCore就明确表示,不再使用Decentralized这个词,而是用P2P、Secure、Serverless这类纯技术性词语。 最后,The DAO事件表明,完全去中心化是不可行的。The DAO是一个基于以太坊公有链的众筹项目,它在短时间内就募集了价值1.6亿美元的数字货币,成为史上最大的众筹项目。然而由于其智能合约的漏洞,导致The DAO被黑客攻击并转移走价值6000万美元的数字货币,最后不得不黯然落幕。在挽回这个损失的过程中,原有的去中心化机制未能解决问题,最后还是通过“集中式”的方式,强制以太坊进行“硬分叉”完成交易回滚。但这也导致了以太坊社区的分裂,产生了ETH和ETC这两种同源却又不同价格的数字货币,给以太坊生态系统带来了很多负面影响。此次事件之后,很多人对区块链的“去中心化”进行了反思。前上交所总工、ChinaLedger联盟技术委员会主任白硕则认为“去中心化不是区块链的本质特征”。万向控股副董事长兼执行董事肖风则进一步阐述“区块链的核心是分布式而不是去中心”。 误区三——区块链交易存在很大的延迟(Delay) 在使用比特币进行支付时,一般需要10分钟才能完成一次支付确认。如果要保证支付交易的不可逆转,通常需要等待连续的6个数据块完全确认,这至少需要1个小时的确认时间。而我们通常使用的银行网银支付和第三方支付,通常都是秒级完成的。与之相比,使用区块链的比特币支付实在太慢。 然而,我们再考虑一下跨境支付的场景,当我们使用Swift完成一次跨境汇款时,通常需要3~5个工作日,对方才能收到相应的款项。而使用比特币进行跨境汇款,仅仅需要一个小时就能收到汇款。如此比较起来,比特币支付已经是非常快了。 为什么有两个完全不同的结论?因为,对于比特币支付来说,支付确认过程即是清算和结算的过程。如果把支付过程和清结算过程作为一个整体,来比较两类支付的延迟时间,使用区块链进行交易还是很快的。区块链交易的本质,是大幅减少了交易后的处理工作,消除了大量的人工干预过程,从而提高了交易效率。 通常我们把区块链分为公有链、私有链、联盟链三种,比特币和以太坊都属于公有链范畴。在数字货币之外的场景中,尤其是在金融领域中引入区块链技术,将面临很多问题。如何引入以及引入哪种区块链,还存在许多权衡决策方面的障碍。 第一,主流金融机构难以接纳公有链。R3发布最新研究报告,证明公有区块链不可作为金融机构解决方案。2016年Swift发布白皮书指出,当前世界主流金融机构无法接纳公有区块链。对于这些金融机构而言,需要的是一个自主可控的系统,而公有链显然做不到这点。 第二,私有链与公有链架构差异大。笔者曾仔细分析了以太坊和超级账本这两个典型区块链的模块结构,发现两者差异巨大。很多公有链的核心模块,如挖矿、PoW共识、原生货币等,在私有链环境中是完全不必要的,甚至是有害的。与此同时,公有链系统中还缺失一些诸如身份认证、权限管理等在私有链中必要的模块。以太坊创始人Vitalik也曾坦言,只有5%的以太坊程序可被金融领域使用。 第三,私有链和联盟链还很不成熟。目前,以比特币和以太坊为代表的公有链相对比较成熟,而私有链和联盟链则远远不够成熟。开源而且好用的联盟链,更是不存在。目前全球影响力最大的开源联盟链,是Linux基金会下面的超级账本(Hyperledger)项目,目前已有95个成员单位。旗下的Fabric子项目是以IBM捐献出的OpenBlockchain为主体搭建而成的,目前还处在0.6版的快速迭代过程中,到0.8将是Alpha版,而0.9则是Beta版,再经过3个RC版本之后,才会进入相对成熟的1.0版。 想要找到或研发出一个成熟稳定的、适合金融领域的联盟链底层系统,还任重道远,需要很多仁人志士的共同努力,踏踏实实地投入到区块链的基础研究中去。 在目前已出版的区块链书籍中,有很多都冠以“革命”、“重塑”、“重新定义世界”等煽动性词语作为书名,这更像是一种口号,而非切合实际的研究。我很高兴地看到,还有像邹均、张海宁、唐屹、李磊、刘天喜、陈晖、曲烈、郑晓明等这些研究者们,在踏踏实实地研究区块链底层技术,用普实的话语来介绍和普及区块链技术,让更多的人了解和接受区块链技术,实实在在地让人们了解区块链技术特征和特点,以及在现阶段环境下的不足,如何去改善这些不足等。知己知彼,方能百战不殆。世上没有“银弹”,没有哪一种技术能解决所有的问题。 希望读者们能够通过本书,深入地了解区块链技术。也只有深入了解其底层运作机制和原理,才能更好地灵活运用该技术,取得理想的效果。 未来已来,只是尚未流行,我辈仍需多努力。 张斌,联动优势科技有限公司CEO 序三:区块链——连接虚拟与现实 我们对于一种新兴的技术,往往会在短期内对它有过高的不切实际的期望;泡沫破灭后,在长期的时间轴线上,又往往会忽视它的深刻影响,这一句话,用在区块链上,再合适不过。 区块链的发明,是建立在互联网之上。其所使用的技术,像P2P、分布式存储、分布式密钥的思想,十几年前就已经存在,但是如果没有中本聪那一篇开创性的关于比特币的白皮书,所有这些强大的工具,都还只是埋藏在学术论文堆里。因为这些工具单独使用,并不能解决问题,只有中本聪,出人意料地提出了一个系统性的、可供实践的解决方案。如果他能提前十年提出这篇论文,那么比特币就可以提前十年发明出来。所以,单个技术点,并非是区块链的魅力所在,运用这些技术的全新思想,才是区块链的本质和核心。 单纯把区块链等同于一种分布式数据存储技术,就像将浏览器说成是一个网页解释器,将手机说成是一台手持电话,将云计算说成是一个服务器的集群一样,说了等于没有说,甚至比没说更糟糕,更容易造成误解。当全球的用户都打开浏览器访问网页,当街上每一个人都携带着一台能拍照、能上网、带GPS,运算性能可以发射登月火箭的智能手机,当我们所有的工作和生活数据都发生与存储在云上的时候,我们看到在浏览器、移动互联网和云计算上所承载的产业生态,跟最初的技术描述相比不知道差了多少万里。所以有人让我用一句话解释什么是区块链的时候,我往往会争取机会多说几句,争取让人更多了解一点。 从功能上说,互联网实现了信息的传播,而区块链实现了价值的转移。互联网在最开始的时候,就是以信息传输管道的模式进行的设计,TCP?/?IP协议底层并不关心上面传输的数据有什么差别——对于底层的交换机和路由器来说,一切都是0和1而已。无差别的信息传输,创造了信息复制的便捷通道,也造就了今天信息爆炸的信息社会。但是互联网虽然解决了信息传播的问题,却带来了信息权属的新问题,我们可以将一首歌曲或者电影,在几个小时内传遍全球,我们却不能知道,究竟是谁拥有这部电影的权利,是通过什么样的路径进行的传播。而区块链则可以做到,我将一个数据,发送给另外一个人之后,我自己就不再拥有这个数据的所有权,从而实现了可以利用一个虚拟的系统,来传输实际的价值。 从机制上说,如果说TCP?/?IP是机器与机器之间的通信协议,而区块链就是机器与机器之间的信任机制和合作协议。对于不需要验证真假的信息传输来说,TCP?/?IP已经足够可用,但是一旦属于不同实体的计算机,需要彼此之间进行自动化的沟通和合作的时候,问题就会变得相当复杂。现实世界公司与公司之间的合作,有律师和合同来进行条款约定,有执法机关来保障合同的实行,而在虚拟世界,计算机没有办法开设银行账户,属于不同实体的计算机,也没有办法去法院起诉对方,因此在沟通和合作的时候,一定要有一种有效的机制,来快速实现共同协作。区块链就可以起到这样一个作用,所以在区块链行业中有一句话:代码即法律(Code is the Law)。未来不管我们的生活还是工作,都会有越来越多地需要计算机参与,人类将整体进入后人工智能时代,区块链就是在为这个时代的到来进行前期的铺垫和准备。未来我们将会看到无人驾驶汽车,通过区块链协议自动缴纳过路费用;智能投资顾问自动为我们计算各种投资组合;未来最先进的金融公司,也会像现在的无人工厂一样,看不到太多工作人员,只有无数的计算机,在快速地缔结无数的智能合约,进行精确到小数点后的资产配置。 因为区块链的以上属性,区块链将会是连接虚拟世界与现实世界的最佳桥梁。在未来,区块链所连接的,不会像比特币一样是无法辨别的匿名账户和价值不定的虚拟资产,而将会是千千万万真实存在的个体和公司实体。上面所承载的资产,都将具有现实的价值和对应物,而这个虚拟的网络上发生的一切,也都会直接作用于现实世界。这一过程,需要的不仅仅是单纯的技术,还需要金融、商贸、法律、政府等各方面专家和人才凝聚在一起,来保证这一映射的有效性,也是我们一直在努力推进区块链生态系统和可信区块链概念的原因。区块链有巨大的潜力和未来,而这些潜力和未来,需要社会的共识与力量来共同推进和实现。 邓迪 太一云科技有限公司董事长兼CEO 序四:区块链——转型之擎 邹均先生在国内外企业的IT架构、云计算、大数据、IT产品创新方面有很多年的经验,邹均本人也是我多年的好朋友和同亊。这次邹均先生主写的这本区块链的书,相信一定会在IT业内,特别是在企业IT架构圈内产生巨大的反响,一定会深受广大区块链爱好者、参与者、实践者的热烈欢迎。 我和邹均先生工作背景相似,曾经从事过多年企业IT工作,从2009年开始,做云计算的创新,近年来也做金融科技的创新。从我这一年多时间的区块链的实践中,我个人看到区块链目前虽然还在发展初期,而每天区块链技术都有新的变化和突破,每天都是“山雨欲来风满楼”。但是区块链这样一个意义重大的技术,对整个IT的架构、基础协议、标准、运营、环境具有颠覆性的意义。因此我们应当充满紧迫感,应当预先了解区块链技术、商业模式和发展趋势,加强与国内外各界的合作,特别是在区块链的底层领域、区块链的平台领域和区块链的应用领域的合作,我们应当在区块链的全球协议和标准方面要占据主动。 区块链技术具有全新的理念和逻辑结构,并且它每天还处在发展变化过程中,因此区块链技术与应用在企业内不可能单打独斗,区块链的应用必须在企业架构中上着天、下着地,和企业现有的应用系统相互关联。我们不应该简单地把区块链理解为一项技术,而应当考虑它在更高的企业IT架构转型层面的作用。区块链的应用不是简单地提供一个只能追加、不能更改的分布式数据库解决方案,而是要把区块链与云计算、大数据和传统企业的系统相互关联,使得企业系统由原来的传统系统和云计算这种“双核驱动”转变为传统系统、云计算与区块链的“三核驱动”,让企业的异构系统更好地发挥协同效应,一起解决原来传统IT系统难以解决的问题,这样才能更好地发挥区块链的独特性,才能够使传统企业IT架构更好地转型。 本质上,因为区块链链与链之间具有隐私、安全、共识、自治、价值共享的特性,所以在技术层面解决了互联网上的价值传递问题。同时,区块链又具有底层开源和改变业务规则、创新业务多方共识等逻辑,因此区块链是未来整个IT架构和互联网转型的重要支撑。而企业与互联网IT架构的转型也为未来经济的转型、服务模式、信用交换和商业规则的转型提供了关键支持,因此研究和应用区块链不仅要研究技术,更要注意在互联网时代赢者通吃的规则,重要的是要研究和应用区块链带来的商业规则的改变。 以前我们的信息化,不管是企业信息化、政府信息化,还是个人信息化,实际上都侧重在机构内部的信息化。这几年随着互联网、云计算、大数据、平台经济的蓬勃兴起,现在IT正在促使企业由内部信息化转型为外部信息化,最终通过平台转型为信息化的企业,由政府信息化转型为信息化政府,由个人信息化转型为信息化个人,这些词虽然相似,但性质具有很大的不同。它们在逻辑关系、业务处理方式、信息的确权、信息的使用、组织流程的改变、企业治理结构方面有很大不同,信息化已经不再是工具、手段和渠道。这样一个信息化平台的升级,未来会使得实体经济更好虚拟化,使得虚拟经济更好地结合实体化。 实施区块链既需要具有传统IT系统的经验,也需要有互联网、云计算、大数据的实施经验,需要对整个IT系统变迁具有很强的洞察力,需要把整个IT系统协同起来,让整个IT系统互联互助,相互合作。因此,区块链系统在企业的应用,必然需要结合本地的实践,发挥原创的精神,必然还要有互联网时代产品开发的能力。而做一个好的区块链应用更需要研究共享经济理论、价值互联网和金融科技的创新与发展。这一切都需要在区块链理论与研究方面走到前列。 因此,我希望邹均先生等人写的这本区块链的书籍,会连接IT架构的过去、现在与未来,开启大家创新的热情,会对行业产生影响,同时为大家开启一扇协同企业传统系统、云计算、大数据和区块链新的大门。 黎江 北京世纪互联创新研究院院长 前言 为什么要写这本书 1900年9月8日,一场4级强度的飓风横扫德克萨斯州的加尔维斯顿。这个位于墨西哥湾的岛城,靠近德克萨斯海岸,在灾难来临前拥有37?000人口和光明的经济前景。飓风猛烈攻击了这个毫无防备的低海拔城市,给该市带来了巨大的毁坏。飓风风速为每小时225千米,毁掉了3600座建筑,使占整个城市3/4的12个街区彻底消失,死亡人数为8000~10?000人。是迄今为止,美国历史上死亡人数最多的自然灾害。 而2016年8月2日在中国华南沿海登录的“妮妲”台风,风力14级,最高风速每小时151.2千米,台风过境的广东、广西、湖南、贵州、云南5省(自治区),虽然也造成了重大经济损失,但在人员伤亡统计报告中,只有1人失踪。 这两次自然灾害的结果如此不同,归功于人类掌握了计算这个神奇工具。在妮妲形成过程中,美国、日本、中国气象监控部门就不断跟踪,通过监控数据,气象数学模型和强大的计算能力,对台风进行了准确的预报和预警。在台风到来前,有关部门做了积极准备,7.6万人得以紧急转移安置,使得损失得以降到最低。 今天,IT已经渗透到各行各业,人们已经能近距离接触无人驾驶、机器人、虚拟现实(Virtual Reality)、增强现实(Augmented Reality)等先进技术,当人们在享受IT给人们生活带来的各种便利和好处的时候,也日益感受到来自不当使用科技所带来的挑战。例如,国内日益猖獗的电信诈骗,全球范围内黑客的攻击和安全勒索,以及未来基因技术和AI(人工智能)技术给人类所带来的伦理、生活和工作方面的全方位冲击,都使得有识之士开始思考如何应对科技发展所带来的风险。 一直以来,笔者对计算技术有一种既感恩又敬畏的情结。首先感恩我们的时代,计算技术的发展使我们避过很多前人无法避过的灾难;但高速发展的计算技术必然导致机器的智能超过人类自身,因此而产生的未来不确定性也使笔者的敬畏之心油然而生。 笔者也一直有一个预感,未来可能需要针对IT,特别是与业务结合紧密的云计算和智能设备建立监管、问责的机制。笔者的意思不完全是对从事IT或智能设备的人进行监管问责,甚至要考虑对智能设备进行自动问责。这个看似荒谬的想法促使笔者选择了云计算的问责机制(Accountability in Cloud Services)作为博士研究方向。 所谓云计算的问责机制(Accountability),指的是在云计算架构中,能建立一个自动化的问责机制。该机制包括形式化的标准服务合同定义,服务合同的发布,服务合同执行的监控,合同违约方的自动发现,违约方的罚则和执行,以及合同双方争议的仲裁。举个例子来说,今天公有云的提供商,都没有提供能让电脑理解的云服务合同。合同双方的责任、义务和权利没有精确的界定;云服务提供商的服务好坏,是否遵从合同,都没有自动化的方法去检测;服务故障责任也没有办法界定;出现争议也只能靠人工去解决。而云计算的问责机制,旨在建立一个自动化的体系来让电脑自动规范电脑的行为。 可想而知,这个研究课题非常有挑战。在博士研究的过程中,笔者也走了很多弯路,一直没有找到好的解决方法,直到三年前接触到比特币,突然意识到区块链技术是提供问责机制的最理想平台。这是因为区块链技术中的防伪、防篡改、交易可追溯、数字签名和智能合约技术提供了一个公正、可问责(Accountable)、自动执行的技术平台基础。 但是区块链目前还停留在概念炒作阶段,很多关注点还停留在金融应用,特别是虚拟货币方面的应用。笔者认为,区块链未来可能最适合作智能设备的“警察”,为物联网和智能设备的自治管理提供一个基础平台。区块链技术应该推广应用到除金融外的行业,因此萌生了写这本书的念头,作为博士研究工作的一个延续。 而写这本书的另一个原因,也是深感在学习区块链技术过程中碰到的参考资料不足的痛苦,希望能整理过去的学习所得,对区块链初学者有所帮助。 从2008年中本聪发表比特币白皮书算起,区块链技术才走过短短8年的时间。虽然区块链1.0、2.0和3.0的架构理念已经提出并得到一定程度上的认可,但区块链的技术发展仍然处于初级阶段,区块链的应用还刚起步,成熟的区块链应用除了比特币系统,还寥寥无几。在这种情况下写关于区块链的书籍,其实面临一个两难境况。一是区块链的技术变化快,像个移动的靶子;可供参考的资料又少,要准确把握一个快速变化的技术非常困难,而且受限于写笔者的水平,实践经验,写出来的书难免有很多错误,弄不好会贻笑大方。而另一方面,正因为变化快,资料少,广大区块链技术爱好者又渴望能找到一本对他们学习、理解、掌握区块链架构和技术有所帮助的书。 目前在市场上的区块链书籍大致分为两类:一类是以梅兰妮·斯万(Melanie Swan)的《区块链:新经济蓝图及导读》为代表的,谈区块链对整个宏观层面所带来的革命性影响的战略性书籍;一类是以安德鲁·安东普洛斯(Andreas M. Antonpulos)的《精通比特币》,以及普林斯顿大学以阿文·拿瑞延南(Arvind?Narayanan)为首编著的《比特币和密码学技术》为代表的专注于比特币的技术性书籍。这些书籍满足了目前市场上一部分对区块链在行业中的应用有兴趣的偏业务的人士,以及对比特币技术有兴趣的偏技术的人士的需求。 在这两类书籍所覆盖的市场中,其实还有一个很大的空白。我们发现,在对整个区块链架构(包括区块链1.0、2.0和3.0)进行系统性剖析,包括对其中关键技术(密码学、共识算法)等进行系统性论述,对不同的区块链架构形式(联盟链、公共链、私有链、侧链、多链、互联链等)进行系统性介绍的书好像还没有。而这样的书对理解、普及区块链技术,推动区块链应用落地可能会有所帮助。因此,与其等待这样的书籍出现,不如自己行动,为区块链技术的推广尽绵薄之力。笔者也就自不量力,把可能被同行笑话的风险置之脑后,鼓起勇气集合几个对区块链着迷、志同道合的朋友,在条件不成熟,时间比较仓促的情况下,经过不少不眠之夜的努力,克服重重困难,特别是在机械工业出版社华章分社编辑高婧雅的大力协助下,完成了该书。 本书的缺点是显而易见的。 一是因资料匮乏、技术变化快而难免出现技术错误。因此,本书的目的,主要是抛砖引玉,欢迎读者多提宝贵意见,争取在下一版本能纠正大部分的错误,不断完善、提升本书的质量。 二是缺少应用案例。其实目前网上的应用案例也有不少,但是我们认为,如果只是拿别人在网上的案例加工修改,从深度、广度方面都经不起推敲,起不了真正案例的作用。除非由真正落地该应用案例的主要负责人来写,才能使读者有真正的收获。受限于我们的人脉圈子和条件,目前只能请到PPKpub.org开源社区组织者陈晖先生来写一个区块链在标识注册方面的应用案例。在此鸣谢陈晖先生的大力支持,将来也欢迎有更多的区块链应用的领军团队提供应用案例,在未来更新的版本中补上在应用案例方面的短板。 本书特色 1)和目前市场上主流的区块链书籍强调区块链去中心化的概念,以及对业界带来的革命性影响不同,本书主要是从技术的角度,介绍区块链的基础概念,特别是对区块链的架构进行了详细的剖析。 2)对区块链的关键技术,包括区块链架构(1.0、2.0、3.0)、密码学和共识算法等做了一个详尽的介绍。 3)提供了比特币开发指南,通过以太坊智能合约开发来帮助初学者入门。本书也用专门一章来讨论区块链的常见问题,包括对近期发生的DAO攻击事件,都有详细的分析。 4)在区块链技术落地方面,本书也提供比较典型的区块链解决方案,包括支付和标识登记方面的解决方案。 5)以独特的架构演进对IT发展的影响为切入点,给读者展示一个全新观察整个IT历史的视角,并在这个视角下探讨区块链技术在未来IT发展中的影响和地位。 本书中一些实操的例子和章节,比较适合区块链初学者和程序员,可以成为区块链入门的书;架构剖析和深入分析方面的章节,比较适合IT架构师,以及区块链技术爱好者来深入了解区块链架构特点和技术细节,对设计区块链的解决方案有所帮助;解决方案和常见问题章节有助于区块链从业人员全面了解区块链应用落地方面的情况。最后一章是从架构视角对IT发展的一些观察,仅供喜爱思考的IT从业者参考。 读者对象 区块链从业者 IT架构师 区块链应用开发人员 对区块链技术感兴趣的人员 如何阅读本书 本书分为三大部分,共11章。 第一部分介绍基础和入门,包括以下2章内容。 第1章 本书的开篇,首先介绍区块链的定义和特点,并简单介绍了区块链的主要类型,然后通过介绍购买、存储和交易比特币等实际使用场景来让读者对区块链有所体验,然后再探讨一些关于区块链的常见问题。 第2章 介绍区块链的基础概念,为后面深入介绍区块链技术做铺垫。 第二部分介绍架构和核心技术,包括以下8章内容: 第3章 详细介绍区块链1.0、2.0、3.0典型架构,同时介绍了互联链的概念和架构。 第4章 详细介绍了区块链涉及的密码学原理和典型的算法。 第5章 介绍了在区块链架构中常用的共识算法。 第6章 提供比特币开发指南,通过实际案例来帮助初学者入门。 第7章 提供以太坊上的智能合约开发指南,帮助初学者掌握智能合约的开发要领。 第8章 详细介绍HyperLedger开源项目及其架构。 第9章 讨论区块链上常见的问题,包括最近出现的The DAO攻击的源码级分析。 第10章 讨论区块链上的典型解决方案,一个是以闪电网络为主的支付方案,另一个是以标识登记为主的开源ODIN解决方案。 第三部分为回顾和展望,即第11章,主要回顾IT架构演进历史并展望未来区块链对IT发展的影响。 勘误和支持 由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果你有更多的宝贵意见,欢迎通过微信或邮件进行讨论。你可以通过微信joezou3986、微博@云中君3986,或者发送邮件到邮箱joezou@openstack.org.cn联系到我,期待能够得到你们的真挚反馈,在技术之路上互勉共进。 致谢 首先感谢我的作者伙伴——张海宁先生、唐屹教授、李磊教授、刘天喜博士、陈晖先生、曲烈博士和郑晓明博士。他们在工作之余,挤出宝贵时间为本书贡献了他们对区块链技术的理解和洞察。特别感谢我的大学同门师弟Henry张海宁先生在关键时刻的出手相助,为本书贡献了很多精力,他不单在内容上积极供稿,也在本书的审定、修改和校正方面下了很多工夫。唐屹教授和李磊教授也在繁忙的教学和学术研究中抽出时间来对一些区块链的基本概念和关键技术(包括密码学和共识算法)做了详尽的阐述。刘天喜博士在本书的框架规划和开篇设计上做了很大贡献。而陈晖先生的比特币开发指南对很多初学者入门有很大的帮助,他的ODIN开源项目也是区块链登记方面的一个典型解决方案。曲烈博士的智能合约开发章节给众多以太坊开发初学者提供一个易懂、易上手的应用指引。郑晓明博士也对主流代币做了比较全面的介绍。 本书作者也得到中关村区块链联盟的大力支持,在此也特别鸣谢中关村区块链产业联盟秘书长王安平先生、副秘书长范金刚先生和林大鹏先生以及联盟发展部张培部长。同时也感谢江源老师、江苑绛博士,他们的鼓励成为我坚持下来的动力。另外在写书过程中也得到澳洲富士通区块链技术架构师董仲利先生、信达证劵区块链首席专家曹寅先生、亚投行企业IT项目管理专家Allen邵以及合肥工业大学刘古刘和方辉先生的帮助,在此对他们表示感谢。 另外感谢比特币开源社区、以太坊开源社区,以及巴比特社区的各位技术专家们的博客文章,每次阅读必有所获,本书也多处引用了他们的观点和思想。 非常感谢机械工业出版社华章公司的编辑高婧雅,她的敬业精神和编辑效率令我由衷敬佩,她的反馈、建议、鼓励和帮助引导我们克服诸多困难完成全部书稿。 特别致谢 最后,因为工作和写书,牺牲了很多本该陪伴家人的时间。我要特别感谢我的母亲从小对我的培养,也要感谢我的哥哥姐姐们在儿时营造的和睦互助、求知好学的家庭环境,这对我长大以后形成对新兴技术浓厚的求知欲性格有很大影响,一直以来在我的职业生涯中都受益匪浅。更要感谢我太太Annie长期以来对我的默默支持,以及女儿Beverley,儿子Skyler对我工作的理解。 谨以此书献给我最亲爱的家人,多年以来帮助、支持我的师友们,以及众多热爱区块链技术的朋友们! 我想和作者聊聊 如果你想和本书作者沟通,可以通过以下方式。 1)微信群“区块链技术交流群”,添加群助理微信号xiaodanmyd入群。 2)QQ群“区块链技术交流群”,群号375936045。 3)关注微信公众号“链信Chain2Trust”。 4)邹均微信号:JoeZou3986,添加请注明沟通事项。 邹均 目录 本书作者 序一:什么是区块链 序二:区块链——未来已来,只是尚未流行 序三:区块链——连接虚拟与现实 序四:区块链——转型之擎 前言 第1章 区块链和比特币初体验  / 1 1.1 区块链简介  / 1 1.1.1 区块链起源——比特币  / 1 1.1.2 区块链和区块链技术的涵义  / 2 1.1.3 区块链分类  / 2 1.1.4 区块链价值与应用  / 7 1.2 区块链体验  / 10 1.2.1 获取比特币的3种途径  / 11 1.2.2 通过交易所购买比特币  / 13 1.2.3 比特币钱包和地址  / 17 1.2.4 从交易平台提取比特币到钱包  / 20 1.2.5 比特币交易查询  / 22 1.3 本章小结  / 22 第2章 区块链基础  / 24 2.1 区块链技术  / 24 2.1.1 基本概念  / 25 2.1.2 框架与特点  / 32 2.1.3 区块链运作的核心技术   / 35 2.1.4 区块链交易流程  / 41 2.2 以太坊  / 42 2.2.1 什么是以太坊  / 42 2.2.2 以太坊技术  / 43 2.2.3 以太坊智能合约  / 48 2.2.4 以太坊的去中心化应用  / 50 2.3 基于区块链的电子货币  / 51 2.3.1 元币平台  / 51 2.3.2 代币  / 52 2.3.3 货币的未来  / 58 2.4 本章小结  / 58 第3章 区块链架构剖析  / 59 3.1 基本定义  / 59 3.2 区块链1.0架构:比特币区块链  / 61 3.2.1 比特币前端  / 63 3.2.2 比特币节点后端  / 66 3.3 区块链2.0架构:以太坊区块链  / 79 3.4 区块链3.0架构:超越货币、金融范围的区块链应用  / 87 3.5 互联链架构剖析  / 90 3.5.1 互联链背景  / 90 3.5.2 互联账本  / 91 3.5.3 互联账本协议组  / 92 3.5.4 互联账本各层协议关系  / 95 3.6 本章小结  / 96 第4章 区块链中的密码学技术  / 97 4.1 哈希算法  / 97 4.1.1 哈希函数的性质与应用  / 99 4.1.2 哈希指针链  / 101 4.2 Merkle树  / 102 4.3 公钥密码算法  / 103 4.3.1 椭圆曲线密码算法  / 104 4.3.2 secp256k1椭圆曲线  / 105 4.3.3 椭圆曲线签名与验证签名   / 106 4.4 本章小结  / 107 第5章 共识算法详解  / 109 5.1 拜占庭容错技术  / 109 5.1.1 拜占庭将军问题  / 110 5.1.2 拜占庭容错系统  / 112 5.1.3 实用的拜占庭容错系统  / 112 5.1.4 Raft协议  / 114 5.2 PoW机制  / 116 5.3 PoS机制  / 122 5.4 DPoS机制  / 123 5.5 Ripple共识算法  / 124 5.6 小蚁共识机制  / 126 5.7 本章小结  / 127 第6章 比特币应用开发指南  / 129 6.1 以虚拟机方式搭建应用开发环境  / 129 6.1.1 下载和安装Oracle VM VirtualBox  / 129 6.1.2 以虚拟机方式安装Ubuntu14.04  / 133 6.1.3 安装Node.js开发环境  / 138 6.1.4 安装Docker运行环境  / 138 6.1.5 安装和运行比特币测试网络  / 139 6.1.6 运行第一个示例程序  / 141 6.2 把握比特币“交易”数据结构  / 145 6.2.1 了解比特币的“交易”数据结构  / 145 6.2.2 交易记录的实例解析  / 146 6.2.3 运行示例程序  / 148 6.3 实战:多重签名交易  / 153 6.3.1 将ODIN标识注册到区块链上的实例解析  / 153 6.3.2 运行示例程序  / 156 6.4 本章小结  / 157 第7章 智能合约  / 158 7.1 智能合约简介  / 158 7.1.1 什么是智能合约  / 158 7.1.2 智能合约的历史  / 159 7.1.3 智能合约的优点和面临的风险  / 160 7.2 以太坊智能合约详解  / 161 7.2.1 以太坊上的账户  / 161 7.2.2 以太币和Gas  / 166 7.2.3 合约和交易  / 167 7.3 以太坊虚拟机  / 170 7.4 实例:在以太坊上开发实施智能合约  / 173 7.4.1 通过以太坊钱包部署智能合约  / 173 7.4.2 通过控制台部署智能合约  / 179 7.5 本章小结  / 183 第8章 超级账本项目  / 184 8.1 超级账本项目简介  / 184 8.1.1 项目背景  / 184 8.1.2 项目管理形式  / 185 8.1.3 项目的生命周期管理  / 186 8.1.4 项目发展状况  / 187 8.2 Fabric项目  / 187 8.2.1 项目概述  / 187 8.2.2 应用场景  / 188 8.2.3 项目架构  / 189 8.2.4 部署方式  / 191 8.2.5 交易的执行  / 192 8.3 Sawtooth Lake项目  / 193 8.3.1 项目概述  / 194 8.3.2 项目架构  / 194 8.4 本章小结  / 196 第9章 区块链常见问题  / 197 9.1 钱包的安全性问题  / 197 9.2 加密货币的交易方式  / 199 9.3 匿名性和隐私性  / 201 9.4 矿池算力集中的问题  / 203 9.5 51%攻击问题  / 205 9.6 去中心化的自治组织  / 207 9.6.1 去中心化的自治组织简介  / 207 9.6.2 The DAO项目  / 208 9.6.3 代码漏洞分析  / 210 9.6.4 解决方案  / 213 9.6.5 软分叉和硬分叉的影响  / 215 9.6.6 重放攻击   / 216 9.7 本章小结  / 219 第10章 区块链应用案例分析  / 220 10.1 闪电网络  / 220 10.1.1 闪电网络简介  / 220 10.1.2 支付通道的创建  / 221 10.1.3 支付通道的更新  / 223 10.1.4 支付网络的构建  / 223 10.1.5 支付通道的关闭  / 225 10.1.6 小结  / 226 10.2 ODIN:用区块链来替代DNS  / 226 10.2.1 ODIN简介  / 227 10.2.2 实现功能  / 228 10.2.3 主要特点  / 229 10.2.4 ODIN标识编码格式  / 229 10.2.5 ODIN标识技术规范  / 232 10.2.6 使用示例  / 233 10.2.7 开放资源  / 234 10.2.8 问题与思考  / 234 10.3 本章小结  / 236 第11章 从架构变革看IT时代的演进  / 237 11.1 架构心得  / 237 11.1.1 架构和技术的关系  / 237 11.1.2 关于计算的观察  / 238 11.1.3 架构创新的神奇力量  / 238 11.1.4 冯·诺依曼架构  / 239 11.1.5 哈佛体系架构  / 240 11.1.6 有影响力架构的特点  / 240 11.1.7 从非生物计算到非生物智能  / 241 11.2 架构创新——IT发展源源不断的动力  / 242 11.2.1 大中型机时代  / 243 11.2.2 开放时代的到来  / 243 11.2.3 客户端/服务端(CS)分布式时代  / 243 11.2.4 互联网时代  / 244 11.2.5 云计算、大数据时代  / 246 11.2.6 互联网+时代  / 250 11.2.7 区块链+时代  / 252 11.3 未来展望  / 254 第1章 区块链和比特币初体验 区块链(Blockchain)是近年来最具革命性的新兴技术之一。区块链技术发源于比特币(Bitcoin),其以去中心化方式建立信任等突出特点,对金融等诸多行业来说极具颠覆性,具有非常广阔的应用前景,受到各国政府、金融机构、科技企业、爱好者和媒体的高度关注。 在本章中,我们首先介绍区块链的定义和特点,然后通过介绍购买、存储和交易比特币等实际使用场景来体验区块链,最后再探讨一些关于区块链的常见问题。 1.1 区块链简介 2016年1月20日,中国人民银行官方网站上发表了一条题为《中国人民银行数字货币研讨会在京召开》的新闻[1],这一消息迅速在各大主流新闻媒体和比特币、区块链爱好者社区中传播,成为推动区块链技术在国内迅速升温的“导火线”。这是自从2013年12月5日中国人民银行、工信部、银监会、证监会和保监会五部委联合发布《关于防范比特币风险的通知》[2]以来,相关首次公开对比特币底层技术——区块链技术给予了高度评价。 在我们开始区块链体验之旅之前,让我们简要介绍区块链的定义和其发展历程。 1.1.1 区块链起源——比特币 区块链的英文是Blockchain,字面意思就是(交易数据)块(Block)的链(Chain)。区块链技术首先被应用于比特币,如图1-1所示。比特币本身就是第一个,也是规模最大、应用范围最广的区块链。 图1-1 简化的比特币区块链示意图 1.1.2 区块链和区块链技术的涵义 目前,关于区块链没有统一的定义,综合来看,区块链就是基于区块链技术形成的公共数据库(或称公共账本)。其中区块链技术是指多个参与方之间基于现代密码学、分布式一致性协议、点对点网络通信技术和智能合约编程语言等形成的数据交换、处理和存储的技术组合。同时,区块链技术本身仍在不断发展和演化中。 1.1.3 区块链分类 以参与方分类,区块链可以分为:公开链(Public Blockchain)、联盟链(Consortium Blockchain)和私有链(Private Blockchain)。从链与链的关系来分,可以分为主链和侧链。而且,不同区块链还可以形成网络,网络中链与链的互联互通,产生互联链(Interchain)的概念。 1.?公共链 公共链对外公开,用户不用注册就能匿名参与,无需授权即可访问网络和区块链。节点可选择自由出入网络。公共链上的区块可以被任何人查看,任何人也可以在公共链上发送交易,还可以随时参与网络上形成共识的过程,即决定哪个区块可以加入区块链并记录当前的网络状态。公共链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。在公共链中的共识机制一般是工作量证明(PoW)或权益证明(PoS),用户对共识形成的影响力直接取决于他们在网络中拥有资源的占比。 公共链通常也称为非许可链(Permissionless Blockchain)。如比特币和以太坊等都是公共链。公共链一般适合于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景。 2.?联盟链 联盟链(Consortium Blockchain)仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来制定。由40多家银行参与的区块链联盟R3[3]和Linux基金会支持的超级账本(Hyperleder)[4]项目都属于联盟链架构。联盟链是一种需要注册许可的区块链,这种区块链也称为许可链(Permissioned Blockchain)。 联盟链的共识过程由预先选好的节点控制。一般来说,它适合于机构间的交易、结算或清算等B2B场景。例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记账节点,当网络上有超过2/3的节点确认一个区块,该区块记录的交易将得到全网确认。联盟链可以根据应用场景来决定对公众的开放程度。由于参与共识的节点比较少,联盟链一般不采用工作量证明的挖矿机制,而是多采用权益证明或PBFT(Practical Byzantine Fault Tolerant)、RAFT等共识算法。联盟链对交易的确认时间、每秒交易数都与公共链有较大的区别,对安全和性能的要求也比公共链高。 联盟链网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入。联盟链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。 2015年成立的R3联盟,旨在建立银行同业的一个联盟链,目前已经吸引了40多个成员,包括世界著名的银行(如摩根大通、高盛、瑞信、伯克莱、汇丰银行等),IT巨头(如IBM、微软)。 银行间结算是非常碎片化的流程,每个银行各自有一套账本,对账困难,有些交易有时要花几天才能校验和确认。同时,其流动性风险很高,在监管报送方面非常繁琐,也容易出现人为错误,结算成本很高。 针对这种情况,R3联盟构建了一个银行同业的联盟链以解决这些问题。利用区块链技术,银行同业间可以共享一个统一的账本,省掉对账的繁琐工作,交易可以做到接近实时的校验和确认、自动结算,同时监管者可以利用密码学的安全保证来审计不可篡改的日志记录。 R3联盟将开发Corda分布式账本来实现未来愿景。Corda的名字来源有两个,该名字前半部分听起来像accord(协议),后半部分来自于chord(弦,即圆上两点间最短的直线)的定义。这个圆就代表R3联盟中的银行机构。从目前公开的资料来看,Corda具有以下特点: 数据不一定要全局共享,只有满足合法需求的一方才能在一个协议里访问数据; Corda不用一个中心化的控制就可以编排联盟成员的工作流; Corda对联盟成员之间的每笔交易形成共识,而不是在联盟机构的系统层面形成共识; Corda的设计直接支持监管者监督和合规性监控; 交易由参与交易的机构进行验证,而不会报告与交易无关的机构; 支持不同的共识机制; 明确记录智能合约与用书面语言撰写的法律文件之间的关联; 采用工业标准的工具来构建Corda平台; 不设虚拟货币。 Corda平台注重互操作性和渐进部署,不会将保密信息发布给第三方。一个机构可以和对手机构看到一组协议,并可以保证对手机构看到的是同样内容,同时报送给监管机构。Corda包括共识、校验、独一性、永恒性和认证等功能。 3.?私有链 私有链则仅在私有组织使用,区块链上的读写权限、参与记账权限按私有组织规则来制定。私有链的应用场景一般是企业内部的应用,如数据库管理、审计等。也有一些比较特殊的组织情况,比如在政府行业的一些应用:政府的预算和执行,或者政府的行业统计数据,这个一般来说由政府登记,但公众有权力监督。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击,这个在传统的系统是很难做到的。根据资料[1]的解读,央行发行数字货币可能就是一种私有链。和联盟链类似,私有链也是一种许可链。 币科学(Coin Science)公司推出供企业建立私链的多链(Multichain)平台。它提供保护隐私和权限控制的区块链平台,来克服在金融行业里碰到的推广区块链技术的障碍。多链的目标有以下3个: 1)保证区块链上的活动只能由选择的参与者看到; 2)引入机制来控制哪些交易是被允许的交易; 3)提供安全的挖矿机制,同时不需要工作量证明以及与其相关的成本。 多链把挖矿权限制在一组实名的矿工范围,解决了一直困扰私有链解决方案中的一方垄断挖矿过程的问题。它的解决办法是限制在同一个时间窗口同一矿工能产生的区块链数。不像比特币那样只支持一条区块链,多链可以方便地配置多条区块链,并让用户同时用多条链。这样的话,机构用户可以让管理员配置区块链而不需要由区块链专业开发者来做。 多链让用户在一个配置文件中配置区块链的所有参数,这些参数包括: 区块链的协议,例如是私有链还是像比特币那样的公共链; 目标区块产生时间,例如1分钟; 权限,例如所有人能连接,只有一些人能发送或接收交易; 挖矿的不同形式(只适合于私有链); 建立、移除管理员和矿工所需要的共识的程度,以及在建立期不需要强制执行的期限(只适合于私有链); 矿工的报酬,例如每区块50个币,然后每210?000个区块减半付酬; 邻节点连接和JSON RPC API的IP端口,例如8571、8570; 允许的交易类型,例如paytoaddress、paytomultisig、paytoscripthash等; 最大的区块大小,例如1MB; 每个交易的最大元数据(OP_RETURN),例如4KB。 多链在节点的“握手”连接过程如下: 1)每个节点提供它的公共地址,使其他节点能将它的地址包括在允许连接的清 单中; 2)每个节点验证邻节点的地址是在它的授权连接的节点清单里; 3)每个节点发一个盘问(Challenge)消息给其他节点; 4)每个节点发回一个回复盘问信息的签名,证明拥有他们的对应公共地址的私钥; 5)如果双方对对方回复不满意,可随时中断连接。 在多链里,所有的权限的授予和回收都是通过包含特殊元数据的网络交易来实现的。找到创世区块的矿工被自动授予所有的权限,包括管理其他用户的管理员权限。管理员通过发交易给其他用户,并在交易的输出中包含授权用户的地址以及授权信息的元数据来给其他用户授予相应的权限。当要改变其他用户的管理和挖矿权限的时候,一个额外的限制条件是要由现有的管理员投票来决定。这些管理员的投票需要登记在不同的交易中,只有当足够的共识形成之后才能通过改变。 多链在很多方面的设计是为了使得用户在私链和比特币区块链能够进行双向迁移。多链是基于比特币核心的一个分叉。所有的对比特币的代码改变都是本地化的改变。未来比特币的升级功能可以并入多链的本地代码。它基于比特币的协议、交易和区块链架构,只是在握手协议上有所改变。其他的功能是通过元数据,同时改变交易和区块的验证规则来实现的。在接口方面与比特币完全兼容,所有的新功能通过新的命令来提供。它可以做成普通比特币网络的一个节点。 多链提供一个在企业内快速部署私链的解决方案。可以用于如去中心化交易所、数据库同步、货币结算、债券发行和P2P交易、消费行业积分奖励机制等场景。 4.?侧链 比特币主要是按其设计者中本聪的思想设计的一个虚拟货币系统,虽然很成功,但是其规则已经相对固定,很难在比特币上做大的修改,因为这些修改会引起分叉,影响现有的比特币用户。因此,要在比特币平台上做创新或扩展是比较困难的。一般来说,大部分代币系统是通过用比特币平台做基础,重构一条区块链,然后在上面使用新的规则发新的虚拟货币。这就是目前大部分代币的做法。然而这些代币系统要从无到有得到人们的价值认可是非常困难的,通常的办法是与比特币挂钩,相当于用比特币作为储备来发行代币,这样就可以完成代币的货币价值认可的过程。但随之而来的问题是,如何自动保障代币和比特币的挂钩呢?因为虚拟货币的一个特点就是价格波动非常大,一般人都不愿意持有波动大、流动性差的代币。一个直接的想法就是通过比特币平台和代币平台的整合来做到实时的挂钩。 2014年,亚当·贝克(Adam Back)等作者发表了一篇论文,题目是《Enabling Blockchain Innovations with Pegged Sidechains》,中文意思是“用与比特币挂钩的侧链来提供区块链创新”。其核心观点是“比特币”的区块链在概念上独立于作为资产的比特币。他希望通过技术能支持在不同的区块链上转移资产,这样新的系统可以重用原先的比特币。他提出一个侧链(Side Chains)的概念。所谓侧链,就是能和比特币区块链交互,并与比特币挂钩的区块链。贝克列出了侧链的一些属性: 一个用户在一条链上的资产被转移到另一条链上后,还应该可以转移回到原先链上的同一用户名下。 资产转移应该没有对手卷款逃跑的风险,也就是不诚实的用户没能力阻碍资产转移的发生。 资产的转移必须是原子操作,也就是要么全发生,要么不发生。不应该出现丢失资产或欺诈性增加资产的情况。 侧链间应该有防火墙。一条侧链上的软件错误造成链上资产的丢失或增加不会影响另一条链上的资产的丢失或增加。 即使在资产的转移过程中发生区块链的重组,也不应出现问题。任何因区块链重组造成的中断,应该局限在本条侧链上而不应影响其他区块链。通常侧链之间最好能相互独立,用户可以从其他链条提供数据。只有当存在明确的侧链的共识规则时才需要去检查另一条侧链来对其验证。 用户不应需要跟踪不经常使用的侧链。 比特币是大家公认的公共链,是很多代币的基础。但比特币的设计规则决定了比特币有一定的局限,例如平均每10分钟出一个区块,每个区块1MB大小限制,这使得大概每秒才能确认7笔交易,这种交易速度而在很多场景下不能满足业务需求。因此,通过侧链来提升效率,扩展比特币功能是一个非常有效的做法。比如,闪电网络把很多交易放在侧链,只有在做清算时才用上主链,这样一来可以极大地提升交易速率,又不会增加主链的存储负担。 5.?互联链 如图1-2所示,针对特定领域的应用可能会形成各自垂直领域的区块链,这些区块链会有互联互通的需求,这样这些区块链也会通过某种互联互通协议连接起来。与互联网一样,这种区块链上的互联互通就构成互联链,形成区块链全球网络。 图1-2 区块链网络示意图 1.1.4 区块链价值与应用 根据各个区块链采取的技术组合不同,形成的区块链特点也大不相同。但是需要指出的是,区块链技术是一揽子技术,可以根据业务的需要进行有针对性的组合和创新。 总体来说,去中心化信用机制是区块链技术的核心价值之一,因此区块链本身又被称为“分布式账本技术”“去中心化价值网络”等。自古以来,信用和信任机制就是金融和大部分经济活动的基础,随着移动互联网、大数据、物联网等信息技术的广泛应用,以及工业4.0等新一代工业革命的开启,网络空间的信用作为数字化社会的基石的作用显得更加重要。传统上,信用机制是中心化的,而中心化的信任和信用机制必然导致中心化机构成为价值链的核心,也容易引发问题。而区块链技术则首先在人类历史上实现了去中心化的大规模信用机制,在消除中心机构“超级信用”的同时,保证信用机制安全、高效地运行。 具体来看,区块链的颠覆性价值至少包括以下5个方面。 1)简化流程,提升效率。由于区块链技术是参与方之间通过共享共识的方式建立的公共账本,形成对网络状态的共识,因此区块链中的信息天然就是参与方认可的、唯一的、可溯源、不可篡改的信息源,因此原来许多重复验证的流程和操作就可以简化,甚至消除,例如银行间的对账、结算、清算等,从而大幅提升操作效率。 2)降低交易对手的信用风险。与传统交易需要信任交易对手不同,区块链技术可以使用智能合约等方式,保证交易多方自动完成相应义务,确保交易安全,从而降低对手的信用风险。 3)减少结算或清算时间。由于参与方的去中心化信任机制,区块链技术可以实现实时的交易结算和清算,实现金融“脱媒”,从而大幅降低结算和清算成本,减少结算和清算时间,提高效率。 4)增加资金流动性,提升资产利用效率。区块链的高效性,以及更短的交易结算和清算时间,使交易中的资金和资产需要锁定的时间减少,从而可以加速资金和资产的流动,提升价值的流动性。 5)提升透明度和监管效率,避免欺诈行为。由于区块链技术可以更好地将所有交易和智能合约进行实时监控,并且以不可撤销、不可抵赖、不可篡改方式留存,方便监管机构实现实时监控和监管,也方便参与方实现自动化合规处理,从而提升透明度,避免欺诈行为,更高效地实现监管。 区块链的创新性最大的特点不在于单点技术,而在于一揽子技术的组合,在于系统化的创新,在于思维的创新。而正是由于区块链是非常底层的、系统性的创新,区块链技术和云计算、大数据、人工智能、量子计算等新兴技术一起,被认为是最具变革性的新兴技术之一。其中,金融服务领域是即将被颠覆的关键领域之一,除此之外,区块链还可以被广泛应用于物联网、移动边缘计算等去中心化控制领域,以及智能化资产和共享经济(如自动驾驶汽车、智能门锁+租赁)等一系列潜在可应用的领域。下面我们重点介绍几类区块链变革金融服务的场景。 (1)金融领域的结算和清算 以金融领域的结算和清算为例,全球每年涉及各种类型的金融交易高达18万亿美元。如图1-3所示,由于交易双方互不信任,因此金融机构需要通过处于中心位置的清算结构来完成资产清算和账本的确认。这类涉及多个交易主体且互不信任的应用场景就非常适合使用区块链技术。原则上,可以直接在金融之间构建联盟链,那么机构之间只需要共同维护同一个联盟区块链,即可实现资产的转移和交易。 图1-3 区块链去中心化金融服务示意图 (2)数字货币 货币是一种价值存储和交换的载体,过去都是由中央法定机构集中发行的。以比特币为例,正是由于其非中心化的信任机制,虽然先后经历多次交易所倒闭、“虚拟货币”非法使用被查抄、多个政府禁止使用等危机,但比特币经受住了所有这些考验,目前仍能稳定运行。比特币的出现和稳定运行,可以说完全颠覆了人们对于货币的认识。相信区块链技术或者说分布式账本技术会在数字货币技术体系中占据重要地位。 (3)跨境支付 另一个区块链可颠覆的金融服务就是跨境支付。通常跨境支付到账时间长达几天甚至一个星期。除此之外,跨境支付需要双边的用户都向当地银行提供大量开户资料和证明,以配合银行的合规性要求,参与交易的银行和中间金融机构还需要定期报告,以实现反洗钱等其他合规性要求。这是一个典型的涉及多方主题的交易场景,区块链技术可以应用在多个环节。区块链技术,一方面可以减少用户重复提交证明材料,提升效率,另一方面可以更好地实现合规、实时性等,大幅提升金融机构的运行效率,提升监管效率。此外,由于区块链技术可以在银行等金融机构之间直接通过区块链实现资金和资产的转移,因此可以去掉高昂的中间费用。此外,还可以结合智能合约等技术,在合约中规定好实施支付的条件,在支付的同时保证义务的实施,提升交易的安 全性。 (4)财产保险 财险是除寿险之外最大的保险。传统上,财险理赔是用户的痛点和成本瓶颈,估计理赔成本的占比至少高达保险公司收入的11%。而且由于理赔过程中用户需要提供大量的资料,客户体验往往非常不友好。由于每个理赔可能会涉及大量的手工操作,因此需要占用大量的人力、物力来进行理赔处理。此外,由于保险公司各自为政,财险理赔还需要对抗保险欺诈。而区块链技术则可以很好地缓解财险理赔的用户痛点,降低理赔成本。首先区块链可以减少客户提供理赔资料和证明的负担,如果资产可以智能化地嵌入智能合约,则资产可具备自动启动理赔流程的能力,甚至可以实现自动化理赔,大幅加速理赔过程,改善客户体验,甚至可以在联盟成员之间进行合理的数据共享,有效地发现和排除保险欺诈。此外,区块链技术的应用可以大幅度减少保险公司对中介代理服务人员的需求,从而大幅度降低运营成本。 此外,区块链还可以广泛应用在物联网、边缘计算、存在性证明等许多领域,读者可以参考《Blockchain:Blueprint for a new economy》一书。此处,特别强调的是关于区块链的应用可能层出不穷,关键还是要理解区块链技术的内涵和变革原理,深刻体会区块链去中心化的系统化思维,从而可以结合自身对相关行业的理解和需求,创造出新的解决方案、新的价值。 1.2 区块链体验 区块链仍然是一个抽象概念,为了更好地理解区块链,为本书后续章节提供一个直观的理解基础,本节中我们将首先通过交易所购买少量比特币,然后转移到比特币钱包中,最后通过钱包实现比特币转账。 1.2.1 获取比特币的3种途径 获取比特币有3种途径:一是作为“矿工”挖矿获得,二是线上“交易所”购买或者线下通过中间人购买,三是作为商家收取比特币。 1.?挖矿 由于比特币的独特设计,参与者可以通过计算能力竞争的方式获取系统奖励和支付小费,同时也维护着比特币这个区块链的稳定运转,我们把这种算力竞争行为称为“挖矿”。比特币价格的一路攀升。挖矿的设备和算力也一路升级,如图1-4所示,从最初的CPU挖矿,到第二代的显卡挖矿,经历过短暂的FPGA挖矿时代后,迅速进入专用芯片(ASIC)挖矿时代。 图1-4 比特币算力增长图 而进入ASIC矿机时代之后,矿机芯片的工艺升级速度远超摩尔定律的演进速度,差不多3个月时间就会进化一代,蚂蚁矿机S9是目前新出产的主流挖矿设备已经采用了16nm工艺制造的专用芯片。 “挖矿”今天已经成为高度专业化的细分产业。为保证收益,挖矿不仅要求有较高的初始投入,以及更低廉获取“矿机”和电力的渠道,还要求有专业的管理能力。如图1-5所示,这是一座位于我国西南某处的比特币矿场。 随着挖矿专业化程度的提高,矿工往往都是通过联合挖矿组成矿池的形式来挖矿的,矿池用来协调和分布挖矿的收益,比特币的算力分布目前前几大矿池都位于中国。 图1-5 比特币矿场 2.?线上交易所或者线下撮合获取比特币 其中线上交易所方面,我国的okcoin、火币占据了交易量的绝大多数,两家交易量占线上交易量的93%以上。线下交易具有更好的匿名性。图1-6展示的是比特币历史交易价格,可以看到从最初的不到0.1美元到历史最高点接近1200美元,再到当前日期(2016年7月25日)的约660美元。中间经历多次大的价格波动。 图1-6 比特币历史价格(对数坐标,美元计价) 3.?比特币作为一种支付的手段 其优势在于跨境支付等场景下具备非常低的收费,并且非常快捷。在日常小额支付方面,目前在全球也有一定的市场。目前比特币作为一种支付手段,主要在欧美等发达国家和地区有比较广泛的分布。当然,由于比特币价格的波动性,一般商家都会实时将比特币转换为当地货币。比特币在我国不能作为货币支付手段,不能很方便地在银行 汇兑。 1.2.2 通过交易所购买比特币 在本节中,我们将通过OKCoin这个比特币交易平台购买少量比特币。读者可以选择火币、BTCC等其他平台购买获取比特币,基本过程是相似的。大部分主流交易平台也提供移动端App,读者可以根据情况选用。 首先,我们需要注册OKCoin的账号,在OKCoin中国站(https://www.okcoin.cn/user/register.do)通过邮箱(或手机号)注册即可。如图1-7所示,填写邮箱、密码,并勾选同意服务条款后,单击“注册”按钮即可完成注册。 注册成功后可看到注册成功的页面,如图1-8所示。然后开始身份认证。根据相关条例要求,目前几乎所有比特币交易平台都会要求真实身份认证。       ?? 图1-7 网站注册页面   ?         图1-8 注册成功页面 单击图1-8中的“开始身份认证”按钮,将会进入如图1-9所示的提示页面,可以选择“个人用户”或者“企业用户”进行认证。这里选择“个人用户”这个类型进行 认证。 图1-9 身份认证提示页面 如图1-10所示,正确填写身份信息并提交就能看到如图1-11所示的认证成功提示。注意,请使用真实身份信息,如遇到忘记密码等情形,可能会需要配合平台方提供相关证明才能进行处理。 图1-10 个人身份认证页面 单击“设置资金密码”按钮,就会进入如图1-12所示的页面。根据提示,我们可以选择手机认证或者Google验证的方式来设置二次验证的方式。 我们选择Google验证的方式,安装iOS或者Android版Google Authenticator之后,单击图1-13中的“设置”按钮,打开App,扫描左边的条形码后就能看到OKCoin.cn的动态密码了。将App中的动态密码输入弹出页面中,就能看到成功提示页面,同时也可看到资金密码的“设置”按钮变为可用。单击该按钮将进入如图1-13所示的资金密码设置页面。 图1-11 个人身份认证成功页面 图1-12 二次验证设置页面 设置密码并填写Google验证的二次验证密码(如果前面是手机验证,则是手机验证码),就会看到如图1-14所示的提示页面。 单击“前往充值”按钮进入充值页面,如图1-15所示。我们选择“快捷充值”方式,也可以选择“支付宝充值”或者“网银汇款充值”的方式。 图1-13 资金密码设置页面 图1-14 资金密码设置成功提示页面 图1-15 充值选择页面 选择“快捷充值”后进入如图1-16所示的银行选择页面,根据个人情况选择网银进行充值。我们在这里选择充值100元用于购买小额的比特币,未来仍然可以通过交易所换回现金(当然可能会有少量的转账费用和价格波动)。 图1-16 快捷充值页面 充值成功之后就可以购买比特币了。我们可以通过“市价单”快速购买比特币,如图1-17所示。 图1-17 购买比特币页面 委托完成后,可以在页面下方的委托成交记录中看到交易记录,如图1-18所示。可以看到,我们以4389.76元/BTC的价格成功地通过交易所购买到了0.02个比特币。 图1-18 委托成交记录 1.2.3 比特币钱包和地址 在上节中,我们通过比特币交易平台购买了少量比特币。需要指出的是,交易平台仍然不属于中心化的服务机构,在交易平台的交易不属于区块链(比特币)之上的交易,其交易和资金的可靠性需要交易平台的背书。虽然,目前国内运营的几大交易平台没有发生大的诚信危机,但从比特币诞生至今也发生过多次交易所欺诈、倒闭和“跑路”事件,让不少比特币拥有者蒙受了巨额经济损失。为了进一步体验比特币和区块链的真实性,我们的体验之旅继续。在本节中,我们将在交易平台购买的比特币转入我们的比特币“钱包”,并可以在区块链上查询到这笔交易。 比特币钱包是一个形象的概念,比特币本身由一对数字密钥来决定归属,因为拥有私钥就能拥有对应地址比特币的处置权,可以说这些私钥就等于比特币,我们通常将管理这些数字密钥的软件称为“钱包”。比特币钱包,根据终端类型可以分为桌面钱包、手机钱包、网页钱包和硬件钱包。其中硬件钱包(见图1-19)成本最高,也相对更安全。对于小量比特币来说,我们可以选用网页钱包这种轻量级的钱包来存储,而对于较大额度的比特币,则建议使用更高级的钱包存储方式。 图1-19 比特币硬件钱包case(来源:choosecase.com) 我们接下来将选择开源钱包MultiBit HD桌面版,当然读者也可以选择其他优秀的钱包。在https://multibit.org/下载对应版本的文件后,单击安装,并选择中文作为界面语言。单击“下一步”按钮之后,可以进入如到图1-20所示的页面。 图1-20 创建钱包准备页面 特别需要强调的是,比特币不同于银行账户的概念,钱包是帮助我们管理这些私钥的,同时也要妥善保管好钱包的恢复密语和备份数据。MulitBit HD钱包使用一种新的密钥技术,即12个单词的密语可以恢复这个钱包,如图1-21所示。所以建议妥善保存这些单词,而且要离线保存。 图1-21 MultiBit钱包密语 继续按照提示完成后续操作,包括设置钱包密码等。完成之后可以看到如图1-22所示的创建钱包报告页面。 图1-22 创建钱包报告页面 创建完成后打开MultiBit,在发送/接受页面选择接收,可以看到钱包的比特币地址:1FA97cbn8EbFFRKnVkfFPQ4Z5C8WnFhtpP,如图1-23所示。或者单击地址栏后面第二个图标,可以显示二维码形式的比特币地址,这将是我们从交易平台购买的比特币提现地址。 图1-23 钱包比特币地址 1.2.4 从交易平台提取比特币到钱包 首先,我们需要在交易平台添加提现地址。登录OKCoin后,选择“资金管理”栏目,然后选择添加地址,正确填写钱包中的比特币地址,二次验证码,如果需要认证,则勾选“认证地址”复选框,并填写资金密码,如图1-24所示。单击“确定”后,平台会向用户发送确认邮件,确认后即可完成提现地址添加。 图1-24 添加比特币提现地址 最后一步,在“资金管理”栏目中选择“BTC提现”选项卡,如图1-25所示。提现地址可以选择上面认证过的提现地址,数量为我们能提现的数量,如0.02BTC(20mBTC)。注意,“网络手续费”为网络“矿工”维持比特币区块链网络运转的交易费奖励。当然,为了防止垃圾交易攻击和提高矿工处理交易的积极性,一般都会选择0.1~0.5mBT不等的小费(小费多少一般根据交易占用的容量大小而定)。 图1-25 比特币提现页面 目前国内的平台为了防止被盗,在提现要求提交后,一般都会由人工处理提现申请,包括电话确认提现是本人所操作、确认提现的数量等,确认完成后才会正式处理。等平台将交易发送到比特币网络,我们就可以在区块链上公开看到这笔交易了。我们可以在MultiBit上看到,刚开始的时候,MultiBit上会显示已收到付款,但是是“未确认”的,如图1-26所示。原则上,未确认的交易可能存在风险,比如发送者重复花费这部分比特币,在小额支付的场景下,零确认可能也是可以接受的,但是在较大金额的交易中,通常会选择等待至少6个以上的确认。 图1-26 未确认收款 1.2.5 比特币交易查询 经过比较长的时间后,我们可以使用blockchain.info和qukuai.com查询交易的结果。如图1-27所示,这笔交易是从一个有92.22788075的BTC,地址为1EDpd8oYNmKzHJvTrjQnWmkexENB7MXjxK中转出的,剩余的92.20788075BTC转到一个新地址1KqrkJvjqUmrzzq274wSkMRwbWbXprkNPF。交易在第421416个区块被锁定,截至写作时已经经历了1063个确认。图1-28中的“转入脚本”(也称为解锁脚本)和“转出脚本”(也称为锁定脚本)就是比特币的合约脚本,后续我们将会在2.1.3节详细介绍。 图1-27 BTC提现交易结果 到这里,我们的区块链(比特币)初次体验之旅就告一段落了。我们存储到MultiBit钱包的比特币可以直接用于支付、捐赠、打赏,也可以通过交易平台的比特币充值回流到平台,再换成人民币等。 1.3 本章小结 本章中,我们首先简单介绍了区块链的起源和定义,以及区块链的分类、价值和应用。然后我们通过图示的方式,以比特币这个目前最大的公链为例,带领大家体验比特币,包括如何获取比特币,如何通过交易平台购买比特币,以及如何通过钱包存储比特币,最后将交易平台的比特币提取到钱包中,并在区块链上公开查询到这笔交易。 毋庸置疑,区块链的发展已经远远超出了比特币和数字货币的范畴,可以说,区块链去中心化的信任机制和价值传递机制的变革将极具颠覆性,当前区块链领域的创新才刚刚开始。后续章节让我们一起继续关于区块链更深入的探索。 参考资料 [1] 中国人民银行.中国人民银行数字货币研讨会在京召开[J/OL]. 2016, http://www.pbc.gov.cn/goutongjiaoliu/113456/113469/3008070/index.html. [2] 中国人民银行.中国人民银行等五部委发布《关于防范比特币风险的通知》[J/OL].2013, http://www.pbc.gov.cn/goutongjiaoliu/113456/113469/999049/index.html. [3] R3. 2016, http://r3cev.com/. [4] HYPERLEDGER. 2016, https://www.hyperledger.org/.BLOCKSTREAM. 2016, http://www.blockstream.com/. [5] SWAN M. Blockchain: Blueprint for a new economy [M]. O'Reilly Media, Inc., 2015. 第2章 区块链基础 区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种全新技术,它提供了一种去中心化的、无需信任积累的信用建立范式,目前已经引起金融行业、科研机构、政府部门和投资公司的高度重视与广泛关注。区块链技术通过建立一个共同维护且不可被篡改的数据库来记录过去的所有交易记录和历史数据,所有的数据都是分布式存储且公开透明的。在这种技术下,任何互不相识的网络用户都可以通过合约、点对点记账、数字加密等方式达成信用共识,而不需要任何的中央信任机构。在这种技术下,我们可以建立数字货币、数字资产、智能财产以及智能合约等。 通过上一章的介绍,相信大家已经对区块链和比特币有了初步的认识,在本章中,我们将继续探讨区块链的技术细节。 本章将首先介绍区块链的相关基本概念及其运作原理,然后介绍区块链上可以进行的操作和相关细节,最后再讨论区块链上的交易流程和它的验证过程。 2.1 区块链技术 区块链本质上是一个对等网络(peer-to-peer)的分布式账本数据库。比特币的底层就采用了区块链的技术架构。区块链本身其实是一串链接的数据区块,其链接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值。每一个数据块中记录了一组采用哈希算法组成的树状交易状态信息,这样保证了每个区块内的交易数据不可篡改,区块链里链接的区块也不可篡改。 2.1.1 基本概念 一个完整的区块链系统包含了很多技术,其中有存储数据的数据区块及其之上的数字签名、时间戳等技术,有作为支撑的P2P网络和维护系统的共识算法,有挖矿和工作量证明机制,有匿名交易机制和比特币钱包,还有链龄、UTXO、Merkle树、双花等相关技术概念。正是这些技术,使得区块链在无中心的网络上形成了运转不息的引擎,为区块链的交易、验证、链接等功能提供了源源不断的动力。 1.?数据区块 比特币的交易记录会保存在数据区块之中,比特币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分,如图2-1所示。 图2-1 区块结构 区块头封装了当前的版本号(Version)、前一区块地址(Prev-block)、时间戳(Timestamp)、随机数(Nonce)、当前区块的目标哈希值(Bits)、Merkle树的根值(Merkle-root)等信息。 区块体中则主要包含交易计数和交易详情。交易详情就是比特币系统中的记账本,每一笔交易都会被永久地记入数据区块中,而且任何人都可以查询。区块体中的Merkle树将会对每一笔交易进行数字签名,如此可以确保每一笔交易都不可伪造且没有重复交易。所有的交易将通过Merkle树的Hash过程产生一个唯一Merkle根值记入区块头。关于Merkle树本章后面将详细介绍。 如果你使用的是比特币核心钱包(Bitcoin core),那么每当你打开客户端时,区块数据文件都会被同步到电脑硬盘中,可以在blocks文件夹下找到它们。如图2-2所示的.dat文件就是我们要找的数据区块文件。 我们还可以使用hexdump指令在终端上将数据区块以十六进制的方式显示出来。我们可以通过解析这些数据得出交易记录、区块大小等基本信息,因此我们说区块链中的数据是完全公开透明的。如图2-3所示,我们使用指令hexdump -n 10000 -C blk00000.dat打开了编号为00000的创世区块(比特币中的第一块区块链)。 图2-3 用hexdump指令打开的创世区块 2.?挖矿与分叉问题 区块在挖矿过程中产生。所谓挖矿,实际上是穷举随机数算法,把上个区块的哈希值加上10分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数Nonce使哈希值满足一定条件就获得这个区块的交易记账权。新产生的区块需要快速广播出去,以便其他节点进行对其验证,以防造假。每个区块存着上一个区块的哈希值,可以溯源到源头,只有经过验证后才最终获得区块的交易记账权。比特币系统会让挖矿的矿工竞争记账权(在主链上链接区块的权利),这个竞争机制就是工作量证明机制。挖矿需要付出大量的能源和时间,谁付出的工作量多就能以更大的概率获得一个区块的记账权。获取记账权的矿工会将当前区块链接到前一区块,形成最新的区块主链,该矿工也会得到系统奖励的一定数量(2009~2013年每10钟产生50个比特币,2014年至今每10分钟产生的比特币将减半成25个)的比特币。所有的区块链接在一起形成了区块链的主链,从创世区块到当前区块,在区块链之上的所有数据历史都可以被追溯和查询。 需要说明的是,可能会出现不同地区的两个矿工同时“挖出”两个新区块加以链接的情况,这时主链上就会出现“分叉”。系统并不会马上确认哪个区块不合理,而是约定后续矿工总是选择累计工作量证明最大的区块链。因此,当主链分叉以后,后续区块的矿工将通过计算和比较,将其区块链接到当前累计工作量证明最大化的备选链上,形成更长的新主链,并自动抛弃分叉处的短链,从而解决分叉问题。 3.?时间戳和不可篡改性 时间戳是指从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,通常是一个字符序列,唯一地标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳进行增强,形成一个时间递增的链条。时间戳技术本身并没有多复杂,但在区块链技术中应用时间戳却是一个重大创新,时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明(Proof of Existence)的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可篡改和不可伪造的,这也为区块链技术应用于公证、知识产权注册等时间敏感领域提供了可能。 4.?分布式数据库 比特币系统中的区块就像一个记账本一样,记录了所有比特币的交易信息,每一个比特币用户的比特币收支情况都被永久地嵌入了数据区块中以供别人查询。这些数据区块中的交易数据存放在每一个比特币用户的客户端节点中,所有的这些节点则组成了比特币及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其他的健康节点中都保存了完整的数据库。 5.?UTXO交易模式 UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易过程中的基本单位。除创世区块以外,所有区块中的交易(Tx)会存在若干个输入(Tx_in,也称资金来源)和若干个输出(Tx_out,也称资金去向),创世区块和后来挖矿产生的区块中给矿工奖励的交易没有输入,除此之外,在比特币系统中,某笔交易的输入必须是另一笔交易未被使用的输出,同时这笔输入也需要上一笔输出地址所对应的私钥进行签名。当前整个区块链网络中的UTXO会被储存在每个节点中,只有满足了来源于UTXO和数字签名条件的交易才是合法的。所以区块链系统中的新交易并不需要追溯整个交易历史,就可以确认当前交易是否合法。 6.?哈希函数 哈希函数在比特币系统中也有着重要的应用,区块链中的数据并不只是原始数据或者交易记录,还包括它们的哈希函数值,即将原始数据编码为特定长度的、由数字和字母组成的字符串后,记入区块链。哈希函数有着很多适合存储区块链数据的 优点: 1)哈希函数处理过的数据是单向性的,通过处理过的输出值几乎不可能计算出原始的输入值; 2)哈希函数处理不同长度的数据所耗费的时间是一致的,输出值也是定长的; 3)哈希函数的输入值即使只相差一个字节,输出值的结果也会迥然不同。比特币系统中最常采用的哈希函数是双SHA256哈希函数,通俗来说就是将不同长度的原始数据用两次SHA256哈希函数进行处理,再输出长度为256的二进制数字来进行统一的识别和存储。 总之,哈希函数是比特币系统中的关键技术,为比特币系统提供了很多便利。本书后面的章节将会对哈希函数做详细介绍,此处不赘述。 7.?Merkle树 Merkle树是数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点。如图2-4所示,比特币区块链系统中的采用的是Merkle二叉树,它的作用主要是快速归纳和校验区块数据的完整性,它会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个Merkle根存入区块头中,每个哈希节点总是包含两个相邻的数据块或其哈希值。在比特币系统中使用Merkle树有诸多优点:首先是极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,这使得哈希运算可以高效地运行在智能手机甚至物联网设备上;其次是Merkle树可支持“简化支付验证协议”(SPV),即在不运行完整区块链网络节点的情况下,也能够对交易数据进行检验。所以,在区块链中使用Merkle树这种数据结构是非常具有意义的。本书后面的章节将会对Merkle树做详细介绍。 8.?双重支付 双重支付问题又称为“双花”问题,即利用货币的数字特性用“同一笔钱”完成两次或者多次支付。在传统的金融和货币体系中,由于金钱货币是物理实体,具有客观唯一存在的属性,所以可以避免双重支付的情况。但在其他的电子货币系统中,则需要可信的第三方管理机构提供保证。区块链技术则在去中心化的系统中不借助任何第三方机构而只通过分布式节点之间的相互验证和共识机制,有效地解决了双重支付问题,在信息传输的同时完成了价值转移。区块链技术通过区块链接形成的时间戳技术加上验证比特币是否满足UTXO(未花费交易)和数字签名,有效避免了双重支付的问题。如果有人用同一笔UTXO构造了两笔付给不同交易方的交易,则比特币客户端只会转发最先被侦听到的那个。矿工会选择将那笔交易包入未来区块,当其中一笔交易所在的区块后有5个链接的区块,这笔交易已经得到了6次确认。在比特币区块链上,6次确认后可以基本上保证比特币不被双花。 9.?P2P网络 P2P网络(peer-to-peer network,对等网络)是一种在对等者(peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。因此,从字面上,P2P可以理解为对等计算或对等网络,P2P网络示意图如图2-5所示。国内的迅雷软件采用的就是P2P技术。区块链系统是建立在IP通信协议和分布式网络的基础上的,它不依靠传统的电路交换,而是建立于网络通信之上,完全通过互联网去交换信息。网络中所有的节点具有同等的地位,不存在任何特殊化的中心节点和层级结构,每个节点均会承担网络路由、验证数据区块等功能。网络的节点根据存储数据量的不同可以分为全节点和轻量级节点,全节点存储了从创世区块以来的所有区块链数据(比特币网络现在大约有几十GB,且还在不断增长中)。全节点的优点是进行数据校验时不需要依靠别的节点,仅依靠自身就可以完成校验更新等操作,缺点是硬件成本较高。轻量级节点只需要存储部分数据信息,当需要别的数据时可以通过简易支付验证方式(Simplif?ied Payment Verif?ication,SPV)向邻近节点请求所需数据来完成验证更新。 图2-5 P2P网络 10.?加密算法 除了哈希算法以外,比特币中还存在一种为交易加密的非对称加密算法(椭圆曲线加密算法)。非对称加密算法指的就是存在一对数学相关的密钥,使用其中一个密钥进行加密的数据信息,只有使用另一个密钥才能对该信息进行解密。这对密钥中,对外公开的密钥叫作公钥,不公开的密钥就叫作私钥。打个比方来说,公钥就像银行的账户,私钥就像是该账户的密码或者账户所有者的签名。区块链之上的有效交易有一个用于交易发起方私钥签名有效的数字签名,而该交易的签名可以通过使用交易发起方的公钥进行验证。公钥可以通过算法从私钥中计算得出,但私钥却不能从公钥中推出。比特币系统中使用的就是一种非常典型的非对称加密算法——椭圆曲线加密算法(ECC)。 如图2-6所示,比特币系统一般从操作系统底层的一个密码学安全的随机源中取出一个256位随机数作为私钥,私钥总数为2256个,所以很难通过遍历所有可能的私钥得出与公钥的对应的私钥。用户使用的私钥还会通过SHA256和Base58转换成易书写和识别的50位长度的私钥,公钥则首先由私钥和Secp256k1椭圆曲线算法生成65字节长度的随机数。一般情况下,比特币钱包的地址也由公钥所生成,其生成过程为首先将公钥进行SHA256和RIPEMD160双哈希运算,并生成20字节长度的摘要结果(即Hash160结果),这个将作为比特币地址的主体(body)信息,再在前面加上版本前缀0x00,在后面添加4个字节的地址校验码。地址校验码通过对摘要结果进行两次SHA256运算,取哈希值的前4位产生。最后通过Base58处理把连在一起的版本前缀、主体信息和校验码转换成可以容易让人识别的比特币字符地址。 图2-6 比特币非对称加密机制 11.?数字签名 数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。一般是发送者将信息用哈希算法处理得出一个哈希值,然后用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,从而可以鉴定信息是否来自发送者或验证信息是否被篡改。 12.?比特币的隐私模型 传统隐私模型(见图2-7)为交易的参与者提供了一定程度的隐私保护,第三方不会交出交易者的个人身份信息,公众所得知的只是某个人将一定数量的货币发给了另外一个人,但是难以将该交易与某个特定身份的人联系起来,公众无法知道这人到底是谁。这同股票交易所发布的信息是类似的,每一手股票买卖发生的时间、交易量是记录在案且可供查询的,但是交易双方的身份信息却不予透露。但实际上,交易双方的个人信息是存放在第三方机构,所以一定程度上交易参与者的隐私信息还是会有泄露的风险。 图2-7 传统隐私模型 在比特币的隐私模型(见图2-8)中,所有的交易不需要第三方的操控,也不需要提供任何身份信息,只需要提供比特币的地址就可以跟任何人完成一次准匿名的交易。在一定程度上,交易不可追溯到交易者本身,因此比特币上的交易可以在一定程度上摆脱监管。但通过对区块链上交易的地址以及交易额做关联分析,也可以获得有关交易者的蛛丝马迹。因此,比特币的交易还不是纯粹的匿名交易机制,而是准匿名(pseudo-anonymous)交易机制。 图2-8 比特币的隐私模型 2.1.2 框架与特点 1.?框架简介 目前大多数区块链技术的应用与比特币类似,大部分是在比特币架构基础上的扩展。目前,区块链技术在金融行业得到广泛关注,被认为可以用来从最底层重构传统金融业现有的IT基础架构。我们将区块链的基础架构分为三层来进行讲解,如图2-9所示。 图2-9 区块链基础架构 首先,在网络层之上,区块链是建立在IP通信协议和对等网络的基础上的一个分布式系统,和传统带中心的分布式系统不一样,它不依靠中心化的服务器节点来转发消息,而是每一个节点都参与消息的转发。因此P2P网络比传统网络具有更高的安全性,任何一个节点被攻击都不会影响整个网络,所有的节点都保存着整个系统的状态信息。 其次,在数据层面上,区块链就是一个只可追加、不可更改的分布式数据库系统,是一个分布式账本。如果是公开的区块链,也就是公有链,那么这个账本可以被任何人在任何地方进行查询,完全公开透明。在区块链网络中,节点通过使用共识算法来维持网络中账本数据库的一致性。同时采用密码学的签名和哈希算法来确保这个数据库不可篡改,不能作伪,并且可追溯。例如,在比特币系统中,只有在控制了51%的网络算力时才有可能对区块链进行重组以修改账本信息。由于比特币系统的设计者中本聪在系统设计中巧妙地加入了带有经济激励的挖矿工作量证明(PoW)机制,使得即使拥有网络51%以上算力的人也不会损害其自身利益而发起对网络的攻击。因此,比特币系统自上线7年多来一直持续不断地正常运行,没有出现过因为比特币系统本身缺陷而造成的安全故障。 再次,在应用层面,我们可以用区块链代替传统的登记、清算系统。2016年6月22日,波士顿咨询公司指出,到2030年,全球支付业务收入预计将会达到8070亿美元。基于区块链技术的汇兑和支付属于区块链的1.0应用版,其安全性、交易时间、成本都会对传统支付业务进行颠覆式改进。花旗银行也明确指出,到2020年,如果各大金融机构都使用区块链技术,每年能够节省超过200亿美元的成本。国信证券分析报告指出,通过区块链的点对点分布式的时间戳服务器来生成依照时间前后排列并加以记录的电子交易证明,可以解决双重支付问题,从而带来结算成本趋零的可能性。根据德国银行的一份引用波士顿咨询的研究报告,欧洲银行的IT成本支出平均占据银行整体运行成本的16%[5]。一个重要原因就是传统银行在账本的维护、支付交易的结算和清算方面的架构过于复杂,维护成本过高。 在应用方面,区块链平台能够提供编程环境让用户编写智能合约。通过智能合约,可以把业务规则转化成在区块链平台自动执行的合约,该合约的执行不依赖可信任的第三方,也不受人为的干预。理论上只要一旦部署,一旦符合合约执行的条件就会自动执行。执行结果也可以在区块链上供公开检查,提供了合约的公正性和透明性。因此,智能合约可以降低合约建立、执行和仲裁中所涉及的中间机构成本。区块链的智能合约奠定了未来建立可编程货币、可编程金融,甚至是可编程社会的基础。 2.?架构特点 区块链具有去中心化、可靠数据库、开源可编程、集体维护、安全可信、交易准匿名性等特点。如果一个系统不具有以上特征,将不能被视为基于区块链技术的应用。 (1)去中心化 区块链数据的存储、传输、验证等过程均基于分布式的系统结构,整个网络中不依赖一个没有中心化的硬件或管理机构。作为区块链一种部署模式,公共链网络中所有参与的节点都可以具有同等的权利和义务。 (2)可靠数据库 区块链系统的数据库采用分布式存储,任一参与节点都可以拥有一份完整的数据库拷贝。除非能控制系统中超过一半以上的算力,否则在节点上对数据库的修改都将是无效的。参与系统的节点越多,数据库的安全性就越高。并且区块链数据的存储还带有时间戳,从而为数据添加了时间维度,具有极高的可追溯性。 (3)开源可编程 区块链系统通常是开源的,代码高度透明公共链的数据和程序对所有人公开,任何人都可以通过接口查询系统中的数据。并且区块链平台还提供灵活的脚本代码系统,支持用户创建高级的智能合约、货币和去中心化应用。例如,以太坊(Ethereum)平台即提供了图灵完备的脚本语言,供用户来构建任何可以精确定义的智能合约或交易类型。关于以太坊的更多内容请参考2.2节。 (4)集体维护 系统中的数据块由整个系统中所有具有记账功能的节点来共同维护,任一节点的损坏或失去都不会影响整个系统的运作。 (5)安全可信 区块链技术采用非对称密码学原理对交易进行签名,使得交易不能被伪造;同时利用哈希算法保证交易数据不能被轻易篡改,最后借助分布式系统各节点的工作量证明等共识算法形成强大的算力来抵御破坏者的攻击,保证区块链中的区块以及区块内的交易数据不可篡改和不可伪造,因此具有极高的安全性。 (6)准匿名性 区块链系统采用与用户公钥挂钩的地址来做用户标识,不需要传统的基于PKI(Public Key Infrastructure)的第三方认证中心(Certif?icate Authority,CA)颁发数字证书来确认身份。通过在全网节点运行共识算法,建立网络中诚实节点对全网状态的共识,间接地建立了节点间的信任。用户只需要公开地址,不需要公开真实身份,而且同一个用户可以不断变换地址。因此,在区块链上的交易不和用户真实身份挂钩,只是和用户的地址挂钩,具有交易的准匿名性。。 区块链技术的核心优势是去中心化,能够通过运用哈希算法、数字签名、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中建立信用,实现点对点交易和协作,从而为中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。近年来,伴随着国内外研究机构对区块链技术的研究与应用,区块链的应用前景受到各行各业的高度重视,被认为是继大型机、个人电脑、互联网、移动/社交网络之后计算范式的第5次颠覆式创新,是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第4个里程碑。它被视为下一代云计算的雏形,有望彻底重塑人类社会活动形态,并实现从现在的信息互联网到价值互联网的转变。 2.1.3 区块链运作的核心技术  1.?区块链的链接 顾名思义,区块链即由一个个区块组成的链。每个区块分为区块头和区块体(含交易数据)两个部分。区块头包括用来实现区块链接的前一区块的哈希(PrevHash)值(又称散列值)和用于计算挖矿难度的随机数(nonce)。前一区块的哈希值实际是上一个区块头部的哈希值,而计算随机数规则决定了哪个矿工可以获得记录区块的权力。区块链的链接模型如图2-10所示。 图2-10 区块链的链接模型 2.?共识机制 区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。 区块链的共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法。 (1)PoW PoW(工作量证明),也就是像比特币的挖矿机制,矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区块加上随机数的哈希值满足一定的难度条件,例如前面10位是零。找到满足条件的随机数,就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。矿工把满足挖矿难度条件的区块在网络中广播出去,全网其他节点在验证该区块满足挖矿难度条件,同时区块里的交易数据符合协议规范后,将各自把该区块链接到自己版本的区块链上,从而在全网形成对当前网络状态的共识。 优点:完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。 缺点:目前比特币挖矿造成大量的资源浪费;另外挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。 (2)PoS PoS权益证明,要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。如果单纯依靠代币余额来决定记账者必然使得富有者胜出,导致记账权的中心化,降低共识的公正性,因此不同的PoS机制在权益证明的基础上,采用不同方式来增加记账权的随机性来避免中心化。例如点点币(PeerCoin)PoS机制中,拥有最多链龄长的比特币获得记账权的几率就越大。NXT和Blackcoin则采用一个公式来预测下一个记账的节点。拥有多的代币被选为记账节点的概率就会大。未来以太坊也会从目前的PoW机制转换到PoS机制,从目前看到的资料看,以太坊的PoS机制将采用节点下赌注来赌下一个区块,赌中者有额外以太币奖,赌不中者会被扣以太币的方式来达成下一区块的共识。 优点:在一定程度上缩短了共识达成的时间,降低了PoW机制的资源浪费。 缺点:破坏者对网络攻击的成本低,网络的安全性有待验证。另外拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。 (3)DPoS DPoS(股份授权证明)机制,类似于董事会投票。比特股(bitshares)采用的PoS机制是持股者投票选出一定数量的见证人,每个见证人按序有两秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。持股人可以随时通过投票更换这些见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。 优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。 缺点:选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。另外在网络节点数少的场景,选举的见证人的代表性也不强。 (4)分布式一致性算法 分布式一致性算法是基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft),详细见本书第5章的共识算法。该类算法目前是联盟链和私有链链场景中常用的共识机制。 优点:实现秒级的快速共识机制,保证一致性。 缺点:去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。 3.?解锁脚本 脚本是区块链上实现自动验证、自动执行合约的重要技术。每一笔交易的每一项输出严格意义上并不是指向一个地址,而是指向一个脚本。脚本类似一套规则,它约束着接收方怎样才能花掉这个输出上锁定的资产。 交易的合法性验证也依赖于脚本。目前它依赖于两类脚本:锁定脚本与解锁脚本。锁定脚本是在输出交易上加上的条件,通过一段脚本语言来实现,位于交易的输出。解锁脚本与锁定脚本相对应,只有满足锁定脚本要求的条件,才能花掉这个脚本上对应的资产,位于交易的输入。通过脚本语言可以表达很多灵活的条件。解释脚本是通过类似我们编程领域里的“虚拟机”,它分布式运行在区块链网络里的每一个节点。 比特币的脚本目前常用的主要分为两种,一种是普通的P2PKH(Pay-to-Public-Key-Hash),即支付给公钥的哈希地址,接收方只需要使用地址对应的私钥对该输出进行签名,即可花掉该输出。另一种是P2SH(Pay-to-Script-Hash),即支付脚本的哈希。以多重签名来举例,它要求该输出要有N把私钥中的M把私钥(M≤N)同时签名才能花掉该资产,它类似于现实生活中需要多把钥匙才能同时打开的保险柜,或是多人签名才能使条约生效一样,只是它是自动执行。 比如在比特币中,P2PKH的脚本规则如下: Pubkey script: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG Signature script: <sig> <pubkey> P2SH的脚本规则如下: Pubkey script: OP_HASH160 <Hash160(redeemScript)> OP_EQUAL Signature script: <sig> [sig] [sig...] <redeemScript> 在上述的两种脚本规则里,Pubkey script代表锁定脚本,Signature script代表解锁脚本。OP_开头的单词是相关的脚本命令,也是“虚拟机”所能解析的指令。这些命令规则根据Pubkey script的不同来进行划分,它也决定解锁脚本的规则。 比特币中的脚本机制相对简单,只是一个基于堆栈式的、解释相关OP指令的引擎,能够解析的脚本规则并不是太多,不能实现很复杂的逻辑。但它为区块链可编程提供了一个原型,后续一些可编程区块链项目其实是基于脚本的原理发展起来的,比如以太坊就是深入增强了脚本机制,脚本机制里不再单单是简单的OP指令,而是支持脚本的一套图灵完备语言,该脚本语言可以通过“虚拟机”去执行。以太坊实现了一个支持图灵完备脚本语言的区块链平台。 脚本的机制对于区块链来说非常重要,它类似于区块链技术提供的一个扩展接口,任何人都可以基于这个接口开发基于区块链技术的应用,比如智能合约的功能。脚本机制也让区块链技术作为一项底层协议成为可能。未来很多基于区块链的颠覆性应用,都有可能通过区块链的脚本语言来完成。 4.?交易规则 区块链的交易就是构成区块的基本单位,也是区块链负责记录的实际有效内容。一个区块链交易可以是一次转账,也可以是智能合约的部署等其他事务。 就比特币而言,交易即指一次支付转账。其交易规则如下: 1)交易的输入和输出不能为空。 2)对交易的每个输入,如果其对应的UTXO输出能在当前交易池中找到,则拒绝该交易。因为当前交易池是未被记录在区块链中的交易,而交易的每个输入,应该来自确认的UTXO。如果在当前交易池中找到,那就是双花交易。 3)交易中的每个输入,其对应的输出必须是UTXO。 4)每个输入的解锁脚本(unlocking script)必须和相应输出的锁定脚本(locking script)共同验证交易的合规性。 对于以太坊来说,交易还可能是智能合约的部署。交易规则就确定了符合一定语法规则的合约才能被部署在区块链上。 5.?交易优先级 区块链交易的优先级由区块链协议规则决定。对于比特币而言,交易被区块包含的优先次序由交易广播到网络上的时间和交易额的大小决定。随着交易广播到网络上的时间的增长,交易的链龄增加,交易的优先级就被提高,最终会被区块包含。对于以太坊而言,交易的优先级还与交易的发布者愿意支付的交易费用有关,发布者愿意支付的交易费用越高,交易被包含进区块的优先级就越高。 6.?Merkle证明 Merkle证明的原始应用是比特币系统(Bitcoin),它是由中本聪(Satoshi Nakamoto)在2009年描述并且创造的。比特币区块链使用了Merkle证明,为的是将交易存储在每一个区块中。使得交易不能被篡改,同时也容易验证交易是否包含在一个特定区块中,Merkle树说明详见4.2节。比特币的Merkle证明树如图2-11所示。 图2-11 比特币的Merkle证明树 Merkle树的一个重要使用场景就是快速支付验证,也就是中本聪描述的“简化支付验证”(SPV)的概念:轻量级节点(light client)不用下载每一笔交易以及每一个区块,可以仅下载链的区块头,每个区块中仅包含下述5项内容,数据块大小为80字节。 上一区块头的哈希值 时间戳 挖矿难度值 工作量证明随机数(nonce) 包含该区块交易的Merkle树的根哈希 如果一个轻客户端希望确定一笔交易的状态,它可以简单地要求一个Merkle证明,显示出一个在Merkle树特定的交易,其根是在主链(main chain,非分叉链)上的区块头。 Merkle证明可以让区块链得到更广阔的应用,但比特币的轻客户有其局限性。虽然可以证明包含的交易,但无法证明任何当前的状态(例如:数字资产的持有,名称注册,金融合约的状态等)。一笔交易影响的确切性质(precise nature)可以取决于此前的几笔交易,而这些交易本身则依赖于更为前面的交易,所以最终你需要验证整个链上的每一笔交易。为了解决这个问题,以太坊进行了更进一步的创新。 以太坊的每一个区块头中并非只包含一棵Merkle树,而是包含了3棵Merkle树(见图2-12),分别对应了以下3种对象: 交易(Transactions) 收据(Receipts,基本上,它是展示每一笔交易影响的数据条) 状态(State) 图2-12 以太坊的Merkle证明树 这三棵树允许轻客户端轻松地进行并核实以下类型的查询答案: 1)这笔交易被包含在特定的区块中了吗? 2)告诉我这个地址在过去30天中,发出X类型事件的所有实例(例如,一个众筹合约完成了它的目标)。 3)目前我的账户余额是多少? 4)这个账户是否存在? 5)假装在这个合约中运行这笔交易,它的输出会是什么? 第一种是由交易树(transaction tree)来处理的;第3和第4种则是由状态树(state tree)负责处理,第2种则由收据树(receipt tree)处理。计算前4个查询任务是相当简单的。在服务器简单地找到对象,获取梅克尔分支,并通过分支来回复轻客户端。第5种查询任务同样也是由状态树处理。 7.?RLP RLP(Recursive Length Pref?ix,递归长度前缀编码)是Ethereum中对象序列化的一个主要编码方式,其目的是对任意嵌套的二进制数据的序列进行编码。 以太坊中的所有数据都以“递归长度前缀编码”(Recursive Length Pref?ix encoding,RLP)形式存储,这种编码格式将任意长度和维度的字符串构成的数组串连接成字符串。例如,['dog', 'cat']被串接(以字节数组格式)为[130,67,100,111,103,67,99,97,116];其基本的思想是把数据类型和长度编码成一个单独的字节放在实际数据的前面(例如‘dog’的字节数组编码为[100,111,103],于是串接后就成了[67,100,111,103])。注意RLP编码正如其名字表示的一样,是递归的;当RLP编码一个数组时,实际上是在对每一个元素的RLP编码级联成的字符串编码。需要进一步提请注意的是,以太坊中所有数据都是整数;所以,如果有任何的以一个或多个0字节开头的哈希或者地址,这些0字节应该在计算出现问题的时候去除。以太坊中没有串接数据结构包含任何以0开头的数值。整数以大端基础(Big Endian)256格式存储(例如32767字节数组格式为[127,255])。 2.1.4 区块链交易流程 以比特币的交易为例,区块链的交易并不是通常意义上的一手交钱一手交货的交易,而是转账。如果每一笔转账都需要构造一笔交易数据会比较笨拙,为了使得价值易于组合与分割,比特币的交易被设计为可以纳入多个输入和输出,即一笔交易可以转账给多个人。从生成到在网络中传播,再到通过工作量证明、整个网络节点验证,最终记录到区块链,就是区块链交易的整个生命周期。整个区块链交易流程如图2-13所示。 图2-13 区块链交易流程 交易的生成。所有者A利用他的私钥对前一次交易和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。 交易的传播。A将交易单广播至全网,每个节点都将收到的交易信息纳入一个区块中。 工作量证明。每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。 整个网络节点验证。当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对。 记录到区块链。全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。 2.2 以太坊 2.2.1 什么是以太坊 自2008年比特币出现以来,数字货币的存在已经渐渐为一部分人所接受。人们也积极展开了基于比特币的商业应用的思考与开发。但是随着应用的扩展,人们发现比特币的设计只适合虚拟货币场景,由于存在着非图灵完备性、缺少保存状态的账户概念,以及PoW挖矿机制所带来的资源浪费和效率问题,在很多区块链应用场景下并不适用。人们需要一个新的基于区块链的具有图灵完备性、高效共识机制、支持更多应用场景的智能合约开发平台。以太坊在这种情况下应运而生。 以太坊的目的是对脚本、竞争币和链上元协议(on-chain meta-protocol)等概念进行整合和提高,使得开发者能够创建任意的基于共识的、可扩展的、标准化的、图灵完备的、易于开发和协同的应用。 以太坊是一个通用的全球性区块链,可以管理金融和非金融类型应用的状态。以太坊的新颖在于其神奇的计算机网络,它促成了一种新型的软件应用,真正的去中心化应用。将信任逻辑嵌入小程序里,运行在区块链上。而与比特币相比,以太坊建立了一种新的密码学技术基础框架,在其上开发应用更加容易,并对轻客户端友好,同时允许应用共享一个可行的经济环境和可靠的区块链安全。以太坊在全球范围内激发了商业和社会创新,为前所未有的去中心化应用打开了大门。从长远来看,它所带来的改变将影响全球经济和控制结构。 以太坊是个平台和编程语言,包括数字货币以太币(Ether),以及用来构建和发布分布式应用的以太脚本(EtherScript)。 以太币和著名的数字货币比特币有非常多的相似之处。两者均为数字货币且无法伪造,都以去中心化的方式运行来保证货币供应不被某一方所控制。以太坊的另一半重要特性是提供一个完整的编程语言环境,有时也被叫作以太脚本。我们都知道,编程语言是人类用来控制计算机工作的。因此,用任何编程语言写好的指令对计算机来说都是准确无误没有歧义的。也就是说,计算机如何执行一段代码是没有二义性的。在同样的条件下,一段代码总是会按照既定的步骤执行。这种特性正是人类现行法律与合约所缺失的。因此,有了以太脚本之后,我们就可以制定没有二义性的合约了。 从最底层角度来看,以太坊是一个多层的、基于密码学的开源技术协议。它的不同功能模块通过设计进行了全面的整合,作为一个整体,它是一个创建和部署去中心化应用的综合平台。虽然,以太坊看起来像由多个互相联系的开源项目构成的混合体,但是它的进化一直被明确目标所引导,所以各个组件可以协同地组装在一起。 同时,以太坊也是区块链与智能合约的完美结合,是智能合约的完整解决方案,被设计成了一个通用的去中心化平台,拥有一套完整的、可以扩展其功能的工具,在P2P网络、加密、HttpClient等技术的支持下实现了一个类似于比特币的区块链。它通过工作量证明机制实现共识,由矿工挖矿,通过对新的网络协议的制定实现对区块链的同步等操作。不同于比特币的是,在以太坊上可以任意编写智能合约,通过智能合约实现强大的功能,实现去中心化应用的开发。在以太坊上部署的智能合约运行在以太坊特有的虚拟机上,通过以太坊虚拟机和RPC接口与底层区块链进行交互。 以太坊的总体系统架构如图2-14所示。 图2-14 以太坊总体架构 2.2.2 以太坊技术 1.?以太坊核心概念 (1)以太坊虚拟机 以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它是以太坊项目中的另一个主要创新。有人说EVM“位于区块链之上”,实际上它是由许多互相连接的计算机组成的。任何人都可以上传程序,并让这些程序自动执行,同时保证现在和所有以前的每个程序的状态总是公共可见的。这些程序运行在区块链上,严格地按照EVM定义的方式继续执行。所以任何人都可以为所有权、交易格式和状态转换函数创建商业逻辑。 (2)账户 以太坊中有两类账户,它们共用同一个地址空间。外部账户,该类账户被公钥-私钥对控制。合约账户,该类账户被存储在账户中的代码控制。外部账户的地址是由公钥决定的,合约账户的地址是在创建合约时由合约创建者的地址和该地址发出过的交易数量计算得到。两类账户的唯一区别是:外部账户没有代码,人们可以通过创建和签名一笔交易从一个外部账户发送消息。每当合约账户收到一条消息,合约内部的代码就会被激活,允许它对内部存储进行读取、写入、发送其他消息和创建合约。 以太坊的账户包含4个部分:①随机数,用于确定每笔交易只能被处理一次的计数器;②账户目前的以太币余额;③账户的合约代码(如果有的话);④账户的存储(默认为空)。 (3)消息 以太坊的消息在某种程度上类似于比特币的交易,但是两者之间存在3点重要的不同。 1)以太坊的消息可以由外部实体或者合约创建,然而比特币的交易只能从外部创建。 2)以太坊消息可以选择包含数据。 3)如果以太坊消息的接收者是合约账户,可以选择进行回应,这意味着以太坊消息也包含函数概念。 (4)交易 以太坊中“交易”是指存储从外部账户发出的消息的签名数据包。交易包含消息的接收者、用于确认发送者的签名、以太币账户余额、要发送的数据和被称为STARTGAS和GASPRICE的两个数值。为了防止代码出现指数型爆炸和无限循环,每笔交易需要对执行代码所引发的计算步骤做出限制。STARTGAS就是通过需要支付的燃料来对计算步骤进行限制,GASPRICE是每一计算步骤需要支付矿工的燃料的价格。 (5)Gas 以太坊上的每笔交易都会被收取一定数量的燃料Gas,设置Gas的目的是限制交易执行所需的工作量,同时为交易的执行支付费用。当EVM执行交易时,Gas将按照特定规则被逐渐消耗。Gas价格由交易创建者设置,发送账户需要预付的交易费用= GASPRICE * Gas amount。如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。无论执行到什么位置,一旦Gas被耗尽就会触发一个out-of-gas异常。同时,当前调用帧所做的所有状态修改都将被回滚。 (6)存储、主存和栈 每个账户都有一块永久的内存区域,被称为存储,其形式为key-value,key和value的长度均为256位。在合约里,不能遍历账户的存储。相对于主存和栈,存储的读操作开销较大,修改存储甚至更多。一个合约只能对它自己的存储进行读写。 第二个内存区被称为主存。合约执行每次消息调用时都有一块新的被清除过的主存。主存可以按字节寻址,但是读写的最小单位为32字节。操作主存的开销随着主存的增长而变大。 EVM不是基于寄存器的,而是基于栈的虚拟机。因此所有的计算都在一个称为栈的区域内执行。栈最大有1024个元素,每个元素有256位。对栈的访问只限于其顶端,允许复制最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的一个或几个元素,并把结果压在栈顶。当然可以把栈里的元素放到存储或者主存中。但是无法只访问栈里指定深度的那个元素,在那之前必须把指定深度之上的所有元素都从栈中移除才行。 (7)指令集 EVM的指令集被刻意保持在最小规模,以尽可能避免可能导致共识问题的错误。所有的指令都是针对256位这个基本的数据单位进行的操作,具备常用的算术、位、逻辑和比较操作,也可以进行条件和无条件跳转。此外,合约可以访问当前区块的相关属性,比如它的编号和时间戳。 (8)消息调用 合约可以通过消息调用的方式来调用其他合约,或者发送以太币到非合约账户。消息调用和交易非常类似,它们都有一个源,一个目标,数据负载,以太币,Gas和返回数据。事实上每个交易都可以被认为是一个顶层消息调用,这个消息调用会依次产生更多的消息调用。 一个合约可以决定剩余Gas的分配。比如内部消息调用时使用多少Gas,或者期望保留多少Gas。如果在内部消息调用时发生了out-of-gas异常或者其他异常,合约将会得到通知,一个错误码被压入栈中。这种情况只是内部消息调用的Gas耗尽。在solidity中,这种情况下发起调用的合约默认会触发一个人工异常,这个异常会打印出调用栈。 就像之前说过的,被调用的合约(发起调用的合约也一样)会拥有崭新的主存,并能够访问调用的负载。调用负载被存储在一个单独的被称为calldata的区域。调用执行结束后,返回数据将被存放在调用方预先分配好的一块内存中。调用层数被限制为1024。因此对于更加复杂的操作,我们应该使用循环而不是递归。 (9)代码调用和库 以太坊中存在一种特殊类型的消息调用,被称为callcode。它跟消息调用几乎完全一样,只是加载来自目标地址的代码将在发起调用的合约上下文中运行。这意味着一个合约可以在运行时从另外一个地址动态加载代码。存储,当前地址和余额都指向发起调用的合约,只有代码是从被调用地址获取的。这使得Solidity可以实现“库”。可复用的库代码可以应用在一个合约的存储上,可以用来实现复杂的数据结构,从而使智能合约更加的强大。 2.?以太坊的状态转换 以太坊的状态转换是指在一个交易(TX)发生时,以太坊从一个正确状态(S)转变到下一个正确状态(S’)的转换过程,如图2-15所示。对于交易而言,为了防止代码的指数型爆炸和无限循环,每笔交易需要对执行代码所引发的计算步骤做出限制。STARTGAS就是限制,GASPRICE是每一计算步骤需要支付矿工的费用价格。 图2-15 以太坊状态转换 以太坊的状态转换函数为APPLY(S, TX) -> S’,可以定义如下: 1)检查交易的格式是否正确,签名是否有效,以及随机数是否与发送者账户的随机数匹配。如否,返回错误。 2)计算交易费用fee = STARTGAS * GASPRICE,并从签名中确定发送者的地址。从发送者的账户中减去交易费用和增加发送者的随机数。如果账户余额不足,返回错误。 3)设定初值Gas = STARTGAS,并根据交易中的字节数减去一定量的燃料值。 4)从发送者的账户转移价值到接收者账户。如果接收账户还不存在,创建此账户。如果接收账户是一个合约,运行合约的代码,直到代码运行结束或者燃料用完。 5)如果因为发送者账户没有足够的费用或者代码执行耗尽燃料导致价值转移失败,恢复原来的状态,但是还需要支付交易费用,交易费用加至矿工账户。 6)若代码执行成功,将所有剩余的燃料归还给发送者,消耗掉的燃料作为交易费用发送给矿工。 例如,假设一个合约的代码如下: if !contract.storage[msg.data[0]]: contract.storage[msg.data[0]] = msg.data[1] 需要注意的是,在现实中合约代码是用底层以太坊虚拟机(EVM)代码写成的。上面的合约是用我们的高级语言Serpent语言写成的,它可以被编译成EVM代码。假设合约存储器开始时是空的,一个值为10以太、燃料为2000、燃料价格为0.001以太并且两个数据字段值为[2,'CHARLIE']的交易发送后,状态转换函数的处理过程如下: 1)检查交易是否有效,格式是否正确。 2)检查交易发送者是否至少有2000×0.001=2个以太币。如果有,从发送者账户中减去2个以太币。 3)初始设定Gas=2000,假设交易长为170字节,每字节的费用是5,减去850,所以还剩1150。 4)从发送者账户减去10个以太币,为合约账户增加10个以太币。 5)运行代码。在这个合约中,运行代码很简单:它检查合约存储器索引为2处是否已使用,注意到它未被使用,然后将其值置为CHARLIE。假设这消耗了187单位的燃料,于是剩余的燃料为1150-187 = 963。 6)向发送者的账户增加963×0.001=0.963个以太币,返回最终状态。 如果没有合约接收交易,那么所有的交易费用就等于GASPRICE×交易的字节长度,交易的数据就与交易费用无关了。另外,需要注意的是,合约发起的消息可以对它们产生的计算分配燃料限额,如果子计算的燃料用完了,它只恢复到消息发出时的状态。因此,就像交易一样,合约也可以通过对它产生的子计算设置严格的限制,保护它们的计算资源。 3.?以太坊客户端 为了测试各种语言对以太坊的支持,同时使更多的人能够参与以太坊的开发及使用,目前有4种语言编写的以太坊的客户端。它们分别是用Go语言实现的客户端Geth,用C++实现的客户端Eth,用Python语言实现的客户端Pyethapp和用Java实现的客户端EthereumJ。其中,Go语言版是以太坊官方一直维护并推荐使用的客户端。 以太坊包括一个专用的客户端浏览器,使得用户可以运行各种各样的去中心化应用(DApp),发布智能合约。这一浏览器被称为Mist,它易于使用,降低了用户使用门槛,从而使得DApp和智能合约能够被大量用户使用。它的作用等同于浏览器之于互联网或者iTunes之于数字化内容下载。Mist由特殊的安全层、密钥管理、去中心化账户管理和与区块链相关的组件几部分组成。这一切使得Mist成为普通用户运行或者管理区块链去中心化应用不可或缺的工具,普通用户不需要理解技术方面的东西。 从用户体验角度而言,可以在Mist中使用DApp,就像通过常规浏览器与网站进行交互一样。例如,一个纯DApp(例如预测市场Augur)就可以在以太坊Mist浏览器中运行。当然,这些服务也可以通过一个常规浏览器以更加传统的Web 2.0的方式实现。 2.2.3 以太坊智能合约 1.?智能合约 智能合约是由尼克萨博提出的理念,几乎与互联网同龄。但是由于缺少可信的执行环境,智能合约并没有被应用到实际产业中。自从比特币诞生后,人们认识到比特币的底层技术区块链天生可以为智能合约提供可信的执行环境,以太坊首先实现了区块链和智能合约的完整契合。 以太坊是内置有图灵完备编程语言的区块链,通过建立抽象的基础层,使得任何人都能够创建合约和去中心化应用,并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。建立一个代币的主体框架只需要两行代码就可以实现,诸如货币和信誉系统等其他协议只需要不到20行代码就可以实现。智能合约就像能在以太坊的平台上创建的包含价值而且只有满足某些条件才能打开的加密箱子,并且因为图灵完备性、价值意识(value-awareness)、区块链意识(blockchain-awareness)和记录多状态所增加的功能而比比特币脚本所能提供的智能合约强大得多。 2.?开发语言 以太坊的软件开发语言是其最大特性之一,因为对区块链进行编程是一项首要目标。以太坊具有4种专用语言:Serpent(受Python启发)、Solidity(受JavaScript启发)、Mutan(受Go启发)和LLL(受Lisp启发),都是为面向合约编程而从底层开始设计的语言。 作为以太坊的高级编程语言,Serpent的设计非常类似于Python。它被设计为最大可能地简洁和简单,将低级语言的高效优势与编程风格中的易用性相结合。 Solidity是以太坊的首选语言,它内置了Serpent的所有特性,但是语法类似于JavaScript。Solidity充分利用了现有数以百万程序员已掌握JavaScript这一现状,降低了学习门槛,易于被掌握和使用。 以太坊区块链的另一关键特征是它的“图灵完备性”,这保证了以太坊可以解决所有的计算问题。更加准确地说,它是“半”图灵完备的,因为它是通过对计算量设置上限,它避免了完全图灵完备语言存在的无法停机问题。此外,因为以太坊的语言是为区块链专门设计的,它有账户的概念,使得它在交易的可视化和查询账户状态方面提供了实时性。这是一个受人欢迎的功能,但对比特币而言实现起来具有一定的挑战。在比特币上,由于只有UTXO而没有账户的概念,我们需要导入区块链数据库,解析所有的交易,并为了抽取出在区块链上的某个用户的交易情况而查询交易。而用以太坊,我们则可以在实时的区块链上,根据一个地址情况实时查看当前账户情况和交易状态。 3.?代码执行 以太坊合约的代码是使用低级的基于堆栈的字节码的语言写成的,被称为“以太坊虚拟机代码”或者“EVM代码”。代码由一系列字节构成,每一个字节代表一种操作。一般而言,代码执行是无限循环,程序计数器每增加一(初始值为零)就执行一次操作,直到代码执行完毕或者遇到错误、STOP或者RETURN指令。操作可以访问3种存储数据的空间: 1)堆栈,一种后进先出的数据存储,入栈、出栈的基本单位为32字节。 2)内存,可无限扩展的字节队列。 3)合约的长期存储,一个密钥/数值的存储,其中密钥和数值都是32字节大小。与计算结束即重置的堆栈和内存不同,存储内容将长期保持。 代码可以像访问区块头数据一样访问数值、发送和接收到的消息中的数据,代码还可以返回数据的字节队列作为输出。EVM代码的正式执行模型非常简单。当以太坊虚拟机运行时,它的完整的计算状态可以由元组(block_state,transaction,message,code,memory,stack,pc,gas)来定义,这里block_state是包含所有账户余额和存储的全局状态。每轮执行时,通过调出代码的第pc(程序计数器)个字节,每个指令如何影响元组都有定义。例如,ADD将两个元素出栈并将它们的和入栈,将Gas减1并将pc加1;stack将顶部的两个元素出栈,并将第2个元素插入由第1个元素定义的合约存储位置,同样减少最多200的Gas值,并将pc加1。虽然有许多方法通过即时编译去优化以太坊,但以太坊的基础性的实施可以用几百行代码实现。 2.2.4 以太坊的去中心化应用 1.?什么是DApp 一个DApp是由智能合约和客户端代码构成的。智能合约就像加密的包含价值的箱子。只有当特定条件被满足时它才被打开,它封装了一些逻辑、规则、处理步骤或者双方间的协议。 从架构角度而言,DApp非常类似于传统的Web应用。主要区别是:在传统Web应用中,客户端有JavaScript代码,由用户在自己的浏览器中执行;服务器端的代码由主机运行。但是在一个DApp中,它的智能逻辑运行在区块链上,客户端代码运行在特殊浏览器Mist里面。 2.?应用举例 正如苹果电脑公司的App Store给众多公司和个人提供了极佳的商业机会一样,以太坊这样的平台上一定会出现类似“愤怒的小鸟”这样的成功范例,对于IT导向的创业公司和个人,这是一个广阔的空间。下面举几个例子,看看这个空间中正在孕育的项目。 Augur(www.augur.net),一个正在开发去中心化预测系统。Augur在英文中的意思是“预言家”,用户可以在这个应用上对各种事件打赌并下注,例如希拉里会不会赢得2016年美国的大选;2016年中国的GDP增长会不会超过7%;上证指数2020年之前会不会超10000点,等等。对于参与者而言,如果预测正确,则将获得经济上的回报;而对于社会整体而言,Augur便成了一个群体智慧的收集器,在它上面的下注信息反映了人们对于未来某事件发生可能性的最佳评估。当你打开搜索引擎,输入“×××会不会赢得2020年美国的大选”的时候,可能搜到这样的结果:“Augur:该事件发生的可能性为46.6%”。 Maker(www.makerdao.com),一个正在开发中的金融类去中心化自治组织。Maker是一个去中心化自治组织(Decentralized Autonomous Organization,DAO),它维护一系列用于金融服务的合约软件(即智能合约),其中的一个软件是贷券信贷系统(The Dai Credit System)。贷券信贷系统是一个通过抵押进行借贷的应用,当用户在区块链上拥有众多资产时,一个必然的需求就是,在不出售资产的情况下通过抵押借款获得资金,类似于房屋抵押贷款。 WeiFund,一个正在开发中的去中心化众筹平台。这个众筹平台的好处是资金不需要第三方托管,而是由程序托管,因此能够确保资金100%安全。如果在限定时间内众筹项目的资助超过预定目标,则程序将资金发送给创业者;如果目标未达到,则将资金退回给众筹参与者。 Boardroom,一个正在开发中的DAO管理平台。去中心化自治组织与传统公司一样,也可以有股份的概念,通常就是DAO的代币,这些代币又可以有投票权。与上一个例子中的WeiFund结合,可以发生有趣的事:如果众筹募资的目标达到,则WeiFund可以将资金发送给Boardroom,并将该众筹项目的参与者组成DAO。如此一来,这些参与者便可以通过投票来控制资金的具体使用,而不是简单地将资金一次性发放给创业者,这样便大大避免了来自创业者的道德风险。 Ujo Music,一个音乐版权管理平台,测试版。Ujo Music作为音乐版权管理平台,可以直接在歌曲的创作者与消费者之间建立直接的联系,从而省去了中间商的费用提成。更进一步,歌手甚至可以将自己的作品在WeiFund上进行IPO上市,如此一来,持有歌手代币的投资者就会分得歌手今后歌曲的销售收入,他们是歌手天然的铁杆粉丝团。帮助歌手推广音乐也不仅仅出于经济动机,同时也是出于情感上的支持,试想在周杰伦默默无闻的时候就持有他的代币,该是一件多么令粉丝感到骄傲的事。同时代币也是歌手与粉丝团之间互动的媒介,例如歌手可以让持有代币的粉丝优先购买演唱会的门票,如此,粉丝经济会更加红火。 贷券(Decentralized Autonomous Insured Bond)简称Dai或者Dai Bond,是一种可转让的、彼此等价可互换的“加密债券”,它流通于信贷系统中,使用者无需事先认证,同时又是低风险的。贷券的发行人(借款方)将在以太坊区块链上的以太等数字加密资产作为抵押品来发行贷券,再将这些贷券在市场上卖给贷券持有人以换回流动性好的资产。贷券的持有人之所以买入贷券是为了赚取收益,或者是为了将贷券当作价值稳定的加密货币来流通使用。 2.3 基于区块链的电子货币 2.3.1 元币平台 元币(metacoin)单词前缀“meta-”意为“在其中”。所以元币是衍生于现有加密货币体系之上,更专注于业务系统的代币种类。 (1)彩币 彩币(Colored Coins)是一种建立在比特币数据块上的高级衍生应用协议。彩币建立在P2P网络之上,具有去中心化的所有优势,可以用来进行任何虚拟财产和现实资产的交易,并且比传统金融交易更加快捷和方便,更重要的是,它没有手续费。彩币由一种特殊的钱包负责管理,进行记录和阐释附加在彩币中的元数据。通过这种钱包,用户可以通过添加标签,将一定量的比特币转化为彩币,使其具有特殊意义。而这种特殊意义,往往使其价值提升。相关元数据是由用户来定义的,并且使比特币转化为彩币。彩币一旦定义,便可以进行买卖、分销、积累或者分红。当然,也可以去颜色化,回归比特币。 (2)万事达币 万事达币(mastercoin)发布于2013年6月24日,是建立在比特币协议之上的二代币,旨在帮助用户创建并交易加密货币以及其他类型的智能合同。万事达币不仅仅是一种代币,更像是一个去中心化的财产交易、合同签署、用户货币、智能财产代币等的平台。打个形象的比方,就像HTTP运行在TCP层之上一样,万事达币是工作于比特币交易层之上的应用层协议。 (3)合约币 合约币(counterparty)是另一种建立在比特块链基础之上的协议层,它把比特币块链当成可信的时间戳服务和可信的信息发布证明。合约币在比特币中添加额外的信息记录,以此强化比特币的交易。合约币实现了用户货币、可交易代币、财经工具、去中心化交易等一些功能。 2.3.2 代币 尽管部分代币没有使用比特币,而是直接在区块链的基础上全新创建的,但事实上,大多数代币都是比特币衍生出来的。其中最值得一提的是莱特币(Litecoin),而莱特币本身又被作为代币的母币,衍生出更多新的代币。以同样方式诞生的还有代链这个概念。如同字面意思,两者的区别在于,代币用作货币目的,而代链用于非货币目的。本节介绍内容属于代币范畴。 代币的创建过程非常简单。2011年8月,通过修改比特币的一些参数,加速货币的产生速度,世界上第一种代币IXCoin诞生。自此以后,代币发展极其迅速。到2016年,已经有超过600种代币发布,并且,大部分是莱特币的变种。它们与比特币的差异主要存在于货币政策、工作量证明和共识机制以及所引入的新特性方面。其实,大多数代币之间差异甚微,甚至,有些代币的产生,只是发明者为了增加收入的一种手段,并不具备研究价值。但是,这些代币中还是有一些比较明显的例外,或者说有非常重要的创新值得我们学习。那么如何衡量一种代币呢?通常从如下几个方面思考:是否具有重大创新?是否能因为与比特币的区别从比特币吸引过来用户?是否针对市场或者应用?是否能吸引足够多的矿工来抵御联合作弊?财经和市场指标上,又可以从资本量、预计用户量、日交易量和流通性上来评价一种代币。 1.?通过货币参数修改而建立的代币 比特币有一些货币参数来预防货币通货膨胀。比特币限制为2100万主要货币单元的货币总量。许多代币修改了比特币的主要参数,从而实现了新的不同货币政策。最具代表性的有如下几种。 (1)莱特币 要介绍莱特币(Litecoin),就不得不提Tenebrix,它是第一个应用不同工作量证明算法的加密货币。此算法被称作scrypt,是专门为预防暴力破解密码而设计的。Tenebrix并没有成功,却为莱特币的诞生奠定了基础。作为主要的成功代币,莱特币的核心是继承了scrypt算法,修改了块产生时间,使之从比特币的10分钟缩短到2.5分钟,从而成为一种轻型代币。拥护者们认为,相对于比特币,莱特币更适合零售业的交易。更重要的是,以莱特币为基础,后来延伸出来上百种类似的代币。 提示: 块产生时间,2.5分钟;总货币量,8400万(2140年);共识算法,工作量证明Scrypt;市值, 96 961万元(2016年年中)。 (2)狗狗币 作为莱特币的变种,狗狗币(Dogecoin)发布于2013年12月。狗狗币的货币政策特点是发行迅速,货币配额巨大。 提示: 块产生时间,1分钟;总货币量,10?000亿(2016年年中);共识算法,工作量证明Scrypt;市值,8201万元(2016年年中)。 (3)运输币 运输币(Freicoin)发布于2012年7月,是一种滞期代币。其储存额具有负利率。运输币不鼓励持有,它收取4.5%的年费来促进消费。运输币之所以出名,是因为它所采用的货币政策与比特币的通货紧缩政策完全相反。作为代币,运输币并没有取得成功,却成为了供代币借鉴的多样性货币政策的重要一员。 提示: 块产生时间,10分钟;总货币量,1亿(2140年);共识算法,工作量证明SHA256;市值,13万美元(2014年年中)。 2.?基于共识机制的创新而建立的代币 比特币的共识机制是建立在用SHA256算法加密的作业证据基础之上的。从此,共识机制的创新进入了一个狂热的发展阶段。一些代币采用了各式各样的算法,如:Scrypt、Scrypt-N、Skein,Groestl、SHA3、X11、Blake等。还有的代币同时采用其中的几种算法。2013年,作为工作量证明的替代品,权益证明(Proof of Stake)被提出,为许多新代币的诞生提供了基础。权益证明系统中,拥有者可以将货币像股票一样抵押生息。它在某种程度上类似于存款证明,持有者可以保留所持货币的一部分,同时,以利息支付和交易费的形式赚取投资回报。 (1)点点币 点点币(Peercoin)诞生于2012年8月,是第一种综合使用工作量证明和权益证明机制来发行新币的代币。 提示: 块产生时间,10分钟;总货币量,不限;共识算法,工作量证明机制与权益证明结合;市值,5825万元(2016年年中)。 (2)Myriad Myriad发行于2014年2月,具有复合算法的特性,是第一个同时包含5种算法的加密货币。与比特币只能使用SHA256矿机挖矿不一样,Myriad兼容SHA256、Scrypt等算法,同时兼容GPU及CPU挖矿。Myriad对共识攻击具有更强的抵抗力,这是因为只有多种挖矿算法同时被攻击时才会受到攻击。 提示: 块产生时间,平均0.5分钟;总货币量,20亿(2024年);共识算法,工作量证明机制与多算法共用;市值, 12万美元(2014年年中)。 (3)黑币 发行于2014年2月的黑币(Blackcoin)使用权益证明作为共识算法。黑币走进人们的视野是因为它引入了多池这种可以根据利润差异在不同代币间自动切换的挖矿池。 提示: 块产生时间,1分钟;总货币量,不限;共识算法,权益证明;市值,1125万元(2016年年中)。 (4)维理币 维理币(VeriCoin)发行于2014年5月。它使用权益证明共识机制,并且采用根据市场供求动态调节的利率。同时,维理币也是第一种可以自动兑换成比特币的代币。 提示: 块产生时间,1分钟;总货币量,不限;共识算法,权益证明;市值,390万元(2016年年中)。 (5)未币 未币(NXT)彻底抛弃工作量证明,而仅仅使用权益证明共识机制,故NXT是一种全新的加密货币,因此不应称之为比特币的变种或者代币。NXT具有许多先进特性,如:名称注册、去中心化的财产交易、整合分散的安全消息、股票代表等。因此,NXT常被称作下一代数字加密货币。 提示: 块产生时间,1分钟;总货币量,不限;共识算法,权益证明;市值,3816万元(2016年年中)。 3.?通过双目标挖矿机制创新而建立的代币 比特币的工作量证明算法仅仅具有一个目的,那就是确保比特链的安全。尽管相对于传统支付系统的安全,这点挖矿开销并不高,但是被指是一种浪费。双目标工作量证明算法在产生工作量证明来满足安全的同时,解决一个具体的问题。但这样做也带来一定的风险。在向货币安全添加额外功能的同时,也影响了其供求曲线。 (1)质数币 质数币(Primecoin)发行于2013年7月,据称其“具有数学价值”。这种币尝试把虚拟货币中无目的的算法所浪费的资源利用起来。质数币的工作量证明机制有一定的科学价值。所以从某种意义上讲,质数币的矿工在挖矿的同时也促进了科学的进步。质数币是没有总量上限的。但是,质数币的产生速度很慢,这与大质数的计算困难特性有关。 提示: 块产生时间,1分钟;总货币量,不限;共识算法,工作量证明和质数链发现;市值,533万元(2016年年中)。 (2)治疗币 治疗币(Curecoin)发行于2013年5月。它将SHA256工作量证明算法与蛋白质折叠研究相结合,强调对生命科学和医学的贡献。其中蛋白质折叠是蛋白质生化反应的计算密集型模拟,目的在于发现新药。 提示: 块产生时间,10分钟;总货币量,不限;共识算法,工作量证明和蛋白质折叠研究;市值,194万元(2016年年中)。 (3)格雷德币 格雷德币(Gridcoin)发行于2013年10月。它支持基于scrypt的工作量证明算法。格雷德币通过伯克利的分布式计算项目(BOINC)进行包罗万象的科学探索,只有在挖矿的同时运行BOINC才能够获得较多的币。BOINC是一种科研网格计算的开放协议,允许参与者贡献自己的空余计算力来进行一系列科研计算。所以,不同于质数币和治疗币那样目的单一,格雷德币可以通过BOINC这个计算平台帮助进行各种科学研究,包括寻找外星人、计算RNA结果等。 提示: 块产生时间,2.5分钟;总货币量,不限;共识算法,工作量证明和BOINC网格计算;市值,2858万元(2016年年中)。 4.?注重隐私性的代币 比特币常常被误认为具有隐私性。事实上,通过大数据分析,关联身份和比特币地址相对容易,从而通过连接彼此的地址,解析一个人的比特币消费习惯。所以,一些代币专注于强隐私性,试图直接解决此问题。 (1)零币 零币(Zerocoin)作为比特币之上保持隐私性的元币协议,是针对隐私性的第一个尝试。它诞生于2013年,仅是一种针对数字货币隐私性的理论方法。应用零币理论的代币叫作Zerocash,至今仍在研究阶段,并未发行。 (2)CryptoNote CryptoNote公布于2012年12月,是一种为匿名数字货币提供基础的参考实践代币。它的设计初衷就是为了不同的实践并且内置定时重置机制,这使得它本身不太可能成为一种货币。CryptoNote的出名还来自于它不是比特币的翻版,而是全新从头设计实践的加密货币。基于CryptoNote衍生出来的数字货币还有Bytecoin(BCN)、Aeon(AEON)、Boolberry(BBR)、DuckNote(DUCK)、Fantomcoin(FCN)、Monero(XMR)、MonetaVerde(MCN)和Quazarcoin(QCN)等。更详细的CryptoNote衍生代币请见网页https://en.wikipedia.org/wiki/File:Forks-tree-f?ixed.png。 (3)百特币 百特币(Bytecoin)发行于2012年7月,是第一个衍生自CryptoNote的代币(比CryptoNote本身的发行早)。百特币基于CryptoNote技术,提供一种可行的匿名货币。它从CryptoNote继承了环签名、非连接交易和抵制区块链分析的隐私性。之后,百特币还进行了包括多签名交易、安全更新等方面的改进。 提示: 块产生时间,2分钟;总货币量,1.84亿元;共识算法,工作量证明Cryptonight;市值, 2909万元(2016年年中)。 (4)门罗币 门罗币(Monero,XMR)是CryptoNote的另外一种应用。相比于百特币,它具有略微平坦的发行曲线,在前4年就发行了80%。它继承了CryptoNote所有的隐私性。 提示: 块产生时间,1分钟;总货币量,1844万元;共识算法,工作量证明Cryptonight;市值,2622万元(2016年年中)。 (5)黑暗币 黑暗币(Darkcoin)发布于2014年1月。作为匿名货币,它对所有交易采用一种叫作DarkSend的再混合协议。另外,黑暗币的出名还在于它在工作量证明算法中使用了11种不同的哈希函数(blake、bmw、groestl、jh、keccak、skein、luffa、cubehash、shavite、simd、echo)。 提示: 块产生时间,2.5分钟;总货币量,2200万(2016年年中);共识算法,作业证明多算法共用;市值,1900万美元(2014年年中)。 2.3.3 货币的未来 加密货币的未来整体来说比比特币更加繁荣。它们在比特币的基础上引进了全新的去中心化的组织形式和共识机制,并由此衍生出了数以百计的不可思议的创新。这将影响与经济相关的众多部门,如:财政、经济、货币、中央银行、企业管理等。 许多之前需要中心机构来执行授权或信用控制的活动,现在可以去中心化了。区块链和共识机制的发明,在根除权力集中、腐败、监管俘获的同时,必将大幅度削减组织和大规模系统协调的费用。 2.4 本章小结 本章主要介绍了区块链技术的基础知识。首先,介绍了区块链技术,这是这本书的基础,包括区块链技术的基本概念、框架与特点,核心技术及交易流程。在这个基础之上,我们详细介绍了区块链技术最成功的应用——比特币,包括概念、原理、及隐私模型。之后,我们介绍了区块链的另外一个重要应用——以太坊。以太坊是区块链技术发展的一个重要的方向,是区块链技术未来的一部分。我们介绍了以太坊技术、以太坊智能合约、以太坊去中心化应用、以太坊发展的现状及未来。最后,我们分析了现有的流行的电子货币各自的优缺点。 参考资料 [1] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(4). [2] Antonopoulos A M. Mastering Bitcoin: Unlocking Digital Crypto-Currencies[J]. Oreilly Media Inc Usa, 2015. [3] Swan M. Blockchain: blueprint for a new economy[M]. O'Reilly, 2015. [4] 以太坊(Ethereum):下一代智能合约和去中心化应用平台.以太坊爱好者,2016-06-23. [5] Deutsch Bank, Banking & Technology Snapshot, DB Research, 20 December 2012. [6] Vatalik Buterin, Merkling-in-Ethereum, https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/.
文章
存储 · 算法 · 安全 · 区块链 · 云计算
2017-05-02
数据挖掘与数据化运营实战
大数据技术丛书 数据挖掘与数据化运营实战:思路、方法、技巧与应用 卢辉  著 图书在版编目(CIP)数据 数据挖掘与数据化运营实战:思路、方法、技巧与应用 / 卢辉著.—北京:机械工业出版社,2013.6 (大数据技术丛书) ISBN 978-7-111-42650-9 I. 数… II. 卢… III. 数据采集 IV. TP274 中国版本图书馆CIP数据核字(2013)第111479号 版权所有·侵权必究 封底无防伪标均为盗版 本书法律顾问 北京市展达律师事务所     本书是目前有关数据挖掘在数据化运营实践领域比较全面和系统的著作,也是诸多数据挖掘书籍中为数不多的穿插大量真实的实践应用案例和场景的著作,更是创造性地针对数据化运营中不同分析挖掘课题类型,推出一一对应的分析思路集锦和相应的分析技巧集成,为读者提供“菜单化”实战锦囊的著作。作者结合自己数据化运营实践中大量的项目经验,用通俗易懂的“非技术”语言和大量活泼生动的案例,围绕数据分析挖掘中的思路、方法、技巧与应用,全方位整理、总结、分享,帮助读者深刻领会和掌握“以业务为核心,以思路为重点,以分析技术为辅佐”的数据挖掘实践应用宝典。     全书共19章,分为三个部分:基础篇(第1~4章)系统介绍了数据分析挖掘和数据化运营的相关背景、数据化运营中“协调配合”的核心,以及实践中常见分析项目类型;实战篇(第6~13章)主要介绍实践中常见的分析挖掘技术的实用技巧,并对大量的实践案例进行了全程分享展示;思想意识篇(第5章,第14~19章)主要是有关数据分析师的责任、意识、思维的培养和提升的总结和探索,以及一些有效的项目质控制度和经典的方法论介绍。 机械工业出版社(北京市西城区百万庄大街22号  邮政编码 100037) 责任编辑:朱秀英                                             印刷  2013年6月第1版第1次印刷 186mm×240 mm·17.25印张   标准书号:ISBN 978-7-111-42650-9 定  价:59.00元 凡购本书,如有缺页、倒页、脱页,由本社发行部调换 客服热线:(010)88378991 88361066 投稿热线:(010)88379604 购书热线:(010)68326294 88379649 68995259 读者信箱:hzjsj@hzbook.com 推 荐 序     所谓,自知者明。     一个数据分析师,在面对海量数据时,偶尔把自己也当做对象去分析、思考、总结,才能成为一位有那么点儿味道的数据分析师,才能不断地审视、提升分析水平,才能在数据分析的道路上走得更远。     本书就是作者卢辉对过去10年数据挖掘职业生涯的自省、总结、提炼。     以前看的数据挖掘书籍,很难看到国内企业的完整实例。而本书分享的数据化运营实战案例都是来自阿里巴巴B2B近3年来的商业实践, 有立竿见影的案例,也有充满了波折和反复的案例。面对这些实战中的挫折和曲折,作者分享了如何调整思路、调整方法,如何与业务方一起寻找新方案,最终如何达成满意的商业应用效果。这些分享都非常真实、非常可贵,相信这些完整的实战案例将给你全新的阅读体验,还你一个真实清楚的有关数据挖掘商业应用的原貌,也会对读者今后的数据挖掘商业实践起到很好的启迪和参考作用。     从这个角度看,本书就是作者摸索出的一系列有关数据挖掘和数据化运营的规律,是作者对数据分析师有效工作方法的框架和总结。     如果你是新入行(或者有兴趣进入数据分析行业)的读者,这本书对你是非常有参考和指导意义的:帮助你尽快入门,尽快成长。如果你是已具有一定工作经验的数据分析专业人士,本书亦可作为一面“镜子”,去引发你对于“自己的思考”、“自己的总结”。     通过阅读本书,读者朋友们可以问问自己:      数据分析挖掘的技巧,掌握了多少?      书中的实战案例,有实操过吗?      数据分析师对分析/数据的态度,你是否具备?      如何有效管理团队?     如果上述某些方面你没有想过,这本书会给你有意义的启迪。     最后,请允许我再唠叨些数据的未来吧:     关于分析师     不久的将来,或就是现在,数据分析师将直面新的挑战(也是一次转型机会):在原有分析师职业定位上,为了与业务应用更加贴合,开始逐步融入产品经理“角色”:善于总结、善于提炼、善于推而广之、善于把自己的分析“产品化”。要做到这些,就要求数据分析师必须对数据的理解更透彻,对商业的理解更深入。     在成熟阶段,数据分析师们将是一群具备了商业理解、数据分析、商业应用思考这三大核心能力的综合体。     关于数据质量     在数据化运营道路上,有不少难题亟待解决。其中最棘手、最突出的就是数据质量。     企业的数据化商业实践中,“数据给自己用”与“数据给别人去用”是两个完全不同难度的课题,好比在家做几道家常菜和开餐厅,后者对于口味质量更为严格苛刻,食客们的眼睛都盯着呢。     这本书写了“自己使用数据、分析数据”的心得;在未来,当数据可以很容易地被大家使用的时候,我们会发现数据的力量已经渗透到每个人的决策环节里了。 车品觉 阿里巴巴数据委员会会长 前  言 为什么要写这本书     自从2002年第一次接触 “数据挖掘”(Data Mining)这个新名词以来,转眼之间我已经在数据挖掘商业应用相关领域度过了11年。这11年里我既见识了国外数据挖掘商业应用如火如荼地开展;又经历了从21世纪开始,国内企业在数据挖掘商业应用中的摸索起步,到如今方兴未艾的局面;更有幸在经历了传统行业的数据挖掘商业应用之后,投身到互联网行业(当今数据分析商业应用热火朝天、发展最快,并且对数据和数据挖掘的商业应用依赖性最强的行业)的数据挖掘商业实践中。这11年是我职业生涯中最为重要的一段时光,从个人生存的角度来说,我找到了谋生和养家糊口的饭碗—数据挖掘工作;从个人归属的角度来说,我很幸运地碰到了职业与兴趣的重合点。     在国内,“数据挖掘”作为一门复合型应用学科,其在商业领域的实践应用及推广只有十几年的时间,在此期间,国内虽然陆续出版了一些相关的书籍,但是绝大多数都是基于理论或者国外经验来阐述的,少有针对国内企业相关商业实战的详细介绍和分享,更缺乏从数据分析师的角度对商业实战所进行的总结和归纳。因此,从商业应用出发,基于大量的商业实战案例而不是基于理论探讨的数据挖掘应用书籍成为当今图书市场和广大“数据挖掘”学习者的共同需求。     同时,在有幸与数据挖掘商业实践相伴11年之后,我也想稍微放慢些脚步,正如一段长途跋涉之后需要停下脚步,整理一路经历的收获和感悟一样,我希望将自己一路走来的心得与体会、经验与教训、挫折与成绩整理出来。     基于以上原因,我决定从数据挖掘的商业需求和商业实战出发,结合我10多年来在不同行业(尤其是最近4年在互联网行业)的大量数据挖掘商业实战项目,将自己这些年来积累的经验和总结分享出来,希望能够起到抛砖引玉的作用,为对数据挖掘商业实践感兴趣的朋友、爱好者、数据分析师提供点滴的参考和借鉴。同时,鉴于“数据化运营”在当今大数据时代已经成为众多(以后必将越来越多)现代企业的普遍经营战略,相信本书所分享的大量有关数据化运营的商业实践项目也可以为企业的管理层、决策层提供一定程度的参考和借鉴。     我相信,本书总结的心得与体会,可以推动自己今后的工作,会成为我的财富;同时,这些心得与体会对于部分数据分析师来说也可以起到不同程度的参考和借鉴作用;对于广大对数据挖掘商业应用感兴趣的初学者来说也未尝不是一种宝贵经验。     我是从机械制造工艺与设备这个与“数据挖掘”八竿子打不着的专业转行到数据挖掘商业应用行业的,这与目前国内绝大多数的数据分析挖掘专业人士的背景有较大差别(国内绝大多数数据分析挖掘专业人士主要来自统计专业、数学专业或者计算机专业)。我的职业道路很曲折,之所以放弃了自己没兴趣的机械制造工艺与设备专业,是因为自己喜欢市场营销。有幸在国外学习市场营销专业时了解并亲近了国外市场营销中的核心和基石—市场营销信息学(Marketing Informatics)。当然,这是国外10多年前的说法,换成行业内与时俱进的新说法,就是时下耳熟能详的“数据分析挖掘在市场营销领域的商业实践应用”)。说这么多,其实只是想告诉有缘的对数据挖掘商业实践感兴趣的朋友, “以业务为核心,以思路为重点,以挖掘技术为辅佐”就是该领域的有效成长之路。     很多初学者总以为掌握了某些分析软件,就可以成为数据分析师。其实,一个成功的数据挖掘商业实践,核心的因素不是技术,而是业务理解和分析思路。本书自始至终都在力图用大量的事实和案例来证明“以业务为核心,以思路为重点,以挖掘技术为辅佐”才是数据挖掘商业实践成功的宝典。     另外,现代企业面对大数据时代的数据化运营绝不仅仅是数据分析部门和数据分析师的事情,它需要企业各部门的共同参与,更需要企业决策层的支持和推动。 读者对象     对数据分析和数据挖掘的商业实践感兴趣的大专院校师生、对其感兴趣的初学者。     互联网行业对数据分析挖掘商业实践感兴趣的运营人员以及其他专业的人士。     实施数据化运营的现代企业的运营人员以及其他专业的人士,尤其是企业的管理者、决策者(数据化运营战略的制定者和推动者)。     各行各业的数据分析师、数据挖掘师。 勘误和支持     由于作者水平和能力有限,编写时间仓促,不妥之处在所难免,在此恳请读者批评指正。作者有关数据挖掘商业实践应用的专业博客 “数据挖掘 人在旅途”地址为http://shzxqdj.blog.163.com,欢迎读者和数据挖掘商业实践的爱好者不吝赐教。另外,如果您有关于数据挖掘商业实践的任何话题,也可以发送邮件到邮箱 chinadmer@163.com ,期待你们的反馈意见。 如何阅读本书     本书分为19章。     第1~4章为基础和背景部分,主要介绍数据分析挖掘和数据化运营的相关背景、数据化运营中“协调配合”的本质,以及实践中常见的分析项目类型。     第6~13章是数据分析挖掘中的具体技巧和案例分享部分,主要介绍实践中常见的分析挖掘技术的实用技巧,并对大量的实践案例进行了全程分享展示。     第5章,第14~19章是有关数据分析师的责任、意识、思维的培养和提升的总结与探索,以及一些有效的项目质控制度和经典的方法论。     本书几乎每章都会用至少一个完整翔实的实战案例来进行说明、反复强化“以业务为核心,以思路为重点,以挖掘技术为辅佐”,希望能给读者留下深刻印象,因为这是数据挖掘商业实践成功的宝典。 致谢     首先要感谢机械工业出版社华章公司的杨绣国(Lisa)编辑,没有您的首倡和持续的鼓励,我不会想到要写这样一本来自实践的书,也不会顺利地完成这本书。写作过程中,您的帮助让我对“编辑”这个职业有了新的认识,编辑就是作者背后的无名英雄。在本书出版之际,我向Lisa表达我深深的感谢和祝福。同时感谢朱秀英编辑在本书后期编辑过程中付出的辛劳,您的专业、敬业和细心使得书稿中诸多不完善之处得以修正和提高。     作为一名30多岁才从机械工程师转行,进入数据挖掘及其商业实践的迟到者,我在数据挖掘的道路上一路走来,得到了无数贵人的帮助和提携。     感谢我的启蒙导师,加拿大Dalhousie University的数据挖掘课程教授Tony Schellinck。他风趣幽默的授课风格,严谨扎实的专业功底,随手拈来的大量亲身经历的商业实战案例,以及对待学生的耐心和热情,让我作为一名外国学生能有效克服语言和生活环境的挑战,比较顺利地进入数据挖掘的职业发展道路。     感谢回国后给我第一份专业工作机会的前CCG集团(Communication Central Group)商业智能应用事业部总经理Justin Jencks。中国通Justin在我们一起共事的那段日子里,果敢放手让我尝试多个跨行业的探索性商业应用项目,给了我许多宝贵的机会,使我迅速熟悉本土市场,积累了不同行业的实战案例,这些对我的专业成长非常重要。     感谢4年前给我机会,让我得以从传统行业进入互联网行业的阿里巴巴集团ITBU事业部的前商业智能部门总监李红伟(菠萝)。进入互联网行业之后,我才深深懂得作为一名数据分析师,相比传统行业来说,互联网行业有太多的机会可以去尝试不同的项目,去亲历数不清的“一竿子插到底”的落地应用,去学习面对日新月异的需求和挑战。     在本书的编写过程中,得到了淘宝网的商品推荐高级算法工程师陈凡(微博地址为hppt://weibo.com/bicloud)和阿里巴巴B2B的数据仓库专家蒿亮(微博地址为http://weibo.com/airjam;E-mail:airjam.hao@gmail.com)热情而专业的帮助和支持。陈凡友情编写了本书的3.11节,蒿亮友情编写了本书的1.4.1节和13.1节。     感谢一路走来,在项目合作和交流中给我帮助和支持的各位前辈、领导、朋友和伙伴,包括:上海第一医药连锁经营有限公司总经理顾咏晟先生、新华信国际信息咨询北京有限公司副总裁欧万德先生(Alvin)、上海联都集团的创始人冯铁军先生、上海通方管理咨询有限公司总经理李步峰女士和总监张国安先生、鼎和保险公司的张霖霏先生、盛大文学的数据分析经理张仙鹤先生、途牛网高级运营专家焦延伍先生,以及来自阿里巴巴的数据分析团队的领导和伙伴(资深总监车品觉先生、高级专家范国栋先生、资深经理张高峰先生、数据分析专家樊宁先生、资深数据分析师曹俊杰先生、数据分析师宫尚宝先生,等等,尤其要感谢阿里巴巴数据委员会会长车品觉老师在百忙中热情地为本书作推荐序,并在序言里为广大读者分享了数据分析师当前面临的最新机遇和挑战),以及这个仓促列出的名单之外的更多前辈、领导、朋友和伙伴。     感谢我的父母、姐姐、姐夫和外甥,他们给予了我一贯的支持和鼓励。     我将把深深的感谢给予我的妻子王艳和女儿露璐。露璐虽然只是初中一年级的学生,但是在本书的写作过程中,她多次主动放弃外出玩耍,帮我改稿,给我提建议,给我鼓励,甚至还为本书设计了一款封面,在此向露璐同学表达我衷心的感谢!而我的妻子,则将家里的一切事情打理得井井有条,使我可以将充分的时间和精力投入本书的写作中。谨以此书献给她们! 卢辉  中国 杭州 目  录 推荐序 前言 第1章 什么是数据化运营 / 1 1.1 现代营销理论的发展历程 / 2 1.1.1 从4P到4C / 2 1.1.2 从4C到3P3C / 3 1.2 数据化运营的主要内容 / 5 1.3 为什么要数据化运营 / 7 1.4 数据化运营的必要条件 / 8 1.4.1 企业级海量数据存储的实现 / 8 1.4.2 精细化运营的需求 / 10 1.4.3 数据分析和数据挖掘技术的有效应用 / 11 1.4.4 企业决策层的倡导与持续支持 / 11 1.5 数据化运营的新现象与新发展 / 12 1.6 关于互联网和电子商务的最新数据 / 14 第2章 数据挖掘概述 / 15 2.1 数据挖掘的发展历史 / 16 2.2 统计分析与数据挖掘的主要区别 / 16 2.3 数据挖掘的主要成熟技术以及在数据化运营中的主要应用 / 18 2.3.1 决策树 / 18 2.3.2 神经网络 / 19 2.3.3 回归 / 21 2.3.4 关联规则 / 22 2.3.5 聚类 / 23 2.3.6 贝叶斯分类方法 / 24 2.3.7 支持向量机 / 25 2.3.8 主成分分析 / 26 2.3.9 假设检验 / 27 2.4 互联网行业数据挖掘应用的特点 / 28 第3章 数据化运营中常见的数据分析项目类型 / 30 3.1 目标客户的特征分析 / 31 3.2 目标客户的预测(响应、分类)模型 / 32 3.3 运营群体的活跃度定义 / 33 3.4 用户路径分析 / 34 3.5 交叉销售模型 / 35 3.6 信息质量模型 / 37 3.7 服务保障模型 / 39 3.8 用户(买家、卖家)分层模型 / 40 3.9 卖家(买家)交易模型 / 44 3.10 信用风险模型 / 44 3.11 商品推荐模型 / 45 3.11.1 商品推荐介绍 / 45 3.11.2 关联规则 / 45 3.11.3 协同过滤算法 / 50 3.11.4 商品推荐模型总结 / 54 3.12 数据产品 / 55 3.13 决策支持 / 56 第4章 数据化运营是跨专业、跨团队的协调与合作 / 57 4.1 数据分析团队与业务团队的分工和定位 / 58 4.1.1 提出业务分析需求并且能胜任基本的数据分析 / 58 4.1.2 提供业务经验和参考建议 / 60 4.1.3 策划和执行精细化运营方案 / 60 4.1.4 跟踪运营效果、反馈和总结 / 61 4.2 数据化运营是真正的多团队、多专业的协同作业 / 62 4.3 实例示范数据化运营中的跨专业、跨团队协调合作 / 62 第5章 分析师常见的错误观念和对治的管理策略 / 67 5.1 轻视业务论 / 68 5.2 技术万能论 / 69 5.3 技术尖端论 / 71 5.4 建模与应用两段论 / 72 5.5 机器万能论 / 73 5.6 幸福的家庭都是相似的,不幸的家庭各有各的不幸 / 74 第6章 数据挖掘项目完整应用案例演示 / 76 6.1 项目背景和业务分析需求的提出 / 77 6.2 数据分析师参与需求讨论 / 78 6.3 制定需求分析框架和分析计划 / 79 6.4 抽取样本数据、熟悉数据、数据清洗和摸底 / 81 6.5 按计划初步搭建挖掘模型 / 81 6.6 与业务方讨论模型的初步结论,提出新的思路和模型优化方案 / 83 6.7 按优化方案重新抽取样本并建模,提炼结论并验证模型 / 84 6.8 完成分析报告和落地应用建议 / 86 6.9 制定具体的落地应用方案和评估方案 / 86 6.10 业务方实施落地应用方案并跟踪、评估效果 / 86 6.11 落地应用方案在实际效果评估后,不断修正完善 / 88 6.12 不同运营方案的评估、总结和反馈 / 88 6.13 项目应用后的总结和反思 / 89 第7章 数据挖掘建模的优化和限度 / 90 7.1 数据挖掘模型的优化要遵循有效、适度的原则 / 91 7.2 如何有效地优化模型 / 92 7.2.1 从业务思路上优化 / 92 7.2.2 从建模的技术思路上优化 / 94 7.2.3 从建模的技术技巧上优化 / 95 7.3 如何思考优化的限度 / 96 7.4 模型效果评价的主要指标体系 / 96 7.4.1 评价模型准确度和精度的系列指标 / 97 7.4.2 ROC曲线 / 99 7.4.3 KS值 / 100 7.4.4 Lift值 / 102 7.4.5 模型稳定性的评估 / 104 第8章 常见的数据处理技巧 / 105 8.1 数据的抽取要正确反映业务需求 / 106 8.2 数据抽样 / 107 8.3 分析数据的规模有哪些具体的要求 / 108 8.4 如何处理缺失值和异常值 / 109 8.4.1 缺失值的常见处理方法 / 109 8.4.2 异常值的判断和处理 / 111 8.5 数据转换 / 112 8.5.1 生成衍生变量 / 113 8.5.2 改善变量分布的转换 / 113 8.5.3 分箱转换 / 114 8.5.4 数据的标准化 / 115 8.6 筛选有效的输入变量 / 115 8.6.1 为什么要筛选有效的输入变量 / 116 8.6.2 结合业务经验进行先行筛选 / 116 8.6.3 用线性相关性指标进行初步筛选 / 117 8.6.4 R平方 / 118 8.6.5 卡方检验 / 119 8.6.6 IV和WOE / 120 8.6.7 部分建模算法自身的筛选功能 / 121 8.6.8 降维的方法 / 122 8.6.9 最后的准则 / 122 8.7 共线性问题 / 123 8.7.1 如何发现共线性 / 123 8.7.2 如何处理共线性 / 123 第9章 聚类分析的典型应用和技术小窍门 / 125 9.1 聚类分析的典型应用场景 / 126 9.2 主要聚类算法的分类 / 127 9.2.1 划分方法 / 127 9.2.2 层次方法 / 128 9.2.3 基于密度的方法 / 128 9.2.4 基于网格的方法 / 129 9.3 聚类分析在实践应用中的重点注意事项 / 129 9.3.1 如何处理数据噪声和异常值 / 129 9.3.2 数据标准化 / 130 9.3.3 聚类变量的少而精 / 131 9.4 聚类分析的扩展应用 / 132 9.4.1 聚类的核心指标与非聚类的业务指标相辅相成 / 132 9.4.2 数据的探索和清理工具 / 132 9.4.3 个性化推荐的应用 / 133 9.5 聚类分析在实际应用中的优势和缺点 / 134 9.6 聚类分析结果的评价体系和评价指标 / 135 9.6.1 业务专家的评估 / 135 9.6.2 聚类技术上的评价指标 / 136 9.7 一个典型的聚类分析课题的案例分享 / 137 9.7.1 案例背景 / 137 9.7.2 基本的数据摸底 / 137 9.7.3 基于用户样本的聚类分析的初步结论 / 138 第10章 预测响应(分类)模型的典型应用和技术小窍门 / 140 10.1 神经网络技术的实践应用和注意事项 / 141 10.1.1 神经网络的原理和核心要素 / 141 10.1.2 神经网络的应用优势 / 143 10.1.3 神经网络技术的缺点和注意事项 / 143 10.2 决策树技术的实践应用和注意事项 / 144 10.2.1 决策树的原理和核心要素 / 144 10.2.2 CHAID算法 / 145 10.2.3 CART算法 / 145 10.2.4 ID3算法 / 146 10.2.5 决策树的应用优势 / 146 10.2.6 决策树的缺点和注意事项 / 147 10.3 逻辑回归技术的实践应用和注意事项 / 148 10.3.1 逻辑回归的原理和核心要素 / 148 10.3.2 回归中的变量筛选方法 / 150 10.3.3 逻辑回归的应用优势 / 151 10.3.4 逻辑回归应用中的注意事项 / 151 10.4 多元线性回归技术的实践应用和注意事项 / 152 10.4.1 线性回归的原理和核心要素 / 152 10.4.2 线性回归的应用优势 / 153 10.4.3 线性回归应用中的注意事项 / 153 10.5 模型的过拟合及对策 / 154 10.6 一个典型的预测响应模型的案例分享 / 156 10.6.1 案例背景 / 156 10.6.2 基本的数据摸底 / 156 10.6.3 建模数据的抽取和清洗 / 158 10.6.4 初步的相关性检验和共线性排查 / 159 10.6.5 潜在自变量的分布转换 / 160 10.6.6 自变量的筛选 / 161 10.6.7 响应模型的搭建与优化 / 162 10.6.8 冠军模型的确定和主要的分析结论 / 162 10.6.9 基于模型和分析结论基础上的运营方案 / 164 10.6.10 模型落地应用效果跟踪反馈 / 165 第11章 用户特征分析的典型应用和技术小窍门 / 166 11.1 用户特征分析所适用的典型业务场景 / 167 11.1.1 寻找目标用户 / 167 11.1.2 寻找运营的抓手 / 168 11.1.3 用户群体细分的依据 / 169 11.1.4 新品开发的线索和依据 / 169 11.2 用户特征分析的典型分析思路和分析技术 / 170 11.2.1 3种划分的区别 / 170 11.2.2 RFM / 171 11.2.3 聚类技术的应用 / 172 11.2.4 决策树技术的应用 / 173 11.2.5 预测(响应)模型中的核心自变量 / 173 11.2.6 假设检验的应用 / 174 11.3 特征提炼后的评价体系 / 174 11.4 用户特征分析与用户预测模型的区别和联系 / 175 11.5 用户特征分析案例 / 176 第12章 运营效果分析的典型应用和技术小窍门 / 177 12.1 为什么要做运营效果分析 / 178 12.2 统计技术在数据化运营中最重要最常见的应用 / 179 12.2.1 为什么要进行假设检验 / 179 12.2.2 假设检验的基本思想 / 179 12.2.3 T检验概述 / 180 12.2.4 两组独立样本T检验的假设和检验 / 181 12.2.5 两组独立样本的非参数检验 / 182 12.2.6 配对差值的T检验 / 183 12.2.7 配对差值的非参数检验 / 184 12.2.8 方差分析概述 / 186 12.2.9 单因素方差分析 / 187 12.2.10 多个样本组的非参数检验 / 190 12.2.11 卡方检验 / 190 12.2.12 控制变量的方法 / 191 12.2.13 AB Test / 192 第13章 漏斗模型和路径分析 / 193 13.1 网络日志和布点 / 194 13.1.1 日志布点 / 195 13.1.2 日志采集 / 195 13.1.3 日志解析 / 195 13.1.4 日志分析 / 195 13.2 漏斗模型与路径分析的主要区别和联系 / 196 13.3 漏斗模型的主要应用场景 / 197 13.3.1 运营过程的监控和运营效率的分析与改善 / 197 13.3.2 用户关键路径分析 / 198 13.3.3 产品优化 / 198 13.4 路径分析的主要应用场景 / 198 13.5 路径分析的主要算法 / 199 13.5.1 社会网络分析方法 / 199 13.5.2 基于序列的关联分析 / 200 13.5.3 最朴素的遍历方法 / 201 13.6 路径分析案例的分享 / 203 13.6.1 案例背景 / 203 13.6.2 主要的分析技术介绍 / 203 13.6.3 分析所用的数据概况 / 203 13.6.4 主要的数据结论和业务解说 / 203 13.6.5 主要分析结论的落地应用跟踪 / 206 第14章 数据分析师对业务团队数据分析能力的培养 / 208 14.1 培养业务团队数据分析意识与能力的重要性 / 209 14.2 数据分析师在业务团队数据分析意识能力培养中的作用 / 210 14.3 数据分析师如何培养业务团队的数据分析意识和能力 / 210 14.4 数据分析师培养业务团队数据分析意识能力的案例分享 / 212 14.4.1  案例背景 / 212 14.4.2 过程描述 / 212 14.4.3 本项目的效果跟踪 / 214 第15章 换位思考 / 216 15.1 为什么要换位思考 / 217 15.2 从业务方的角度换位思考数据分析与挖掘 / 218 15.3 从同行的角度换位思考数据分析挖掘的经验教训 / 220 第16章 养成数据分析师的品质和思维模式 / 222 16.1 态度决定一切 / 223 16.1.1 信念 / 223 16.1.2 信心 / 224 16.1.3 热情 / 225 16.1.4 敬畏 / 226 16.1.5 感恩 / 227 16.2 商业意识是核心 / 228 16.2.1 为什么商业意识是核心 / 228 16.2.2 如何培养商业意识 / 229 16.3 一个基本的方法论 / 230 16.4 大胆假设,小心求证 / 231 16.5 20/80原理 / 233 16.6 结构化思维 / 233 16.7 优秀的数据分析师既要客观,又要主观 / 234 第17章 条条大道通罗马 / 236 17.1 为什么会条条大道通罗马 / 237 17.2 条条大道有侧重 / 238 17.3 自觉服从和积极响应 / 239 17.3.1 自觉服从 / 239 17.3.2 积极响应 / 240 17.4 具体示例 / 242 第18章 数据挖掘实践的质量保障流程和制度 / 243 18.1 一个有效的质量保障流程制度 / 244 18.1.1 业务需求的收集 / 245 18.1.2 评估小组评估需求的优先级 / 246 18.1.3 课题组的成立及前期摸底 / 247 18.1.4 向业务方提交正式课题(项目)计划书 / 247 18.1.5 数据分析挖掘的课题展开 / 248 18.1.6 向业务方提交结论报告及业务落地应用建议 / 248 18.1.7 课题(项目)的落地应用和效果监控反馈 / 248 18.2 质量保障流程制度的重要性 / 249 18.3 如何支持与强化质量保障流程制度 / 250 第19章 几个经典的数据挖掘方法论 / 251 19.1 SEMMA方法论 / 252 19.1.1 数据取样 / 253 19.1.2 数据探索 / 253 19.1.3 数据调整 / 253 19.1.4 模式化 / 254 19.1.5 评价 / 254 19.2 CRISP-DM方法论 / 254 19.2.1 业务理解 / 255 19.2.2 数据理解 / 256 19.2.3  数据准备 / 256 19.2.4 模型搭建 / 256 19.2.5 模型评估 / 256 19.2.6 模型发布 / 256 19.3 Tom Khabaza的挖掘9律 / 256 第1章 什么是数据化运营 21世纪核心的竞争就是数据的竞争,谁拥有数据,谁就拥有未来。  —马云 1.1 现代营销理论的发展历程 1.2 数据化运营的主要内容 1.3 为什么要数据化运营 1.4 数据化运营的必要条件 1.5 数据化运营的新现象与新发展 1.6 关于互联网和电子商务的最新数据 数据化运营是当前企业管理和企业战略里非常热门的一个词汇。其实施的前提条件包括企业级海量数据存储的实现、精细化运营的需求(与传统的粗放型运营相对比)、数据分析和数据挖掘技术的有效应用等,并且还要得到企业决策层和管理层的支持及推动。 数据化运营是现代企业从粗放经营向精细化管理发展的必然要求,是大数据时代企业保持市场核心竞争力的必要手段,要进行数据化运营,必须要企业全员的参与和配合。本书讨论的数据化运营主要是指互联网行业的数据化运营,所以,除非特别申明,本书所有的“数据化运营”专指互联网数据化运营,尽管本书涉及的分析挖掘技术同样也适用于互联网行业之外的其他行业。 数据化运营来源于现代营销管理,但是在“营销”之外有着更广的含义。 1.1 现代营销理论的发展历程  1.1.1 从4P到4C 以4P为代表的现代营销理论可以追溯到1960年出版的(《基础营销》英文书名为Basic Marketing)一书,该理论是由作者杰罗姆·麦卡锡(E.Jerome McCarthy)在该书中提出的。到了1967年,“现代营销学之父”菲利普·科特勒(Philip Kotler)在其代表作《营销管理》(Marketing Management: Application, Planning, Implementation and Control)第1版里进一步确认了以4P为核心的营销组合方法论。随后,该理论风靡世界,成为近半个世纪的现代营销核心思想,影响并左右了当时无数的企业营销战略。 4P指的是Product(产品)、Price(价格)、Place(渠道)和Promotion(促销),如图1-1所示。4P的内容简要概括如下。 Product:表示注重产品功能,强调独特卖点。 Price:指根据不同的市场定位,制定不同的价格策略。 Place:指要注重分销商的培养和销售网络的建设。 Promotion:指企业可以通过改变销售行为来刺激消费者,以短期的行为(如让利、买一送一、调动营销现场气氛等)促成消费的增长,吸引其他品牌的消费者前来消费,或者促使老主顾提前来消费,从而达到销售增长的目的。 4P理论的核心是Product(产品)。因此,以4P理论为核心营销思想的企业营销战略又可以简称为“以产品为中心”的营销战略。 随着时代的发展,商品逐渐丰富起来,市场竞争也日益激烈,尤其进入21世纪后,消费者已成为商业世界的核心。在当今这个充满个性化的商业时代,传统的4P营销组合已经无法适应时代发展的需求,营销界开始研究新的营销理论和营销要素。其中,最具代表性的理论就是4 C理论,这里的4C包括Consumer(消费者)、Cost(成本)、Convenience(方便性)和Communication(沟通交流),如图1-2所示,4C的内容简要概括如下: 消费者的需求与愿望(Customer抯 Needs and Wants)。 消费者得到满足的成本(Cost and Value to Satisfy Consumer抯 Needs and Wants)。 用户购买的方便性(Convenience to Buy)。 与用户的沟通交流(Communication with Consumer)。 4 C理论的核心是Consumer消费者。因此,以4C理论为核心营销思想的企业营销战略又可以简称为“以消费者为中心”的营销战略。 1.1.2 从4C到3P3C 4 C理论虽然成功找到了从“以产品为中心”转化为“以消费者为中心”的思路和要素,但是随着社会的进步,科技的发展,大数据时代的来临,4 C理论再次落后于时代发展的需要。大数据时代,日益白热化的市场竞争、越来越严苛的营销预算、海量的数据堆积和存储等,迫使现代企业不得不寻找更合适、更可控、更可量化、更可预测的营销思路和方法论。于是在基本思路上融合了4P理论和4C理论的nPnC形式的理论出现了。 具体到典型的互联网行业,虽然学术界对于到底是几个P和几个C仍存在着争议,没有定论,但是这并不妨碍企业积极探索并付诸实践应用,本书姑且以3P3C为例,如图1-3所示,概述互联网行业运营的典型理论探索。 图1-3 3P3C理论结构图 在3P3C理论中,数据化运营6要素的内容如下。 Probability(概率):营销、运营活动以概率为核心,追求精细化和精准率。 Product(产品):注重产品功能,强调产品卖点。 Prospects(消费者,目标用户)。 Creative (创意,包括文案、活动等)。 Channel (渠道)。 Cost/Price(成本/价格)。 而在这其中,以数据分析挖掘所支撑的目标响应概率(Probability)是核心,在此基础上将会围绕产品功能优化、目标用户细分、活动(文案)创意、渠道优化、成本的调整等重要环节和要素,共同促使数据化运营持续完善,直至成功。 需要指出的是,这里的目标响应概率(Probability)不应狭义理解为仅仅是预测响应模型之类的响应概率,它有更宽泛的含义,既可以从宏观上来理解,又可以从微观上来诠释。从宏观上来理解,概率可以是特定消费群体整体上的概率或可能性。比如,我们常见的通过卡方检验发现某个特定类别群体在某个消费行为指标上具有的显著性特征,这种显著性特征可以帮助我们进行目标市场的选择、寻找具有相似特征的潜在目标用户,制定相应的细分营销措施和运营方案等,这种方法可以有效提升运营的效率和效果;从微观上来理解,概率可以是具体到某个特定消费者的“预期响应概率”,比如我们常见的通过逻辑回归算法搭建一个预测响应模型,得到每个用户的预计响应概率,然后,根据运营计划和预算,抽取响应概率分数的消费者,进行有针对性的运营活动等,这种方法也可以有效提升运营的效率和效果。 宏观的概率更加有效,还是微观的概率更加有效,这需要结合项目的资源计划、业务背景、项目目的等多种因素来权衡,不可一概而论。虽然微观的概率常常更为精细、更加准确,但是在实践应用中,宏观的群体性概率也可以有效提升运营效果,也是属于数据化运营的思路。所以在实践过程中如何选择,要根据具体的业务场景和具体的数据分析解决方案来决定。更多延伸性的分析探讨,将在后面章节的具体项目类型分析、技术分享中详细介绍。 上述3P3C理论有效锁定了影响运营效果的主要因素、来源,可以帮助运营人员、管理人员、数据分析人员快速区分实践中的思考维度和着力点,提高思考效率和分析效率。 1.2 数据化运营的主要内容 虽然目前企业界和学术界对于“数据化运营”的定义没有达成共识,但这并不妨碍“数据化运营”思想和实践在当今企业界尤其是互联网行业如火如荼地展开。阿里巴巴集团早在2010年就已经在全集团范围内正式提出了“数据化运营”的战略方针并逐步实施数据化运营,腾讯公司也在“2012年腾讯智慧上海主题日”高调宣布“大数据化运营的黄金时期已经到来,如何整合这些数据成为未来的关键任务”。 综合业界尤其是互联网行业的数据化运营实践来看,尽管各行业对“数据化运营”的定义有所区别,但其基本要素和核心是一致的,那就是“以企业级海量数据的存储和分析挖掘应用为核心支持的,企业全员参与的,以精准、细分和精细化为特点的企业运营制度和战略”。换种思路,可以将其浅层次地理解为,在企业常规运营的基础上革命性地增添数据分析和数据挖掘的精准支持。这是从宏观意义上对数据化运营的理解,其中会涉及企业各部门,以及数据在企业中所有部门的应用。但是必须指出,本书所要分享的实战项目涉及的数据化运营,主要落实在微观意义的数据化运营上,即主要针对运营、销售、客服等部门的互联网运营的数据分析、挖掘和支持上。 注意:这种宏观和微观上的区别在本质上对于数据化运营的核心没有影响,只是在本书的技术和案例分享中更多聚焦于运营部门、销售部门、客服部门而已,特此说明。 针对互联网运营部门的数据化运营,具体包括“网站流量监控分析、目标用户行为研究、网站日常更新内容编辑、网络营销策划推广”等,并且,这些内容是在以企业级海量数据的存储、分析、挖掘和应用为核心技术支持的基础上,通过可量化、可细分、可预测等一系列精细化的方式来进行的。 数据化运营,首先是要有企业全员参与意识,要达成这种全员的数据参与意识比单纯地执行数据挖掘技术显然是要困难得多,也重要得多的。只有在达成企业全员的自觉参与意识后,才可能将其转化为企业全体员工的自觉行动,才可能真正落实到运营的具体工作中。举例来说,阿里巴巴集团正在实施的数据化运营,就要求所有部门所有岗位的员工都要贯彻此战略:从产品开发人员到用户体验部门,到产品运营团队,到客户服务部门,到销售团队和支持团队,每个人每个岗位都能真正从数据应用、数据管理和数据发现的高度经营各自的本职工作,也就类似于各个岗位的员工,都在各自的工作中自觉利用或简单或复杂的数据分析工具,进行大大小小的数据分析挖掘,这才是真正的数据化运营的场面,才是真正的从数据中发现信息财富并直接助力于企业的全方位提升。也只有这样,产品开发人员所提出的新概念才不是拍脑袋拍出来的,而是来自于用户反馈数据的提炼;产品运营人员也不再仅仅是每天被动地抄报运营的KPI指标,通过数据意识的培养,他们将在运营前的准备,运营中的把握,运营后的反馈、修正、提升上有充分的预见性和掌控力;客户服务部门不仅仅满足于为客户提供满意的服务,他们学会了从服务中有意识地发现有代表性的、有新概念价值的客户新需求;销售部门则不再只是具有吃苦耐劳的精神,他们可通过数据分析挖掘模型的实施来实现有的放矢、精准营销的销售效益最大化。而企业的数据挖掘团队也不再仅仅局限于单纯的数据挖掘技术工作及项目工作,而是肩负在企业全员中推广普及数据意识、数据运用技巧的责任,这种责任对于企业而言比单纯的一两个数据挖掘项目更有价值,更能体现一个数据挖掘团队或者一个数据挖掘职业人的水准、眼界以及胸怀,俗话说“只有能发动人民战争,才是真正的英雄”,所以只有让企业全员都参与并支持你的数据挖掘分析工作,才能够真正有效地挖掘企业的数据资源。现代企业的领导者,应该有这种远见和智慧,明白全员的数据挖掘才是企业最有价值的数据挖掘,全员的数据化运营才是现代企业的竞争新核心。 数据化运营,其次是一种常态化的制度和流程,包括企业各个岗位和工种的数据收集和数据分析应用的框架和制度等。从员工日常工作中所使用的数据结构和层次,就基本上可以判断出企业的数据应用水准和效率。在传统行业的大多数企业里,绝大多数员工在其工作中很少(甚至基本不)分析使用业务数据支持自己的工作效率,但是在互联网行业,对数据的重视和深度应用使得该行业数据化运营的能力和水平远远超过传统行业的应用水平。 数据化运营更是来自企业决策者、高层管理者的直接倡导和实质性的持续推动。由于数据化运营一方面涉及企业全员的参与,另一方面涉及企业海量数据的战略性开发和应用,同时又是真正跨多部门、多技术、多专业的整合性流程,所有这些挑战都是企业内部任何单个部门所无法独立承担的。只有来自企业决策层的直接倡导和实质性的持续推动,才可以在企业建立、推广、实施、完善真正的全员参与、跨部门跨专业、具有战略竞争意义的数据化运营。所以,我们不难发现,阿里巴巴集团也好,腾讯也罢,这些互联网行业的巨人,之所以能在大数据时代如火如荼地进行企业数据化运营,自始至终都离不开企业决策层的直接倡导与持续推动,其在各种场合中对数据的重要性、对数据化运营的核心竞争力价值的强调和分享,都证明了决策层是推动数据化运营的关键所在。2012年7月10日,阿里巴巴集团宣布设立“首席数据官”岗位(Chief Data Officer),阿里巴巴B2B公司的CEO陆兆禧出任此职位,并会向集团CEO马云直接汇报。陆兆禧将主要负责全面推进阿里巴巴集团成为“数据分享平台”的战略,其主要职责是规划和实施未来数据战略,推进支持集团各事业群的数据业务发展。“将阿里巴巴集团变成一家真正意义上的数据公司”目前已经是阿里巴巴集团的战略共识,阿里巴巴集团旗下的支付宝、淘宝、阿里金融、B2B的数据都会成为这个巨大的数据分享平台的一部分。而这个战略的核心就是如何挖掘、分析和运用这些数据,并和全社会分享。 1.3 为什么要数据化运营 数据化运营首先是现代企业竞争白热化、商业环境变成以消费者为主的“买方市场”等一系列竞争因素所呼唤的管理革命和技术革命。中国有句古语“穷则思变”,当传统的营销手段、运营方法已经被同行普遍采用,当常规的营销技术、运营方法已经很难明显提升企业的运营效率时,竞争必然呼唤革命性的改变去设法提升企业的运营效率,从而提升企业的市场竞争力。时势造英雄,生逢其时的“数据化运营”恰如及时雨,登上了大数据时代企业运营的大舞台,在互联网运营的舞台上尤其光彩夺目。 其次,数据化运营是飞速发展的数据挖掘技术、数据存储技术等诸多先进数据技术直接推动的结果。数据技术的飞速发展,使得大数据的存储、分析挖掘变得成熟、可靠,成熟的挖掘算法和技术给了现代企业足够的底气去尝试海量数据的分析、挖掘、提炼、应用。有了数据分析、数据挖掘的强有力支持,企业的运营不再盲目,可以真正做到运营流程自始至终都心中有数、有的放矢。比如,在传统行业的市场营销活动中,有一个无解又无奈的问题:“我知道广告费浪费了一半,但是我不知道到底是哪一半”。这里的无奈其实反映的恰好就是传统行业粗放型营销的缺点:无法真正细分受众,无法科学监控营销各环节,无法准确预测营销效果;但是,在大数据时代的互联网行业,这种无奈已经可以有效地降低,乃至避免,原因在于通过数据挖掘分析,广告主可以精细划分出正确的目标受众,可以及时(甚至实时)监控广告投放环节的流失量,可以针对相应的环节采取优化、提升措施,可以建立预测模型准确预测广告效果。 数据化运营更是互联网企业得天独厚的“神器”。互联网行业与生俱来的特点就是大数据,而信息时代最大的财富也正是海量的大数据。阿里巴巴集团董事局主席兼首席行政官马云曾经多次宣称,阿里巴巴集团最大的财富和今后核心竞争力的源泉,正是阿里巴巴集团(包括淘宝、支付宝、阿里巴巴等所属企业)已经产生的和今后继续积累的海量的买卖双方的交易数据、支付数据、互动数据、行为数据等。2010年3月31日,淘宝网在上海正式宣布向全球开放数据,未来电子商务的核心竞争优势来源于对数据的解读能力,以及配合数据变化的快速反应能力,而开放淘宝数据正是有效帮助企业建立数据的应用能力。2010年5月14日阿里巴巴集团在深圳举行的2010年全球股东大会上,马云进一步指出“21世纪核心的竞争就是数据的竞争”,“谁拥有数据,谁就拥有未来”。企业决策者对数据价值的高度认同,必然会首先落实在自身的企业运营实践中,这也是“因地制宜”战略思想在互联网时代的最新体现,我们也可以理解成“近水楼台先得月”在互联网时代的最新诠释。 1.4 数据化运营的必要条件 虽然从上面的分析可以看出,数据化运营有如此多的优越性,但并不是每个企业都可以采取这种新战略和新管理制度,也不是每个企业都可以从中受益。个中原因在于成功的数据化运营必须依赖几个重要的前提条件。 1.4.1 企业级海量数据存储的实现 21世纪核心的竞争就是数据的竞争,2012年3月29日,美国奥巴马政府正式宣布了“大数据的研究和发展计划”(Big Data Research and Development Initiative),该计划旨在通过提高我们从大型复杂数据集中提取知识和观点的能力,承诺帮助加快在科学和工程中探索发现的步伐,加强国家安全。从国家到企业,数据就是生产力。但是,具体到某一个企业,海量数据的存储是必须要面对的第一个挑战。数据存储技术的飞速发展,需要企业与时俱进。根据预测到2020年,全球以电子形式存储的数据量将达到35ZB,是2009年全球存储量的40倍。而在2010年年底,根据 IDC的统计,全球数据量已经达到了1 200 000PB或1.2ZB。如果将这些数据都刻录在DVD上,那么光把这些DVD盘片堆叠起来就可以从地球到月球打一个来回(单程约24万英里,即386 242.56千米)。海量的数据推动了数据存储技术的不断发展与飞跃。 我们一起来回顾一下数据存储技术的发展历程: 1951年:Univac系统使用磁带和穿孔卡片作为数据存储。 1956年:IBM公司在其Model 305 RAMAC中第一次引入了磁盘驱动器。 1961年:美国通用电气公司(General Electric)的Charles Bachman开发了第一个数据库管理系统—IDS。 1969年:E.F. Codd发明了关系数据库。 1973年:由John J.Cullinane领导的Cullinane公司开发了 IDMS—一个针对IBM主机的基于网络模型的数据库。 1976年:Honeywell公司推出了Multics Relational Data Store—第一个商用关系数据库产品。 1979年:Oracle公司引入了第一个商用SQL关系数据库管理系统。 1983年:IBM 推出了DB2数据库产品。 1985年:为Procter & Gamble系统设计的第一个商务智能系统产生。 1991年:W.H. BillInmon发表了文章《构建数据仓库》。 2012年:最新的存储技术为分布式数据仓库、海量数据存储技术和流计算的实时数据仓库技术。 回首中国企业的数据存储之路,国内的数据存储技术的发展经历了将近30年,而真正的飞速发展则是最近10年。 国内的数据存储的先驱是国有银行,在21世纪初,四大国有银行的全国数据中心项目(将分布在全国各个省行和直属一级分行的数据集中到数据中心)拉开了数据技术飞速发展的帷幕。 以发展最具代表性的中国工商银行为例,中国工商银行从2001年开始启动数据集中项目,刚开始考虑集中中国北部的数据到北京,中国南部的数据到上海,最终在2004年将全部数据集中到了上海,而北京则作为灾备中心,海外数据中心则安置在深圳。中国工商银行的数据量在当时是全中国最大的,大约每天的数据量都在TB级别。由于银行业存在一定的特殊性(性能要求低于安全和稳定要求),又因为当时业内可选的技术不多,因此中国工商银行选择了大型机+DB2的技术方案,实际上就是以关系型数据库作为数据存储的核心。 在3年的数据集中和后续5年基于主题模型(NCR金融模型)的数据仓库建设期间,中国工商银行无论在硬件网络和软件人力上都投入了巨大的资源,其数据仓库也终于成为中国第一个真正意义上的企业级数据中心和数据仓库。 其他银行和证券保险,甚至电信行业以及房地产行业的数据仓库建设,基本上也都是采用与工商银行相似的思路和做法在进行。 不过,随着时间的推移,数据量变得越来越大,硬件的更新换代也越来越快,于是,这类数据仓库逐渐显现出了问题,主要表现如下: 少数几台大型机已经无法满足日益增加的日终计算任务的执行需求,导致很多数据结果为T-2(当天数据要延后2天才完成),甚至是T-3(当天数据要延后3天才完成)。 硬件升级和存储升级的成本非常昂贵,维护、系统开发以及数据开发的人力资源开支也逐年加大。 由于全国金融发展的进程差异很大,数据需求各不一样,加上成本等原因,不得不将一些数据计算任务下放到各个一级分行或者省分行进行,数据中心不堪重负。 随着互联网行业的逐渐蓬勃兴盛,占领数据存储技术领域巅峰的行业也从原有的国有银行企业转移到了阿里巴巴、腾讯、盛大、百度这样的新兴互联网企业。以阿里巴巴为例,阿里巴巴数据仓库也是经历了坎坷的发展历程,在多次重建后才最终站在了中国甚至世界的顶峰。 最开始的阿里巴巴互联网数据仓库建设,几乎就是中国工商银行的缩小版,互联网的数据从业人员几乎全部来自国内各大银行或电信行业,或者来自国外类似微软、yahoo这样的传统IT企业。 随着分布式技术的逐渐成熟和工业化,互联网数据仓库迎来了飞速发展的春天。现在,抛弃大型机+关系型数据库的模型,采用分布式的服务器集群+分布式存储的海量存储器,无论是从硬件成本、软件成本还是从硬件升级、日常维护上来讲,都是一次飞跃。更重要的是,解决了困扰数据仓库发展的一个非常重要的问题,即计算能力不足的问题,当100~200台网络服务器一起工作的时候,无论是什么样的大型机,都已经无法与之比拟了。 拿现在阿里云(阿里巴巴集团数据中心服务提供者)来讲,近1000台网络服务器分布式并行,支持着每日淘宝、支付宝、阿里巴巴三大子公司超过PB级别的数据量,随着技术的日益成熟和硬件成本的逐渐降低,未来的数据仓库将是以流计算为主的实时数据仓库和分布式计算为主流的准实时数据仓库。 1.4.2 精细化运营的需求 大数据时代的互联网行业所面临的竞争压力甚至已超过了传统行业。主要原因在于互联网行业的技术真正体现了日新月异、飞速发展的特点。以中国互联网行业的发展为例,作为第一代互联网企业的代表,新浪、搜狐、雅虎等门户网站的Web 1.0模式(传统媒体的电子化)从产生到被以Google、百度等搜索引擎企业的Web 2.0模式(制造者与使用者的合一)所超越,前后不过10年左右的时间,而目前Web 2.0模式已经逐渐有被以微博为代表的Web 3.0模式(SNS模式)超越的趋势。 互联网行业近乎颠覆性模式的进化演绎、技术的更新换代,既为互联网企业提供了机遇,又带给其沉重的竞争压力与生存的挑战。面对这种日新月异的竞争格局,互联网企业必须寻找比传统的粗放型运营更加有效的精细化运营制度和思路,以提升企业的效益和效率,而数据化运营就是精细化运营,它强调的是更细分、更准确、更个性化。没有精细化运营的需求,就不需要数据化运营;只有数据化运营,才可以满足精细化的效益提升。 1.4.3 数据分析和数据挖掘技术的有效应用 数据分析和数据挖掘技术的有效应用是数据化运营的基础和技术保障,没有这个基础保障,数据化运营就是空话,就是无本之水,无缘之木。 这里的有效应用包括以下两层含义。 一是企业必须拥有一支能够胜任数据分析和数据挖掘工作的团队和一群出色的数据分析师。一名出色的数据分析师必须是多面手,他不仅要具备统计技能(能熟练使用统计技术和统计工具进行分析挖掘)、数据仓库知识(比如熟悉主流数据库基本技术,可以自助取数,可以有效与数据仓库团队沟通)、数据挖掘技能(熟练掌握主流数据挖掘技术和工具),更重要的是他还要具有针对具体业务的理解能力和快速学习能力,并且要善于与业务方沟通、交流。数据分析挖掘绝不是数据分析师或团队的闭门造车,要想让项目成功应用,必须要自始至终与业务团队并肩作战,从这点来看,业务理解力和沟通交流能力的重要性甚至要远远超过技术层面的能力(诸如统计技能、挖掘技能、数据仓库的技能)。从之前的分析可以看出,一名出色的数据分析师是需要时间、项目经验去磨砺去锻炼成长的,而作为企业来说,如何选择、培养、配备这样一支合格的分析师队伍,才是数据化运营的基础保障。 二是企业的数据化运营只有在分析团队与业务团队协同配合下才可能做出成绩,取得效果。分析团队做出的分析方案、数据模型,必须要在业务应用中得到检验,这不仅要求业务方主观的参与和支持,也要求业务方的团队和员工同样要具有相应的数据化运营能力和水平,运营团队的人员需要具备哪些与数据化运营相关的技能呢?这个问题我们将在第4章阐述。 无论是数据分析团队的专业能力,运营团队的专业能力,还是其他业务团队的专业能力,所体现的都是互联网企业的人才价值,这个人才价值与数据的价值一样,都是属于互联网行业的核心竞争力,正如阿里巴巴集团董事会主席兼CEO马云在多个场合强调的那样,“人才和数据是阿里巴巴集团最大的财富和最强大的核心竞争力”。 1.4.4 企业决策层的倡导与持续支持 在关乎企业数据化运营的诸多必要条件里,最核心且最具决定性的条件就是来自企业决策层的倡导和持续支持。 在传统行业的现代企业里,也有很多采用了先进的数据分析技术来支持企业运营的,支持企业的营销、客服、产品开发等工作。但是总的来说,这些数据挖掘应用效果参差不齐,或者说应该体现的业务贡献价值在很多情况下并没有真正体现出来,总体的应用还是停留在项目管理的层面,缺乏全员的参与与真正跨部门的战略协调配合。这种项目层面的管理,存在的不足如下: 首先,由于参与分析挖掘的团队与提出分析需求的业务团队分属不同的职能部门,缺乏高层实质性的协调与管理,常会出现分析建模工作与真正的业务需求配合不紧密,各打各的锣,各唱各的歌。由于各部门和员工KPI考核的内容不同,数据分析团队完成的分析方案、模型、建议、报告很多时候只是纸上谈兵,无法转化成业务应用的实际操作。举个简单的例子,销售部门的年度KPI考核是销售额和付费人数,那么为了这个年度KPI考核,销售部门必然把工作的重心放在扩大销售额,扩大付费人数,维护续费人数,降低流失率等关键指标上,他们自然希望数据分析部门围绕年度(短期的)KPI目标提供分析和模型支持,提高销售部门的业绩和效率。但是数据分析部门的年度KPI考核可能跟年度销售额和付费人数没有关系,而跟通过数据分析、建模,完善产品开发与优化,完善销售部门的业务流程与资源配置等相关。很显然,这里数据分析团队的KPI考核是着眼于企业长期发展的,这跟销售部门短期的以销售额为重点的考核在很大程度上是有冲突的。在这种情况下,怎么指望两者的数据化运营能落地开花呢? 其次,因为处于项目层面的管理,所以数据分析挖掘的规划也就只能局限在特定业务部门的范围内,缺乏真正符合企业发展方向的数据分析挖掘规划。俗话说得好站得高,方能看得远,起点低,视野浅,自然约束了数据分析的有效发挥。 无论是组织架构的缺陷,还是战略规划的缺失,其本质都能表现出缺乏来自企业决策层的倡导和持续支持。只有得到企业决策层的倡导和支持,上述组织管理方面的缺陷和战略规划的缺失才可以有效避免。如前所述,2012年7月10日阿里巴巴集团宣布设置首席数据官的岗位,并将其作为企业的核心管理岗位之一,其目的就是进一步夯实企业的数据战略,规划和实施企业整体的数据化运营能力和水平,使之真正成为阿里巴巴集团未来的核心竞争力。 1.5 数据化运营的新现象与新发展 时代在发展,技术在进步,企业的数据化运营也在不断增添新的内容、不断响应新的需求。目前,从世界范围来看,数据化运营至少在下列几个方面已经出现了实质性的新发展,这些新发展扩大了数据化运营的应用场景、扩充了数据化运营的发展思路、也给当前(以及未来)数据化运营的参与者提供了更多的发展方向的选择。这些新发展包括的内容如下: 数据产品作为商业智能的一个单独的发展方向和专业领域,在国内外的商业智能和数据分析行业里已经成为共识,并且正在企业的数据化运营实践中发挥着越来越大的作用。数据产品是指通过数据分析和数据模型的应用而开发出来的,提供给用户使用的一系列的帮助用户更好理解和使用数据的工具产品,这些工具产品的使用让用户在某些特定场景或面对某些特定的数据时,可以独立进行分析和展示结果,而不需要依赖数据分析师的帮助。虽然在多年以前,类似的数据产品已被开发并投入了应用,但是在数据分析行业世界范围内达成共识,并作为商业智能的一个独立发展方向和专业领域,还只是近一两年的事情。淘宝网上的卖家所使用的“量子恒道”就是一个非常不错的数据产品,通过使用量子恒道,淘宝卖家可以自己随时监控店铺的流量来源、买家逗留的时间、买家区域、浏览时间、各页面的流量大小、各产品的成交转化率等一系列跟店铺的实时基础数据相关的数据分析和报告,从而有效帮助卖家制定和完善相应的经营方向和经验策略。数据产品作为数据分析和商业智能里一个专门的领域得以确立和发展,其实是跟数据化运营的全民参与的特征相辅相成的。数据产品帮助企业全员更好、更有效地利用数据,而数据化运营的全民参与也呼唤更多更好的数据产品,企业成功的数据化运营建设一定会同时产生一大批深受用户欢迎和信赖的数据产品。 数据PD作为数据分析和商业智能的一个细分的职业岗位,已经在越来越多的大规模数据化运营的企业得以专门设立并日益强化。与上述的数据产品相配套的,就是数据PD作为一个专门的细分的职业岗位和专业方向,正逐渐为广大的数据化运营的企业所熟悉并采用。PD(Product Designer)是产品设计师的英文缩写,而数据PD,顾名思义就是数据产品的产品设计师。数据PD作为数据分析和商业智能中一个新的职业方向和职业岗位,需要从业者兼具数据分析师和产品设计师双重的专业知识、专业背景、技能和素质,有志从事数据PD工作的新人,可以抓住这个崭新的职业,几乎还是一张白纸的无限空间,快速成长,迅速成才。 泛BI的概念在大规模数据化运营的企业里正在越来越深入人心。泛BI其实就是逐渐淡化数据分析师团队作为企业数据分析应用的唯一专业队伍的印象,让更多的业务部门也逐渐参与数据分析和数据探索,让更多业务部门的员工也逐渐掌握数据分析的技能和意识。泛BI其实也是数据化运营的全民参与的特征所要求的,是更高一级的数据化运营的全民参与。在这个阶段,业务部门的员工不仅要积极参与数据分析和模型的具体应用实践,更要求他们能自主自发地进行一些力所能及的数据分析和数据探索。泛BI概念的逐渐深入普及,向数据分析师和数据分析团队提出了新的要求,数据分析师和数据分析团队承担了向业务部门及其员工指导、传授有关数据分析和数据探索的能力培养的工作,这是一种授人以渔的崇高行为,值得数据分析师为之奉献。 1.6 关于互联网和电子商务的最新数据 2012年12月3日,阿里巴巴集团在杭州宣布,截至2012年11月30日21:50,其旗下淘宝和天猫的交易额本年度突破10 000亿元。为支撑这巨大规模业务量的直接与间接的就业人员已经超过1000万人。 根据国家统计局的数据显示,2011年全国各省社会消费品零售总额为18.39万亿元,10 000亿元相当于其总量的5.4%,而根据国家统计局公布的2011年全国各省社会消费品零售总额排行,可以排列第5位,仅次于广东、山东、江苏和浙江。电子商务已经成为一个庞大的新经济主体,并在未来相当长的时间里依然会高速发展,这意味着过去的不可能已经成为现实,而这才是刚刚开始。 阿里巴巴集团董事局主席马云表示:“我们很幸运,能够适逢互联网这个时代,一起见证并参与互联网及电子商务给我们社会带来的一次次惊喜和改变。10 000亿只是刚刚开始,我们正在步入10万亿的时代,未来电子商务在中国,必将产生1000万个企业,具备服务全球10亿消费者的能力。” 第2章 数据挖掘概述 数据挖掘是指从数据集合中自动抽取隐藏在数据中的那些有用信息的非平凡过程,这些信息的表现形式为规则、概念、规律及模式等。 2.1 数据挖掘的发展历史 2.2 统计分析与数据挖掘的主要区别 2.3 数据挖掘的主要成熟技术以及在数据化运营中的主要应用 2.4 互联网行业数据挖掘应用的特点 在第1章中介绍了什么是数据化运营,为什么要实现数据化运营,以及数据化运营的主要内容和必要条件。我们知道数据分析和数据挖掘技术是支撑企业数据化运营的基础和技术保障,没有有效的数据挖掘支持,企业的数据化运营就是无源之水,无本之木。 本章将为读者简单回顾一下数据挖掘作为一门学科的发展历史,并具体探讨统计分析与数据挖掘的主要区别,同时,将力求用简单、通俗、明了的文字把目前主流的、成熟的、在数据化运营中常用的统计分析和数据挖掘的算法、原理以及主要的应用场景做出总结和分类。 最后,针对互联网数据化运营中数据挖掘应用的特点进行梳理和总结。 2.1 数据挖掘的发展历史 数据挖掘起始于20世纪下半叶,是在当时多个学科发展的基础上发展起来的。随着数据库技术的发展应用,数据的积累不断膨胀,导致简单的查询和统计已经无法满足企业的商业需求,急需一些革命性的技术去挖掘数据背后的信息。同时,这期间计算机领域的人工智能(Artificial Intelligence)也取得了巨大进展,进入了机器学习的阶段。因此,人们将两者结合起来,用数据库管理系统存储数据,用计算机分析数据,并且尝试挖掘数据背后的信息。这两者的结合促生了一门新的学科,即数据库中的知识发现(Knowledge Discovery in Databases,KDD)。1989年8月召开的第11届国际人工智能联合会议的专题讨论会上首次出现了知识发现(KDD)这个术语,到目前为止,KDD的重点已经从发现方法转向了实践应用。 而数据挖掘(Data Mining)则是知识发现(KDD)的核心部分,它指的是从数据集合中自动抽取隐藏在数据中的那些有用信息的非平凡过程,这些信息的表现形式为:规则、概念、规律及模式等。进入21世纪,数据挖掘已经成为一门比较成熟的交叉学科,并且数据挖掘技术也伴随着信息技术的发展日益成熟起来。 总体来说,数据挖掘融合了数据库、人工智能、机器学习、统计学、高性能计算、模式识别、神经网络、数据可视化、信息检索和空间数据分析等多个领域的理论和技术,是21世纪初期对人类产生重大影响的十大新兴技术之一。 2.2 统计分析与数据挖掘的主要区别 统计分析与数据挖掘有什么区别呢?从实践应用和商业实战的角度来看,这个问题并没有很大的意义,正如“不管白猫还是黑猫,抓住老鼠才是好猫”一样,在企业的商业实战中,数据分析师分析问题、解决问题时,首先考虑的是思路,其次才会对与思路匹配的分析挖掘技术进行筛选,而不是先考虑到底是用统计技术还是用数据挖掘技术来解决这个问题。 从两者的理论来源来看,它们在很多情况下都是同根同源的。比如,在属于典型的数据挖掘技术的决策树里,CART、CHAID等理论和方法都是基于统计理论所发展和延伸的;并且数据挖掘中的技术有相当比例是用统计学中的多变量分析来支撑的。 相对于传统的统计分析技术,数据挖掘有如下一些特点: 数据挖掘特别擅长于处理大数据,尤其是几十万行、几百万行,甚至更多更大的数据。 数据挖掘在实践应用中一般都会借助数据挖掘工具,而这些挖掘工具的使用,很多时候并不需要特别专业的统计背景作为必要条件。不过,需要强调的是基本的统计知识和技能是必需的。 在信息化时代,数据分析应用的趋势是从大型数据库中抓取数据,并通过专业软件进行分析,所以数据挖掘工具的应用更加符合企业实践和实战的需要。 从操作者来看,数据挖掘技术更多是企业的数据分析师、业务分析师在使用,而不是统计学家用于检测。 更主流的观点普遍认为,数据挖掘是统计分析技术的延伸和发展,如果一定要加以区分,它们又有哪些区别呢?数据挖掘在如下几个方面与统计分析形成了比较明显的差异: 统计分析的基础之一就是概率论,在对数据进行统计分析时,分析人员常常需要对数据分布和变量间的关系做假设,确定用什么概率函数来描述变量间的关系,以及如何检验参数的统计显著性;但是,在数据挖掘的应用中,分析人员不需要对数据分布做任何假设,数据挖掘中的算法会自动寻找变量间的关系。因此,相对于海量、杂乱的数据,数据挖掘技术有明显的应用优势。 统计分析在预测中的应用常表现为一个或一组函数关系式,而数据挖掘在预测应用中的重点在于预测的结果,很多时候并不会从结果中产生明确的函数关系式,有时候甚至不知道到底是哪些变量在起作用,又是如何起作用的。最典型的例子就是“神经网络”挖掘技术,它里面的隐蔽层就是一个“黑箱”,没有人能在所有的情况下读懂里面的非线性函数是如何对自变量进行组合的。在实践应用中,这种情况常会让习惯统计分析公式的分析师或者业务人员感到困惑,这也确实影响了模型在实践应用中的可理解性和可接受度。不过,如果能换种思维方式,从实战的角度考虑,只要模型能正确预测客户行为,能为精细化运营提供准确的细分人群和目标客户,业务部门、运营部门不了解模型的技术细节,又有何不可呢? 在实践应用中,统计分析常需要分析人员先做假设或判断,然后利用数据分析技术来验证该假设是否成立。但是,在数据挖掘中,分析人员并不需要对数据的内在关系做任何假设或判断,而是会让挖掘工具中的算法自动去寻找数据中隐藏的关系或规律。两者的思维方式并不相同,这给数据挖掘带来了更灵活、更宽广的思路和舞台。 虽然上面详细阐述了统计分析与数据挖掘的区别,但是在企业的实践应用中,我们不应该硬性地把两者割裂开来,也无法割裂,在实践应用中,没有哪个分析师会说,“我只用数据挖掘技术来分析”,或者“我只用统计分析技术来分析”。正确的思路和方法应该是:针对具体的业务分析需求,先确定分析思路,然后根据这个分析思路去挑选和匹配合适的分析算法、分析技术,而且一个具体的分析需求一般都会有两种以上不同的思路和算法可以去探索,最后可根据验证的效果和资源匹配等一系列因素进行综合权衡,从而决定最终的思路、算法和解决方案。 鉴于实践应用中,统计分析与数据挖掘技术并不能完全被割裂开来,并且本书侧重于数据化运营的实践分享。所以在后续各章节的讨论中,将不再人为地给一个算法、技术贴上“统计分析”或“数据挖掘”的标签,后续各章节的技术分享和实战应用举例,都会本着针对不同的分析目的、项目类型来介绍主流的、有效的分析挖掘技术以及相应的特点和技巧。统计分析也罢,数据挖掘也好,只要有价值,只要在实战中有效,都会是我们所关注的,都会是我们所要分析分享的。 2.3 数据挖掘的主要成熟技术以及在数据化运营中的主要应用 2.3.1 决策树 决策树(Decision Tree)是一种非常成熟的、普遍采用的数据挖掘技术。之所以称为树,是因为其建模过程类似一棵树的成长过程,即从根部开始,到树干,到分枝,再到细枝末节的分叉,最终生长出一片片的树叶。在决策树里,所分析的数据样本先是集成为一个树根,然后经过层层分枝,最终形成若干个结点,每个结点代表一个结论。 决策树算法之所以在数据分析挖掘应用中如此流行,主要原因在于决策树的构造不需要任何领域的知识,很适合探索式的知识发掘,并且可以处理高维度的数据。在众多的数据挖掘、统计分析算法中,决策树最大的优点在于它所产生的一系列从树根到树枝(或树叶)的规则,可以很容易地被分析师和业务人员理解,而且这些典型的规则甚至不用整理(或稍加整理),就是现成的可以应用的业务优化策略和业务优化路径。另外,决策树技术对数据的分布甚至缺失非常宽容,不容易受到极值的影响。 目前,最常用的3种决策树算法分别是CHAID、CART和ID3(包括后来的C4.5,乃至C5.0)。 CHAID( Chi-square Automatic Interaction Detector)算法的历史较长,中文简称为卡方自动相互关系检测。CHAID依据局部最优原则,利用卡方检验来选择对因变量最有影响的自变量,CHAID应用的前提是因变量为类别型变量(Category)。 CART( Classification and Regression Tree)算法产生于20世纪80年代中期,中文简称为分类与回归树,CART的分割逻辑与CHAID相同,每一层的划分都是基于对所有自变量的检验和选择上的。但是,CART采用的检验标准不是卡方检验,而是基尼系数(Gini)等不纯度的指标。两者最大的区别在于CHAID采用的是局部最优原则,即结点之间互不相干,一个结点确定了之后,下面的生长过程完全在结点内进行。而CART则着眼于总体优化,即先让树尽可能地生长,然后再回过头来对树进行修剪(Prune),这一点非常类似统计分析中回归算法里的反向选择(Backward Selection)。CART所生产的决策树是二分的,每个结点只能分出两枝,并且在树的生长过程中,同一个自变量可以反复使用多次(分割),这些都是不同于CHAID的特点。另外,如果是自变量存在数据缺失(Missing)的情况,CART的处理方式将会是寻找一个替代数据来代替(填充)缺失值,而CHAID则是把缺失数值作为单独的一类数值。 ID3(Iterative Dichotomiser)算法与CART是同一时期产生的,中文简称为迭代的二分器,其最大的特点在于自变量的挑选标准是:基于信息增益的度量选择具有最高信息增益的属性作为结点的分裂(分割)属性,其结果就是对分割后的结点进行分类所需的信息量最小,这也是一种划分纯度的思想。至于之后发展起来的C4.5可以理解为ID3的发展版(后继版),两者的主要区别在于C4.5采用信息增益率(Gain Ratio)代替了ID3中的信息增益度量,如此替换的主要原因是信息增益度量有个缺点,就是倾向于选择具有大量值的属性。这里给个极端的例子,对于Member_Id 的划分,每个Id都是一个最纯的组,但是这样的划分没有任何实际意义。而C4.5 所采用的信息增益率就可以较好地克服这个缺点,它在信息增益的基础上,增加了一个分裂信息(SplitInformation)对其进行规范化约束。 决策树技术在数据化运营中的主要用途体现在:作为分类、预测问题的典型支持技术,它在用户划分、行为预测、规则梳理等方面具有广泛的应用前景,决策树甚至可以作为其他建模技术前期进行变量筛选的一种方法,即通过决策树的分割来筛选有效地输入自变量。 关于决策树的详细介绍和实践中的注意事项,可参考本书10.2节。 2.3.2 神经网络 神经网络(Neural Network)是通过数学算法来模仿人脑思维的,它是数据挖掘中机器学习的典型代表。神经网络是人脑的抽象计算模型,我们知道人脑中有数以百亿个神经元(人脑处理信息的微单元),这些神经元之间相互连接,使得人的大脑产生精密的逻辑思维。而数据挖掘中的“神经网络”也是由大量并行分布的人工神经元(微处理单元)组成的,它有通过调整连接强度从经验知识中进行学习的能力,并可以将这些知识进行应用。 简单来讲,“神经网络”就是通过输入多个非线性模型以及不同模型之间的加权互联(加权的过程在隐蔽层完成),最终得到一个输出模型。其中,隐蔽层所包含的就是非线性函数。 目前最主流的“神经网络”算法是反馈传播(Backpropagation),该算法在多层前向型(Multilayer Feed-Forward)神经网络上进行学习,而多层前向型神经网络又是由一个输入层、一个或多个隐蔽层以及一个输出层组成的,“神经网络”的典型结构如图2-1所示。 图2-1 “神经网络”的典型结构图 由于“神经网络”拥有特有的大规模并行结构和信息的并行处理等特点,因此它具有良好的自适应性、自组织性和高容错性,并且具有较强的学习、记忆和识别功能。目前神经网络已经在信号处理、模式识别、专家系统、预测系统等众多领域中得到广泛的应用。 “神经网络”的主要缺点就是其知识和结果的不可解释性,没有人知道隐蔽层里的非线性函数到底是如何处理自变量的,“神经网络”应用中的产出物在很多时候让人看不清其中的逻辑关系。但是,它的这个缺点并没有影响该技术在数据化运营中的广泛应用,甚至可以这样认为,正是因为其结果具有不可解释性,反而更有可能促使我们发现新的没有认识到的规律和关系。 在利用“神经网络”技术建模的过程中,有以下5个因素对模型结果有着重大影响: 层数。 每层中输入变量的数量。 联系的种类。 联系的程度。 转换函数,又称激活函数或挤压函数。 关于这5个因素的详细说明,请参考本书10.1.1节。 “神经网络”技术在数据化运营中的主要用途体现在:作为分类、预测问题的重要技术支持,在用户划分、行为预测、营销响应等诸多方面具有广泛的应用前景。 关于神经网络的详细介绍和实践中的注意事项,可参考本书10.1节。 2.3.3 回归 回归(Regression)分析包括线性回归(Linear Regression),这里主要是指多元线性回归和逻辑斯蒂回归(Logistic Regression)。其中,在数据化运营中更多使用的是逻辑斯蒂回归,它又包括响应预测、分类划分等内容。 多元线性回归主要描述一个因变量如何随着一批自变量的变化而变化,其回归公式(回归方程)就是因变量与自变量关系的数据反映。因变量的变化包括两部分:系统性变化与随机变化,其中,系统性变化是由自变量引起的(自变量可以解释的),随机变化是不能由自变量解释的,通常也称作残值。 在用来估算多元线性回归方程中自变量系数的方法中,最常用的是最小二乘法,即找出一组对应自变量的相应参数,以使因变量的实际观测值与回归方程的预测值之间的总方差减到最小。 对多元线性回归方程的参数估计,是基于下列假设的: 输入变量是确定的变量,不是随机变量,而且输入的变量间无线性相关,即无共线性。 随机误差的期望值总和为零,即随机误差与自变量不相关。 随机误差呈现正态分布。 如果不满足上述假设,就不能用最小二乘法进行回归系数的估算了。 逻辑斯蒂回归(Logistic Regression)相比于线性回归来说,在数据化运营中有更主流更频繁的应用,主要是因为该分析技术可以很好地回答诸如预测、分类等数据化运营常见的分析项目主题。简单来讲,凡是预测“两选一”事件的可能性(比如,“响应”还是“不响应”;“买”还是“不买”;“流失”还是“不流失”),都可以采用逻辑斯蒂回归方程。 逻辑斯蒂回归预测的因变量是介于0和1之间的概率,如果对这个概率进行换算,就可以用线性公式描述因变量与自变量的关系了,具体公式如下: =0+1x1+2x2+…+kxk 与多元线性回归所采用的最小二乘法的参数估计方法相对应,最大似然法是逻辑斯蒂回归所采用的参数估计方法,其原理是找到这样一个参数,可以让样本数据所包含的观察值被观察到的可能性最大。这种寻找最大可能性的方法需要反复计算,对计算能力有很高的要求。最大似然法的优点是在大样本数据中参数的估值稳定、偏差小,估值方差小。 关于线性回归和逻辑回归的详细介绍和在实践应用中的注意事项,可参考本书10.3节和10.4节。 2.3.4 关联规则 关联规则(Association Rule)是在数据库和数据挖掘领域中被发明并被广泛研究的一种重要模型,关联规则数据挖掘的主要目的是找出数据集中的频繁模式(Frequent Pattern),即多次重复出现的模式和并发关系(Cooccurrence Relationships),即同时出现的关系,频繁和并发关系也称作关联(Association)。 应用关联规则最经典的案例就是购物篮分析(Basket Analysis),通过分析顾客购物篮中商品之间的关联,可以挖掘顾客的购物习惯,从而帮助零售商更好地制定有针对性的营销策略。 以下列举一个简单的关联规则的例子: 婴儿尿不湿→啤酒[支持度=10%, 置信度=70%] 这个规则表明,在所有顾客中,有10%的顾客同时购买了婴儿尿不湿和啤酒,而在所有购买了婴儿尿不湿的顾客中,占70%的人同时还购买了啤酒。发现这个关联规则后,超市零售商决定把婴儿尿不湿和啤酒摆放在一起进行促销,结果明显提升了销售额,这就是发生在沃尔玛超市中“啤酒和尿不湿”的经典营销案例。 上面的案例是否让你对支持度和置信度有了一定的了解?事实上,支持度(Support)和置信度(Confidence)是衡量关联规则强度的两个重要指标,它们分别反映着所发现规则的有用性和确定性。其中支持度:规则X→Y的支持度是指事物全集中包含X∪Y的事物百分比。支持度主要衡量规则的有用性,如果支持度太小,则说明相应规则只是偶发事件。在商业实战中,偶发事件很可能没有商业价值;置信度:规则X→Y的置信度是指既包含了X又包含了Y的事物数量占所有包含了X的事物数量的百分比。置信度主要衡量规则的确定性(可预测性),如果置信度太低,那么从X就很难可靠地推断出Y来,置信度太低的规则在实践应用中也没有太大用处。 在众多的关联规则数据挖掘算法中,最著名的就是Apriori算法,该算法具体分为以下两步进行: (1)生成所有的频繁项目集。一个频繁项目集(Frequent Itemset)是一个支持度高于最小支持度阀值(min-sup)的项目集。 (2)从频繁项目集中生成所有的可信关联规则。这里可信关联规则是指置信度大于最小置信度阀值(min-conf)的规则。 关联规则算法不但在数值型数据集的分析中有很大用途,而且在纯文本文档和网页文件中,也有着重要用途。比如发现单词间的并发关系以及Web的使用模式等,这些都是Web数据挖掘、搜索及推荐的基础。 2.3.5 聚类 聚类(Clustering)分析有一个通俗的解释和比喻,那就是“物以类聚,人以群分”。针对几个特定的业务指标,可以将观察对象的群体按照相似性和相异性进行不同群组的划分。经过划分后,每个群组内部各对象间的相似度会很高,而在不同群组之间的对象彼此间将具有很高的相异度。 聚类分析的算法可以分为划分的方法(Partitioning Method)、层次的方法(Hierarchical Method)、基于密度的方法(Density-based Method)、基于网格的方法(Grid-based Method)、基于模型的方法(Model-based Method)等,其中,前面两种方法最为常用。 对于划分的方法(Partitioning Method),当给定m个对象的数据集,以及希望生成的细分群体数量K后,即可采用这种方法将这些对象分成K组(K≤m),使得每个组内对象是相似的,而组间的对象是相异的。最常用的划分方法是K-Means方法,其具体原理是:首先,随机选择K个对象,并且所选择的每个对象都代表一个组的初始均值或初始的组中心值;对剩余的每个对象,根据其与各个组初始均值的距离,将它们分配给最近的(最相似)小组;然后,重新计算每个小组新的均值;这个过程不断重复,直到所有的对象在K组分布中都找到离自己最近的组。 层次的方法(Hierarchical Method)则是指依次让最相似的数据对象两两合并,这样不断地合并,最后就形成了一棵聚类树。 聚类技术在数据分析和数据化运营中的主要用途表现在:既可以直接作为模型对观察对象进行群体划分,为业务方的精细化运营提供具体的细分依据和相应的运营方案建议,又可在数据处理阶段用作数据探索的工具,包括发现离群点、孤立点,数据降维的手段和方法,通过聚类发现数据间的深层次的关系等。 关于聚类技术的详细介绍和应用实践中的注意事项,可参考本书第9章。 2.3.6 贝叶斯分类方法 贝叶斯分类方法(Bayesian Classifier)是非常成熟的统计学分类方法,它主要用来预测类成员间关系的可能性。比如通过一个给定观察值的相关属性来判断其属于一个特定类别的概率。贝叶斯分类方法是基于贝叶斯定理的,已经有研究表明,朴素贝叶斯分类方法作为一种简单贝叶斯分类算法甚至可以跟决策树和神经网络算法相媲美。 贝叶斯定理的公式如下: 其中,X表示n个属性的测量描述; H为某种假设,比如假设某观察值X属于某个特定的类别C;对于分类问题,希望确定P(H|X),即能通过给定的X的测量描述,来得到H成立的概率,也就是给出X的属性值,计算出该观察值属于类别C的概率。因为P(H|X)是后验概率(Posterior Probability),所以又称其为在条件X下,H的后验概率。 举例来说,假设数据属性仅限于用教育背景和收入来描述顾客,而X是一位硕士学历,收入10万元的顾客。假定H表示假设我们的顾客将购买苹果手机,则P(H|X)表示当我们知道顾客的教育背景和收入情况后,该顾客将购买苹果手机的概率;相反,P(X|H)则表示如果已知顾客购买苹果手机,则该顾客是硕士学历并且收入10万元的概率;而P(X)则是X的先验概率,表示顾客中的某个人属于硕士学历且收入10万元的概率;P(H)也是先验概率,只不过是任意给定顾客将购买苹果手机的概率,而不会去管他们的教育背景和收入情况。 从上面的介绍可见,相比于先验概率P(H),后验概率P(H|X)基于了更多的信息(比如顾客的信息属性),而P(H)是独立于X的。 贝叶斯定理是朴素贝叶斯分类法(Naive Bayesian Classifier)的基础,如果给定数据集里有M个分类类别,通过朴素贝叶斯分类法,可以预测给定观察值是否属于具有最高后验概率的特定类别,也就是说,朴素贝叶斯分类方法预测X属于类别Ci时,表示当且仅当 P(Ci | X)>P(Cj | X)  1≤j≤m,ji 此时如果最大化P(Ci|X),其P(Ci|X)最大的类Ci被称为最大后验假设,根据贝叶斯定理 可知,由于P(X)对于所有的类别是均等的,因此只需要P(X|Ci)P(Ci)取最大即可。 为了预测一个未知样本X的类别,可对每个类别Ci估算相应的P(X|Ci)P(Ci)。样本X归属于类别Ci,当且仅当 P(Ci | X)>P(Cj | X)  1≤j≤m,ji 贝叶斯分类方法在数据化运营实践中主要用于分类问题的归类等应用场景。 2.3.7 支持向量机 支持向量机(Support Vector Machine)是Vapnik等人于1995年率先提出的,是近年来机器学习研究的一个重大成果。与传统的神经网络技术相比,支持向量机不仅结构简单,而且各项技术的性能也明显提升,因此它成为当今机器学习领域的热点之一。 作为一种新的分类方法,支持向量机以结构风险最小为原则。在线性的情况下,就在原空间寻找两类样本的最优分类超平面。在非线性的情况下,它使用一种非线性的映射,将原训练集数据映射到较高的维上。在新的维上,它搜索线性最佳分离超平面。使用一个适当的对足够高维的非线性映射,两类数据总可以被超平面分开。 支持向量机的基本概念如下: 设给定的训练样本集为{(x1, y1), (x2, y2), …, (xn, yn)},其中xi 蜶n, y蝱-1,1}。 再假设该训练集可被一个超平面线性划分,设该超平面记为(w, x)+b=0。 支持向量机的基本思想可用图2-2的两维情况举例说明。 图中圆形和方形代表两类样本,H为分类线,H1、H2,分别为过各类样本中离分类线最近的样本并且平行于分类线的直线,它们之间的距离叫做分类间隔(Margin)。所谓的最优分类线就是要求分类线不但能将两类正确分开(训练错误为0),而且能使分类间隔最大。推广到高维空间,最优分类线就成了最优分类面。 其中,距离超平面最近的一类向量被称为支持向量(Support Vector),一组支持向量可以唯一地确定一个超平面。通过学习算法,SVM可以自动寻找出那些对分类有较好区分能力的支持向量,由此构造出的分类器则可以最大化类与类的间隔,因而有较好的适应能力和较高的分类准确率。 图2-2 线性可分情况下的最优分类线 支持向量机的缺点是训练数据较大,但是,它的优点也是很明显的—对于复杂的非线性的决策边界的建模能力高度准确,并且也不太容易过拟合。 支持向量机主要用在预测、分类这样的实际分析需求场景中。 2.3.8 主成分分析 严格意义上讲,主成分分析(Principal Components Analysis)属于传统的统计分析技术范畴,但是正如本章前面所阐述的,统计分析与数据挖掘并没有严格的分割,因此在数据挖掘实战应用中也常常会用到这种方式,从这个角度讲,主成分分析也是数据挖掘商业实战中常用的一种分析技术和数据处理技术。 主成分分析会通过线性组合将多个原始变量合并成若干个主成分,这样每个主成分都变成了原始变量的线性组合。这种转变的目的,一方面是可以大幅降低原始数据的维度,同时也在此过程中发现原始数据属性之间的关系。 主成分分析的主要步骤如下: 1)通常要先进行各变量的标准化工作,标准化的目的是将数据按照比例进行缩放,使之落入一个小的区间范围之内,从而让不同的变量经过标准化处理后可以有平等的分析和比较基础。关于数据标准化的详细介绍,可参考本书8.5.4节和9.3.2节。 2)选择协方差阵或者相关阵计算特征根及对应的特征向量。 3)计算方差贡献率,并根据方差贡献率的阀值选取合适的主成分个数。 4)根据主成分载荷的大小对选择的主成分进行命名。 5)根据主成分载荷计算各个主成分的得分。 将主成分进行推广和延伸即成为因子分析(Factor Analysis),因子分析在综合原始变量信息的基础上将会力图构筑若干个意义较为明确的公因子;也就是说,采用少数几个因子描述多个指标之间的联系,将比较密切的变量归为同一类中,每类变量即是一个因子。之所以称其为因子,是因为它们实际上是不可测量的,只能解释。 主成分分析是因子分析的一个特例,两者的区别和联系主要表现在以下方面: 主成分分析会把主成分表示成各个原始变量的线性组合,而因子分析则把原始变量表示成各个因子的线性组合。这个区别最直观也最容易记住。 主成分分析的重点在于解释原始变量的总方差,而因子分析的重点在于解释原始变量的协方差。 在主成分分析中,有几个原始变量就有几个主成分,而在因子分析中,因子个数可以根据业务场景的需要人为指定,并且指定的因子数量不同,则分析结果也会有差异。 在主成分分析中,给定的协方差矩阵或者相关矩阵的特征值是唯一时,主成分也是唯一的,但是在因子分析中,因子不是唯一的,并且通过旋转可以得到不同的因子。 主成分分析和因子分析在数据化运营实践中主要用于数据处理、降维、变量间关系的探索等方面,同时作为统计学里的基本而重要的分析工具和分析方法,它们在一些专题分析中也有着广泛的应用。 2.3.9 假设检验 假设检验(Hypothesis Test)是现代统计学的基础和核心之一,其主要研究在一定的条件下,总体是否具备某些特定特征。 假设检验的基本原理就是小概率事件原理,即观测小概率事件在假设成立的情况下是否发生。如果在一次试验中,小概率事件发生了,那么说明假设在一定的显著性水平下不可靠或者不成立;如果在一次试验中,小概率事件没有发生,那么也只能说明没有足够理由相信假设是错误的,但是也并不能说明假设是正确的,因为无法收集到所有的证据来证明假设是正确的。 假设检验的结论是在一定的显著性水平下得出的。因此,当采用此方法观测事件并下结论时,有可能会犯错,这些错误主要有两大类: 第Ⅰ类错误:当原假设为真时,却否定它而犯的错误,即拒绝正确假设的错误,也叫弃真错误。犯第Ⅰ类错误的概率记为,通常也叫错误,=1-置信度。 第Ⅱ类错误:当原假设为假时,却肯定它而犯的错误,即接受错误假设的错误,也叫纳伪错误。犯第Ⅱ类错误的概率记为,通常也叫错误。 上述这两类错误在其他条件不变的情况下是相反的,即增大时,就减小;减小时,就增大。错误容易受数据分析人员的控制,因此在假设检验中,通常会先控制第Ⅰ类错误发生的概率,具体表现为:在做假设检验之前先指定一个的具体数值,通常取0.05,也可以取0.1或0.001。 在数据化运营的商业实践中,假设检验最常用的场景就是用于“运营效果的评估”上,本书第12章将针对最常见、最基本的假设检验形式和技术做出比较详细的梳理和举例。 2.4 互联网行业数据挖掘应用的特点 相对于传统行业而言,互联网行业的数据挖掘和数据化运营有如下的一些主要特点: 数据的海量性。互联网行业相比传统行业第一个区别就是收集、存储的数据是海量的,这一方面是因为互联网的使用已经成为普通人日常生活和工作中不可或缺的一部分,另一方面更是因为用户网络行为的每一步都会被作为网络日志记录下来。海量的数据、海量的字段、海量的信息,尤其是海量的字段,使得分析之前对于分析字段的挑选和排查工作显得无比重要,无以复加。如何大浪淘沙挑选变量则为重中之重,对此很难一言以蔽之的进行总结,还是用三分技术,七分业务来理解吧。本书从第7~12章,几乎每章都用大量的篇幅讨论如何在具体的分析课题和项目中选择变量、评估变量、转换变量,乃至如何通过清洗后的核心变量完成最终的分析结论(挖掘模型)。 数据分析(挖掘)的周期短。鉴于互联网行业白热化的市场竞争格局,以及该行业相对成熟的高级数据化运营实践,该行业的数据分析(挖掘)通常允许的分析周期(项目周期)要明显短于传统行业。行业技术应用飞速发展,产品和竞争一日千里,都使该行业的数据挖掘项目的时间进度比传统行业的项目模式快得多。一方面要保证挖掘结果的起码质量,另一方面要满足这个行业超快的行业节奏,这也使得传统的挖掘分析思路和步调必须改革和升华,从而具有鲜明的Internet色彩。 数据分析(挖掘)成果的时效性明显变短。由于互联网行业的用户行为相对于传统行业而言变化非常快,导致相应的数据分析挖掘成果的时效性也比传统行业明显缩短。举例来说,互联网行业的产品更新换代很多是以月为单位的,新产品层出不穷,老产品要及时下线,因此,针对具体产品的数据分析(挖掘)成果的时效性也明显变短;或者说,用户行为变化快,网络环境变化快,导致模型的维护和优化的时间周期也明显变短,传统行业里的“用户流失预测模型”可能只需要每年更新优化一次,但是在互联网行业里类似的模型可能3个月左右就有必要更新优化了。 互联网行业新技术、新应用、新模式的更新换代相比于传统行业而言更加迅速、周期更短、更加具有颠覆性,相应地对数据分析挖掘的应用需求也更为苛刻,且要多样化。以中国互联网行业的发展为例,作为第一代互联网企业的代表,新浪、搜狐、雅虎等门户网站的Web 1.0模式(传统媒体的电子化)从产生到被以Google、百度等搜索引擎企业的Web 2.0模式(制造者与使用者的合一)所超越,前后不过10年左右的时间,而目前这个Web 2.0模式已经逐渐有被以微博为代表Web 3.0模式(SNS模式)超越的趋势。具体到数据分析所服务的互联网业务和应用来说,从最初的常规、主流的分析挖掘支持,到以微博应用为代表的新的分析需求,再到目前风头正健的移动互联网的数据分析和应用,互联网行业的数据分析大显身手的天地在不断扩大,新的应用源源不断,新的挑战让人们应接不暇,这一切都要求数据分析师自觉、主动去学习、去充实、去提升自己、去跟上互联网发展的脚步。 第3章 数据化运营中常见的数据分析项目类型 千举万变,其道一也。 —《荀子·儒效》 3.1 目标客户的特征分析 3.2 目标客户的预测(响应、分类)模型 3.3 运营群体的活跃度定义 3.4 用户路径分析 3.5 交叉销售模型 3.6 信息质量模型 3.7 服务保障模型 3.8 用户(买家、卖家)分层模型 3.9 卖家(买家)交易模型 3.10 信用风险模型 3.11 商品推荐模型 3.12 数据产品 3.13 决策支持 数据化运营中的数据分析项目类型比较多,涉及不同的业务场景、业务目的和分析技术。在本章中,按照业务用途的不同将其做了一个大概的分类,并针对每一类项目的特点和具体采用的分析挖掘技术进行了详细的说明和举例示范。 一个成功的数据分析挖掘项目,首先要有准确的业务需求描述,之后则要求项目相关人员自始至终对业务有正确的理解和判断,所以对于本章所分享的所有分析项目类型以及对应的分析挖掘技术,读者只有在深刻理解和掌握相应业务背景的基础上才可以真正理解项目类型的特点、目的,以及相应的分析挖掘技术合适与否。 对业务的理解和思考,永远高于项目的分类和分析技术的选择。 3.1 目标客户的特征分析 目标客户的特征分析几乎是数据化运营企业实践中最普遍、频率最高的业务分析需求之一,原因在于数据化运营的第一步(最基础的步骤)就是要找准你的目标客户、目标受众,然后才是相应的运营方案、个性化的产品与服务等。是不加区别的普遍运营还是有目标有重点的精细化运营,这是传统的粗放模式与精细的数据化运营最直接、最显性的区别。 在目标客户的典型特征分析中,业务场景可以是试运营之前的虚拟特征探索,也可以是试运营之后来自真实运营数据基础上的分析、挖掘与提炼,两者目标一致,只是思路不同、数据来源不同而已。另外,分析技术也有一定的差异。 对于试运营之前的虚拟特征探索,是指目标客户在真实的业务环境里还没有产生,并没有一个与真实业务环境一致的数据来源可以用于分析目标客户的特点,因此只能通过简化、类比、假设等手段,来寻找一个与真实业务环境近似的数据来源,从而进行模拟、探索,并从中发现一些似乎可以借鉴和参考的目标用户特征,然后把这些特征放到真实的业务环境中去试运营。之后根据真实的效果反馈数据,修正我们的目标用户特征。一个典型的业务场景举例就是A公司推出了一个在线转账产品,用户通过该产品在线转账时产生的交易费用相比于普通的网银要便宜些。在正式上线该转账产品之前,产品运营团队需要一个初步的目标客户特征报告。很明显,在这个时刻,产品还没有上线,是无法拥有真实使用该产品的用户的,自然也没有相应数据的积累,那这个时候所做的目标客户特征分析只能是按照产品设计的初衷、产品定位,以及运营团队心中理想化的猜测,从企业历史数据中模拟、近似地整理出前期期望中的目标客户典型特征,很明显这里的数据并非来自该产品正式上线后的实际用户数据(还没有这些真实的数据产生),所以这类场景的分析只能是虚拟的特征分析。具体来说,本项目先要从企业历史数据中寻找有在线交易历史的买卖双方,在线行为活跃的用户,以及相应的一些网站行为、捆绑了某知名的第三方支付工具的用户等,然后根据这些行为字段和模拟的人群,去分析我们期望的目标客户特征,在通过历史数据仓库的对比后,准确掌握该目标群体的规模和层次,从而提交运营业务团队正式运营。 对于试运营之后的来自真实运营数据基础上的用户特征分析,相对而言,就比上述的模拟数据分析来得更真实更可行,也更贴近业务实际。在该业务场景下,数据的提取完全符合业务需求,且收集到的用户也是真实使用了该产品的用户,基于这些真实用户的分析就不是虚拟的猜测和模拟了,而是有根有据的铁的事实。在企业的数据化运营实践中,这后一种场景更加普遍,也更加可靠。 对于上面提到的案例,在经过一段时间的试运营之后,企业积累了一定数量使用该产品的用户数据。现在产品运营团队需要基于该批实际的用户数据,整理分析出该产品的核心目标用户特征分析报告,以供后期运营团队、产品开发团队、服务团队更有针对性、更有效地进行运营和服务。在这种基于真实的业务场景数据基础上的客户特征分析,有很多分析技术可以采用(本书第11章将针对“用户特征分析”进行专题介绍,分享其中最主要的一些分析技术),但是其中采用预测模型的思路是该场景与上述“虚拟场景”数据分析的一个不同,上述“虚拟场景”数据分析一般来说是无法进行预测模型思路的探索的。 关于目标客户特征分析的具体技术、思路、实例分享,可参考本书第11章。 3.2 目标客户的预测(响应、分类)模型 这里的预测(响应、分类)模型包括流失预警模型、付费预测模型、续费预测模型、运营活动响应模型等。 预测(响应、分类)模型是数据挖掘中最常用的一种模型类型,几乎成了数据挖掘技术应用的一个主要代名词。很多书籍介绍到数据挖掘的技术和应用,首先都会列举预测(响应、分类)模型,主要的原因可能是响应模型的核心就是响应概率,而响应概率其实就是我们在第1章中介绍的数据化运营六要素里的核心要素—概率(Probability),数据化运营6要素的核心是以数据分析挖掘支撑的目标响应概率(Probability),在此基础上围绕产品功能优化、目标用户细分、活动(文案)创意、渠道优化、成本的调整等重要环节、要素,共同达成数据化运营的持续完善、成功。 预测(响应、分类)模型基于真实业务场景产生的数据而进行的预测(响应、分类)模型搭建,其中涉及的主要数据挖掘技术包括逻辑回归、决策树、神经网络、支持向量机等。有没有一个算法总是优先于其他算法呢?答案是否定的,没有哪个算法在任何场景下都总能最优胜任响应模型的搭建,所以在通常的建模过程中,数据分析师都会尝试多种不同的算法,然后根据随后的验证效果以及具体业务项目的资源和价值进行权衡,并做出最终的选择。 根据建模数据中实际响应比例的大小进行分类,响应模型还可以细分为普通响应模型和稀有事件响应模型,一般来讲,如果响应比例低于1%,则应当作为稀有事件响应模型来进行处理,其中的核心就是抽样,通过抽样技术人为放大分析数据样本里响应事件的比例,增加响应事件的浓度,从而在建模过程中更好地捕捉、拟合其中自变量与因变量的关系。 预测(响应、分类)模型除了可以有效预测个体响应的概率之外,模型本身显示出的重要输入变量与目标变量的关系也有重要的业务价值,比如说可以转化成伴随(甚至导致)发生响应(生成事件)的关联因素、重要因素的提炼。而很多时候,这种重要因素的提炼,是可以作为数据化运营中的新规则、新启发,甚至是运营的“新抓手”的。诚然,从严格的统计学角度来看,预测响应模型中的输入变量与目标变量之间的重要关系并不一定是因果关系,严格意义上的因果关系还需要后期进行深入的分析和实验;即便如此,这种输入变量与目标变量之间的重要关系也常常会对数据化运营具有重要的参考和启发价值。 比如说,我们通过对在线交易的卖家进行深入分析挖掘,建立了预测响应模型,从而根据一系列特定行为和属性的组合,来判断在特定时间段内发生在线交易的可能性。这个响应模型除了生成每个Member_Id在特定时间段发生在线交易的可能性之外,从模型中提炼出来的一些重要输入变量与目标变量(是否发生在线交易),以及它们之间的关系(包括正向或负向关系,重要性的强弱等)对数据化运营也有着很重要的参考和启发。在本案例中,我们发现输入变量近30天店铺曝光量、店铺装修打分超过25分等与是否在线交易有着最大的正相关。根据这些发现和规则整理,尽管不能肯定这些输入变量与是否在线交易有因果关系,但这些正向的强烈的关联性也足以为提升在线交易的数据化运营提供重要的启发和抓手。我们有一定的理由相信,如果卖家提升店铺的曝光量,如果卖家把自己的店铺装修得更好,促进卖家在线成交的可能性会加大。 3.3 运营群体的活跃度定义 运营群体(目标群体)的活跃度定义,这也是数据化运营基本的普遍的要求。数据化运营与传统的粗放型运营最主要的区别(核心)就是前者是可以准确地用数据衡量,而且这种衡量是自始至终地贯穿于数据化运营的全过程;而在运营全过程的衡量监控中,活跃度作为一个综合的判断指标,又在数据化运营实践中有着广泛的应用和曝光。活跃度的定义没有统一的描述,一般都是根据特定的业务场景和运营需求来量身订做的。但是,纵观无数场景中的活跃度定义,可以发现其中是有一些固定的骨架作为基础和核心的。其中最重要、最常见的两个基本点如下。 1)活跃度的组成指标应该是该业务场景中最核心的行为因素。 2)衡量活跃度的定义合适与否的重要判断依据是其能否有效回答业务需求的终极目标。 下面我们用具体的案例来解释上述两个基本点。 案例:PM产品是一款在线的SAAS产品,其用途在于协助卖家实时捕捉买家访问店铺的情况,并且通过该PM产品可以实现跟买家对话、交换联系方式等功能。作为PM产品的运营方,其运营策略是向所有平台的卖家免费提供PM产品的基本功能(每天只能联系一位到访的买家,也即限制了联系多位到访买家的功能)、向部分优质卖家提供一定期限内免费的PM产品全功能(这部分优质卖家免费获赠PM产品,可以享受跟付费一样的全功能)、向目标卖家在线售卖PM产品。 经过一段时间的运营,现在管理层需要数据分析团队定义一个合理的“PM产品用户活跃度”,使得满足一定活跃度分值的用户能比较容易转化成为PM产品的付费用户,同时这个合适的定义还可以帮助有效监控每天PM产品的运营效果和效率。 根据上面的案例背景描述,以及之前的活跃度定义的两个基本点来看,在本案例中,该业务场景中最核心的行为因素就是卖家使用该PM产品与到访买家的洽谈动作(表现形式为洽谈的次数)、在线登录该PM产品的登录次数等。而该分析需求的终极目的就是促成付费用户的转化,所以项目最终活跃度的定义是否合适,是否满足业务需求,一个最重要的评估依据就是按照该活跃度定义出来的活跃用户群体里,可以覆盖多少实际的PM产品付费用户。从理论上来说,覆盖率越高越好,如果覆盖率不高,比如,实际付费用户群体里只有50%包含在活跃度定义的活跃群体里,那么这个活跃度的定义是不能满足当初的业务需求的,也就是说这是一个不成功的定义。 活跃度的定义所涉及的统计技术主要有两个,一个是主成分分析,另一个是数据的标准化。其中,主成分分析的目的,就是把多个核心行为指标转化为一个或少数几个主成分,并最终转化成一个综合的分数,来作为活跃度的定义,到底是取第一个主成分,还是前两个或前三个,这要取决于主成分分析的特征根和累计方差贡献率,一般来说,如果前面几个特征根的累计方差贡献率达到80%以上,就可以基本认为前面几个主成分就可以相应地代表原始数据的大部分信息了;至于数据标准化技术得到了普遍采用,主要是因为不同的指标有不同的度量尺度,只有在标准化之后,才可以将数据按照比例进行缩放,使之落入一个小的区间范围之内,这样,不同变量经过标准化处理后就可以有平等的分析和比较基础了。关于数据标准化的详细介绍,可参看本书8.5.4节和9.3.2节。 3.4 用户路径分析 用户路径分析是互联网行业特有的分析专题,主要是分析用户在网页上流转的规律和特点,发现频繁访问的路径模式,这些路径的发现可以有很多业务用途,包括提炼特定用户群体的主流路径、网页设计的优化和改版、用户可能浏览的下一个页面的预测、特定群体的浏览特征等。从这些典型的用途示例中可以看到,数据化运营中的很多业务部门都需要应用用户路径分析,包括运营部门、产品设计部门(PD)、用户体验设计部门(User Experience Design,UED)等。 路径分析所用的数据主要是Web服务器中的日志数据,不过,互联网的特性使得日志数据的规模通常都是海量的。据预测,到2020年,全球以电子形式存储的数据量将达到35ZB(相当于10亿块1TB的硬盘的容量),是2009年全球存储量的40倍。而在2010年年底,根据 IDC的统计,全球的数据量已经达到了120万PB,或1.2ZB。如果将这些数据都刻录在DVD上,那么光把这些DVD盘片堆叠起来就可以从地球往月球一个来回(单程约24万英里)。 路径分析常用的分析技术有两类,一类是有算法支持的,另一类是严格按照步骤顺序遍历主要路径的。关于路径分析中具体的算法和示例将在第13章做详细的说明。 在互联网数据化运营的实践中,如果能把单纯的路径分析技术、算法与其他相关的数据分析技术、挖掘技术相融合,那么将会产生更大的应用价值和更为广阔的前景。这种融合的思路包括通过聚类技术划分出不同的群体,然后分析不同群体的路径特征,针对特定人群进行的路径分析,比如,对比付费人群的主要路径与非付费人群的主要路径,优化页面布局等、根据下单付费路径中频繁出现的异常模式可能来对付费环境的页面设计进行优化,提升付费转化率,减少下单后的流失风险等。 在运营团队看来,路径分析的主要用途之一,即为监控运营活动(或者目标客户)的典型路径,看是否与当初的运营设想一致。如果不一致,就继续深入分析原因,调整运营思路或页面布局,最终目的就是提升用户点击页面的效率;其二就是通过路径分析,提炼新的有价值的频繁路径模式,并且在以后的运营中对这些模式加以应用,提升运营的效率和特定效果。比如,通过某次运营活动的路径分析,我们发现从A入口进来的用户有30%会进入C页面,然后再进入B页面,而A入口是系列运营活动的主要入口之一,基于这个C页面的重要性发现,运营人员在该页面设置了新的提醒动作,取得了较好的深度转化率。 在产品设计部门(PD)看来,路径分析是实现产品优化的一个重要依据和工具,被路径分析证明是冷僻的功能点和路径的,或许可以被进一步考虑是否有必要取消或优化。对于UED来说,路径分析也是这样帮助他们优化页面设计的。 3.5 交叉销售模型 交叉销售这个概念在传统行业里其实已经非常成熟了,也已被普遍应用,其背后的理论依据是一旦客户购买了商品(或者成为付费用户),企业就会想方设法保留和延长这些客户在企业的生命周期和客户的利润贡献,一般会有两个运营选择方向,一是延缓客户流失,让客户尽可能长久地留存,在该场景下,通常就是客户流失预警模型发挥作用,利用流失预警模型,提前锁定最可能流失的有价值的用户,然后客户服务团队采用各种客户关怀措施,尽量挽留客户,从而最终降低客户流失率;二是让客户消费更多的商品和服务,从而更大地提升客户的商业价值,挖掘客户利润,这种尽量挖掘客户利润的说法在以客户为中心的激烈竞争的2.0时代显得有些赤裸裸,所以,更加温和的说法就是通过数据分析挖掘,找出客户进一步的消费需求(潜在需求),从而更好及更主动地引导、满足、迎合客户需求,创造企业和客户的双赢。在这第二类场景中,涉及的主要应用模型就是交叉销售模型。 交叉销售模型通过对用户历史消费数据的分析挖掘,找出有明显关联性质的商品组合,然后用不同的建模方法,去构建消费者购买这些关联商品组合的可能性模型,再用其中优秀的模型去预测新客户中购买特定商品组合的可能性。这里的商品组合可以是同时购买,也可以有先后顺序,不可一概而论,关键要看具体的业务场景和业务背景。 不同的交叉销售模型有不同的思路和不同的建模技术,但是前提一般都是通过数据分析找出有明显意义和商业价值的商品组合,可以同时购买,也可以有先后顺序,然后根据找出的这些特性去建模。 综合数据挖掘的中外企业实践来看,最少有4种完全不同的思路,可以分别在不同的项目背景中圆满完成建立交叉销售模型的这个任务。一是按照关联技术(Association Analysis),也即通常所说的购物篮分析,发现那些有较大可能被一起采购的商品,将它们进行有针对性的促销和捆绑,这就是交叉销售;二是借鉴响应模型的思路,为某几种重要商品分别建立预测模型,对潜在消费者通过这些特定预测模型进行过滤,然后针对最有可能的前5%的消费者进行精确的营销推广;三是仍然借鉴预测响应模型的思路,让重要商品两两组合,找出那些最有可能消费的潜在客户;四是通过决策树清晰的树状规则,发现基于具体数据资源的具体规则(有的多,有的少),国外很多营销方案的制订和执行实际上都是通过这种方式找到灵感和思路的。 相应的建模技术主要包括关联分析(Association Analysis)、序列分析(Sequence Analysis),即在关联分析的基础上,增加了先后顺序的考虑,以及预测(响应、分类)模型技术,诸如逻辑回归、决策树等。 上面总结的是基于传统行业的实践,这些经验事实上也成功地应用到了互联网行业的数据化运营中。无论是多种在线产品的交叉销售,还是电子商务中的交叉销售,抑或各种服务的推广、运营中的商品捆绑策略,都可以从中看到交叉销售的影子,这种理念正在深入地影响着数据化运营的效果和进程。 下面针对典型的交叉销售模型的应用场景来举个例子:A产品与B产品都是公司SAAS系列产品线上的重点产品,经过分析发现两者付费用户的重合度高达40%,现在运营方需要一个数据分析解决方案,可以有效识别出最可能在消费A产品的基础上也消费B产品的潜在优质用户。本案例的分析需求,实际上就是一个典型的交叉销售模型的搭建需求,数据分析师在与业务团队充分沟通后,通过现有数据进行分析,找出了同时消费A产品和B产品(注意,是同时消费,还是有先后次序,这个具体的定义取决于业务需求的判断,两者取数逻辑不同,应用场景也不同,不过分析建模技术还是可以相同的)用户的相关的网站行为、商业行为、客户属性等,之后再进行数据分析和挖掘建模,最后得到了一个有效的预测模型,通过该模型可以对新的用户数据进行预测,找出最可能消费A产品同时也消费B产品的潜在付费用户人群(或名单)。这样,运营方就可以进行精准的目标运营,从而有效提升运营效果,有效提升付费用户数量和付费转化率了。 3.6 信息质量模型 信息质量模型在互联网行业和互联网数据化运营中也是有着广泛基础性应用的。具体来说,电商行业和电商平台连接买卖双方最直接、最关键的纽带就是海量的商品目录、商品Offer、商品展示等,无论是B2C(如当当网、凡客网),还是C2C(如淘宝网),或者是B2B(如阿里巴巴),只要是以商业为目的,以交易为目的的,都需要采用有效手段去提升海量商业信息(商品目录、商品Offer、商品展示等)的质量和结构,从而促进交易。在同等条件下,一个要素齐备、布局合理、界面友好的网上店铺或商品展示一定比不具备核心要素、布局不合理、界面不友好的更加容易达成交易,更加容易获得买家的好感,这里揭示的其实就是信息质量的重要价值。 为让读者更加直观了解信息质量的含义,下面通过某网站的截图来举例说明什么是信息质量好的Offer效果,如图3-1和图3-2所示。 不难发现,相对于图3-2来说,图3-1中有更多的商品要素展示,包括付款方式、产品品牌、产品型号等,另外在详细信息栏目里,所包含的信息也更多更全。也就是说,图3-1中商品Offer的信息质量要明显好于图3-2。 互联网行业的信息质量模型所应用的场合主要包括商品Offer质量优化、网上店铺质量优化、网上论坛的发帖质量优化、违禁信息的过滤优化等,凡是涉及信息质量监控和优化的场景都是适用(或借鉴)信息质量模型的解决方案的。 图3-1 信息质量较好的Offer界面图 图3-2 信息质量较差的Offer界面图 构建信息质量模型所涉及的主要还是常规的数据挖掘技术,比如回归算法、决策树等。但是对于信息质量模型的需求,由于其目标变量具有一定的特殊性,因此它与目标客户预测(响应)模型在思路和方法上会有一些不同之处,具体内容如下。 任何模型的搭建都是用于响应特定的业务场景和业务需求的,有时候搭建信息质量模型的目标变量是该信息(如商品Offer)是否在特定的时间段产生了交易,此时,目标变量就是二元的,即是与否;更多的时候,信息质量模型的目标变量与是否交易没有直接关系(这其实很容易理解,因为影响成交的因素太多),甚至有些时候信息质量本身是主观的判断,在这种情况下,没有明确的来自实际数据的目标变量。那如何定义目标变量呢?专家打分,模型拟合是一个比较合适的变通策略。 对于专家打分,模型拟合的具体操作,下面以“商品Offer的星级划分”项目为例来进行具体的解释和示范。商品Offer其实就是网上交易中,卖家针对每种出售的商品展示具体的商品细节、交易条款、图片细节等,使其构成的一个完整的页面,一般来说买家浏览了某种具体的商品Offer以后,只要点击“加入购物车”就可以进行后续的购买付费流程了。在某次“商品Offer的星级划分”项目中,目标变量就是专家打分,由业务专家、行业专家基于行业的专业背景知识,针对商品Offer构成要素的权重进行人为打分,这些构成要素包括标题长度、图片数量、属性选填的比例、是否有分层价格区间、是否填写供货总量信息、是否有混批说明、是否有运营说明、是否支持在线第三方支付等。首先抽取一定数量的样本,请行业专家对这些样本逐个打分赋值,在取得每种商品Offer的具体分数后,把这些分数作为目标变量,利用数据挖掘的各种模型去拟合这些要素与总分数的关系,最终形成一个合适的模型,该模型比较有效地综合了专家打分的意见并且有效拟合Offer构成要素与总分数的关系。为了更加准确,在专家打分的基础上,还可以辅之以客户调研,从而对专家的打分和各要素的权重进行修正,最后在修正的基础上进行模型的搭建和拟合,这属于项目的技术细节,不是项目核心,故不做深入的讲解。 信息质量模型是电子商务和网上交易的基本保障,其主要目的是确保商品基本信息的优质和高效,让买家更容易全面、清楚、高效地了解商品的主要细节,让卖家更容易、更高效地展示自己的商品。无论是C2C(如淘宝),还是B2B(如阿里巴巴),抑或是B2C(如当当网、凡客网),都可以用类似的方法去优化、提升自己的商品展示质量和效果,有效提升和保障交易的转化率。 3.7 服务保障模型 服务保障模型主要是站在为客户服务的角度来说的,出发点是为了让客户(平台的卖家)更好地做生意,达成更多的交易,我们(平台)应该为他们提供哪些有价值的服务去支持、保障卖家生意的发展,这里的服务方向就可以有很多的空间去想象了。比如,让卖家购买合适的增值产品,让卖家续费合适的增值产品、卖家商业信息的违禁过滤、卖家社区发帖的冷热判断等,凡是可以更好地武装卖家的,可以让卖家更好地服务买家的措施,无论是产品武装,还是宣传帮助,都属于服务保障的范畴,都是服务保障模型可以并且应该出力的方向。 针对服务保障模型的示例将会在随后的预测(响应、分类)模型里专门进行介绍,所以这里不展开讨论,但是对于服务保障环节,我们还是应该有一定的认识,无论从数据化运营的管理、客户关系管理,还是数据分析挖掘应用上,服务保障环节都是不能忽视的一个方面。 3.8 用户(买家、卖家)分层模型 用户(买家、卖家)分层模型也是数据化运营中常见的解决方案之一,它与数据化运营的本质是密切相关的。精细化运营必然会要求区别对待,而分层(分群)则是区别对待的基本形式。 分层模型是介于粗放运营与基于个体概率预测模型之间的一种折中和过渡模型,其既兼顾了(相对粗放经营而言比较)精细化的需要,又不需要(太多资源)投入到预测模型的搭建和维护中,因而在数据化运营的初期以及在战略层面的分析中,分层模型有着比较广泛的应用和较大的价值。 正如预测模型有特定的目标变量和模型应用场景一样,分层模型也有具体的分层目的和特定用途,这些具体的目的和用途就决定了分层模型的构建思路和评价依据。其常用的场景为:客户服务团队需要根据分层模型来针对不同的群体提供不同的说辞和相应的服务套餐;企业管理层需要基于在线交易卖家数量来形成以其为核心的卖家分层进化视图;运营团队需要通过客户分层模型来指导相应的运营方案的制订和执行,从而提高运营效率和付费转化率等。这些分层模型既可以为管理层、决策层提供基于特定目的的统一进化视图,又可以给业务部门做具体的数据化运营提供分群(分层)依据和参考。 分层模型常用的技术既包括统计分析技术(比如相关性分析、主成分分析等),又可以含有预测(响应、分类)模型的技术(比如通过搭建预测模型发现最重要的输入变量及其排序情况,然后根据这些变量对分层进行大致的划分,并通过实际数据进行验证),这要视具体的分析目的、业务背景和数据结构而定,同时要强调的是,一个好的分层模型的搭建一定是需要业务方的参与和贡献的,而且其中的业务逻辑和业务思考远远胜过分析技术本身。 下面我们分别用两个典型的案例来说明分层模型是如何搭建和应用的。 案例一:以交易卖家数量为核心的卖家分层进化视图 背景:某互联网公司作为买卖双方的交易平台,其最终的价值体现在买卖双方在该平台上达成交易(从而真正让买卖双方双赢,满意)。现在,管理层希望针对在线成交的卖家(群体)形成一个分层进化的视图。其基本目标就是,从免费注册的卖家开始,通过该视图可以粗略地、有代表性地勾画出卖家一步一步成长、进步乃至最终达成交易的全过程。这里的每一层都是一个或几个有代表性的重要指标门槛,顺着不同的门槛逐步进化,越往上走,人群越少,越有可能成为有交易的卖家,而最后最高一层将是近30天来有交易的卖家。从这个背景和目标描述里,我们可以大致想象出这个分层模型是一个类似金字塔的形状(底部人数多,越往上越小,表示人群在减少)。 这个分层模型的主要价值体现在:可以让管理层、决策层对交易卖家的成长、进化、过滤的过程有个清晰、直观的把握,并且可以从中直观地了解影响卖家交易的一系列核心因素,以及相应的大致门槛阀值,也可以让具体的业务部门直观地了解“培养成交卖家,让卖家能在线成交”的主要因素,以及相应的运营抓手。 在本案例中,有必要了解一些关键的业务背景和业务因素,比如要想在线交易,卖家的Offer必须是“可在线交易Offer”。这个条件很关键,所谓“可在线交易Offer”是指该商品的Offer支持支付宝等第三方在线支付手段,如果卖家的Offer不支持这些手段,那就无法在线交易,也就无法满足本课题的目标了。所以,这里的“卖家Offer必须是可在线交易Offer”是一个前期的重要门槛和阀值,从此也可以看出,对业务背景的了解非常重要,它决定了课题是否成功。 下面来谈谈具体的分析思路,先是从最基本的免费注册的卖家(即“全会员”)开始,之后是近30天有登录网站的卖家(说明是“活”的卖家,这里经过了直观的业务思考),再到近1年有新发或重发Offer的卖家,然后是当前有效Offer的卖家,最后是当前有可在线交易Offer的卖家,这个分析过程其实是第一部分的思考,它们构成了金字塔的下半部分,基本上是基于业务背景的了解和顺理成章的逻辑来“进化”的,之所以在“全会员”与“当前有可在线交易Offer”之间安插了另外3层逐步“进化”的指标,主要也是基于业务方需要门槛的进度和细分的考虑,但这不是主要的核心点。 接下来,从“当前有可在线交易Offer的卖家”开始,层层进化到最高端的“近30天有在线交易的卖家”,也就是找出影响卖家成交的核心因素,并将之提炼成具体的层级和门槛,这一部分则是本案例的重点和核心所在。 如何找出其中的核心要素以及重要性的先后顺序?在本课题中,使用了预测(分类、响应)模型的方法,即通过搭建预测(响应)模型(目标变量是“近30天是否在线成交”,输入变量由数据分析团队与业务团队共同讨论确定),并通过多种模型算法的比较,最后找出决定交易的几个最重要的输入变量及先后次序。 最终的分层模型大致如图3-3所示,限于企业商业隐私的考虑,针对该数据做了处理,请勿对号入座。 图3-3 交易卖家分层示意图 该金字塔每一层里的数量代表满足该条件的会员(卖家)数量,而且各层之间的条件是连贯且兼容的,比如,从下往上数,第6层“当前有可交易Offer”的用户有204万人,占其前一层“可交易行业卖家”269万人的76%,而且该层的用户必定是同时满足其下5层的所有条件的(包括来自可交易行业,当前有有效Offer,近1年有新发或重发Offer,近30天有登录网站或即时通信工具等)。 细心的读者可能会发现,最顶层的人数是31万,占近30天有交易卖家总数的71%,为什么不能占近30天有交易卖家总数的100%?这个差距正是由金字塔模型的本质所决定的,无论这个层层进化的金字塔模型多么完美,它还是无法完全圈定有交易卖家的总数,总是有一部分有交易的卖家不是满足上述金字塔上半部分的那些条件、门槛、阀值。这也是类似的分层模型只能看大数、看主流的主要原因和特点,但是只要这个模型可以圈定大多数的人群(比如本项目实现的71%,或者更高),那它就有相当的代表性,就可以作为相应的决策参考和业务参考。 当然,这个模型是否可以投入应用,还需要进一步检验,常规的检验方法就是通过不同时间段的数据,看是否有相似的规律、门槛、占比、漏斗,也就是看这个金字塔的结构是否具有一定时间长度的稳定性。在本项目中,我们通过前后各半年的数据分别进行了验证,发现这个金字塔的结果总体还是比较稳定的,确实可以作为决策参考和业务借鉴。 案例二:客户服务的分层模型 背景:A产品是一个在线使用的付费产品,其主要功能就是让卖家实时获悉来自己网店的买家,可以让卖家通过主动对话促成双方的交谈,一旦对上话,卖家就可以得到由系统提供的买家联系方式等。很明显,该产品的核心功能(卖点)就是让卖家第一时间抓住来店铺的买家,并通过对话拿到买家的联系方式,方便后期的跟进,直至达成交易。现在该产品的客户服务团队正在负责付费用户的后期续费工作,该客服团队希望数据分析师帮他们制作一个付费用户的分层模型,在业务方的设想中该模型至少有3层,每一层可以对应相应的客服方案来帮助该层客户解决问题,模型的最终目的是促进付费客户的续费率稳步提升。具体来说,业务方希望根据业务敏感和客服资源储备,对付费用户进行3个群体的划分,每个群体有明确的业务诊断和客服方案(第一个群体,“体质差的客户群体”,比如访客数比较少,并且客户登录在线平台的次数也比较少(导致双方握手交谈可能性不高),这群客户被认为是最次要关注的;第二个群体,“问题客户群体”,比如对该产品的功能点使用都很少的客户,针对这群客户,客服团队可以对他们提供有针对性的产品功能教育;第三个群体,“生死线客户”,这群客户特点是有相对而言数量较多的访客,但是他们很少主动洽谈(以至无法拿到买家的联系方式,影响后期的成交),之所以称之为“生死线客户”,是因为客服团队希望作为重点关怀的群体,把他们从产品使用的“无效性”上拉回来,把他们从可能流失(续费)的生死线上拉回来(这群客户有理由从产品中获益(拿到买家联系方式),只是他们没有主动联系客户,如果他们能主动与买家洽谈,从而拿到联系方式,他们的成交业务有理由明显上升)。 该案例的分层模型用不上复杂的建模技术,只需要基于简单的统计技能就可实现。在深度把握产品价值和业务背景的前提下,我们与业务方一起基于他们设想的3个细分群体,根据实际数据找出了相应的具体阀值。具体来说,针对“体质差的客户群体”,基于访客数量和自身登录平台的天数和次数,进行两维数据透视,就可以找到满意的阀值和门槛定义;针对“问题客户群体”,只需要针对各功能点使用情况的10分位,找出最低的20%~30%用户就可以了;针对“生死线客户群体”,同样是基于访客数量和自身主动洽谈的次数,进行两维数据透视,也可以找到满意的阀值和门槛定义,这样就能根据数据分布情况找到有很多访客,同时主动洽谈次数很少的客户群体。上述群体划分的方法主要是基于业务理解和客服团队的资源配备的,事后的方案验证也表明,该种群体划分不仅能让业务方更容易产生理解和共鸣,也能很好地稳定并提升付费用户的续费率。 3.9 卖家(买家)交易模型 卖家(买家)交易模型的主要目的是为买卖双方服务,帮助卖家获得更多的买家反馈,促进卖家完成更多的交易、获得持续的商业利益,其中涉及主要的分析类型包括:自动匹配(预测)买家感兴趣的商品(即商品推荐模型)、交易漏斗分析(找出交易环节的流失漏斗,帮助提升交易效率)、买家细分(帮助提供个性化的商品和服务)、优化交易路径设计(提升买家消费体验)等。交易模型的很多分析类型其实已经在其他项目类型里出现过了,之所以把它们另外归入卖家(买家)交易模型的类型,主要是希望和读者一起换个角度(从促进交易的角度)来看待问题和项目。“横看成岭侧成峰”,同样的模型课题,其实有不同的主题应用场景和不一样的出发点,灵活、自如是一个合格的数据分析师应该具备的专业素养。 3.10 信用风险模型 这里的信用风险包括欺诈预警、纠纷预警、高危用户判断等。在互联网高度发达,互联网技术日新月异的今天,基于网络的信用风险管理显得尤其基础,尤其重要。 虽然目前信用风险已经作为一个独立的专题被越来越多的互联网企业所重视,并且有专门的数据分析团队和风控团队负责信用风险的分析和监控管理,但是从数据分析挖掘的角度来说,信用风险分析和模型的搭建跟常规的数据分析挖掘没有本质的区别,所采用的算法都是一样的,思路也是类似的。如果一定要找出这两者之间的区别,那就得从业务背景考虑了,从风险的业务背景来看,信用风险分析与模型相比于常规的数据分析挖掘有以下一些特点: 分析结论或者欺诈识别模型的时效更短,需要优化(更新)的频率更高。网络上骗子的行骗手法经常会变化,导致分析预警行骗欺诈的模型也要因此持续更新。 行骗手段的变化很大程度上是随机性的,所以这对欺诈预警模型的及时性和准确性提出了严重的挑战。 对根据预测模型提炼出的核心因子进行简单的规则梳理和罗列,这样就可在风控管理的初期阶段有效锁定潜在的目标群体。 3.11 商品推荐模型 鉴于商品推荐模型在互联网和电子商务领域已经成为一个独立的分析应用领域,并且正在飞速发展并且得到了广泛应用。因此除本节以外,其他章节将不再对商品推荐模型做任何分析和探讨,至于本节,相对于其他的分析类型来说,会花费更多的笔墨和篇幅。希望能给读者提供足够的原理和案例。 3.11.1 商品推荐介绍 电子商务推荐系统主要通过统计和数据挖掘技术,并根据用户在电子商务网站的行为,主动为用户提供推荐服务,从而来提高网站体验的。根据不同的商业需求,电子商务推荐系统需要满足不同的推荐粒度,主要以商品推荐为主,但是还有一些其他粒度推荐。譬如Query推荐、商品类目推荐、商品标签推荐、店铺推荐等。目前,常用的商品推荐模型主要分为规则模型、协同过滤和基于内容的推荐模型。不同的推荐模型有不同的推荐算法,譬如对于规则模型,常用的算法有Apriori等;而协同过滤中则涉及K最近邻居算法、因子模型等。没有放之四海而皆准的算法,在不同的电子商务产品中,在不同的电子商务业务场景中,需要的算法也是不一样的。实际上,由于每种算法各有优缺点,因此往往需要混合多种算法,取长补短,从而提高算法的精准性。 3.11.2 关联规则 1. Apriori算法 电子商务中常用的一种数据挖掘方法就是从用户交易数据集中寻找商品之间的关联规则。关联规则中常用的一种算法是Apriori算法。该算法主要包含两个步骤:首先找出数据集中所有的频繁项集,这些项集出现的频繁性要大于或等于最小支持度;然后根据频繁项集产生强关联规则,这些规则必须满足最小支持度和最小置信度。 上面提到了最小支持度和最小置信度,事实上,在关联规则中用于度量规则质量的两个主要指标即为支持度和置信度。那么,什么是支持度和置信度呢?接下来进行讲解。 给定关联规则X=>Y,即根据X推出Y。形式化定义为: 支持度(X=>Y)= 置信度(X=>Y)= 假设D表示交易数据集;K为项集,即包含k个项的集合;Lk表示满足最小支持度的k项集;Ck表示候选k项集。Apriori算法的参考文献描述如下。 在该算法中,候选集的计算过程如下所示。 L1={满足最小支持度的1项集} for (k=2; Lk-1 ≠; k++) Ck=candicate_gen( Lk-1 )//计算候选项集 for all transactions t∈D do                  Ct=subset(Ck,t)//候选集是否包含在t中                         for all candicates c∈Ct do                                           c.count++ end Lk={c∈Ck | c.count大于等于最小支持度} end 合并所有的Lk,得到频繁项集 首先进行连接运算如下: insert into Ck select p.item1, p.item2, p.itemk-1,…, q.itemk from Lk-1 p, Lk-1 q where p.item1=q.item1 and … and p.itemk-2=q.itemk-2 and p.itemk-1<q.itemk-1; 然后根据频繁项集定理(即频繁项集的子集必定是频繁项集)进行剪枝,过滤掉非频繁项集,过程如下所示:  forall itemset c∈Ck    forall (k-1) 子集 s of c do if (s∈Lk-1 ) then delete c from Ck 从上述算法中可以看出,该算法存在一些困难点,譬如需要频繁扫描交易数据集,这样如果面临海量数据集,就难以满足实际应用需求;对于大型数据集,计算候选集算法的效率较低,这也是一个难以克服的问题。目前已经有一些优化的方法用于处理这些问题,譬如FP-growth算法。在实际应用中,随着数据的不断增长,可能还需要通过分布式计算来提高算法性能,譬如机器学习算法包Mahout中实现了的并行版本FP-growth算法。 2. Apriori算法实例 假设给定如下电子商务网站的用户交易数据集,其中,定义最小支持度为2/9,即支持度计数为2,最小置信度为70%,现在要计算该数据集的关联规则,如表3-1所示。 表3-1 用户交易数据集  交易标识 购买商品列表 2001 I1,I2,I5 2002 I2,I4 2003 I2,I3 2004 I1,I2,I4 2005 I1,I3 2006 I2,I3 2007 I1,I3 2008 I1,I2,I3,I5 2009 I1,I2,I3 计算步骤如下所示。 步骤1,根据Apriori算法计算频繁项集。 1)计算频繁1项集。扫描交易数据集,统计每种商品出现的次数,选取大于或等于最小支持度的商品,得到了候选项集,如表3-2所示。 表3-2 频繁1项集 商品集 包含该商品集的记录数 I1 6 I2 7 I3 6 I4 2 I5 2 2)根据频繁1项集,计算频繁2项集。首先将频繁1项集和频繁1项集进行连接运算,得到2项集,如下所示: 商品集 商品集  I1 I1,I2  I2 I1,I3  I3 I1,I4  I4 I1,I5  I5 I2,I3 I2,I4 I2,I5 I3,I4 I3,I5 I4,I5 扫描用户交易数据集,计算包含每个候选2项集的记录数,如表3-3所示。 表3-3 候选2项集 商品集 包含该商品集的记录数 I1,I2 4 I1,I3 4 I1,I4 1 I1,I5 2 I2,I3 4 I2,I4 2 I2,I5 2 I3,I4 0 I3,I5 1 I4,I5 0 根据最小支持度,得到频繁2项集,如表3-4所示。 表3-4 频繁2项集 商品集 包含该商品集的记录数 I1,I2 4 I1,I3 4 I1,I5 2 I2,I3 4 I2,I4 2 I2,I5 2 3)根据频繁2项集,计算频繁3项集。首先将频繁2项集进行连接,得到{{I1, I2, I3}, {I1, I2, I5}, {I1, I3, I5}, {I2, I3, I4}, {I2, I3, I5}, {I2, I4, I5}},然后根据频繁项集定理进行剪枝,即频繁项集的非空子集必须是频繁的,{I1, I2, I3}的2项子集为{I1,I2},{I1,I3},{I2,I3},都在频繁2项集中,则保留; {I1, I2, I5}的2项子集为{I1,I2},{I1,I5},{I2,I5},都在频繁2项集中,则保留; {I1, I3, I5}的2项子集为{I1,I3},{I1,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集; {I2, I3, I4}的2项子集为{I2,I3},{I2,I4},{I3,I4},由于{I3,I4}不是频繁2项集,移除该候选集; {I2, I3, I5}的2项子集为{I2,I3},{I2,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集; {I2, I4, I5}的2项子集为{I2,I4},{I2,I5},{I4,I5},由于{I4,I5}不是频繁2项集,移除该候选集。通过剪枝,得到候选集{{I1, I2, I3}, {I1, I2, I5}},扫描交易数据库,计算包含候选3项集的记录数,得到表3-5。 表3-5 频繁3项集 商品集 包含该商品集的记录数 I1, I2, I3 2 I1, I2, I5 2 4)根据频繁3项集,计算频繁4项集。重复上述的思路,得到{I1,I2,I3,I5},根据频繁项集定理,它的子集{ I2,I3,I5}为非频繁项集,所以移除该候选集。从而,频繁4项集为空,至此,计算频繁项集的步骤结束。 步骤2,根据频繁项集,计算关联规则。 这里以频繁3项集{I1, I2, I5}为例,计算关联规则。{I1, I2, I5}的非空子集为{I1,I2}、{I1,I5}、{I2,I5}、{I1}、{I2}和{I5}。 规则1,{I1,I2}=>{I5}, 置信度为{I1, I2, I5}的支持度除以{I1,I2}的支持度,即2/4=50%,因其小于最小置信度,所以删除该规则。 同理,最后可以得到{I1,I5}=>{I2},{I2,I5}=>{I1}和{I5}=>{I1,I2}为3条强关联规则。 然而,在实际应用Apriori算法时,需要根据不同的粒度,譬如类目、商品等,结合不同的维度(浏览行为,购买行为等)进行考虑,从而构建符合业务需求的关联规则模型。在电子商务应用中,关联规则算法适用于交叉销售的场景。譬如,有人要出行(飞往北京),根据计算出的关联规则(如:机票=>酒店)来考虑,那么,可以根据用户购买的机票,为用户推荐合适的北京酒店;再比如,在情人节,根据关联规则,将巧克力和玫瑰花进行捆绑销售等。 另外,关联规则还可以用来开发个性化电子商务推荐系统的Top N推荐。首先,根据用户的交易数据,计算用户在特定时序内购买过的商品;然后,根据关联规则算法,计算满足最小支持度和最小置信度的商品关联规则;再根据用户已经购买的商品和商品关联规则模型,预测用户感兴趣的商品,同时过滤掉用户已经购买过的商品,对于其他的商品,则按照置信度进行排序,从而为用户产生商品推荐。 3.11.3 协同过滤算法 协同过滤是迄今为止最成功的推荐系统技术,被应用在很多成功的推荐系统中。电子商务推荐系统可根据其他用户的评论信息,采用协同过滤技术给目标用户推荐商品。协同过滤算法主要分为基于启发式和基于模型式两种。其中,基于启发式的协同过滤算法,又可以分为基于用户的协同过滤算法和基于项目的协同过滤算法。启发式协同过滤算法主要包含3个步骤:1)收集用户偏好信息;2)寻找相似的商品或者用户;3)产生推荐。 “巧妇难为无米之炊”,协同过滤的输入数据集主要是用户评论数据集或者行为数据集。这些数据集主要又分为显性数据和隐性数据两种类型。其中,显性数据主要是用户打分数据,譬如用户对商品的打分,如图3-4所示。 图3-4 某电商网站用户对某商品的评分结果 但是,显性数据存在一定的问题,譬如用户很少参与评论,从而造成显性打分数据较为稀疏;用户可能存在欺诈嫌疑或者仅给定了部分信息;用户一旦评分,就不会去更新用户评分分值等。 而隐性数据主要是指用户点击行为、购买行为和搜索行为等,这些数据隐性地揭示了用户对商品的喜好,如图3-5所示。 隐性数据也存在一定的问题,譬如如何识别用户是为自己购买商品,还是作为礼物赠送给朋友等。 图3-5 某用户最近在某电商网站的浏览商品记录(左侧的3本书) 1. 基于用户的协同过滤  基于用户(User-Based)的协同过滤算法首先要根据用户历史行为信息,寻找与新用户相似的其他用户;同时,根据这些相似用户对其他项的评价信息预测当前新用户可能喜欢的项。给定用户评分数据矩阵R,基于用户的协同过滤算法需要定义相似度函数s:U×U→R,以计算用户之间的相似度,然后根据评分数据和相似矩阵计算推荐结果。 在协同过滤中,一个重要的环节就是如何选择合适的相似度计算方法,常用的两种相似度计算方法包括皮尔逊相关系数和余弦相似度等。皮尔逊相关系数的计算公式如下所示: 其中,i表示项,例如商品;Iu表示用户u评价的项集;Iv表示用户v评价的项集;ru,i表示用户u对项i的评分;rv,i表示用户v对项i的评分;表示用户u的平均评分;表示用户v的平均评分。 另外,余弦相似度的计算公式如下所示: 另一个重要的环节就是计算用户u对未评分商品的预测分值。首先根据上一步中的相似度计算,寻找用户u的邻居集N∈U, 其中N表示邻居集,U表示用户集。然后,结合用户评分数据集,预测用户u对项i的评分,计算公式如下所示: 其中,s(u, u')表示用户u和用户u'的相似度。 假设有如下电子商务评分数据集,预测用户C对商品4的评分,见表3-6。 表3-6 电商网站用户评分数据集   用户 商品1 商品2 商品3 商品4 用户A 4 ? 3 5 用户B ? 5 4 ? 用户C 5 4 2 ? 用户D 2 4 ? 3 用户E 3 4 5 ? 表中? 表示评分未知。根据基于用户的协同过滤算法步骤,计算用户C对商品4的评分,其步骤如下所示。 (1)寻找用户C的邻居 从数据集中可以发现,只有用户A和用户D对商品4评过分,因此候选邻居只有2个,分别为用户A和用户D。用户A的平均评分为4,用户C的平均评分为3.667,用户D的平均评分为3。根据皮尔逊相关系数公式来看,用户C和用户A的相似度为: 同理,s(C, D) =-0.515。 (2)预测用户C对商品4的评分 根据上述评分预测公式,计算用户C对商品4的评分,如下所示: 依此类推,可以计算出其他未知的评分。 2. 基于项目的协同过滤  基于项目(Item-Based)的协同过滤算法是常见的另一种算法。与User-Based协同过滤算法不一样的是,Item-Based 协同过滤算法计算Item之间的相似度,从而预测用户评分。也就是说该算法可以预先计算Item之间的相似度,这样就可提高性能。Item-Based协同过滤算法是通过用户评分数据和计算的Item相似度矩阵,从而对目标Item进行预测的。 和User-Based协同过滤算法类似,需要先计算Item之间的相似度。并且,计算相似度的方法也可以采用皮尔逊关系系数或者余弦相似度,这里给出一种电子商务系统常用的相似度计算方法,即基于条件概率计算Item之间的相似度,计算公式如下所示: 其中,s(i, j)表示项i和j之间的相似度;freq(ij)表示i和j共同出现的频率;freq(i)表示i出现的频率;freq(j)表示j出现的频率;表示阻力因子,主要用于平衡控制流行和热门的Item,譬如电子商务中的热销商品等。 接下来,根据上述计算的Item之间的相似度矩阵,结合用户的评分,预测未知评分。预测公式如下所示: 其中,pu, i表示用户u对项i的预测评分;S表示和项i相似的项集;s(i, j)表示项i和j之间的相似度;ru, j表示用户u对项j的评分。 3. Item-Based协同过滤实例 在电子商务推荐系统中,商品相似度计算有着很重要的作用。它既可用于一些特定推荐场景,譬如直接根据当前的商品,为用户推荐相似度最高的Top N商品。同时,它还可以应用于个性化推荐,从而为用户推荐商品。电子商务网站收集了大量的用户日志,譬如用户点击日志等。 基于Item-Based协同过滤算法,笔者提出了一种增量式商品相似度的计算解决方案。该算法计算流程如图3-6所示。 图3-6 增量式商品相似度计算流程图 其中,商品关系i表示第i天的商品关系数据集。 具体计算步骤如下。 1)获取当天用户点击行为数据,过滤掉一些噪声数据,譬如商品信息缺失等。从而得到用户会话sessionID、商品ID(商品标识)、浏览时间等信息,如表3-7所示。 由于A4的浏览时间和A1、A2、A3相差较大,因此将其过滤掉,这里定义为1800秒,如表3-8所示。 表3-7 用户点击行为日志表 用户会话ID 浏览商品的时间    Item Pairs 100 A1, 20:12 A1, A2   A1, A3 A2, 20:13 A2,A1   A2, A3 A3, 20:15 A3,A1   A3, A2 A4, 23:30 表3-8 过滤后的用户点击行为日志表 浏览商品的时间     Item Pairs      A1, 20:12 A1, A2   A1, A3      A2, 20:13 A2,A1   A2, A3      A3, 20:15 A3,A1   A3, A2 2)首先,计算任意两种商品之间的共同点击次数。然后,根据基于条件概率的商品相似度计算方法来计算商品的相似度。商品相似度公式如下。 s(i, j) 其中,s(i, j)表示项i和j之间的相似度;freq(ij)表示i和j共同出现的频率;freq(i)表示i出现的频率;freq(j)表示j出现的频率。 3)合并前一天计算的商品相似度数据,进行投票判断,选择相似度较大的作为新的商品相似度,从而实现增量式商品相似度计算。 3.11.4 商品推荐模型总结 对于商品推荐模型,除了上述介绍的基于关联规则和基于协同过滤的算法外,还有其他一些常用的算法,譬如基于内容的算法,即根据商品标题、类目和属性等信息,计算商品之间的关系,然后结合用户行为特征,为用户提供商品推荐。商品推荐模型面临着许多重要问题,譬如特征提取问题,即如何从商品标题、类目和属性中提取商品的重要特征、新用户问题,即如何解决用户行为较少,提升推荐质量、新商品问题,即如何处理长尾商品问题,让更多的商品有推荐展现的机会、稀疏性问题,即对于庞大的用户和商品数据,用户评分数据往往会显得非常稀疏等。面对这些问题,在实际应用中,需要根据业务场景,充分利用各种算法的优点,从而设计出混合推荐算法,以便提升推荐质量。 3.12 数据产品 数据产品是指数据分析师为了响应数据化运营的号召,提高企业全员数据化运营的效率,以及提升企业全员使用数据、分析数据的能力而设计和开发的一系列有关数据分析应用的工具。有了这些数据产品工具,企业的非数据分析人员也能有效地进行一些特定的数据分析工作。因此可以这样理解,数据产品就是自动化、产品化了数据分析师的一部分常规工作,让系统部分取代数据分析师的劳动。 其实,我们每个人在日常生活中或多或少都使用过各种各样的数据产品,有的是收费的,有的是免费的。最常见的免费数据产品,就是我们登录自己的网上银行,来查看自己在过去任何时间段的账户交易明细。如果你有在当当网上的购物体验,那么对当当网账户里的操作应该比较熟悉,如图3-7所示,用户可以在“我的收藏”页面针对自己的所有收藏商品进行有效的管理,这也是一种免费的数据产品。 图3-7 “我的收藏”页面 当然了,上面列举的这些产品更多的是方便用户进行个人财务、商品管理的,还不是专门针对用户进行数据分析支持的。下面这个例子,如图3-8所示则是跟数据分析功能相关的数据产品,量子恒道作为淘宝网的一个免费数据产品,可以帮助网商自我进行精准实时的数据统计、多维数据分析,从而为网商交易提供更强的数据驱动力。 图3-8 量子恒道的分析展示 3.13 决策支持 决策支持是现代企业管理中大家耳熟能详的词汇。数据分析挖掘所承担的决策支持主要是指通过数据分析结论、数据模型对管理层的管理、决策提供响应和支持,从而帮助决策层提高决策水平和质量。 对于现代企业和事业单位的管理层来说,数据分析的决策支持一部分是通过计算机应用系统自动实现的,这部分就是所谓的决策支持系统(Decision Support System,DSS),最常见的输出物就是企业层面的核心日报、周报等。每天会由计算机应用系统自动生成这些报表,供管理层决策参考,另一部分是非常规的、特定的分析内容,包括特定的专题分析、专题调研等。 无论是报表还是专题分析,对于数据分析师来说,所涉及的承担决策支持的工作与支持业务部门的数据分析,在技术和方法上并没有本质的区别和差异。但是在以下方面会有一定的差别: 决策支持的数据分析工作要求数据分析师站在更高的角度,用更宽的视野进行数据分析。由于是供企业决策层参考的,所以数据分析师要站在企业全景、市场竞争的全局来考虑分析思路和结论。 服务的对象不同。这似乎是废话,但是在数据分析挖掘实践中,这的确也是数据分析师不能回避的问题。在实践中,因为是为决策层服务的,所以对分析的时间要求常会更严格,项目的优先级也会更高,而且对结论的准确性和精确性的要求也会相对比较苛刻。
文章
存储 · 机器学习/深度学习 · 算法 · 数据挖掘 · 大数据
2017-05-02
华章出版社
340 人关注 | 1 讨论 | 10124 内容
+ 订阅
  • 带你读《Java并发编程的艺术》之一:并发编程的挑战
查看更多 >
弹性计算
206752 人关注 | 163 讨论 | 441 内容
+ 订阅
  • 阿里云算力的十年更迭史,重点都在这了!
  • 听完阿里“计算”家族技术领头人的分享,真的受益匪浅!
  • 攻坚、变革、创新 | 阿里研究员千字细说阿里云的十年“计算”重构史
查看更多 >
阿里云高校学研支持计划
318 人关注 | 3 讨论 | 1573 内容
+ 订阅
  • 高校小姐姐拍了拍你,你有一台天猫精灵待领取
  • 三岁学 ECS进阶班 six day
  • 视觉训练营day 5 ——人证合一校验
查看更多 >
云计算
20716 人关注 | 54890 讨论 | 17757 内容
+ 订阅
  • 从前端智能化看“低代码/无代码”
  • 融合趋势下基于 Flink Kylin Hudi 湖仓一体的大数据生态体系
  • 网游云上网络优化⽅案
查看更多 >
开发与运维
3871 人关注 | 92063 讨论 | 88777 内容
+ 订阅
  • 使用gradle插件发布项目到nexus中央仓库
  • 网游云上网络优化⽅案
  • Elastic:机器学习的实践 - population job
查看更多 >