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 */