自block.one发布EOSIO Dawn 3.0以来已有大约1个月的时间。 上个月，我们的团队一直专注于EOSIO软件的清理和稳定性。 这项工作的很大一部分正在向区块链交流的概念验证。
不包括合并，43位作者已推送818次提交到github。 这使得EOSIO在过去一个月里成为github上最活跃的8个最活跃的c ++项目。 正如你所看到的很多事情正在发生。
EOSIO Dawn 4.0中最大的变化之一是我们已将当前时间的定义从“开始时间块”更改为“当前时间块”。 这种变化解决了很多具有基于时间的操作的角落案例，并且可以在存在错误的块的情况下更精确地测量智能合约中的经过时间。
One of the biggest changes in EOSIO Dawn 4.0 is that we have changed the definition of the current time from “time of head block” to “time of current block”. This change resolves a lot of corner-cases with time-based operations in the presence of missed blocks and enables much more accurate measuring of elapsed-time within smart contracts.
根据Dawn 3.0系统合同，您只能以您支付的价格出售内存。目标是抑制囤积和猜测。这种方法的缺点是那些廉价购买RAM的用户在获得更多拥塞后没有经济激励来为其他用户腾出内存。在Dawn 4.0之下，系统合同现在以当前市场价格购买和销售RAM分配。这可能会导致交易商在今天预计明天可能出现短缺的情况下购买RAM。总的来说，这将导致市场随着时间的推移平衡RAM的供应和需求。
In our testing we determined that how the EOSIO System Contract was allocating RAM (database space) to those who staked tokens would lead to shortages down the road. We switched to a market-based allocation approach using the Bancor algorithm.
Our math indicates that if 1TB of RAM was allocated on a pro-rata basis to token holders then the cost-per-byte would be $0.018 (assuming $20/token). The reality is that most token-holders don’t actually have an active need to use the RAM they might be entitled to; therefore, we are initially pricing RAM at $0.000018 per byte (assuming $20/token). New accounts require about 4KB of RAM which means they will cost about $0.10. As RAM is reserved the price will automatically increase so that the price approaches infinity before the system runs out of RAM.
Under the Dawn 3.0 system contract, you could only sell RAM for the price you paid. The goal was to disincentivize hoarding and speculation. The downside to this approach is that those who buy RAM cheaply have no financial incentive to free RAM for other users after it gets more congested. Under Dawn 4.0 the system contract now buys and sells RAM allocations at prevailing market prices. This may result in traders buying RAM today in anticipation of potential shortages tomorrow. Overall this will result in the market balancing the supply and demand for RAM over time.
Over time Moore’s law will allow block producers to upgrade to 4TB or even 16TB of RAM and this increase in supply will trickle into the the EOSIO RAM market lowering prices.
作为一名智能合约开发人员，RAM是您存储的数据库记录所消耗的宝贵资源。 由于RAM的成本，将存储在内存数据库中的数据量减到最小并且在用户完成后可以释放RAM来设计您的应用程序将是非常重要的。 例如，Steem仅在RAM中存储了1周的内容，因此总体大小不会随着时间增长而增长。
As a smart contract developer, RAM is a precious resource which is consumed by the database records you store. Due to the cost of RAM it will be important to minimize the amount of data that you store in the in-memory database and design your applications with the ability to free RAM after your users are done. For example, Steem only stores 1 weeks worth of content in RAM so that the total size doesn’t grow much over time.
现在有了RAM市场，投机者可能想要将RAM价格波动性换成利润。 EOSIO系统合同使RAM不可转让，并收取1％的交易费用。 这笔费用的结果是通过将其退出市场来抵消代币的自然通货膨胀。 如果RAM的年度交易量等于令牌供应量，则所有块生产者奖励的100％将由RAM市场费用支付。
Now that there is a RAM market, speculators may want to trade RAM price-volatility for profit. The EOSIO system contract makes RAM non-transferrable and charges a 1% fee on trades. The result of this fee is to offset the natural inflation of tokens by taking them out of the market. If annual trading volume of RAM equals the token supply then 100% of all block producer rewards will be covered by the RAM market fees.
EOSIO块生产者可以运行许多不同的链，它们都使用相同的标记来购买RAM和放宽带宽。 生产者选举将在主链上进行，所有相关的侧链将由同一组生产者经营。 每个链可以拥有自己的1 TB + RAM，分散式应用程序可以在链间发送消息，仅需几秒钟的延迟。
High performance blockchains need all data in RAM because the time to access disk will quickly drop transaction throughput to just a couple hundred transactions per second. In order to scale RAM usage we need multiple chains with independent memory regions running on independent hardware.
EOSIO block producers can operate many different chains that all use the same token for buying RAM and staking bandwidth. The producer elections will happen on the main chain and all related side-chains will be operated by the same set of producers. Each chain can have its own 1 TB+ of RAM and decentralized applications can send messages between chains with just a couple seconds of latency.
The price of RAM will be different on all chains which will inform DAPP developers where it is cheapest to operate.
我们相信通过Inter Blockchain Communication扩展可以提供几乎无限的扩展潜力。这种方法可以同时扩展RAM，网络和CPU。考虑到签名验证，上下文无关操作验证和IBC证明已经使大多数CPU具有高单线程吞吐量，因此针对多线程WASM执行的优化可能会受到其他资源限制的瓶颈。
在EOSIO Dawn 3.0下，我们围绕未来多线程WASM执行的潜力做了大量设计决策。不幸的是，除非实际实现完整的多线程实现，否则不可能知道我们是否覆盖了所有的角落案例。这意味着EOSIO Dawn 3.0具有很多架构复杂性，并没有带来任何直接的好处。
通过这个并行性路线图，我们可以简化EOSIO 1.0并对其进行优化，以实现最高的单线程性能和易于开发。我们预计EOSIO的单线程版本有一天可能达到5,000-10,000 TPS。我们也预计，许多应用程序将更倾向于多链方法来扩展，因为它会降低总体成本并加快扩展。
Inter Blockchain Communication (IBC) involves both chains validating merkle proofs that are 1KB+ in size and involve dozens of cryptographic hash functions and/or 15+ signature verifications. In other words, the cost of validating a message from another chain is about 15x to 30x higher than the cost of validating normal transactions.
Fortunately, validating these proofs is trivial to parallelize as they do not depend upon blockchain state. A blockchain that only processed messages from other chains could easily consume 30 CPU cores while only sustaining a couple thousand transactions per second.
It is our belief that scaling via Inter Blockchain Communication will give almost unlimited scaling potential. This approach scales RAM, network, and CPU at the same time. Considering that signature verification, context-free-action validation and IBC proofs will already saturate most CPUs with high-single-threaded throughput, optimizing for multi-threaded WASM execution will likely be bottlenecked by other resource constraints.
Under EOSIO Dawn 3.0 we made a lot of design decisions around the potential for future multi-threaded WASM execution. Unfortunately, until you actually implement a full multi-threaded implementation it is impossible to know whether we have all the corner cases covered. This means that EOSIO Dawn 3.0 had a lot of architecture complexity that was not giving any immediate benefit.
We now believe that the path of upgrading from single-threaded to multi-threaded execution is to launch a new chain with multi-threaded support run by the same block producers and staking the same native tokens. This gives the new chain complete freedom to make design tweaks as necessary to support multi-threaded operation without risking an in-place upgrade to a live chain.
With this roadmap to parallelism we can simplify EOSIO 1.0 and optimize it for maximum single-threaded performance and ease-of-development. We anticipate that the single-threaded version of EOSIO may one day achieve 5,000–10,000 TPS. We also anticipate that many applications will prefer the many-chain approach to scaling as it will lower overall costs and scale faster.
那些遵循共识算法辩论的人可能听说过，使用最后一个不可逆块（LIB）算法（如Steem＆BitShares中存在的算法）的DPOS在某些极端网络连接中断时有可能失去共识。在过去，由于其纯粹的理论性质以及相对较低的成本和停机时间，我已经放弃了这种潜在的失败模式。 LIB算法只是一个度量标准，就像比特币的6块规则。纯粹的DPOS总是依赖最长链规则，这将永远达到最终的一致。 LIB算法是一种捷径，旨在优化撤消历史并为交易提供可信度度量。
Those of you who have followed consensus algorithm debates may have heard that DPOS with the last irreversible block (LIB) algorithm (as it exists in Steem & BitShares) has the potential to fall out of consensus in certain extreme network connectivity disruptions. In the past I have dismissed this potential failure mode due to its purely theoretical nature and the relatively minimal costs and downtime. The LIB algorithm was just a metric, like the 6-block rule for Bitcoin. Pure DPOS always relied on longest-chain rule which will always reach eventual consensus. The LIB algorithm was a short-cut designed to optimize undo-history and give a confidence measure to exchanges.
EOSIO’s IBC algorithm depends upon the DPOS LIB in order to be certain of finality. The costs associated with a LIB failure and the difficulty in fixing it are much higher once you introduce IBC. Our team, specifically Bart and Arhag, have come up with an elegant improvement to the LIB algorithm which guarantees that it is impossible for two nodes to reach a different LIB without more than ⅓ of them being byzantine. Furthermore, it is possible to detect byzantine behavior of a single peer. Read more about it here.
It is the lack of finality of Bitcoin and Ethereum blocks that make inter blockchain communication with legacy chains difficult and/or very high latency. The new tweak to DPOS brings it up to a new level of byzantine fault-tolerant finality and robust in all network environments.
Some users have expressed concern over the 12 character name limit imposed on EOSIO accounts. These 12 character names are derived from base-32 encoding of a 64 bit integer. The 64 bit integer is the native machine word size and is therefore very efficient. Within a transaction we refer to account names many times, (code, scope, permissions, etc), and our database indexes are also based around these 64 bit integers. Increasing the length of an account name would have far-reaching impact on performance and architecture.
That said, our vision for blockchains is to separate the concept of accounts from identity and to establish a dynamic on-chain mapping between account names and more readable display names.
It is best to view account names as license plates where users can pick vanity plates that are easier to remember. That said, the vast majority of people should be able to find an attractive 12-character (or less) name.
Due to the potential high-value of certain names, we believe that the EOSIO system should offer a dynamic pricing model for account names. Furthermore, the ability to namespace accounts such as *.com can provide an extra layer of security for users and/or groups.
Due to the limited development time between now and the release of version 1.0 of the EOSIO software, we are going to recommend that all account names be forced to 12 characters and not contain any ‘.’ characters. The community can then upgrade the system contract (without hard fork) once a viable pricing and anti-name-squatting policy is identified. We will likely provide a model similar to BitShares where account names are priced by length and character content.
在Steem，BitShares和EOS Dawn 3.0及更早的版本中，如果不应用完整块，则无法验证块标题。 借助EOS Dawn 4.0，我们现在支持仅标头验证。 此功能是轻客户端和IBC的基础，同时还可以阻止一系列攻击媒介，同时允许块在网络中传播，而无需等待每个节点进行全面验证。
On Steem, BitShares, and EOS Dawn 3.0 and earlier it was not possible to validate a block-header without applying the full block. With EOS Dawn 4.0 we now support header-only validation. This feature is the basis of light clients and IBC and also prevents a range of attack vectors while allowing blocks to propagate across the network without waiting for each node to do full verification.
The simplest form of IBC for high-frequency communication involves light clients processing all headers and then users providing simple merkle-proofs of actions relative to a known block.
我们花费了大量的时间来清理构建和应用块的过程。 在新模型下，将使用用于应用该块的相同API调用序列创建块。 这确保遵循相同的代码路径，并最小化生产者认为有效和验证者认为有效之间不一致的可能性。 这种清理使得应用程序块的过程不过是重放制片人所做的脚本而已。
We spent significant time cleaning up the process by which blocks are built and applied. Under the new model a block is created with the same sequence of API calls that are used to apply the block. This ensures the same code-paths are followed and minimizes the potential for inconsistencies between what a producer thinks is valid and what a validator thinks is valid. This cleanup makes the process of applying the block as little more than a script that replays what the producer did.
在我们实施IBC概念验证时，我们意识到Dawn 3.0有一些边缘情况，在这些情况下简单的签名证明是不可能的。 我们希望尽可能简化轻量级稀疏报头验证，这需要对块的签名方式进行重构。
As we were implementing the IBC proof-of-concept we realized that Dawn 3.0 had a few edge cases where simple signature proofs were impossible. We wanted to make light-weight sparse-header validation as simple as possible which necessitated a refactor of how blocks are signed.
使用EOSIO Dawn 4.0，现在可以验证生产者计划的更改，而无需验证任何块头。 当一个生产者签署一个区块时，他们也签署新的时间表，这样就不可能有两个竞争和有效签署的生产者时间表，而没有生产者的共同勾结或者⅓+与非常差的网络拆分勾结。
With EOSIO Dawn 4.0 it is now possible to validate changes to the producer schedules without having to validate any block headers. When a producer signs a block they also sign the new schedule such that it is impossible for there to be two-competing and validly signed Producer Schedules without ⅔+ of producers colluding or ⅓+ colluding with a very bad network split.
关于生产者薪酬的社区讨论以及如何分配最高5％的通货膨胀问题已经有很多。 block.one将与EOSIO 1.0一起提供的参考系统合同将如下分配通货膨胀：
There has been a lot of community discussion around producer pay and how to allocate the maximum of 5% inflation. The reference system contract that block.one will provide with EOSIO 1.0 will allocate inflation like so:
There are 21 active block producers and any number of standby producers. The top 21 divide up the 0.25% per-block rewards proportional to the number of blocks each one producers. All block producer candidates (including the top 21) also divide up the .75% per-vote rewards budget proportional to the total number of votes they receive. They can claim their share of the per-vote rewards at most once-per-day. In order to claim their share they must qualify for at least 100 tokens/day. Producers candidates who do not qualify for at least 100 tokens/day on a per-vote basis will receive nothing.
The idea behind this algorithm is to ensure all candidate producers have sufficient pay to provide full-node services to the community and to ensure no one is in the position of receiving money that is insufficient to cover their costs. Assuming the top 200 producer candidates all received the same number of votes this would support 21 active producers and 179 stand-by producers. In reality some producers will have significantly more votes than others which may reduce the number of paid-standby producers.
It is critical to have a minimum per-day payment so that wealthy individuals who have no intention of producing blocks don’t attempt to earn interest on their producer candidate by voting on themselves.
自Dawn 3.0以来我们所做的大部分工作都涉及调整系统合同。 其中一项调整是实施投票衰减。 为了保持最大的投票影响力，每个选民必须每周重新投票。 投票影响力衰退，对于那些不更新其选票的人来说，其半衰期为1年。
Much of the work we are doing since Dawn 3.0 involves tweaking the system contract. One of those tweaks is the implementation of vote decay. In order to maintain maximum voting influence each voter will have to re-assert their vote every week. Voting influence decays with a half-life of 1 year for those who do not keep their votes up to date.
We recommend that the constitution contain language forbidding the use of automated voting bots as the purpose of vote-decay was to ensure that voters re-evaluate their decisions rather than “set-it and forget it”. While it is not possible to prove the use of bots, it will be possible to prove that people do not use smart contracts to auto-vote.
当我们接近EOSIO 1.0版本时，很多人都在要求我们提供有关交易所如何监控EOSIO区块链接收存款和/或确认其外部撤回被接受并不可逆转地确认的信息。 我们已经创建了一个关于使用cleos（我们的命令行eosio界面）的教程来监视进入存款的链。 我们还创建了一个演示python脚本来监视存款和提款。 通过本教程和示例脚本交换应该具备开始与基于EOSIO的区块链集成所需的一切。
As we approach the EOSIO 1.0 release, many people are asking us for information about how exchanges will monitor an EOSIO blockchain for incoming deposits and/or validate that their out-going withdraws are accepted and irreversibly confirmed. We have created a tutorial on using cleos (our command line eosio interface) to monitor the chain for incoming deposits. We have also created a demonstration python script that monitors deposits and withdraws. With this tutorial and example script exchanges should have everything they need to begin integration with EOSIO based blockchains.
EOSIO Dawn 4.0的可用性
EOSIO Dawn 4.0代码的开发工作正在Github的'slim'分支上进行。 我们将在2018年5月11日发布它，并正式发布它。当时我们将移动苗条，掌握并标记发布。 希望继续保持领先优势的开发人员可以在纤细分支上遵循我们的进展。
Development of EOSIO Dawn 4.0 code is ongoing in the ‘slim’ branch on github. We will be polishing it up and officially releasing it May 11, 2018. At that time we will move slim to master and tag a release. Developers who want to remain on the cutting edge can follow our progress on the slim branch.
##结论 今年6月，EOSIO软件正朝着强劲的1.0版本迈进。 使用Dawn 4.0后，代码已经被清除，我们比以往更加自信。
EOSIO software is making massive strides toward a robust 1.0 release this June. With Dawn 4.0 the code has been cleaned up significantly and we are more confident than ever.