Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
whqwjb
go-ethereum
提交
a0e44e32
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,发现更多精彩内容 >>
提交
a0e44e32
编写于
4月 04, 2015
作者:
O
obscuren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
basic glog
上级
60e097a5
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
47 addition
and
49 deletion
+47
-49
blockpool/section.go
blockpool/section.go
+1
-1
cmd/utils/flags.go
cmd/utils/flags.go
+0
-4
core/block_processor.go
core/block_processor.go
+5
-19
core/chain_manager.go
core/chain_manager.go
+10
-0
core/state/state_object.go
core/state/state_object.go
+15
-4
core/state/statedb.go
core/state/statedb.go
+1
-3
core/vm/common.go
core/vm/common.go
+2
-4
core/vm/vm.go
core/vm/vm.go
+4
-7
logger/glog/glog.go
logger/glog/glog.go
+1
-0
tests/vm/gh_test.go
tests/vm/gh_test.go
+8
-7
未找到文件。
blockpool/section.go
浏览文件 @
a0e44e32
...
...
@@ -132,7 +132,7 @@ func (self *section) addSectionToBlockChain(p *peer) {
}
self
.
bp
.
lock
.
Unlock
()
plog
.
Info
f
(
"[%s] insert %v blocks [%v/%v] into blockchain"
,
sectionhex
(
self
),
len
(
blocks
),
hex
(
blocks
[
0
]
.
Hash
()),
hex
(
blocks
[
len
(
blocks
)
-
1
]
.
Hash
()))
plog
.
Debug
f
(
"[%s] insert %v blocks [%v/%v] into blockchain"
,
sectionhex
(
self
),
len
(
blocks
),
hex
(
blocks
[
0
]
.
Hash
()),
hex
(
blocks
[
len
(
blocks
)
-
1
]
.
Hash
()))
err
:=
self
.
bp
.
insertChain
(
blocks
)
if
err
!=
nil
{
self
.
invalid
=
true
...
...
cmd/utils/flags.go
浏览文件 @
a0e44e32
...
...
@@ -228,10 +228,6 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
// Set the log type
glog
.
SetToStderr
(
ctx
.
GlobalBool
(
LogToStdErrFlag
.
Name
))
glog
.
V
(
2
)
.
Infoln
(
"test it"
)
glog
.
V
(
3
)
.
Infoln
(
"other stuff"
)
return
&
eth
.
Config
{
Name
:
common
.
MakeName
(
clientID
,
version
),
DataDir
:
ctx
.
GlobalString
(
DataDirFlag
.
Name
),
...
...
core/block_processor.go
浏览文件 @
a0e44e32
...
...
@@ -165,15 +165,9 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big
// Create a new state based on the parent's root (e.g., create copy)
state
:=
state
.
New
(
parent
.
Root
(),
sm
.
db
)
// track (possible) uncle block
var
uncle
bool
// Block validation
if
err
=
sm
.
ValidateHeader
(
block
.
Header
(),
parent
.
Header
());
err
!=
nil
{
if
err
!=
BlockEqualTSErr
{
return
}
err
=
nil
uncle
=
true
return
}
// There can be at most two uncles
...
...
@@ -231,23 +225,14 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big
// Sync the current block's state to the database
state
.
Sync
()
if
!
uncle
{
// Remove transactions from the pool
sm
.
txpool
.
RemoveSet
(
block
.
Transactions
())
}
// Remove transactions from the pool
sm
.
txpool
.
RemoveSet
(
block
.
Transactions
())
// This puts transactions in a extra db for rpc
for
i
,
tx
:=
range
block
.
Transactions
()
{
putTx
(
sm
.
extraDb
,
tx
,
block
,
uint64
(
i
))
}
if
uncle
{
chainlogger
.
Infof
(
"found possible uncle block #%d (%x...)
\n
"
,
header
.
Number
,
block
.
Hash
()
.
Bytes
()[
0
:
4
])
return
td
,
nil
,
BlockEqualTSErr
}
else
{
chainlogger
.
Infof
(
"processed block #%d (%d TXs %d UNCs) (%x...)
\n
"
,
header
.
Number
,
len
(
block
.
Transactions
()),
len
(
block
.
Uncles
()),
block
.
Hash
()
.
Bytes
()[
0
:
4
])
}
return
td
,
state
.
Logs
(),
nil
}
...
...
@@ -272,7 +257,8 @@ func (sm *BlockProcessor) ValidateHeader(block, parent *types.Header) error {
return
fmt
.
Errorf
(
"GasLimit check failed for block %v (%v > %v)"
,
block
.
GasLimit
,
a
,
b
)
}
if
int64
(
block
.
Time
)
>
time
.
Now
()
.
Unix
()
{
// Allow future blocks up to 4 seconds
if
int64
(
block
.
Time
)
+
4
>
time
.
Now
()
.
Unix
()
{
return
BlockFutureErr
}
...
...
core/chain_manager.go
浏览文件 @
a0e44e32
...
...
@@ -12,6 +12,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rlp"
)
...
...
@@ -494,6 +495,10 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
queue
[
i
]
=
ChainEvent
{
block
,
logs
}
queueEvent
.
canonicalCount
++
if
glog
.
V
(
logger
.
Debug
)
{
glog
.
Infof
(
"inserted block #%d (%d TXs %d UNCs) (%x...)
\n
"
,
block
.
Number
(),
len
(
block
.
Transactions
()),
len
(
block
.
Uncles
()),
block
.
Hash
()
.
Bytes
()[
0
:
4
])
}
}
else
{
queue
[
i
]
=
ChainSideEvent
{
block
,
logs
}
queueEvent
.
sideCount
++
...
...
@@ -503,6 +508,11 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
}
if
len
(
chain
)
>
0
&&
glog
.
V
(
logger
.
Info
)
{
start
,
end
:=
chain
[
0
],
chain
[
len
(
chain
)
-
1
]
glog
.
Infof
(
"imported %d blocks [%x / %x] #%v
\n
"
,
len
(
chain
),
start
.
Hash
()
.
Bytes
()[
:
4
],
end
.
Hash
()
.
Bytes
()[
:
4
],
end
.
Number
())
}
go
self
.
eventMux
.
Post
(
queueEvent
)
return
nil
...
...
core/state/state_object.go
浏览文件 @
a0e44e32
...
...
@@ -7,6 +7,8 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/trie"
)
...
...
@@ -121,7 +123,10 @@ func NewStateObjectFromBytes(address common.Address, data []byte, db common.Data
func
(
self
*
StateObject
)
MarkForDeletion
()
{
self
.
remove
=
true
self
.
dirty
=
true
statelogger
.
Debugf
(
"%x: #%d %v X
\n
"
,
self
.
Address
(),
self
.
nonce
,
self
.
balance
)
if
glog
.
V
(
logger
.
Debug
)
{
glog
.
Infof
(
"%x: #%d %v X
\n
"
,
self
.
Address
(),
self
.
nonce
,
self
.
balance
)
}
}
func
(
c
*
StateObject
)
getAddr
(
addr
common
.
Hash
)
*
common
.
Value
{
...
...
@@ -185,13 +190,17 @@ func (c *StateObject) GetInstr(pc *big.Int) *common.Value {
func
(
c
*
StateObject
)
AddBalance
(
amount
*
big
.
Int
)
{
c
.
SetBalance
(
new
(
big
.
Int
)
.
Add
(
c
.
balance
,
amount
))
statelogger
.
Debugf
(
"%x: #%d %v (+ %v)
\n
"
,
c
.
Address
(),
c
.
nonce
,
c
.
balance
,
amount
)
if
glog
.
V
(
logger
.
Debug
)
{
glog
.
Infof
(
"%x: #%d %v (+ %v)
\n
"
,
c
.
Address
(),
c
.
nonce
,
c
.
balance
,
amount
)
}
}
func
(
c
*
StateObject
)
SubBalance
(
amount
*
big
.
Int
)
{
c
.
SetBalance
(
new
(
big
.
Int
)
.
Sub
(
c
.
balance
,
amount
))
statelogger
.
Debugf
(
"%x: #%d %v (- %v)
\n
"
,
c
.
Address
(),
c
.
nonce
,
c
.
balance
,
amount
)
if
glog
.
V
(
logger
.
Debug
)
{
glog
.
Infof
(
"%x: #%d %v (- %v)
\n
"
,
c
.
Address
(),
c
.
nonce
,
c
.
balance
,
amount
)
}
}
func
(
c
*
StateObject
)
SetBalance
(
amount
*
big
.
Int
)
{
...
...
@@ -225,7 +234,9 @@ func (c *StateObject) ConvertGas(gas, price *big.Int) error {
func
(
self
*
StateObject
)
SetGasPool
(
gasLimit
*
big
.
Int
)
{
self
.
gasPool
=
new
(
big
.
Int
)
.
Set
(
gasLimit
)
statelogger
.
Debugf
(
"%x: gas (+ %v)"
,
self
.
Address
(),
self
.
gasPool
)
if
glog
.
V
(
logger
.
Debug
)
{
glog
.
Infof
(
"%x: gas (+ %v)"
,
self
.
Address
(),
self
.
gasPool
)
}
}
func
(
self
*
StateObject
)
BuyGas
(
gas
,
price
*
big
.
Int
)
error
{
...
...
core/state/statedb.go
浏览文件 @
a0e44e32
...
...
@@ -6,12 +6,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/trie"
"github.com/golang/glog"
)
var
statelogger
=
logger
.
NewLogger
(
"STATE"
)
// StateDBs within the ethereum protocol are used to store anything
// within the merkle trie. StateDBs take care of caching and storing
// nested states. It's the general query interface to retrieve:
...
...
core/vm/common.go
浏览文件 @
a0e44e32
...
...
@@ -5,11 +5,9 @@ import (
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger
/glog
"
)
var
vmlogger
=
logger
.
NewLogger
(
"VM"
)
// Global Debug flag indicating Debug VM (full logging)
var
Debug
bool
...
...
@@ -41,7 +39,7 @@ func NewVm(env Environment) VirtualMachine {
case
JitVmTy
:
return
NewJitVm
(
env
)
default
:
vmlogger
.
Infoln
(
"unsupported vm type %d"
,
env
.
VmType
())
glog
.
V
(
0
)
.
Infoln
(
"unsupported vm type %d"
,
env
.
VmType
())
fallthrough
case
StdVmTy
:
return
New
(
env
)
...
...
core/vm/vm.go
浏览文件 @
a0e44e32
...
...
@@ -7,6 +7,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/params"
)
...
...
@@ -885,9 +886,7 @@ func (self *Vm) RunPrecompiled(p *PrecompiledAccount, callData []byte, context *
func
(
self
*
Vm
)
Printf
(
format
string
,
v
...
interface
{})
VirtualMachine
{
if
self
.
debug
{
if
self
.
logTy
==
LogTyPretty
{
self
.
logStr
+=
fmt
.
Sprintf
(
format
,
v
...
)
}
self
.
logStr
+=
fmt
.
Sprintf
(
format
,
v
...
)
}
return
self
...
...
@@ -895,10 +894,8 @@ func (self *Vm) Printf(format string, v ...interface{}) VirtualMachine {
func
(
self
*
Vm
)
Endl
()
VirtualMachine
{
if
self
.
debug
{
if
self
.
logTy
==
LogTyPretty
{
vmlogger
.
Infoln
(
self
.
logStr
)
self
.
logStr
=
""
}
glog
.
V
(
0
)
.
Infoln
(
self
.
logStr
)
self
.
logStr
=
""
}
return
self
...
...
logger/glog/glog.go
浏览文件 @
a0e44e32
...
...
@@ -1055,6 +1055,7 @@ func (v Verbose) Infoln(args ...interface{}) {
// Infof is equivalent to the global Infof function, guarded by the value of v.
// See the documentation of V for usage.
func
(
v
Verbose
)
Infof
(
format
string
,
args
...
interface
{})
{
fmt
.
Println
(
v
)
if
v
{
logging
.
printf
(
infoLog
,
format
,
args
...
)
}
...
...
tests/vm/gh_test.go
浏览文件 @
a0e44e32
...
...
@@ -9,8 +9,10 @@ import (
"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/core/vm"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/tests/helper"
)
...
...
@@ -80,14 +82,13 @@ func RunVmTest(p string, t *testing.T) {
tests
:=
make
(
map
[
string
]
VmTest
)
helper
.
CreateFileTests
(
t
,
p
,
&
tests
)
vm
.
Debug
=
true
glog
.
SetV
(
4
)
glog
.
SetToStderr
(
true
)
for
name
,
test
:=
range
tests
{
/*
vm.Debug = true
helper.Logger.SetLogLevel(5)
if name != "Call1MB1024Calldepth" {
continue
}
*/
if
name
!=
"stackLimitPush32_1024"
{
continue
}
db
,
_
:=
ethdb
.
NewMemDatabase
()
statedb
:=
state
.
New
(
common
.
Hash
{},
db
)
for
addr
,
account
:=
range
test
.
Pre
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录