EOS - The platform for DAPP

in eos •  7 years ago 

从区块链开始

我们先回顾比特币。

我们简单概括比特币,基于去中心化信用的且具有稀缺性的商品。去中心化信用,本质上是由于所谓的账务公开决定的,只要你想,你可以追溯每笔钱从诞生到到你手里的所有过程。在由初始设定保证了稀缺性的前提下,由密码学实现了绝对的个人权利。比特币极端的保护个人权益,没有人可以从你的账户不经过许可里划拨任何一聪比特币,比特币不可通胀,没有人能用各种手段从你手里获得一丝一毫的价值,比特币永远不会丢失,它永远在万千网络的某一个比特里,等待着有动用权力的人拿住他的钥匙过来。从一个浪漫的角度来想,很多年之后,新时代基督山伯爵一定是会拿者私钥复仇的。

比特币代表着存放资产没有摩擦成本,只要网络还在,资产就永远还在。比特币的另外的身份是这个价值网络的分红权,这个网络有多少价值,比特币自然而然的会拥有这么多的权益,比特币永远不能伪造,能伪造的从来就不是比特币。

比特币是近乎完美的数字货币。我们甚至极端情况下这样去做理解,比特币是可以适用于所有的经济体系的,所有的 altercoin , 都是针对某个具体场景的数字代币。

比特币同时也是一个区块链应用。我们这里对区块链技术加上一个冒昧的定义,区块链技术是人类在技术上排除时间和使用时间之外,重新发明了不可变性。区块链和数据库的区别在这,区块链上数据的不可变性是默认的,可变性是可选择的。这点和数据库是相反的。区块链可以给特定数据维度加上可追述的时间维度。

我们接着来看智能合约,如果把区块链想象成 iPhone, 智能合约就是 iPhone 的自带应用,一定程度上扩展宿主的的能力。交易其实本身就是使用最广的智能合约。而分发代币的智能合约只做一件事,给特定区块链资产赋予自由且自动的兑换链上权益证明的能力。至于权益证明的兑换过程,没必要也暂时无法上链,链只需记录权益的能否兑现,市场会给予权益的可靠比例合适的估值。

这里有一个问题是,为什么是资产兑换权益证明,而不是资产直接兑换权益。我的理解是,各个权益证明有各个权益证明所关注所附带的信息,厨子不用关心收银台货款的真伪,这个世界运转的目的是更为简单高效,只当厨子对个人而言更为简单,同理只做权益证明,对智能合约而言更为简单。权益的兑换只需要结果上链,权益的兑换过程比例影响网络的价值,从而影响权益本质的估值,这个中间过程是不可能完全控制的,但是可以确定的是,市场按照可追述的结果,得到到一个基本公平的估值方式。

什么是智能合约

image1.png
从一个抽象的角度来说。btc 所提供的交易功能就是一个状态机。
F(tx,state) -> state 即交易加上当前区块状态,得到一个新的状态。 之后的一致性机制,不管是pow或者pos,会将新生成的状态固化到区块上。一旦固化后,新的状态转移函数可以运转。对于 btc 来说,交易功能,从另外一个角度来说也是一个脚本。比特币的脚本也是需要公钥,和脚本的地址。

Eth 其实解决了两个问题,一个是 btc script 的完善,另外一个是,脚本可以更改本地其他储存状态的问题。F(tx,state,localstate) -> state, local state,localstate 和 gas 相关,想让合约运行起来,每次都要销毁一定的gas,这从经济上来说,是有成本的,所以即使 eth 引入了循环,但是任意合约也不会无限制的运行下去。我们梳理下 eth 智能合约是怎样的。

Eth把地址分为两类,普通地址和合约地址。eth转币到地址,即会触发对当前地址的检查,如果当前地址是有合约的。

创建合约意味着在某一个地址上放上合约,因为合约运行需要消耗整个网络的资源。eth默认是gas,gas的意思是,给合约运行者的奖励。

Eth的运行模式是这样的,广播交易全网分发,相当于,所有的eth全节点就都会执行这个合约,具体谁执行完成了,依赖一致性协议反向判断。eth 合约和btc比较大的不同点在于,合约地址上也是可以储存代币资源的。另外一点,eth 本身来说,可以储存结构化的其他的相关信息。

任何一个基于ico,都是eth币上的附带信息。当然现在的token会要求遵守 erc 20,erc 20实际上就是编程的接口,你实现了这些功能,那我们就可以叫你token了,就比如,你通过了围棋的入门考试,那我们就可以叫你棋手了。erc 20 方便token通用实现,从而依托于eth网络,实现其他非 token 本身的价值交换。

