当你打算在应用市场上传并发布一个APP时,必须选择开发者身份是企业开发者还是个人开发者,并通过软件著作权等证明材料证明此应用的所有权归属于某个特定企业或个人。长期以来,产品经理构建中心化应用,开发人员控制中心化应用的升级迭代,运营人员通过中心化的应用市场发布,但随着区块链技术的发展,公链基础设施的不断完善, DApp(去中心化应用)可能将成为主流。
1. DApp是什么
DAPP是Decentralized Application的缩写,中文叫分布式应用/去中心化应用。在《区块链项目开发指南》里为它下的定义是:其后端在去中心化的点对点网络上运行;源代码是开源的;网络中不存在能够完全控制DAPP的节点。
DAPP不同的底层区块链开发平台就好比手机的IOS和Android系统,是各DAPP的底层生态环境,DAPP就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方。比如比特币客户端和钱包就是在比特币区块链系统上衍生的DAPP,为用户提供点对点的电子现金交易服务。
目前大部分DApp选择在以太坊系统上部署,因为有“智能合约”和“账户体系”的以太坊系统,更加适合DApp的落地。
2.典型DApp的工作流程
智能合约接受来自DApp的交易请求和事件,通过触发提前编写好的代码逻辑,操作区块链账本中的状态。DApp通过调用智能合约提供的接口来实现业务逻辑;智能合约封装与区块链账本直接交互的过程,对上层业务逻辑进行支持。所以为了实现完整的DApp,开发者不仅需要开发上层应用,还要编写智能合约代码。
3.DApp与App的区别
先从技术角度来看基于区块链系统的DApp与App之间会有哪些区别。
①数据分布式存储。
参与区块链系统的每个节点都可以通过公开接口查询数据记录或开发相关应用。每个节点都遵循同样的共识算法进行数据更新和存储,每次更新都需要51%以上节点达成共识,参与节点越多系统越安全。
数据分布式存储是区块链核心思想“去中心化”的技术基础,数据的开放及透明意味着DApp的开发者对于应用的控制大为削弱,每次升级更新都需要大多数节点的同意,比如最近EOS上线主网,投票结果为no go,搞的项目方十分憋屈。
数据分布式存储也意味着开发者无需承担采购服务器、流量等运维费用,只需聚焦在DApp和智能合约之间的业务逻辑上。对公链资源的调用,则依赖公链的经济模式,通过持有相应比例的公链通证,获得相应的权益(即公链算例、存储、流量等资源的使用权),而通证的流通性也让这种方式十分灵活且成本极低,在不需要相应资源的时候,通过二级市场把通证卖出即可。DApp的开发者可能更加轻量化,减少了对底层技术的依赖,更加强调对用户心理和行为的把握,而且还得懂金融。
所以DApp产品经理不仅要通过乌合之众、消费心理学了解用户需求,还得精通博弈论、经济学、金融学等知识才能来规划好产品的未来走势。
②不可篡改
通过共识算法,获得大部分节点一致提交之后,数据便在区块链网络中一直存在,不可修改或销毁。实际上以POW为代表的证明共识机制是概率算法,并不是一经达成共识就不可逆转,而是随着时间推移或某种强化,共识结果被推翻的概率越来越小,结合token的经济体系之后,使得即使有人想恶意破坏也得付出经济代价(算力或权益)。
如The DAO事件发生后,以太坊社区便通过硬分叉的手段回滚交易,诞生了经典以太和以太坊两条链。被盗的资金在分叉后的主流以太坊上不被承认,但在经典以太上,数据依旧存在。在技术上共识过的结果无法撤销(经典以太),但在社会共识上,大多数人承认分叉之后的以太坊,即相当于推翻了之前的共识。所以说虽然区块链通过技术手段去掉了硬中心(具有强制力),但依旧可以通过非技术手段(经济、心理)控制大于51%节点实现软中心。
除主链外,绝大部分的DApp都不具有花费如此高成本实现软中心化的必要(未来不确定),DApp的智能合约如果部署完毕,便极难甚至不可更改,任何细小的智能合约代码错误都会导致用户不可挽回的损失,而传统互联网应用的开发,适合马上试错,快速迭代。所以产品经理应注意在设计DApp对应逻辑时,必须非常严谨。
③隐私保护性
节点之间相互信任,基于节点地址而非个人身份进行数据交换,解决了个人身份的隐私问题。而通过同态加密及默克尔树等密码学方式,保证了数据记录和验证的隐私,即便泄露也无法解析。
由于数据存储和隐私保护的变化,现有APP的账户系统可能要发生天翻地覆的变化。DApp极有可能没有以用户名和密码为基础的账户功能,而是采用公钥-私钥对来代表公链上的一个账户身份,而此账户保存在公链上,DApp通过公链提供的数字证书进行身份验证用户数字身份即可。
数据的脱敏/加密储存也让DApp之间的数据价值共享成为可能,只需支付一定通证即可获得可商用无风险的真实数据,并实现用户数据平滑转移,这是中心化App最渴望却无法做到的。
DApp的产品经理不能拘泥于中心化App的设计经验,充分了解区块链系统的特点并在此基础上推理出相应的业务及服务层特性。现在的DApp并没有一款成功的落地应用,也没有相应的设计标准,每个产品经理都有自己的理解,正是发挥创意的好时机,以下便是本人对DApp的设计构想。
4.DApp设计构想
①前提条件
就像web之于pc上的Windows,app之于智能手机上的OS,dapp也需要硬件对于区块链系统的支持。那究竟会出现专门支持区块链系统的硬件还是在现有硬件系统上升级呢?
个人认为大概率是现有的手机硬件升级,支持区块链系统部署,同时为了确保数字资产安全性,将数字资产存储和使用分开管理,通过数字钱包硬件,利用smartmesh技术和手机连接来保证安全性。
更重要的是,DApp并不是一出现就完全取代现有体系,在很长一段时间里,DApp需要和中心化产品进行数据交互,从技术和商业成本考虑,在现有硬件基础上进行系统升级都是最优方案。而先有社群,再有系统,最后出硬件的模式,也已经被证明是完全可行的。
硬件和系统完备,公链的基础性能稳定可靠,公链内的通证经济体系也通过市场检验,在这样的条件下,DApp会迎来整个生态的爆发。
②模块化功能设计
DApp中用户数据存储在主链上,用户登录及各种框架都是由各个服务商通过底层公链提供,基于同一主链的DApp之间可以进行数据平滑转移。因此当用户首次实用DApp时,并不是对他一无所知的全新用户,他在主链上可能已有相关数据。产品在范围层设计时应有充分的扩展性,当用户选择转移不同数据集时,产品的结构层和框架层以何种功能形式展现。同时要将不同功能逻辑进行解耦,以数据之间关系作为依据设计功能模块和智能合约。
比如一款招聘DApp,当用户首次使用时,授权导入自己在社交DApp上的数据,结合此DApp的功能场景,调用社交关系、工作年限、所在岗位、所处地区(如果有的话)等智能合约读取相关数据,将对应数据放入对应设计好的功能模块之中,并通过数据间的逻辑关系提示用户授权其他数据,最后以完成产品形态呈现。
③高度订制化
基于数据的模块化功能设计,会根据用户授权的数据维度不同而呈现千人千面的特点,尽管储存在主链上的数据都经过加密或脱敏处理,仍然不排除相当一部分用户不愿意享受完整的功能。
在中心化的产品中,因为都是强制授权,所以不存在这种情况。产品经理需要考虑的是大部分目标用户的通用需求,并在保证用户体验的前提下转化为功能。而DApp产品经理则应该更关注功能之间的联系,哪些功能必须耦合,构成一个完整的模块;哪些功能之间存在弱关联性,可以推荐用户一同使用以提高体验;哪些功能是通用模块(登录、通知、账户等),根据需求引导。
比如用户首次登录招聘DApp时,提示需获得账户身份认证、所处行业、岗位、简历等数据,这些数据可能在不同的DApp中即时更新并保存在主链上,而用户可在生态内实现一键互联。
④商业模式
DApp和App商业模式上有着本质上的区别。DApp用户使用功能是需要付费的,智能合约的运行、用户数据上链都需要支付给矿工的手续费,通证系统是整个系统运转的关键。这里既包括了主链的通证系统,也包括DApp本身和之间通证的流通、汇率、兑换等系统,而如何让养成了免费习惯的用户付费使用DApp,也是产品经理面临的巨大挑战之一。
DApp的去中心化也体现在收益分配的去中心化上。APP的收益,都归开发者所有,开发者自主决定是否对用户再分配,尽管听起来比较扯,但把薅羊毛算上的话,这种情况还是有的。而DApp的收益,通过智能合约可以直接将通证分配给贡献者,包括维护系统运行的矿工、愿意贡献数据的用户,同时用户和数据需求方也是付费者。就目前来看,项目开发方的收益主要来自于通证发行之初的一次性分配,因为上线之后,DApp的维护和运营靠的是Token的持有者们为了维持所拥有的Token的价值而自发组织的,项目方并不需要再付出成本。
关于DApp的商业模式和Token系统设计,需要另外开一篇文细讲,这里就不详细说了。
5.DApp与APP之间的联系
在区块链生态还不成熟的情况下,DApp必须从中心化的应用中获取数据。比如DApp想要读取天气预测结果,它只能从气象局获取,而气象局作为绝对的中心化单位,绝不会仅仅因为其他DApp想要数据,就创建一个提供结果却没有回报的DApp。所以DApp产品经理还需考虑到与中心化应用之间数据交互的规则,并设计相应的功能和激励政策。
还有一种情况是,传统的中心化应用使用区块链技术降低成本,改进效率。比如银行间采用区块链技术进行记账,提高清算、轧账的效率,这样的区块链系统是由传统的中心化单位所运营维护,既不需要激励政策,也不用发型通证。也就是基于联盟链和私有链上的应用,从用户使用角度来看,与中心化App可能并无太大差别。
6. 总结
目前,基于区块链技术的DAPP尚处于早期探索状态,还没有大规模实际应用价值的DAPP出现。但不可否认的是区块链技术带给了我们巨大的想象空间,作为承载将技术转化为服务,连接功能和用户职责的产品经理,需要提前做好迎接未来的知识储备。