Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
a5f6a1cb
Commit
a5f6a1cb
authored
May 12, 2017
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consensus, core, core/vm, parems: review fixes
parent
e6aff513
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
42 deletions
+34
-42
consensus.go
consensus/ethash/consensus.go
+1
-1
chain_makers.go
core/chain_makers.go
+0
-3
transaction_signing.go
core/types/transaction_signing.go
+0
-11
interpreter.go
core/vm/interpreter.go
+6
-6
jump_table.go
core/vm/jump_table.go
+7
-3
config.go
params/config.go
+20
-18
No files found.
consensus/ethash/consensus.go
View file @
a5f6a1cb
...
...
@@ -315,7 +315,7 @@ func calcDifficultyHomestead(time uint64, parent *types.Header) *big.Int {
// (parent_diff / 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99))
// ) + 2^(periodCount - 2)
bigTime
:=
new
(
big
.
Int
)
.
Set
(
time
)
bigTime
:=
new
(
big
.
Int
)
.
Set
Uint64
(
time
)
bigParentTime
:=
new
(
big
.
Int
)
.
Set
(
parent
.
Time
)
// holds intermediate values to make the algo easier to read & audit
...
...
core/chain_makers.go
View file @
a5f6a1cb
...
...
@@ -209,9 +209,6 @@ func makeHeader(config *params.ChainConfig, parent *types.Block, state *state.St
}
else
{
time
=
new
(
big
.
Int
)
.
Add
(
parent
.
Time
(),
big
.
NewInt
(
10
))
// block time is fixed at 10 seconds
}
parentHeader
:=
parent
.
Header
()
// adjust the parent time
parentHeader
.
Time
=
new
(
big
.
Int
)
.
Sub
(
time
,
big
.
NewInt
(
10
))
return
&
types
.
Header
{
Root
:
state
.
IntermediateRoot
(
config
.
IsEIP158
(
parent
.
Number
())),
...
...
core/types/transaction_signing.go
View file @
a5f6a1cb
...
...
@@ -108,17 +108,6 @@ type Signer interface {
Equal
(
Signer
)
bool
}
/*
// WithSignature returns a new transaction with the given signature. This signature
// needs to be in the [R || S || V] format where V is 0 or 1.
func (s EIP86Signer) WithSignature(tx *Transaction, sig []byte) (*Transaction, error) {
}
// Hash returns the hash to be signed by the sender.
// It does not uniquely identify the transaction.
func (s EIP86Signer) Hash(tx *Transaction) common.Hash {}
*/
// EIP155Transaction implements TransactionInterface using the
// EIP155 rules
type
EIP155Signer
struct
{
...
...
core/vm/interpreter.go
View file @
a5f6a1cb
...
...
@@ -45,7 +45,7 @@ type Config struct {
DisableGasMetering
bool
// Enable recording of SHA3/keccak preimages
EnablePreimageRecording
bool
// JumpTable contains the
in
instruction table. This
// JumpTable contains the
EVM
instruction table. This
// may me left uninitialised and will be set the default
// table.
JumpTable
[
256
]
operation
...
...
@@ -74,7 +74,7 @@ func NewInterpreter(evm *EVM, cfg Config) *Interpreter {
case
evm
.
ChainConfig
()
.
IsHomestead
(
evm
.
BlockNumber
)
:
cfg
.
JumpTable
=
homesteadInstructionSet
default
:
cfg
.
JumpTable
=
base
InstructionSet
cfg
.
JumpTable
=
frontier
InstructionSet
}
}
...
...
@@ -131,14 +131,14 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret
}
}()
log
.
Debug
(
"in running contract"
,
"hash"
,
codehash
[
:
])
log
.
Debug
(
"in
terpreter
running contract"
,
"hash"
,
codehash
[
:
])
tstart
:=
time
.
Now
()
defer
log
.
Debug
(
"in finished running contract"
,
"hash"
,
codehash
[
:
],
"elapsed"
,
time
.
Since
(
tstart
))
defer
log
.
Debug
(
"in
terpreter
finished running contract"
,
"hash"
,
codehash
[
:
],
"elapsed"
,
time
.
Since
(
tstart
))
// The Interpreter main run loop (contextual). This loop runs until either an
// explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during
// the execution of one of the operations or until the
in.done is set by
//
the parent context.C
ontext.
// the execution of one of the operations or until the
done flag is set by the
//
parent c
ontext.
for
atomic
.
LoadInt32
(
&
in
.
evm
.
abort
)
==
0
{
// Get the memory location of pc
op
=
contract
.
GetOp
(
pc
)
...
...
core/vm/jump_table.go
View file @
a5f6a1cb
...
...
@@ -56,12 +56,14 @@ type operation struct {
}
var
(
baseInstructionSet
=
NewBase
InstructionSet
()
frontierInstructionSet
=
NewFrontier
InstructionSet
()
homesteadInstructionSet
=
NewHomesteadInstructionSet
()
)
// NewHomesteadInstructionSet returns the frontier and homestead
// instructions that can be executed during the homestead phase.
func
NewHomesteadInstructionSet
()
[
256
]
operation
{
instructionSet
:=
New
Base
InstructionSet
()
instructionSet
:=
New
Frontier
InstructionSet
()
instructionSet
[
DELEGATECALL
]
=
operation
{
execute
:
opDelegateCall
,
gasCost
:
gasDelegateCall
,
...
...
@@ -72,7 +74,9 @@ func NewHomesteadInstructionSet() [256]operation {
return
instructionSet
}
func
NewBaseInstructionSet
()
[
256
]
operation
{
// NewFrontierInstructionSet returns the frontier instructions
// that can be executed during the frontier phase.
func
NewFrontierInstructionSet
()
[
256
]
operation
{
return
[
256
]
operation
{
STOP
:
{
execute
:
opStop
,
...
...
params/config.go
View file @
a5f6a1cb
...
...
@@ -56,14 +56,16 @@ var (
// RinkebyChainConfig contains the chain parameters to run a node on the Rinkeby test network.
RinkebyChainConfig
=
&
ChainConfig
{
ChainId
:
big
.
NewInt
(
4
),
HomesteadBlock
:
big
.
NewInt
(
1
),
DAOForkBlock
:
nil
,
DAOForkSupport
:
true
,
EIP150Block
:
big
.
NewInt
(
2
),
EIP150Hash
:
common
.
HexToHash
(
"0x9b095b36c15eaf13044373aef8ee0bd3a382a5abb92e402afa44b8249c3a90e9"
),
EIP155Block
:
big
.
NewInt
(
3
),
EIP158Block
:
big
.
NewInt
(
3
),
ChainId
:
big
.
NewInt
(
4
),
HomesteadBlock
:
big
.
NewInt
(
1
),
DAOForkBlock
:
nil
,
DAOForkSupport
:
true
,
EIP150Block
:
big
.
NewInt
(
2
),
EIP150Hash
:
common
.
HexToHash
(
"0x9b095b36c15eaf13044373aef8ee0bd3a382a5abb92e402afa44b8249c3a90e9"
),
EIP155Block
:
big
.
NewInt
(
3
),
EIP158Block
:
big
.
NewInt
(
3
),
MetropolisBlock
:
TestNetMetropolisBlock
,
Clique
:
&
CliqueConfig
{
Period
:
15
,
Epoch
:
30000
,
...
...
@@ -99,10 +101,10 @@ type ChainConfig struct {
EIP150Block
*
big
.
Int
`json:"eip150Block,omitempty"`
// EIP150 HF block (nil = no fork)
EIP150Hash
common
.
Hash
`json:"eip150Hash,omitempty"`
// EIP150 HF hash (fast sync aid)
EIP155Block
*
big
.
Int
`json:"eip155Block"`
// EIP155 HF block
EIP158Block
*
big
.
Int
`json:"eip158Block"`
// EIP158 HF block
EIP155Block
*
big
.
Int
`json:"eip155Block
,omitempty
"`
// EIP155 HF block
EIP158Block
*
big
.
Int
`json:"eip158Block
,omitempty
"`
// EIP158 HF block
MetropolisBlock
*
big
.
Int
`json:"metropolisBlock"`
// Metropolis switch block (nil = no fork, 0 = alraedy on homestead)
MetropolisBlock
*
big
.
Int
`json:"metropolisBlock
,omitempty
"`
// Metropolis switch block (nil = no fork, 0 = alraedy on homestead)
// Various consensus engines
Ethash
*
EthashConfig
`json:"ethash,omitempty"`
...
...
@@ -174,6 +176,10 @@ func (c *ChainConfig) IsEIP158(num *big.Int) bool {
return
isForked
(
c
.
EIP158Block
,
num
)
}
func
(
c
*
ChainConfig
)
IsMetropolis
(
num
*
big
.
Int
)
bool
{
return
isForked
(
c
.
MetropolisBlock
,
num
)
}
// GasTable returns the gas table corresponding to the current phase (homestead or homestead reprice).
//
// The returned GasTable's fields shouldn't, under any circumstances, be changed.
...
...
@@ -231,6 +237,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, head *big.Int) *Confi
if
c
.
IsEIP158
(
head
)
&&
!
configNumEqual
(
c
.
ChainId
,
newcfg
.
ChainId
)
{
return
newCompatError
(
"EIP158 chain ID"
,
c
.
EIP158Block
,
newcfg
.
EIP158Block
)
}
if
isForkIncompatible
(
c
.
MetropolisBlock
,
newcfg
.
MetropolisBlock
,
head
)
{
return
newCompatError
(
"Metropolis fork block"
,
c
.
MetropolisBlock
,
newcfg
.
MetropolisBlock
)
}
return
nil
}
...
...
@@ -258,13 +267,6 @@ func configNumEqual(x, y *big.Int) bool {
return
x
.
Cmp
(
y
)
==
0
}
func
(
c
*
ChainConfig
)
IsMetropolis
(
num
*
big
.
Int
)
bool
{
if
c
.
MetropolisBlock
==
nil
||
num
==
nil
{
return
false
}
return
num
.
Cmp
(
c
.
MetropolisBlock
)
>=
0
}
// ConfigCompatError is raised if the locally-stored blockchain is initialised with a
// ChainConfig that would alter the past.
type
ConfigCompatError
struct
{
...
...
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