Eth的问题在于,资源的隔离,之前会有ddos全网网络的事情发生,原因也在于此,更抽象的来说,eth 就是一条跑着许多代币和合约的链,任意合约的执行时,都是在竞争同一计算资源。

另外一些,eth 对于 token 来说是异常成熟,但是eth是很难支撑起DAPP的,原因如下:

一,基础设施不完善,所有的 DAPP 的 ico 的承诺都是,基于eth分发代币,之后兑换成自己的链,原因就在于次,基于智能合约去创建DAPP的业务,实际上成本还是相当的高,任何实际的业务,难度都是创建token的10倍以上

二, 资源的竞争,不考虑现有执行效率的问题,但是在eth解决资源隔离之前,DAPP 是无法运行的。打个比方就是,淘宝流量大了之后,腾讯的所有服务也都不可用了,这对DAPP的服务商来说是不可控的也不可接受的。

三, ETH 是基于状态的系统,基于状态的系统,实际上就是要有非常多的锁去做竞态限制,简单来说,eth 目前的设计是很难充分利用机器资源的,可以改,但是不经过硬分叉很难。

EOS for DAPP

为了更好的理解 DAPP ,我们重新回顾一下 DAPP 是什么意思。
通俗的话说,Dapp 就是前端加合约,前端和用户交互,合约和区块链交互。
这个抽象有一个隐含的前提,这个 blockchain,是足够支撑起数据储存的部分。毕竟任何一个DAPP除了区块信息之外,都会有大量的领域信息。为了保证合约的可靠性,于合约相关的内容实际上都是要上链的。但是如果所有信息都上链,那必然会导致区块膨胀。另外一点是处理能力的分配,实际上,每个智能合约的处理能力都是依托于区块链的,在这个角度上,每个DAPP都会是链的性能杀手。

Eos 的设计不是为了智能合约平台设计的,eos 的目的是设计成 DAPP 的平台。对于资源分配,eos实际上是依靠代币对dapp进行资源隔离,触发智能合约的计算资源由DAPP持有的代币决定,本质上就是隔离开来所有的DAPP,防止资源竞争和恶意的ddos。本质上把一个技术问题,漂亮的给转化成了一个经济问题。

EOS 预设DAPP的一些基础框架,eos 的合约本身是 要求用 C++ 编写,C++ 继承合约的接口,之后编程成 WASM 部署地址上解释运行。相比于 solidity的现在的设计,这是一个模式问题,简单来说目前这种预设可能的功能的问题,在灵活性上可能不如 solidity,但是在之后的合约大小上,和执行效率上来说,必然会占些便宜。EOS 可以一直升级整个的预设DAPP框架。

DPOS 的争论较多,我们目前只关注两点,第一点是 DPOS 是目前最快的一致性算法,副作用是不是那么的去中心化,第二点是 DPOS 基本上杜绝了硬分叉的可能,所以,任何的DAPP的升级与修复,是可以建立在不会硬分叉这个前提上的。这个硬分叉不是说不会,而是最终必然是所有的运行的都是新的共识。

EOS 的链是基于消息的,简单来说就是把 BTC 的 utxo 搬到了块的生产领域。这里会解决一个问题,就是当一笔交易有很多条记录的时候,没有必要把整个交易打进block里。同时这样的设计也会减少基于状态的同步性锁的问题,让机器性能可以最大化。这里有一个思考题,基于状态的区块链和基于消息的区块链,如何设计手续费的问题。

EOS 没有从根本上解决区块膨胀问题,但是允许轻客户端,可以只下载DAPP相关的部分的区块数据。这样的设计缓解了区块膨胀的问题。

最后再说点争议性的问题,BM 说,EOS 可以在之上构建一个 eth,理想态上来说实际上是可能的,ETH 也是一个智能合约,从工程角度考虑,不太可能,我们可以当做嘴炮来理解。

按我们的论述,btc 带来了智能合约的雏形,eth真正带来了真实世界里的智能合约,eos将带来 Dapp 的平台。作者个人的利益取向是,观念的冲突不影响三者可能都会长期存在,因为专注领域的在作者看来相对隔离。

参考文献

https://steemit.com/eos/@iang/the-message-is-the-medium
https://github.com/ethereum/wiki/wiki/White-Paper
https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md
https://iang.org/papers/EOS_An_Introduction.pdf
https://theethereum.wiki/w/index.php/ERC20_Token_Standard
https://en.bitcoin.it/wiki/Script

下面是我的公众账户,欢迎关注
qrcode_for_gh_43dcaa2f7c11_430.jpg

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @secwang! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!