Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
share
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张振华
share
Commits
5fb0c863
Commit
5fb0c863
authored
Nov 07, 2018
by
张振华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify
parent
c37b097e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
10 deletions
+4
-10
Chain33存储模块.md
Chain33存储模块.md
+4
-10
No files found.
Chain33存储模块.md
View file @
5fb0c863
...
...
@@ -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写入的数据进行回滚。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment