区块链应用判断准则

一、区块链场景应用判断基本原则

区块链提供了一种在不可信环境中进行信息与价值传递交换的机制,是构建未来价值互联网的基石,也符合我国十九大以来一直提倡的为实体经济提供可信平台的理念。区块链发展到现在,我们可以从以下几个方面来分析其应用的方向:

  • 从应用需求视角可以看到,区块链行业应用加速推进,正在从数字货币向非金融领域进行渗透扩散。金融、医疗、数据存证/交易、物联网设备身份认证、供应链等都可以看到区块链的应用。娱乐、创意、文旅、软件开发等也有区块链的尝试。
  • 从市场应用来看,区块链正逐步快速地成为一种市场的工具,主要作用是帮助社会削减平台的成本,让传统的或者高成本的中间机构成为过去。企业应用是区块链的主战场,具有安全准入控制机制的联盟链和私有链将成为主趋势。区块链也将促进公司现有业务模式的重心转移,有望加速公司的发展。同时,新型分布式协作公司也能以更快的方式融入商业体系。
  • 从底层技术来讲,有望推进数据记录、数据传播和数据存储管理模式的转型。区块链本身更像一种互联网底层的开源协议,在不远的将来会触动甚至最后会取代现有的互联网底层基础协议(建筑在现有互联网底层之上,一个新的中间层,提供可信的有宿主的有价值的数据)。把信任机制加到这种协议里,将会是一个很重大的创新。在区块链应用安全方面,区块链安全问题日渐凸显,安全防卫需要技术和管理全局考虑,安全可信是区块链的核心要求,标准规范性日显重要。
  • 从服务提供形式来看,云的开放性和云资源的易获得性,决定了公有云平台是当前区块链创新的最佳载体,利用云平台让基于区块链的应用快速进入市场,获得先发优势。区块链与云计算的结合越发紧密,有望成为公共信用的基础设施。
  • 从社会结构来看,区块链技术有望将法律、经济、信息系统融为一体,颠覆原有社会的监管和治理模式,组织形态也会因此发生一定的变化。区块链技术与监管存在冲突,但矛盾有望进一步调和,最终会成为引领人们走向基于合约的法治社会的工具之一。

那么,什么领域适合区块链技术呢?我们认为在现阶段适合的场景有三个特征:

  • 第一,存在去中心化、多方参与和写入数据需求
  • 第二,对数据真实性要求高
  • 第三,存在初始情况下相互不信任的多个参与者建立分布式信任的需求

区块链面向行业是一个解决方案,需要多方参与,构建行业联盟,形成事实标准,抢占第一波市场。区块链适用于多状态、多环节,需要多参与方协同完成,多方相互不信任,无法使用可信第三方(Trusted Third Party,TTP)完美解决的事情。我们可以采用下图所示的流程来判断一个场景是否需要区块链。

上图展示了一个较为严格的区块链应用判断流程,但很多场景下这些约束条件可以进一步放宽。下面将对流程中的每个步骤进行简单的阐述。

 

二、准则一:是否存储状态

我们可以将区块链通俗地理解为一个分布式的数据库,使用数据库的各方都可以存储交易数据,我们把存储的数据称之为“状态”。区块链又经常被称为“账本”,既然是账本,那么最重要的用途就是记账,记录每笔交易的重要数据,以便将来以此作为查账和避免纠纷的依据。

区块链被链起来的区块结构中最核心的部分就是用来存储交易的信息(状态),因此可以说没有状态存储就不会有区块链。需要注意的是,这里的交易指的是广义的交易,并不限于货币和金融的交易,一切会产生数据状态变化的事务都称为交易,例如,账户的创建、商品信息的变化,甚至对于一次查询的审计信息的记录等都可以算作交易。

这里有一个需要注意的问题是,业务需要保存的数据很多,到底什么样的数据适合用区块链来存储呢?鉴于应用的多样性以及用户需求的不确定性,这个问题其实并不容易回答,但是我们仍然可以从两个角度来试图缩小考虑问题的范围:

  • 什么样的数据不适合上链?
  • 什么样的数据适合上链?

首先来看什么样的数据不适合上链。

  • 从业务的角度来看,不需要共享的数据不适合上链。例如,用户的私钥是用户绝对不想与其他人分享的信息,如果上链,就意味着私钥会被每一个Peer获取并存储,即便是被加密也会有泄漏的风险,因此没有必要上链。
  • 从性能的角度来看,过于庞大的数据和更新过于频繁的数据也不适合上链。例如,用户上传的一些二进制介质、音视频、日志文件等。因为区块上存储的数据作为链的一部分是会被永久保存并同步到每一个Peer节点用来保证完整性的,如果存储的数据过于庞大,则会严重影响同步性能,占用有限的存储空间。另外,由于当前区块链的交易需要通过密码学算法进行哈希和加解密的签名运算,交易的最终数据也需要通过共识算法进行排序才能最终落块,在性能上还有一定的限制(目前开源Hyperledger Fabric的TPS在几百量级),因此过于频繁的写入操作还不太适用区块链。

那么什么样的数据适合上链呢?简单来说,就是需要共享的、需要具备可信度、不能被篡改并且需要可追溯的数据。

  • 例如,保险行业的保单信息,用户签署了什么样的保险协议,需要被妥善保存,将来出险的时候必须以此为依据进行理赔,因为不可篡改,保险公司无从抵赖,也因为可以共享和追溯,一旦产生纠纷也可以由监管部门追溯取证。
  • 再如,能源行业如果使用区块链来记录电量的交易,那么拥有光伏发电的家庭就可以和需要用电的家庭进行自由交易,每一笔电量的产生和去向都有清晰的历史被区块链记录在案,不能篡改。同时支持发电方和用电方进行查询和追溯,哪家发了电,哪家用了电,交易清晰无法抵赖,避免了纠纷,是使用区块链的合适场景。

此外说到状态存储,就不得不提及信息安全,这也是当前区块链大规模普及的障碍之一。我们都知道区块链之所以难以篡改,就是因为每一个参与交易的节点(Peer)都拥有完整的区块链账本数据,可以对任何交易或账户状态进行验证。但是这样也带来一个严重的安全问题,就是区块链账本数据对所有人公开了,而在很多场景下,这样的做法是难以被接受的。拿货币转账的交易举例来说,用户A一开始在系统中存入了一定金额的货币,用户B也存入了一定金额的货币,随后用户A向用户B进行了一定金额的转账,因为用户A和用户B的余额都存储在区块链上,智能合约的逻辑可以验证用户A的余额大于转账金额,并且把交易结果写回到区块链上,对用户A和用户B的余额进行更新,最终在这笔交易写入新生成的区块中后,区块会被同步到与用户A和用户B相关的节点(peer)上,他们都可以查询到这笔交易以及自己当前账户的余额。但是很多情况下,作为用户来说,并不希望自己的余额被其他用户看到,作为交易的双方也不希望交易的详细信息被第三者读取到。

那么这个问题如何解决呢?一般情况下,我们可以使用同态加密的技术来解决这个问题。

同态加密就是智能合约在存储用户的余额状态到区块链上时,存储的并不是明文,而是使用相应用户非对称密钥的公钥通过同态加密算法加密之后的数据。在同态加密交易过程中,转账双方的余额都没有经过解密,并且交易记录存储到区块链上之后只能被交易双方解密查看,第三方只能看到密文,无法解密。这样既能达到区块链无法篡改,可以被追溯和监控的目的,又能保护用户隐私不被泄露。

 

三、准则二:是否多方协同写入

是否存储状态只是判断流程的第一步,其次还要依据是否多方协同写入来进行判断。

前面一直提到区块链的一个突出特点就是去中心化,只有多方协同写入才能够将区块链这种特点的优势完美地发挥出来。有人曾经说区块链颠覆的核心就在于去中心化,我们现在的世界存在太多的中心化系统,然而这些中心化的系统却和用户日益增长的去中心化需求产生了矛盾。

中心化系统有如下弊端:

  • 首先,权力过于集中。中心化系统的一切数据的来源都是数据中心,数据中心拥有至高无上的权力,数据的存储逻辑全部由中心决定。正如人类社会中权力集中的地方必然存在腐败,数据权限集中的地方也容易滋生“腐败”,当然这个腐败指的是对数据的篡改。由于只有一套中心化的系统,如果没有额外的监督审查机制,数据可以很轻易地被篡改。但是构建一套监督审查机制也是十分复杂的。到底由谁来监督?监督的部门有没有公信力?是否被信服?这些都是问题。
  • 其次,集中的数据难以使用。数据中心化意味着任何使用数据的单位或者个人都要从数据中心获取数据,这种数据同步模式有两个问题:第一,随着使用数据的部门增多,给数据中心带来极大的数据访问压力,数据中心会形成数据访问的性能瓶颈,这对数据中心的性能和扩展性提出了极高的建设要求。第二,新的部门想要使用数据必须和数据中心进行对接,无形中增加了数据使用的成本,给数据的扩散造成了障碍,极大地影响了数据价值。前些年,我国正处于数字化转型的初期,大量数据由纸质数字化,但是各地形成了一个个数字孤岛,各省市之间的数据不能同步,给政府部门的工作造成了极大困扰。比如,小轿车跨省违章不能及时被追责,因为违章的信息不能及时同步到其他省市。再如,有些公民从一个省市移居到另外的省市,重新办理了新的身份证,有时候会出现一个实体个人有两个合法身份证号的情况,也是因为各省市身份信息不能及时同步,给政府工作带来了极大的困扰。其实并不是政府部门不作为,而是进行这样的数据同步需要同时拉通各省市很多部门,调动很多资源,成本过高,阻碍了信息化的进一步发展。
  • 最后,集中的系统抗攻击能力差。数据集中意味着黑客只要攻陷了一个数据中心,就得到了全部的数据权限,可以为所欲为。而防护部门必定绞尽脑汁花费高额成本进行防范。这样做不仅提高了成本,还只能在一定程度上降低风险,并不能彻底消除风险。

以上这些中心化系统的弊端,我们都可以依靠区块链技术来解决,如下图所示,将数据中心化的账本转换为区块链的分布式账本。这样每个数据节点是对等的,拥有完整的数据链,除非黑客攻陷了大部分节点,否则不会影响数据的正确性。另外,各个节点相互之间也可以互相监督,真正地实现数据自治。

以电力系统为例,当前我国的电力系统还是一个中心化的体制,以前购电并不像现在这样简单,只根据一个用户编号就可以使用支付宝之类的互联网应用购买。因为只有电力部门才拥有对电卡的读写权限,在当时没有智能电表进行网上购电时,必须拿着电卡实物去电力部门排长队购电,并且办理过程十分冗长。后来出现的智能电表可以算是借着互联网将中心化系统进行了一次很好的升级,互联网通过网络将电力系统的能力延伸到各家各户。但是互联网只改变了网络连通的现状,将数据传播到各家各户,并没有改变系统的权力中心化状况,即没有将权力转移到用户手中,用户依然需要使用电力系统对电卡进行读写,一旦电力系统出现故障,出现纠纷,也都是电力部门垄断了话语权。而在上面的例子中,只有用电家庭和发电家庭使用区块链来进行电能交易,才实现了区块链的真正价值。

由此我们不难理解,如果一个区块链只有一个写入者,那么无论拥有多少共识节点都是没有意义的,因为写入者可以随意写入,随意变更数据,本质上又变成了一个集中式的系统。因此一个合理的区块链应用是要求参与的各方都可以具备预先规定好的写入权限,并且相互制衡,从而达到去中心化的目的。

 

四、准则三:多方是否互信

首先我们来谈谈关于信任的问题。互联网诞生之初,最先解决的核心问题是信息制造和传输。随着互联网的大规模发展,我们使用TCP/IP协议构建出一条条网状的信息“高速公路”。在这个“高速公路”网上,我们能够将信息快速生成,并复制到全世界每一个网络所能够触及的角落,并且这种信息的传递是极为高效和越来越廉价的。从此,我们进入了一个“信息爆炸”的时代,整个互联网上的信息开始以几何级速度增长。

然而,随着互联网进入我们生活的方方面面,我们却发现有些信息是无法传播和复制的,或者说传播无法很容易地进行。比如货币支付,我们不能直接把要支付的钱复制到对方的账户上,必须到银行柜台花个把小时排队进行办理,后来有了ATM机,我们仍然要出门乘坐交通工具花费很长时间来办理。当然后来有了网上银行,有了U盾,但我们仍然离不开中心化的银行系统,依然有诸如转账需要花费不菲的手续费用、转账金额或许不能立即到账等一系列问题。这些问题的根源都是因为我们的互联网非常善于处理信息分享,而不能解决“价值传递”或者说“信任”这个事情。

多方是否互信也是判断应用是否适合区块链的一个重要指标。区块链的意义在于,使得互不信任的各方可以通过区块链传递和获取信任,并且这种信任建立的成本是很低的,具有极高的性价比。

