github.com/turingchain2020/turingchain@v1.1.21/executor/doc.go (about)

     1  // Copyright Turing Corp. 2018 All Rights Reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package executor
     6  
     7  /*
     8  执行器就是状态机,根据交易类型,会有对应的执行器去执行。
     9  执行器由一些原子的命令组成。
    10  
    11  在执行交易的时候,会在一个虚拟的执行环境下,模拟执行。
    12  错误的交易允许被执行,只要他的手续费是够的。
    13  手续费不够的交易直接抛弃。
    14  
    15  执行的过程中,会产生一些Event,Event作为交易的Receipt
    16  
    17  //input
    18  ReplyTxList
    19  
    20  //output
    21  Receipts->(IsOk, EventLogs, KVSet)
    22  
    23  var kvs types.KV
    24  var receipts types.Receipts
    25  for tx := range txs {
    26  	storeSet, events, ok := execTx(tx) //对于错误的交易 events 就是:InvalidTx
    27  	//执行的过程中,会更新内存模拟数据库,这里主要是余额信息
    28  }
    29  
    30  执行器的设计原则:
    31  
    32  1. 不改变存储状态
    33  2. 无状态设计
    34  
    35  TODO:
    36  
    37  执行器可以进一步分布式化:
    38  
    39  1. 预分析,编译出执行指令
    40  2. 分析指令的独立性。大部分可能非关联。
    41  */