3.4 以太坊架构详解

  1. 以太坊总体架构
    1. 这里写图片描述
  2. 以太坊详细架构
    1. 账户设计
      1. 外部账户:一般意义上的账户
      2. 合约账户:它是一种可编程的账户,合约存在以太坊的区块链上,它是代码和数据的集合。合约受代码控制并由外部所有账户激活
      3. 在以太坊中,区块链被作为一个通用的管理对象状态转换的去中心化平台,账户就是有状态的对象。外部所有账户的状态就是余额,而合约账户的状态可以是余额、代码执行情况,以及合约的存储。以太坊网络的状态就是所有账户的状态,该状态由每个区块的交易来更新,同时需要在全网形成共识。用户和以太坊的交互需要通过对账户的交易来实现。
      4. 以太坊外部账户由公、私钥对定义。地址是公钥的后20位
      5. 密钥文件存储在以太坊的数据目录中的keystore目录下面
      6. 合约账户可以执行图录完备的计算任务,也可以在合约账户之间传递消息,合约编译成以太坊虚拟机字节码,记录在区块链上面 。
    2. 区块链设计
      1. 以太坊区块链的每个区块不仅保存着交易清单,还保存着最新的状态。
      2. 以太坊的状态包含了一个键值表,键是地址(address),值是账户里声明的所有变量,包括余额,随机数,代码和账户的存储(存储也是以一颗树的形式来组织)
      3. 对于以太坊的Merkel-Patricia树,键被编码成向下访问树的
      4. 在以太坊区块链的区块报文头中,存放了3个根哈希:Merkel根哈希值,状态的根哈希值,收据的根哈希值
    3. POW机制
      1. 以太坊的POW算法叫做Ethash算法,该算法主要寻找一个随机数作为输入,使得运算结果小于一个特定的难度门槛。
      2. 以太坊通过动态调节难度来达到平均15秒在全网中找到一个新的区块。每15秒的“心跳”基本上是全网更新系统状态的节奏,并保证当攻击者的计算能力不超过全网计算能力的一半时,攻击者无法改写交易记录或进行分叉。
      3. 以太坊的POW中加入了内存难度,使得仅仅依靠算力来进行挖矿的方式行不通
      4. 叔区块:批符合难度条件,但是区块里的交易不被确认的区块。
      5. 每个区块最多能链接两个叔区块
    4. 计算和图录完备
      1. 以太坊的计算环境是图录完备的
    5. EVM高级语言
      1. Solidity
      2. Serpent
      3. LLL
    6. 以太坊P2P网络
      1. RLPx协议
        1. 以太坊网络节点间的通信采用P2P线上协议。节点间采用RLPx编码及认证的通信传输协议来传输消息包,即提供 发送和接收消息的协议功能。
        2. 节点可以自由的在任何TCP商品发布和接受连接,默认的商品是30303.
        3. 正式版RLPx功能如下:
          1. 单一协议的UDP节点发现
          2. ECDSA签名的UDP
          3. 加密握手、认证
          4. 节点持久性
          5. 加密/认证TCP
          6. TCP帧处理
        4. P2P节点采用RLPx的发现协议DHT来实现邻节点的发现。
        5. RLP(递归长度前缀):将二进制的数据进行任意嵌套的数组编码。在以太坊中,RLP是对对象编码的主要方法
      2. Whisper协议
        1. 它是DAPP之间通信的通信协议。
        2. Whisper结合了DHT和数据包消息系统(如UDP),因此同时具有两种协议的特性。
        3. Whisper是一个线标志的消息系统,提供了一个低层次但又简易使用的API,不需要记忆底层的硬件属性。
        4. Whisper提供多索引,非单一的记录,也就是说同一个记录可以有多个键,不同键之间的记录可能是一样的
        5. Whisper是为需要大规模的多对多数据发现,信号谈判,最少的传输通信,完全的隐私保护的下一代DAPP而设计的
        6. 使用场景
          1. DAPP需要把少量的信息发送出去,而这些发布的消息需要保留相当一段时间
          2. DAPP需要把信号发给其它的DAPP,希望他们参与对某个交易的协同
          3. DAPP之间需要提供非实时的提示或通信
          4. DAPP需要提供暗通信,也就是通信双方除了知道对方的哈希值之外,不知道对方更多的底细。
    7. 事件
      1. 以太坊中的事件是一个以太坊日志和事件监测协议的抽象 。
      2. 日志记录提供合约的地址
      3. 事件则利用现有的ABI功能来解析日志记录。

猜你喜欢

转载自blog.csdn.net/u014396366/article/details/82319460
3.4
今日推荐