小娜听课笔记:公信宝黄敏强第2课《区块链应用和公有链的底层逻辑》
---主讲人黄敏强,小娜仅做笔记整理供自己和大家以后参考---
A 关键选择:到底做公链还是做公链上的应用
B 做公链:如何设计有竞争力的公链
C 做应用:“古典互联网”如何跨界开发区块链应用
A 关键选择:到底做公链还是做公链上的应用
什么是公链
什么是智能合约型公链
什么是公链上的应用
如何选择
什么是公链
一条独立运行、人人可以参与交易和记账的区块链。
有几个特点:
- 独立运行
有自己的一条区块链,自己出块、自己打包、自己运行,有自己的跑道。
- 人人参与记账和交易
每个人都可以发送交易、进行记账。矿工和节点可以参与链上所有的活动。
- 账本公开
账本公开就是说,链上每一条交易消息广播都是全网广播,每个人都可以通过区块浏览器查询某个区块ID对应的交易体、每个区块下面有多少个交易、每个账户下面有多少数字货币和资产、账户的转账历史等,都在链上公开,没法隐藏。
但是交易有一样东西是不公开的,就是交易备注(memo),这个东西是ECIES加密,就是双向加密,这个不是公开账本的范畴,这里面可以写一些隐秘的东西。
比如说有一个交易,我给你5个币,备注是“请给我买一件衣服”。这8个字用我的私钥和你的公钥进行加密,那么你收到这笔交易的5块钱转账后,用你的私钥和我的公钥就可以解开备注的内容。这笔交易的备注信息只有我们双方可见。除了我们双方之外,其他人都解不开,因为要解开这个备注信息需要我们双方其中一个私钥。
- 节点分散
区块链的特点是,不是所有节点都控制在开发者、创始团队或者某个人手上,节点要求足够分散。
大家都听过51%的攻击,如果节点超过半数以上都在某一个人手里,就容易产生威胁区块的一系列问题。
所以节点足够分散,公链就要做足够的开发者社区推广,让更多人来成为矿工或者见证人,这样才能确保节点的分散和权力的分散。
那为什么说节点的分散就是权力的分散?因为作为矿工和见证人,他们都有打包、交易、记账、广播消息等权限,并获得区块和交易手续费的奖励。作为有权限的人,太集中的话权力过大。分散才能使公链健壮。
- 开源
所有公链的项目代码都要在github开源,让所有人检查你的代码。编译运行出来的版本必须是最新的版本,必须保持一致。这样的话,节点与节点之间、客户端与客户端之间的区块、消息结构一致,这样不会造成无法验证的问题。
所以要求是代码可下载,而且编译出来必须可以运行。
要符合如上特点,比较典型的公链就是咱们的币王比特币(公链的1.0时代)。
那么这里我也举例说一下对区块链现在几个不同链的说法,比如公有链、联盟链、私有链和它们的一些区别。
公链就是我说的,一条独立运行、人人可以参与记账交易的区块链。具有独立运行、人人参与、账本公开、节点分散、代码开源几个特点,
联盟链的特点是许可,只有许可后才能到链上发起交易和参与记账,而且记账节点会比较少甚至比较集中。
私有链更加封闭,它是作为某一个领域或者某个企业内部,或者变成爱好者把代码拉下来之后,修改参数、端口以及缩写,把它变成一条独立运行的私有链。用于企业内部或者个人测试用。这其实跟传统互联网中心化数据库已经没有区别了,在商业化或者对外公开时不太可行。
什么是智能合约型公链
智能合约型公链除了公链的特点以外,还有一个新的特点就是具有可编程、可运行计算能力的公链。
就是说1.0时代的公链只能在公链上硬编码写代码,其他的用户是不能在已经运行的链上添加新的代码和合约的,这是做不到的。
智能合约就是在已经运行的链上随时添加代码和运行逻辑,这叫智能合约。
智能合约一般都有“代码即法律”这样的规则,就是你可以发起写一个合约,这个合约约定在什么规则下什么时候实行什么样的程序,if什么else什么,什么时候自我销毁,什么时候转账给别人,什么时候执行下一个合约的执行或销毁,都是写在链上的。那么这个地址就可以提供给别人用,别人以这个规则、这个合约去参考和运行。因为合约的代码是开源的,大家相信是公开透明、合理合规的,那么大家会履行。
就好比我们俩签订一个合同,比如公司估值到达多少的时候,你的股份我就要回收,以什么价格回收。这种线下我们会签合同,但是线下是靠人的制度来进行约束,你可以不承认,那么我们只能打官司。智能合约的话,我们可以把这个场景写到已经运行的公链上,接下来没有人可以停下它、阻止它,那么它会按这个合约执行下去。
现在典型的智能合约就是以太坊公链,也称为公链2.0时代。以及公信宝,也是一条智能合约型公链。
那么我在这里说说为什么公信宝要自己做公链。这是一开始我们要做公民信用数据,由公民自己管理,这也是公信宝名字的来源。我们想做数据经济,想让公民成为数据的主人,想做全民的数据交换,让数据产生它的价值。要做这些事情的话,如果没有自己可控制的公链,这个梦想其实很难实现。
所以公信宝从一开始开发,就说我们要自己做一条公链出来。那么公链出来之后,我们在上面搭建我们的应用。所以我们2017年6月12号,我们的公链上线,然后同时我们的2B点对点数据交易所上线,18年1月12日,布洛克城上线。现在又有十几个应用在我们的公链上做开发,所以我们要做公链。
什么是公链上的应用?
基于某个公链上开发的、专注解决某类场景需求的程序,现在也叫DAPP(去中心化应用)。典型的DAPP就是以太猫。
如何选择做公链还是应用?
公链就像是操作系统,像苹果、安卓这样的操作系统;而DAPP就是操作系统里面的应用,比如苹果手机操作系统里面的淘宝APP。
相对来说公链的天花板高,门槛也高。做公链需要开发能力、运营能力、推广能力,非常重要:
- 推广难是你需要全球分散的节点,你要推广到全球去;
- 然后做公链的话需要吸引开发者,建立开发者社区;
- 你还要跟其他公链去竞争。
做应用相对来说天花板就低一些,因为你是在某个操作系统里的某个应用。但是如果你应用做的足够好,有可能操作公链本身的影响力。比如在安卓系统里面做一个Facebook应用,Facebook有可能比安卓系统本身的影响里还要大。
应用门槛低的意思就是你不需要搭建主链,不需要主链的开发能力,只要应用的开发能力,应用的开发语言比较简单、规则明确、流程也比较简单,所以门槛低。
运营简单就是你的应用只要推广给用户即可,不需要推广给开发者,不需要推广给全球的社区。所以推广的是C端用户。
应用还有一个好处就是民众的影响里大,大家口口相传会有好处。
应有另一个好处是举例。比如过去,什么叫互联网,现在就会举例说网上购物、网上订票、网上搜索等等,这是互联网的力量,民众可以举例。但是现在区块链还没有这样有力量的例子,老百姓还没有说可以举出一个例子。
总结:那么到底是做公链还是应用?根据自己的优劣势选择一个区块链上的工作方向。无论公链还是应用,都是合作重构一个未来的信用社会。
B 做公链:如何设计有竞争力的公链?
做公链成功的关键点
现在的公链都是怎么设计的
下一代公链如何升华
做公链成功的关键点
成功的关键点:
-
节点推广。推广到全球,推广足够多的节点,让网络足够的健壮,让权力足够分散,让矿工足够多。
-
建立强大的社区。社区包括投资者社区,用户社区,更重要的是开发者社区。要吸引更多的开发者到你的链上做开发,还要提供非常好的开发环境吸引开发者。
接下来的公链会越来越多,百家争鸣百花齐放,实际上我们是不需要那么多公链的,因为开发者资源有限。如何吸引开发者来,是公链与公链之间的竞争,真正有竞争力的公链才能吸引到开发者。比如手机操作系统,一开始也很多系统,现在最主流的还是IOS和安卓。
现在节点和社区推广好的公链,一个是以太坊,一个是EOS。虽然EOS主链还没上线,但是它的节点推广、社区推广里面开发者的推广做的相当的不错。
现在的公链都是怎么设计的
我来评价一下现有公链。
现有公链,主要是智能合约(以太坊),能调用的权限非常少,只能根据链上的账户体系、支付体系来开发纯数学计算的应用。因为智能合约是一个沙盒(sandbox),是一个封闭的黑箱子,不能调用外部网络,只能调用链上的网络,是一个运行在链上的虚拟机。所以在这样有限的资源里,能做的应用比较窄,只能做一些我认为是一些玩具。现在公链的开发主要是在拓展性能、共识机制,然后去让公链性能更强、共识机制更安全。但是这样一来,对开发者来说,做不出什么东西。最多是发个token,ICO,养猫已经是到了极限了,但还是把链堵死了。开发者能做出的东西还是非常少。
如果开发者开发出来的应用非常有限的话,区块链如何影响每一个人?如何走进我们的生活?如何改变我们的生活?根本实现不了。所以需要做进一步的扩展。
这就引申出下一个问题,就是下一代公链如何升华?
下一代公链如何升华
前面我们说了,现有公链在智能合约的性能和共识机制上做很多研究和优化,各有优势,但是我总结始终还在两个维度上没有做出更多支持:
- 开发者流量支持
- 开发者可调用资源的数据上的支持
比如以太坊的开发应用,开发完以后,以太坊不会给你带流量的,你需要单独去推广你的应用。这就是没有流量支持。
以及在智能合约里只能调用有限的资源,不能访问外部网络,那就没有办法调用用户背后的数据。
那我觉得下一代应该在这两个维度上做出支持。
为什么是流量呢?开发者开发出应用,没有足够能力做推广。如果公链本身有足够的流量,那么开发者就很容易过的很好,这就比较好。这样对开发团队的要求就比较低,就很容易吸引。
而数据上的支持指的是如果每个用户的数字身份背后都有一系列跟他的兴趣爱好、学历、教育、工作、消费都有关的标签的话,我们就能知道他大概是一个什么样的人。这样我们就能开发出非常丰富、很落地很符合民生的应用。如果要让区块链普及到大众,让大众可以举例什么是区块链,就像现在举例什么是互联网一样的话,这一步就会非常重要。你一定要做出跟我们每个人生活有关的应用,这是非常关键的。
这就是为什么公信宝除了2B的数据交易所,我们还要做2C呢?
2C就是用户在布洛克城上传的数据,这些就是他的身份数据。等到有了主观的身份数据,和客观的行为数据后,在链上就会形成一项标签,我们叫粗粒度的标签和细粒度标签。粗粒度的标签,你要挖矿就公开的;而细粒度的标签,要得到你的允许,别人才能看到。比如你是名校毕业的,这就是粗粒度标签;毕业与清华大学、毕业于浙江大学,这就是细粒度标签。
所以有了这样的支持,那么我们开发者十几个应用在我们链上开发,它一旦上线,我们就给他做出足够多流量支持。就好比前一段时间上线的余币宝,刚上线只有15秒,额度就全部被抢完了。接下来还有很多应用都会上来,上来以后我们C端的布洛克城用户马上就会支持它。同时,我们有了数据支持,我们可以支持开发者开发很多跟人有关的应用,这样的话我们称之为下一代公链怎么去升华,怎么提供更好的开发环境。我们叫CBD,C是2C布洛克城,B是数据交易所,D就是开发者,CBD在我们公信宝的公链上运行,这就是我们公信宝的核心竞争力。
总结:区块链,特别是公链,将会是未来社会中最重要的基础设施,下一代公链一定能够成为未来信用社会的基石。
C 做应用:古典互联网如何开发区块链应用
做区块链应用成功的关键点
和区块链结合的应用怎么设计
今后的区块链应用开发需要怎样提升
做区块链应用成功的关键点
-
要发现需求和痛点。需求要很强,这是至关重要的一点,是门槛。如果做的事情大家连用不用都无所谓那大家用它干嘛?如果用户不感兴趣,从一开始就不要去做了。
-
发现用户痛点后,要做出好的UI和用户体验。要做的好看、人性化,UI好看一点。
-
要有合理的token使用场景。就是既然要做区块链上的应用,就需要有token的使用,包括奖励、产出、消耗。
以布洛克城为例:
-
要发现需求和痛点。我了解到所有人都知道比特币、以太坊挖矿,但是当他们想要参与的时候,门槛已经太高了,没法参与了。所以挖矿致富这个事情在头脑中已经形成了画面。那我想如果做一个C端产品布洛克城,大家手机就可以挖矿,门槛很低,手机一打开就可以挖到矿的话,一定会很受欢迎。
那么加上管理自己的数据就可以提升算力,鼓励用户授权自己的数据放到链上。这样有了经济刺激,以及有了安全教育,用户就愿意做这样的事情。 -
做出好的UI和用户体验。我们就把界面做到挖矿的界面,不断在优化,吸引用户使用。
-
合理的token使用场景:采出、奖励和消耗。产出就是挖矿,奖励就是做任务有代币奖励,消耗就去使用其他应用。
和区块链结合的应用怎么设计
- 交易历史记录不可篡改。
区块链就是公开、透明的交易历史记录不可篡改的公开账本。注意不是“数据不可篡改”,数据是可以改,但是每次更改都会生成一个新的历史记录。
那么在应用里怎么设计呢?有些应用可以设计一个“信任”的场景:
比如社交场景,你们俩约会了,约会以后的评价,约会时候的过程都在链上了,那么不好的评价在链上是改不掉的,就会珍惜自己的信用;
再比如链上信用贷款,借一个比特币一个星期,并支付10%左右的利息。一个礼拜一后这个人没还,利息也没付,那么贷款应用方就会记上“逾期”,这个记录是改不掉的。
所以设计应用,这一点是至关重要的。其他一系列的智能合约、非对称加密、密码学、共识机制、出块方式都是为这个账本做出努力。
- 智能合约要构建性能场景。
刚刚我们说了账本是去中心化的。如果你的应用本身是中心化的,那么你产生账本的源头都有可能造假,你怎么确保最终记账是真实的呢?
所以智能合约起的作用就是把你的应用本身都去中心化掉。你的应用产生的所有数据和记录都是真实的,那么最终的账本也是真实的。
这里我要说一下,有一些场景,比如用区块链做追踪溯源,比如食品溯源,这不搞笑吗?你食品啊,养鸡啊养鸭啊蔬菜啊,源头就是人为控制的、中心化的,你把它记到链上,账本就算是不真实,那又有什么用呢?所以这就是一个伪需求。
- token合理的经济模型。
前面我们讲过,token是有产出、奖励和消耗,设计的时候一定要把这个经济模型设计到你的应用里面去。
那我在这里举例,比如竞猜,有脑竞猜和无脑竞猜。有脑竞猜就是竞猜规则都很透明,比如明天牛熊,如果比特币涨,执行什么规则,比特币跌执行什么规则。规则写上以后,执行就很简单了。输赢都会有token的转账交易。
这就是一个典型的交易活动,token在里面可以下注,这就是一个场景。
再比如用token买数据也是合理的一个使用场景。
今后的区块链应用开发需要怎样提升
我总结就是一定要做出体验像互联网产品一样的区块链应用,让人们记得住、经常用。让区块链技术真正为社会产生价值,实现重构信用社会这样一个伟大的愿景。
但是这样的事情,如果只是过去的公链是达不到的。因为做出来的东西没法跟我们每个人有关系。所以一定要有跟人有关的标签。
所以现在区块链很多出来的公链都是在提倡我们是做身份验证的,我们是做数据的,特别多。所以未来一定是这样的,有身份验证的、有身份的、有数据标签的,这样才能做出跟我们有关的应用。
总结:未来将区块链技术变得伟大的一定是它的应用,应用一旦普及起来,就会对社会、公众产生巨大的影响,那么它的普及也会非常块。操作系统是这样,互联网是这样,将来区块链也会是这样的。
以上主要讲了公链和应用的设计法门。当然区块链领域还有很多事情可以做,比如你可以做媒体,可以做展会,可以举办一个峰会,可以做一个数字货币交易所,可以做咨询,可以做沙龙、创业工场或者咖啡馆,这些周边都可以做。这些我没拿来讲是因为这些东西不需要有区块链技能或者从业背景,你都可以去做。