Commit 5fb0c863 authored by 张振华's avatar 张振华

modify

parent c37b097e
......@@ -162,15 +162,9 @@ chain33中包装的迭代器,类似C中的指针或SQL中的游标的能力,
1、使用prefix计算出匹配的开始和结束KEY;
2、使用生的keys或rkeys命令,查找满足此prefix前缀的所有KEY(使用1024进行分页),然后将这些信息包装进Iterator对象;
3、Next方法执行时,将游标+1,从缓存数组中获取对应的KEY,然后调用DB的Get接口获取数据;
3.1、如果游标+1==1024,则以当前缓存数组中的最后一个元素KEY为开始,继续获取下一页KEY;
4、Seek方法执行时,会连续调用分页获取KEYS的逻辑,然后和key匹配,直到满足,或没有数据;
### 3.1.5 其它特定接口
// 模拟事务接口
......@@ -180,7 +174,7 @@ chain33中包装的迭代器,类似C中的指针或SQL中的游标的能力,
上面三个方法是模拟事务操作,目前只在StateDB中实现,仅支持单线程内存事务,是在支持TxGroup概念的时候引入的。新增一种数据库实现时,不需要考虑对这三个接口的支持。而且在自己的代码逻辑中,也不要调用这几个接口。
## 3.2 StateDB和LocalDB的主要接口
## 3.2 StateDB和LocalDB的相关主要接口
### 3.2.1执行器中,和数据相关的有下面几个接口:
SetStateDB(dbm.KV)
SetLocalDB(dbm.KVDB)
......@@ -189,7 +183,7 @@ chain33中包装的迭代器,类似C中的指针或SQL中的游标的能力,
ExecDelLocal(tx *types.Transaction, receipt *types.ReceiptData, index int) (*types.LocalDBSet, error)
#### Exec
交易的具体执行逻辑,不管执行了什么逻辑,最终都会返回一个*types.Receipt对象,这个对象中包含了两部分内容,KV和Logs,其中KV将会被写入StateDB(最终写入store),而Logs将会作为入参,在调用ExecLocal时传入;
交易的具体执行逻辑,不管执行了什么逻辑,最终都会返回一个*types.Receipt对象,这个对象中包含了两部分内容,KV和Logs,其中KV将会被写入StateDB(<font color=#FF0000>最终写入store </font>),而Logs将会作为入参,在调用ExecLocal时传入;
默认的Exec方法,不生成任何数据;
......@@ -201,7 +195,7 @@ chain33中包装的迭代器,类似C中的指针或SQL中的游标的能力,
默认的ExecLocal方法,生成交易哈希对应的交易详情数据;
相关数据最终会被blockchain写入blockchain.db。
<font color=#FF0000>相关数据最终会被blockchain写入blockchain.db。</font>
#### ExecDelLocal
此方法和ExecLocal对应,是在处理分叉时调用,如果一个区块已经被执行,而后另一条链成为主链,那么已经执行的区块将会被回退,这时会调用ExecDelLocal逻辑。它应该将ExecLocal写入的数据进行回滚。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment