Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
2590a7da
G
go-ethereum
项目概览
whqwjb
/
go-ethereum
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
go-ethereum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2590a7da
编写于
4月 30, 2015
作者:
O
obscuren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: added some additional chain tests for shortest chain
上级
04c20998
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
5 deletion
+30
-5
core/chain_manager.go
core/chain_manager.go
+1
-1
core/chain_manager_test.go
core/chain_manager_test.go
+29
-4
未找到文件。
core/chain_manager.go
浏览文件 @
2590a7da
...
...
@@ -593,7 +593,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
}
}
else
{
if
glog
.
V
(
logger
.
Detail
)
{
glog
.
Infof
(
"inserted forked block #%d (
%d TXs %d UNCs) (%x...)
\n
"
,
block
.
Number
(),
len
(
block
.
Transactions
()),
len
(
block
.
Uncles
()),
block
.
Hash
()
.
Bytes
()[
0
:
4
])
glog
.
Infof
(
"inserted forked block #%d (
TD=%v) (%d TXs %d UNCs) (%x...)
\n
"
,
block
.
Number
(),
block
.
Difficulty
(),
len
(
block
.
Transactions
()),
len
(
block
.
Uncles
()),
block
.
Hash
()
.
Bytes
()[
0
:
4
])
}
queue
[
i
]
=
ChainSideEvent
{
block
,
logs
}
...
...
core/chain_manager_test.go
浏览文件 @
2590a7da
...
...
@@ -9,6 +9,7 @@ import (
"strconv"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
...
...
@@ -369,11 +370,8 @@ func makeChainWithDiff(genesis *types.Block, d []int, seed byte) []*types.Block
return
chain
}
func
TestReorg
(
t
*
testing
.
T
)
{
db
,
_
:=
ethdb
.
NewMemDatabase
()
func
chm
(
genesis
*
types
.
Block
,
db
common
.
Database
)
*
ChainManager
{
var
eventMux
event
.
TypeMux
genesis
:=
GenesisBlock
(
db
)
bc
:=
&
ChainManager
{
blockDb
:
db
,
stateDb
:
db
,
genesisBlock
:
genesis
,
eventMux
:
&
eventMux
}
bc
.
cache
=
NewBlockCache
(
100
)
bc
.
futureBlocks
=
NewBlockCache
(
100
)
...
...
@@ -381,6 +379,14 @@ func TestReorg(t *testing.T) {
bc
.
ResetWithGenesisBlock
(
genesis
)
bc
.
txState
=
state
.
ManageState
(
bc
.
State
())
return
bc
}
func
TestReorgLongest
(
t
*
testing
.
T
)
{
db
,
_
:=
ethdb
.
NewMemDatabase
()
genesis
:=
GenesisBlock
(
db
)
bc
:=
chm
(
genesis
,
db
)
chain1
:=
makeChainWithDiff
(
genesis
,
[]
int
{
1
,
2
,
4
},
10
)
chain2
:=
makeChainWithDiff
(
genesis
,
[]
int
{
1
,
2
,
3
,
4
},
11
)
...
...
@@ -394,3 +400,22 @@ func TestReorg(t *testing.T) {
}
}
}
func
TestReorgShortest
(
t
*
testing
.
T
)
{
db
,
_
:=
ethdb
.
NewMemDatabase
()
genesis
:=
GenesisBlock
(
db
)
bc
:=
chm
(
genesis
,
db
)
chain1
:=
makeChainWithDiff
(
genesis
,
[]
int
{
1
,
2
,
3
,
4
},
10
)
chain2
:=
makeChainWithDiff
(
genesis
,
[]
int
{
1
,
10
},
11
)
bc
.
InsertChain
(
chain1
)
bc
.
InsertChain
(
chain2
)
prev
:=
bc
.
CurrentBlock
()
for
block
:=
bc
.
GetBlockByNumber
(
bc
.
CurrentBlock
()
.
NumberU64
()
-
1
);
block
.
NumberU64
()
!=
0
;
prev
,
block
=
block
,
bc
.
GetBlockByNumber
(
block
.
NumberU64
()
-
1
)
{
if
prev
.
ParentHash
()
!=
block
.
Hash
()
{
t
.
Errorf
(
"parent hash mismatch %x - %x"
,
prev
.
ParentHash
(),
block
.
Hash
())
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录