1.代币发放的问题
2.形成区块的过程
以比特币为例,客户端发起一项交易后,回广播到网络中并且等待确认,网络中的节点会将一些等待确认的交易记录达到在一起(此外还要包括此前区块的哈希值等信息),组成一个候选区块。然后试图找到一个nonce串放到区块里,使得候选区块的hash结果满足一定条件(比如小于某个值)。一旦算出来这个区块在格式上即为合法,就可以进行全网广播。
3.如何查看区块
4.如何查看区块链
5.其他节点如何确定新区快的合法性。
Ethereum设计原理
尽管以太坊借用了一些在加密数字货币(like bitcoin)中很早(五六年前)就被试用并且测试的idea,以太坊在处理一些特定的协议特性时还是有很多的不同之处。再者因为以太坊会提供一些现有其他系统不提供的功能所以以太坊会有新的approaches,写这个设计原理的目的就是为了能说清楚:(1)以太坊中所有潜在的可能看起来不是那么明显的优点,(2)还有在build以太坊协议的过程中一些有争议的地方,以及(3)在以太坊或者其他的设计中存在的一些risks。
遵循的原则
以太坊协议设计过程中遵循以下几个原则:
1.Sandwich complexity model: 设计时遵循的原则是以太坊架构的底层应该越简单越好,以太坊的接口(包括面向开发者的high level编程语言以及面向用户的接口)应当能容易理解。当复杂难以避免时,可以把复杂的部分设计到协议的“middle layers”,中间的部分不是核心的共识机制也不用直接面向用户。—— 高级语言编译器,参数序列化和反序列化脚本,存储的数据结构模型,leveldb存储存储接口,有线(wire)协议等等。
2.Freedom: 用户不能够被限制他们拿以太坊协议用来做什么,以太坊中的合约和交易也不能应为purpose不同而被区别对待。这与“net neutrality”的指导原则是一样的。不遵循这一原则的例子比如说比特币交易协议中把区块链用来做“off lable”是不被鼓励的。(在以太坊中不存在这种情况)。在某些情况下,明确的准协议更改(例如,把OP_RETURN限制为40字节)被试图用来在“未经授权的”方式下来攻击应用。在以太坊中是赞成这样设定交易费用的方式。
3.Generalization: 以太坊中的协议特点和操作码应该体现底层的概念,这样才可以被以任意的方式组合,并且可以在需要的时候可以把剥离掉底层设计概念中的一些功能函数以达到提高效率的目的。
4.We Have No Features: -------------------------------------------------------------------
区块链层的协议
这一部分描述了以太坊对区块链层协议做的一些改变,包括区块和交易是如何工作的,数据怎么持久化和保存,以及账户管理的机制。
Accounts and not UTXOs
比特币和很多他的派生,存储用户余额的数据在一个基于UTXOs(unspent transaction outputs)的结构上。系统的整个状态包含了一系列的"unspent outputs"(think, "coins"),每个coin都有一个owner和value,
such that each coin has an owner and a value
网友评论