EOS.IO Technical White Paper v2

Abstract:

  The EOS.IO software introduces a new blockchain architecture designed to enable vertical and horizontal scaling of decentralized applications. This is achieved by creating an operating system-like construct upon which applications can be built.

  The software provides 1)accounts, 2)authentication, 3)databases, 4)asynchronous communication and the 5)scheduling of applications across multiple CPU cores and/or clusters.

  每秒百万级交易。

  The resulting technology is a blockchain architecture that may ultimately 1)scale to millions of transactions per second, 2)eliminates user fees, and 3)allows for quick and easy deployment and maintenance of decentralized applications.

  

Background

  Blockchain technology was introduced in 2008 with the launch of the Bitcoin currency, and since then entrepreneurs and developers have attempted to generalize the technology to support a wider range of applications on a single blockchain platform.

  While a number of blockchain platforms have struggled to support functional decentralized applications, application specific blockchains such as the BitShares decentralized exchange (2014) and Steem social media platform (2016) have become heavily used blockchains with tens of thousands of daily active users.

  BitShare、Steem 已达几万日活。

  They have achieved this by increasing performance to 1)thousands of transactions per second, 2)reducing latency to 1.5 seconds, 3)eliminating per-transaction fees, and 4)providing a user experience similar to those currently provided by existing centralized services.

  每秒数千笔交易。延迟1.5s。

  Existing blockchain platforms are 1)burdened by large fees and 2)limited computational capacity that prevent widespread blockchain adoption.

Requirements for Blockchain Applications

1、Support Millions of Users

  Competing with businesses such as eBay, Uber, AirBnB, and Facebook, require blockchain technology capable of handling tens of millions of active daily users.

  eBay、Uber、Facebook等一线互联网应用,已达千万日活。是前文的 BitShare、Steem(几万日活)日活的1000倍。

  In certain cases, an application may not work unless a critical mass of users is reached and therefore a platform that can handle very large numbers of users is paramount.

2、Free Usage

  Users should not have to pay in order to use the platform or benefit from its services. A blockchain platform that is free to use for users will likely gain more widespread adoption. Developers and businesses can then create effective monetization strategies.

3、Easy Upgrades and Bug Recovery

4、Low Latency

5、Sequential Performance

6、Parallel Performance

Consensus Algorithm (BFT-DPOS)

  EOS.IO software utilizes the only known decentralized consensus algorithm proven capable of meeting the performance requirements of applications on the blockchain, Delegated Proof of Stake (DPOS). DPOS 权益委托证明.

  Under this algorithm, those who hold tokens on a blockchain adopting the EOS.IO software may select block producers through a continuous approval voting system. Anyone may choose to participate in block production and will be given an opportunity to produce blocks, provided they can persuade token holders to vote for them.

  在使用EOS.IO软件构建的区块链上持有通证的人,可以通过一个持续进行的投票系统来选择区块生产者。

  

  The EOS.IO software enables blocks to be produced exactly every 0.5 second and exactly one producer is authorized to produce a block at any given point in time. If the block is not produced at the scheduled time, then the block for that time slot is skipped. When one or more blocks are skipped, there is a 0.5 or more second gap in the blockchain.

  0.5秒一个区块。

  Using the EOS.IO software, blocks are produced in rounds of 126 (6 blocks each, times 21 producers). At the start of each round 21 unique block producers are chosen by preference of votes cast by token holders. The selected producers are scheduled in an order agreed upon by 15 or more producers.

  126个区块一个周期。21个生产者,每个生产者6个区块。每轮按照15个或以上的生产者同意的排序来进行。

  If a producer misses a block and has not produced any block within the last 24 hours they are removed from consideration until they notify the blockchain of their intention to start producing blocks again.

  如果出块者错过了一个块,并且在最近24小时内没有产生任何块,则这个出块者将被剔除在考虑范围之外,直到他们通知区块链可以重新开始产生区块。

  A blockchain fork with more producers on it will grow in length faster than one with fewer producers, because the fork with more producers will experience fewer missed blocks. Furthermore, no block producer should be producing blocks on two forks at the same time. A block producer caught doing this will likely be voted out. Cryptographic evidence of such double-production may also be used to automatically remove abusers.

  Byzantine Fault Tolerance is added to traditional DPOS by allowing all producers to sign all blocks so long as no producer signs two blocks with the same timestamp or the same block height. Once 15 producers have signed a block the block is deemed irreversible.

  所有的出块者都要对所有区块签名,以此来确保在同一时间戳或者同一区块高度上,没有区块生产者能够同时在两个区块上签名。一个区块有了15个区块生产者的签名,该区块就被认为是不可逆的。

Accounts

  The EOS.IO software permits all accounts to be referenced by a unique human readable name of up to 12 characters in length. The name is chosen by the creator of the account. The account creator must reserve the RAM required to store the new account until the new account stakes tokens to reserve its own RAM.

Actions & Handlers

  Each account can send structured Actions to other accounts and may define scripts to handle Actions when they are received. The EOS.IO software gives each account its own private database which can only be accessed by its own action handlers.

  每个账户有一个私有的database,可以被自己的action handlers访问。

  Action handling scripts can also send Actions to other accounts. The combination of Actions and automated action handlers is how EOS.IO defines smart contracts.

  To support parallel execution, each account can also define any number of scopes within their database. The block producers will schedule transaction in such a way that there is no conflict over memory access to scopes and therefore they can be executed in parallel.

  每个账户可以将他们的database划分为任意个scopes,从而可以并行运行。

