EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。

比特币被称为区块链1.0,因为它开辟了数字加密货币的天下,走出了从0到1的决定性一步。

以太坊被称为区块链2.0,因为它提供了可运行智能合约的图灵完备的虚拟机,带来了无限的可能性。

而EOS则被称为区块链3.0,为什么? 两个字:性能

EOS的定位正是其首页的口号:

英文:The most powerful infrastructure for decentralized applications。

中文:最强大的去中心化应用基础设施。

EOS期望做加强版的以太坊,一个高吞吐量的智能合约平台。

以太坊虽然功能齐备,但受制于其设计选择,15秒的出块速度导致交易吞吐量 远远不能达到大规模实用的程度,大约只有30~40TPS(交易/秒)。而EOS则选择了不同的技术路线,目标是达到可观的百万TPS——考虑到Visa实际的处理速度才1700TPS,这一目标的确相当诱人。

EOS的共识机制

比特币和以太坊之所以吞吐量这么低,是受制于其设想的应用场景以及针对该场景所选择的共识机制——这两者都假设系统运行的环境完全不可信,因此都采用了工作量证明(Proof of Work)这种共识机制。

共识,顾名思义,就是大家对某件事达成统一的认识——对于 区块链而言,某件事指的就是对交易的确认——任何一个节点要提交交易,都需要大家认可。

比特币和以太坊目前所采用的PoW机制是传奇人物中本聪的设计。在这种机制下,矿工们为了获得记账权和数字币奖励,需要不停挖矿来寻找合规的哈希值,通过对哈希值的共识来对交易数据进行确认和打包。PoW没有准入门槛,任何节点都 有平等的权利参与记账——当然,胜出的概率与算力有关:

pow vs. dpos

EOS则假设环境并非完全不可信的,因此它采用的委托权益证明(Delegated Proof of Stake)机制,类似于我们熟悉的代表大会制度——不需要每个节点都参与共识的达成,只需那些选出来的节点去达成共识就可以了。由于可以相信这些节点,EOS的DPoS机制也不再需要解哈希难题来获取记账权,它让持有EOS币的人可以通过持续的投票系统来选择21个作为代表的超级节点——出块节点(Block Producer),由超级节点轮流进行交易数据确认和记账,并给予其一定的奖励。

显然,让21个节点达成共识,肯定比1万个节点达成共识要高效多了。

EOS的资源利用机制

我们知道,比特币和以太坊中的交易手续费机制,其目的就是防止大量垃圾交易使得系统拥堵。

而EOS则通过基于膨胀的奖励机制(每年增发1%,总增发不超过5%)完全取消了 交易手续费,这在降低了系统使用的成本同时也带来一个不可避免的问题:

如何避免系统资源的滥用?

EOS设计了一种新的资源使用机制:根据账户中EOS通证的数量来分配系统资源。

CPU与带宽:抵押/赎回

在EOS的模型中,CPU与带宽采用抵押的方式:按抵押的EOS通证比例分配CPU与带宽。例如,如果你持有全网1%的EOS通证,那就可以抵押这些通证来获得全网1%的CPU和带宽。这样就可以隔离开所有的DAPP,防止资源竞争和恶意的DDOS供给,无论其他的DAPP如何拥堵, 你自己的带宽都不受影响。

当不再需要CPU与带宽时,抵押的EOS通证可以赎回,在赎回的时候,存在三天的赎回期。

内存:买入/卖出

与CPU和带宽不同,要将数据存储在区块链中,你需要基于当前的RAM市场价格,用EOS通证买入RAM,才能获得一定数量的存储字节。当你不再需要内存时,也可以将内存以当前的RAM市场价格 卖出得到EOS通证:

EOS ram price

RAM的价格是基于班科(Bancor)算法,也就是说是由市场供需调节的:如果RAM供不应求,则买入RAM时就需要更多的EOS通证,而这时卖出RAM也能获得更多的EOS通证。

内存是消耗资源,不可赎回,只能买卖。以EOS上发币为例,目前发币需要20M的内存,一个EOS可买20KB,按目前的存储价格发一个币需要消耗1000个EOS。这是EOS内存消耗的刚需来源。

课程概述

本课程面向对EOS去中心化应用开发感兴趣的朋友,课程内容涵盖EOS DApp开发的核心概念、智能合约的开发与部署以及前端页面与EOS区块链如何交互,并最终完成一个基于React和EOS的完整Dapp的开发。

第一章:进入EOS世界

了解EOS的定位与特点、共识机制、付费计算模型等核心概念。

第二章:Hi EOS

了解EOS节点的软件整体框架以及节点服务器、钱包服务器和命令行工具的作用, 学习配置、启动EOS节点服务器和钱包服务器的方法,初步了解命令行工具的使用方法。

第三章:钱包、密钥与账户

理解EOS中与个人身份相关的三个核心概念:钱包、密钥与账户,学习使用命令行工具 创建钱包、密钥与账户的方法。

第四章:智能合约的开发与交互

了解智能合约的概念与作用,学习EOS智能合约的编写和编译,学习使用命令行工具 部署合约并与合约交互。

了解EOS智能合约中状态的持久化机制,学习使用多索引表保存合约状态。

第五章:发行自己的代币

学习在EOS上发行代币的原理和实现机制,并通过实际操作,掌握如何 使用命令行工具进行代币的发行、转账和余额查看等操作。

第六章:使用代码与智能合约交互

理解应用与EOS区块链交互的原理,学习利用JSON RPC接口和eosjs封装库来 访问EOS区块链。

第七章:实战便签DApp开发

综合运用EOS知识,使用React完成一个EOS便签去中心化应用,学习从需求分析到 代码实现的完整过程。

想学的抓紧,课程地址:EOS教程

另外分享下之前其他的课程链接:

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。