如果参与写块、读块的各方是完全信任的,那么即便各方在物理上分散,而在逻辑上也是集中的。这种场景下区块链的信任传递特性就失去了意义,因此并不适合使用区块链技术。但是如果我们注意观察就会发现,其实这些所谓完全信任的各方的信任并不是天然具备的,大多数场景下一定是基于某种信任机制的,这种机制有可能是基于自建的一套信息系统,也有可能是基于传统的可信任第三方。而这种信任的根基并不牢固,并且都存在一定的弊端(TTP在后面部分详述),因此如果我们认真分析,这些应用和场景也都可以转化为区块链应用,并且能够从中获得很多好处。

综上,如果说区块链颠覆的核心在于去中心化,那么区块链与生俱来的互信特性就是去中心化的基础。没有互信作为基础,谈去中心化是毫无意义的。区块链利用密码学的哈希算法和数字签名来保证交易的发起人无法被冒充,而区块的链式哈希结构则保证了历史交易被永久地记录,而且无法被轻易地篡改。区块链这一系列的特点给互联网带来了前所未有的互信特性。

如果说第一代互联网解决的是数据传递的问题,那么以区块链为基础的互联网解决的就是信任传递的问题。

 

五、准则四:TTP是否完美解决

可信任第三方是在第一代互联网无法解决互信问题的前提下的产物。当时随着互联网的日益膨胀,人们迫切希望在虚拟和现实世界中建立一种信任的关系,如果缺乏这种纽带,那么虚拟的东西永远是虚拟的,就不会出现今天百花齐放的电商和虚拟业务,也就不会有当今互联网的蓬勃发展。但是建立这种信任的纽带又是极其复杂和昂贵的,比如,银行的在线业务,此外,应用是需要银行强大的资金和政府公信力为其背书才能够提供对业务、纠纷的监管和决断。很多电商也是依赖于强大的资本来提供公信力和背书。其他更多中小企业并没有足够的实力和公信力来自建这种公信的系统,他们只能依赖强大的第三方提供信任服务。

从中我们可以看到,TTP的最大缺点在于昂贵的高门槛、接入运营的复杂度高以及权力过于集中等。权力集中就意味着腐败,就有被人为渗透的可能,同时集中的系统普遍抗黑客攻击的能力较弱。

而区块链天生的去中心化和可信的特性,恰恰是解决上述问题最完美的手段。因此,判断应用是否适用区块链的一个很重要的标准就是TTP是否能完美解决当前的信任问题。如果TTP能完美解决,那么确实没有上区块链的必要。需要注意的是,当前很多看似用TTP解决的信任问题其实解决得并不完美,例如,电商和用户之间的纠纷屡屡不断,公信部门系统自身故障以及受到攻击产生宕机的事情也时有发生。因此我们在判断应用是否适合使用区块链的时候,并不是判断TTP能否完美解决信任问题,而是TTP的缺陷我们能否接受,TTP的成本能否接受。

 

六、准则五:是否限制参与

判断流程至此其实已经基本确定应该适合使用区块链了,是否限制参与这一指标只是用来断定我们的应用到底适合公链还是联盟链。

公链对用户的准入要求并不高,如所有的虚拟货币,基本上任何人、任何机构只要进行简单的注册,生成私钥和证书即可参与。而联盟链则不同,比如,金融业各银行之间的转账业务,并不希望未经授权的人参与,是建立在一定的信任基础之上的,如某几家银行形成了一个战略联盟,之间使用区块链同步一些信息。但是这些银行之间又不是完全信任的,只是因为相互的利益关系联系到了一起。在这种前提下,联盟链就比较合适。想加入的银行需要通过一系列流程方可获得参与区块链的资质,同时联盟区块链中信任的各参与方都能通过区块链的不可伪造、不可篡改等特性进行相互监督。

因此,公链和联盟链并无好与不好之分,各自有适应的场景。

 

本文转载于网络 如有侵权请联系删除