Role Based Permission Management

  Permission management involves determining whether or not an Action is properly authorized.  Generally, authority is bound to individuals or groups of individuals and is often compartmentalized.The EOS.IO software provides a declarative permission management system that gives accounts fine grained and high-level control over who can do what and when.

  Every account may be controlled by any weighted combination of other accounts and private keys.

1、Named Permission Levels

  Using the EOS.IO software, accounts can define named permission levels each of which can be derived from higher level named permissions.

  账户可以定义NPL,一个NPL可以继承自高级别NPL。

  Each named permission level defines an authority; an authority is a threshold multi-signature check consisting of keys and/or named permission levels of other accounts. For example, an account's "Friend" permission level can be set for an Action on the account to be controlled equally by any of the account's friends.  

  每个NPL定义一个授权,每个授权是由多个keys的签名以及/或者其他账户的NPL。

2、Permission Mapping

  EOS.IO software allows each account to define a mapping between a contract/action or contract of any other account and their own Named Permission Level.  

  每个账户可以定义一个映射,一个 contract/action 到他们自己的 NPL。

3、Evaluating Permissions

4、Default Permission Groups

  The EOS.IO technology also allows all accounts to have an "owner" group which can do everything, and an "active" group which can do everything except change the owner group. All other permission groups are derived from "active".

5、Parallel Evaluation of Permissions

其它

1、EOS 合约 wast wasm 的区别

  WebAssembly并不是只有wasm一种格式,它还有wast格式。这两者作用是等价的,最大的区别就是wast是可读文本格式的,而wasm是二进制格式的。

EOS.IO Technical White Paper v2的更多相关文章

  1. Core Java Volume I — 1.2. The Java "White Paper" Buzzwords

    1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...

  2. Ethereum White Paper

    https://github.com/ethereum/wiki/wiki/White-Paper White Paper EditNew Page James Ray edited this pag ...

  3. EOS.IO技术学习

    如今很火的项目EOS的学习,以下主要的内容是基于白皮书 参考: http://chainx.org/paper/index/index/id/20.html EOS.IO软件引入了一种新的块链架构,旨 ...

  4. nVIDIA SDK White Paper ----Vertex Texture Fetch Water

    http://blog.csdn.net/soilwork/article/details/713842 nVIDIA SDK White Paper ----Vertex Texture Fetch ...

  5. H.264 White Paper学习笔记(一)总览

    H.264 White Paper对于264编码器的原理讲的比较透彻,在阅读学习的时候收获很大,这份文献网上有很多了,也有不少人翻译,不过想要理解更清楚我觉得还是得看英文原版的. 首先看一下白皮书里给 ...

  6. Microsoft Dynamics AX 2009 White Paper: Close Non-Financial Transfers

    http://www.microsoft.com/en-us/download/confirmation.aspx?id=12174

  7. H.264 White Paper学习笔记(二)帧内预测

    为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色.而进行视频编码,目的就是利用这个相关性,来进 ...

  8. 【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264

    翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...

  9. 【二】H.264/MPEG-4 Part 10 White Paper 翻译之 Prediction of Intra Macroblocks

    翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...

随机推荐

  1. LINUX文件删除,但磁盘空间未释放

    最近在进行系统压测,由于服务器节点太多,便写了个简单的脚本,在执行过程中发现,日志文件删除后,磁盘空间只释放了一小部分,任有大部分磁盘空间未释放. 使用lsof | grep delete命令,发现已 ...

  2. 记一次ssh配置的锅

    我们在使用git来管理代码的时候不可避免的要用到ssh密匙,这个密匙怎么配置的百度上很多. 我这边是使用sourcetree来配合管理代码的,但是我ssh配置好了以后无论是克隆代码还是推送代码都提示我 ...

  3. 初学vue----动画过渡transition简单部分

    使用动画效果要用transition包裹,transition(<trsnsition name="xx"><div></div></tr ...

  4. linux4.15.1编译init/mounts报错

    AR init/mounts.o arm-linux-ar: illegal option -- T Usage: arm-linux-ar [emulation options] [-]{dmpqr ...

  5. hdu5001 Walk 概率DP

    I used to think I could be anything, but now I know that I couldn't do anything. So I started travel ...

  6. stylelint 安装配置

    1.安装 stylelint: npm i stylelint -g npm i stylelint stylelint-config-standard --save-dev 2.在 scripts ...

  7. NumPy 基础用法

    NumPy 是高性能科学计算和数据分析的基础包. 它是 pandas 等其他各种工具的基础. 主要功能: ndarray 一个多维数组结构, 高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...

  8. PythonStudy——字典的操作 Dictionary operation

    dic = {'a': 1, 'b': 2} print(dic) # 增: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值 dic['c'] = 3 print(di ...

  9. django 路由系统中name应用

    作用:对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL ***** name的两大应用 url(r'^asdfasdfasdf/', views.index, name= ...

  10. 【python】self & cls

    转自 python中self,cls 普通的方法,第一个参数需要是self,它表示一个具体的实例本身. 如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用 ...