相关文章

  • Asp.Net MVC3 简单入门第一季(四)详解Request Processing Pipeline

    引子   很久没更新了,今天写点关于Asp.NetMVC的PipeLine。首先我们确认一点,Asp.NetWebFrom和Asp.NetMVC是在.Net平台下的两种web开发方式。其实他们都是基于Asp.NetCore的不同表现而已。看下面一张图,我们就能理解了WebForm和Asp.NetMVC的一个关系了。那好我们了解了Asp.Net平台下的两种开发方式,相信大家对于WebForm的Pipeline都非常熟悉了,当然这也是你熟悉Asp.Net开发的必经之路。而看了很多关于Asp.NetMVC的资料很少有把整个Pipeline讲的非常清楚的。我暂时将自己浅陋的整理和理解总结如下,欢迎高手拍砖!第一阶段:客户端请求客户端通过浏览器、其他软件、自己编写WebClinet、模拟HttpRequest等方法来请求一个URL。当然在Asp.NetWebFrom下,所有的请求都是归结到Handler上,普通的Aspx、Ascx等都是继承自IHttpHandler接口的一些实例,所以我总结出来:WebFrom下所有的请求都是请求的Handler【不考虑Url重写】。而做Asp.NetMVC的项

  • 前端开发工具的简单介绍

    正所谓“工欲善其事,必先利其器”,对Web开发人员来说,好工具的使用总会给人带来事半功倍的效果。下面来说一下几种常用的开发工具:HBuilderAtomSublimeTextVisualStudioCodeWebStorm如果是初学者的话,我建议先使用HBuilder(记事本也可以,不过需要你将元素标签属性记牢固),很容易上手,熟练后在使用VisualStudioCode或者是Atom,这两个开发工具功能很强大,支持多种插件的安装,比如C/C++、Python、Java等等。当下,有三种主流的编辑器,分别为VisualStudioCode、SublimeText和Atom,WebStorm也挺受欢迎的,下面简单的说一说它们各自的优缺点:Atom的优缺点首先我们来说一说Atom,Atom代码编辑器支持Windows、MaC、Linux三大桌面平台,完全免费,并且在GitHub上开放了全部的源代码。具有简洁和直观的图形用户界面,它支持宏,自动完成分屏功能,集成了文件管理器。经过开发团队的长时间的迭代开发和不断改进,Atom正式版编辑器在性能和稳定性都有着显著的改善。主要优点:开发维护团队强

  • 什么是MYSQL的开发思路,一个实例切入

    昨天运维的亲,来找我,要统计一个事情,具体的情况是这样,要判断某台机器中的的priority为1的数据在900秒内,并且计数,如果这样的情况超过1条,则报警,并且还有一个情况,就算900秒内priority的等于1的只有1条,但priority可能为23456的只要有任意一条,就报警。 下面就是这样的一个语句,写的是没有问题的,这位同学之前是ORACLE的DBA。问我有什么好的方法来改善目前数据查询性能不好的情况。SELECTs.DeviceReportedTime,#统计报告时间s.Priority,#优先级,有6种,均是数字1-6s.FromHost,#主机IPs.Message#告警信息FROMSystemEventss#假设有五千万数据,时间有索引WHEREs.FromHost='10.50.131.1'ANDs.Priority=1ANDs.DeviceReportedTime>DATE_SUB(NOW(),INTERVAL900SECOND)ANDEXISTS(SELECT1FROMSystemEventsseWHEREse.DeviceRepor

  • 程序实现自己管理数据清理工作

    HowtodisablesystemclearbuttonandreplaceitwithselfapplicationManageSpace?Android在处理清楚数据时,会在系统的设置选项应用中,有一个清除数据的按钮,点下这个按钮之后,该应用的几乎所有数据都会被清除。具体清除了哪些数据,请参考这篇文章。http://droidyue.com/blog/2014/06/15/what-will-be-removed-if-you-click-clear-data-button-in-system-application-item/但是有些情况下,我们不希望将应用的数据全部清除,或者是我们来接管系统的清理操作,其实是可以。并且实现也很简单.android:manageSpaceActivityThefullyqualifiednameofanActivitysubclassthatthesystemcanlaunchtoletusersmanagethememoryoccupiedbytheapplicationonthedevice.Theactivityshouldalsobed

  • 自己动手写三层代码生成器学习总结

    一、三层代码生成器关键:数据库的重要视图  今天看了下老杨的视频教程,写了一把三层代码生成器,理解了一下简单的代码生成器是如何实现的,其重点就在于数据库系统视图。  代码生成器需要了解数据库中的几个非常重要的视图,比如INFORMATION_SCHEMA(.TABLES、.COLUMNS)以及一些类型属性Data_Type,Column_Name等。然后利用模板,通过StringBulider来进行字符串的拼接,也就是AppendLine()方法。当然,其中涉及到SQL方法封装、数据库类型向.NET框架数据类型的转换、IO文件流的读写,还有就是不要忘了处理可空数据类型。  跟着视频教程,我也写了一个超简单的Model层代码生成器。随后又参考老杨的itcastcoder实例写了一个三层的生成器,了解了原理后就copy了部分code,呵呵,时间有限。下面看看这个三层代码生成器吧。二、我的三层代码生成器概览  使用WindowsForm技术开发,最终的窗体界面如下:  使用了DotNetBarForWindowsForm的控件使得窗体好看了一点儿;  修改连接字符串,点击连接后如下图:  这

  • Java设计模式学习记录-简单工厂模式、工厂方法模式

    前言之前介绍了设计模式的原则和分类等概述。今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍。简单工厂模式 做法:创建一个工厂(方法或类)用来制造对象。当一个人想要用手机的时候,需要自己创建手机然后来使用。如下:publicclassIphoneX{ publicIphoneX(){ System.out.println("#####制造iphoneX#####"); } }复制publicclassIphone8{ publicIphone8(){ System.out.printf("#####制造iphone8#####"); } }复制publicclassCustomer{ /** *使用手机 */ @Test publicvoidusePhone(){ IphoneXiphoneX=newIphoneX(); Iphone8iphone8=newIphone8(); } }复制这种实现方式,客户在使用的手机的时候会看到手机的具体实现方式,客户就和手机的耦合度非常高,

  • Phalcon入门教程之目录结构

    很多初学Phalcon的朋友,对于以Phalcon框架为基础构建的项目,应该如何组织目录结构有点摸不着头脑。比如多模块的项目中,如何共用"libs"类库和“models”目录中模型类的情况,就有很多刚接触Phalcon朋友经常在群里问这种问题。我们在翻阅Phalcon文档的时候,会看到"教程2:INVO简介"中有一个项目结构的demo,其中总结到“Phalcon不会强求应用程序使用特定的文件结构”。那么,Phalcon通过什么形式来加载这些可以任意组织的目录结构呢?下面以PhalconCMS的代码为例来进行讲解。PhalconCMS目录结构PhalconCMS/ app/ backend/ controllers/ models/ repositories/ views/ cache/ config/ core/ frontend/ controllers/ models/ repositories/ views/ helpers/ libs/ service/ tasks/ crontab/ public/复制加载目录结构PhalconCMS中

  • Nginx与httpd对比

    作为一个运维的学习者,对nginx和apache了解的很浅,但是作为以后运维过程中非常重要的两款服务器软件,静态web服务提供者,还是相当有必要深入的了解一下他们俩个的区别。那么,我开始尝试从几个方面来分析他们的区别之处。所有的观点都为本人持有,一家之言而已。生存环境(操作系统)、不同的地域的使用情况、存在或者一般使用者的规模、主要作用、源代码情况(如果有时间的话)、使用亲民度、对php等的支持。下面开始我的菜鸟学习之路一、生存环境各类种子的发育离不开肥沃的土壤,同样,谈到应用程序,我们不得不提到的就是操作系统环境,毕竟不同系统对他们的影响还是不小的apache这个老牌了,在几乎任何系统下都有对应的支持,无论时Windows还是Linux还是其他系统,都有支持它的官网:http://httpd.apache.org/ 截至目前,最新版本是2.4.20,可见官网下载可以直接获得Win以及NetWare的二进制安装包,而Linux需要自行编译使用(当然使用源最好) nginx也一样,官网http://www.nginx.org/,又卡又慢,给人一种很不好的印象(httpd也不快),截至目前

  • Facebook广告定向优化的8种方法

    译者:吕东昊审校:董梁 本文长度为3495字,预估阅读时间6分钟。我们今天要向大家介绍的是Facebook广告定向优化的8种方法您的Facebook广告定向可以进一步优化吗?您正在寻找通过Facebook广告触达理想受众的新方法吗?Facebook的新定向选项可帮助您提高Facebook广告的转化率。本文介绍了八种方法帮助您优化Facebook广告定向。1通过兴趣精准筛选相似受众(lookalikeaudience)如果您的博客拥有大量流量,或者拥有广泛的潜在客户,那么使用相似受众来定向更多受众是一个很棒的选择。然而,在许多情况下,相似受众人数过大。例如,在美国,最小的相似受众人数也有大约100万。要为您的广告找到一个较小和更有针对性的受众群体,请使用不同的兴趣定向测试广告。当您找到合适的相似受众和兴趣的匹配组合时,就会拥有目标更明确的受众,而且每次点击/转化的费用也会降低。以下就是将兴趣与相似受众结合的方法。首先,选择您想要测试的相似受众。例如,在下面的图片中,我选择了具有190万人的相似受众(相当于1%的美国人口)。选择您的相似受众然后向下滚动到细节定向(DetailedTarge

  • 微信小程序开发详解《二》开发组件使用初步,配置

    一:开发组件使用初步1:建立一个微信小程序的工程2:请参考如下链接里面的内容,这是微信小程序的官方开发指南:https://mp.weixin.qq.com/debug/wxadoc/dev/component/button.html?t=201612223:可以拷贝部分例子程序到你建立的工程中,使用微信小程序的组件,下图所示:我们在first.wxml中可以写first这个页面的布局,例如图1中我们写了一个字符串:“1234567890abcdefg”,在这个字符下面我们写了一个微信小程序的button,button显示的内容为“default”,type=“default”---这个是表示该button为默认的显示效果,如图1左边模拟器中显示为圆角淡灰色按钮左右两边无边距。注:很多网友会发现:在微信小程序开发工具中编写完代码然后,点击微信小程序开发工具左侧下方的“编译”按钮后,模拟器中并没有反应,其实这是因为,你编写完代码应该敲击键盘的Ctrl+s,保存代码,然后再点击“编译”,这样才能在模拟器中显示出对应代码的效果。4:按钮显示内容和点击事件的绑定:我们下面实现一个功能:点击按钮

  • 小游戏二之---------------五子棋

    1.五子棋是一比较容易写的小游戏,很适合用来练手,作为练手,不必弄太复杂,所以就不弄电脑AI了,只是玩家之间的对战(AI下次再写)。 2.五子棋的难点在于如何判断输赢,其实很简单。每次下棋,就判断该棋子的四个方向,横竖方向,还有两个对角线(分成四个部分,左上,左下,右上,右下)方向是否满足五个棋子。 3.用一个二维数组来表示棋盘(chessBoard[N][N]),值等于0,就表示该位置没有棋子,1表示该位置是玩家1的棋子,2则是玩家2的棋子。 4.运行结果如下:     代码如下(C++),有详细注释 1#include<iostream> 2#include<string> 3#include<stdlib.h> 4#defineN11//棋盘大小 5usingnamespacestd; 6 7//五子棋游戏 8//人对战人 9 10voidprintBoard(intchessBoard[N][N]);//打印棋盘 11//验证输入是否有效,不能超过N,不能输入除了数字以外的东西 12boolisValid(string

  • 快速删除node_module

    方法一: npminstallrimraf-g rimrafnode_modules复制   方法二: rmdir/s/qyour_app_dir复制   方法三: rm-f/node_modules复制  

  • RxJS 系列 – Error Handling Operators

    前言 前几篇介绍过了  CreationOperators FilterOperators JoinCreationOperators 这篇继续介绍 ErrorHandlingOperators.   参考 RxJS錯誤處理Operators(1)-catchError/finalize/retry/retryWhen Docs– ErrorHandlingOperators   ObservableandSubscriberHandlerError Observable的流程是:Observableinit>pipe>subscribe 不经过pipe的情况下,处理error的方式如下: constobs=newObservable(subscriber=>{ subscriber.error('errormessage'); //throw'errormessage';//throw也是可以 }); obs.subscribe({ error:errorMessage=>console.log(error

  • Python之路【第六十六篇】:django日更

    日更 ##########今天的苦逼是为了不这样一直苦逼下去!##########

  • 从随机过程到马尔科夫链蒙特卡洛方法

    1.Introduction 第一次接触到MarkovChainMonteCarlo(MCMC)是在theano的deeplearningtutorial里面讲解到的RBM用到了Gibbssampling,当时因为要赶着做项目,虽然一头雾水,但是也没没有时间仔细看。趁目前比较清闲,把machinelearning里面的samplingmethods理一理,发现内容还真不少,有些知识本人也是一知半解,所以这篇博客不可能面面俱到详细讲解所有的 samplingmethods,而是着重讲一下这个号称二十世纪top10之一的算法——MarkovchainMonteCarlo。在介绍MCMC之前,我们首先了解一下MCMC的Motivation和在它之前用到的方法。本人也是初学者,错误在所难免,欢迎一起交流。 这篇博客从零开始,应该都可以看懂,主要内容包括: 随机采样拒绝采样重要性采样Metropolis-HastingsAlgorithmGibbsSampling   2.Sampling 我们知道,计算机本身是无法产生真正的随机数的,但是可以根据一定的算法产生伪随机数(pseudo

  • 换了一个文字版本的教程,里面有一个作业是,猜测电脑想的数字

    猜电脑想的数字 如果太大,电脑输出:大了。 如果太小,电脑输出,小了。 如果猜对,电脑输出,ok。 反复试验多次才搞定,后来又拓展了下,猜对之后电脑立刻改变一个答案,继续猜。 那就需要用公式得到一个随机的数字。想不出,百度。 结果看到一个随机数函数。 所以拓展下就可以变成一个赌博程序。 0-1猜大小    

  • 三年回顾

    垂直化差不多三年,这三年主要做的事用三幅图可以表示:法拉利模式、机器人模式、春联模式。   法拉利 2011年垂直后,面临的主要问题是如何快速提高测试产能,基于垂直团队的特点,主要做的是任务分级、测试准入及基于风险测试。有朋友看到这幅图后说你这是方程式赛车啊,所以我称它为法拉利模式,目标就是要快,缩短测试周期。   机器人 在2011年的基础上,2012年大力发展测试基础建设,引入多样化的测试手段,全方位提升产品可测性,当时面临的主要问题是业务规模急剧扩张但团队规模增长缓慢,所以我们的目标是一个省字,大幅降低测试成本,故而我称其为机器人模式。   春联 2013年在延续前面快和省的基础上,想做到的是多与好,多就是支撑业务越来越多支撑类型越来越多,好就是产品质量越来越好,目前看来多这个字达到了,好还没有,这点与我们采用的模式有很大关系,我们大多数产品的质量是牢牢钉死在一个质量基线上,很多工作都是在不违反基线的前提下进行开展,换言之是在不违反质量基线的前提下追求高效率低成本,这种方式会直接导致我们追求完美质量的要求下降。虽然我们常说高效率与高质量是相对的

  • How to add external jar to hadoop job?

    https://stackoverflow.com/questions/28520821/how-to-add-external-jar-to-hadoop-job/36227260#36227260

  • UVa 题目分类

    第一章:入门 1.1PC/UVa题号:110101/100The3n+1problem(3n+1问题) 1.2PC/UVa题号:110102/10189Minesweeper(扫雷) 1.3PC/UVa题号:110103/10137TheTrip(旅行) 1.4PC/UVa题号:110104/706LC-Display(液晶显示屏) 1.5PC/UVa题号:110105/10267GraphicalEditor(图形化编辑器) 1.6PC/UVa题号:110106/10033Interpreter(解释器) 1.7PC/UVa题号:110107/10196ChecktheCheck(将军) 1.8PC/UVa题号:110108/10142AustralianVoting(澳大利亚投票) 第二章:数据结构 2.1PC/UVa题号:110201/10038JollyJumpers(快乐的跳跃者) 2.2PC/UVa题号:110202/10315PokerHands(扑克牌型) 2.

  • 1015. Reversible Primes (20)

    A reversibleprime inanynumbersystemisaprimewhose"reverse"inthatnumbersystemisalsoaprime.Forexampleinthedecimalsystem73isareversibleprimebecauseitsreverse37isalsoaprime. NowgivenanytwopositiveintegersN(<105)andD(1<D<=10),youaresupposedtotellifNisareversibleprimewithradixD. InputSpecification: Theinputfileconsistsofseveraltestcases.EachcaseoccupiesalinewhichcontainstwointegersNandD.TheinputisfinishedbyanegativeN. OutputSpecification: Foreachtestcase,printinoneline"Yes"ifNisareve

  • Git概述

    一、Git概述 1、公司开发是团队开发?个人开发? 团队开发 交换代码 项目开发 版本迭代 mybatis3.5.5 2、版本控制工具 SVN:集中式版本控制工具【问题:单点故障】 有一台服务器,各个程序员把代码提交到服务器。 如果需要最新代码,则从服务器下载 Git:分布式版本控制工具 有多个仓库【本地仓库,远程仓库】 避免单点故障 二、Git作用 软件开发 控制和管理软件的版本信息 谁做什么 什么时候做的 联系方式是什么 细化功能 代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本 版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换 多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调 远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取 三、下载与安装 1、下载 https://git-scm.com/download 版本:Git-2.20.1-64-bit.exe

相关推荐

推荐阅读