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
8cc6647e
Commit
8cc6647e
authored
Feb 22, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/0.8.5'
parents
5912f0a8
321dce1f
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
60 additions
and
39 deletions
+60
-39
main.go
cmd/ethereum/main.go
+1
-1
coin.html
cmd/mist/assets/examples/coin.html
+11
-12
main.qml
cmd/mist/assets/qml/main.qml
+1
-1
main.go
cmd/mist/main.go
+1
-1
cmd.go
cmd/utils/cmd.go
+1
-1
block_processor.go
core/block_processor.go
+6
-10
filter.go
core/filter.go
+2
-3
packages.go
rpc/packages.go
+15
-0
util.go
rpc/util.go
+2
-0
log.go
state/log.go
+9
-2
environment.go
vm/environment.go
+5
-0
vm.go
vm/vm.go
+1
-1
xeth.go
xeth/xeth.go
+5
-7
No files found.
cmd/ethereum/main.go
View file @
8cc6647e
...
...
@@ -37,7 +37,7 @@ import (
const
(
ClientIdentifier
=
"Ethereum(G)"
Version
=
"0.8.
4
"
Version
=
"0.8.
5
"
)
var
clilogger
=
logger
.
NewLogger
(
"CLI"
)
...
...
cmd/mist/assets/examples/coin.html
View file @
8cc6647e
...
...
@@ -14,8 +14,9 @@
</div>
<div>
<span
class=
"amount"
>
Amount
:
</span>
<span
>
Address
:
</span>
<input
type=
"text"
id=
"address"
style=
"width:200px"
>
<span>
Amount:
</span>
<input
type=
"text"
id=
"amount"
style=
"width:200px"
>
<button
onclick=
"transact()"
>
Send
</button>
</div>
...
...
@@ -58,7 +59,7 @@
}],
"outputs"
:
[]
},
{
"name"
:
"
receiv
ed"
,
"name"
:
"
Chang
ed"
,
"type"
:
"event"
,
"inputs"
:
[
{
"name"
:
"from"
,
"type"
:
"address"
,
"indexed"
:
true
},
...
...
@@ -69,18 +70,14 @@
var
address
=
localStorage
.
getItem
(
"address"
);
// deploy if not exist
if
(
address
==
null
)
{
var
code
=
"0x60056013565b6101
2b806100346000396000f35b6103e8600033600160a060020a0316600052602052604060002081905550560060e060020a6000350480637bb98a681461002b578063d0679d3414610039578063e3d670d71461004d57005b610033610126565b60006000f35b610047600435602435610062565b60006000f35b610058600435610104565b8060005260206000f35b80600033600160a060020a0316600052602052604060002054101561008657610100565b80600033600160a060020a0316600052602052604060002090815403908190555080600083600160a060020a0316600052602052604060002090815401908190555033600160a060020a0316600052806020527ff11e547d796cc64acdf758e7cee90439494fd886a19159454aa61e473fdbafef60406000a15b5050565b6000600082600160a060020a03166000526020526040600020549050919050565b5b600081
56"
;
var
code
=
"0x60056013565b6101
4f8061003a6000396000f35b620f42406000600033600160a060020a0316815260200190815260200160002081905550560060e060020a600035048063d0679d3414610020578063e3d670d71461003457005b61002e600435602435610049565b60006000f35b61003f600435610129565b8060005260206000f35b806000600033600160a060020a03168152602001908152602001600020541061007157610076565b610125565b806000600033600160a060020a03168152602001908152602001600020908154039081905550806000600084600160a060020a031681526020019081526020016000209081540190819055508033600160a060020a03167fb52dda022b6c1a1f40905a85f257f689aa5d69d850e49cf939d688fbe5af594660006000a38082600160a060020a03167fb52dda022b6c1a1f40905a85f257f689aa5d69d850e49cf939d688fbe5af594660006000a35b5050565b60006000600083600160a060020a03168152602001908152602001600020549050919050
56"
;
address
=
web3
.
eth
.
transact
({
data
:
code
});
localStorage
.
setItem
(
"address"
,
address
);
}
document
.
querySelector
(
"#contract_addr"
).
innerHTML
=
address
.
toUpperCase
()
;
document
.
querySelector
(
"#contract_addr"
).
innerHTML
=
address
;
var
contract
=
web3
.
eth
.
contract
(
address
,
desc
);
contract
.
received
({
from
:
eth
.
coinbase
}).
changed
(
function
()
{
refresh
();
});
eth
.
watch
(
'chain'
).
changed
(
function
()
{
contract
.
Changed
({
from
:
eth
.
coinbase
}).
changed
(
function
()
{
refresh
();
});
...
...
@@ -93,7 +90,7 @@
var
storage
=
eth
.
storageAt
(
address
);
table
.
innerHTML
=
""
;
for
(
var
item
in
storage
)
{
table
.
innerHTML
+=
"<tr><td>"
+
item
.
toUpperCase
()
+
"</td><td>"
+
web3
.
toDecimal
(
storage
[
item
])
+
"</td></tr>"
;
table
.
innerHTML
+=
"<tr><td>"
+
item
+
"</td><td>"
+
web3
.
toDecimal
(
storage
[
item
])
+
"</td></tr>"
;
}
}
...
...
@@ -106,6 +103,7 @@
}
var
value
=
parseInt
(
document
.
querySelector
(
"#amount"
).
value
);
console
.
log
(
"transact: "
,
to
,
" => "
,
value
)
contract
.
send
(
to
,
value
);
}
...
...
@@ -121,7 +119,7 @@ contract JevCoin {
balances[msg.sender] = 1000000;
}
event
changed(address indexed from, address indexed to
);
event
Changed(address indexed from, uint indexed amount
);
function send(address to, uint value)
{
if( balances[msg.sender] < value ) return;
...
...
@@ -129,7 +127,8 @@ contract JevCoin {
balances[msg.sender] -= value;
balances[to] += value;
changed(msg.sender, to);
Changed(msg.sender, value);
Changed(to, value);
}
function balance(address who) constant returns(uint t)
...
...
cmd/mist/assets/qml/main.qml
View file @
8cc6647e
...
...
@@ -964,7 +964,7 @@ ApplicationWindow {
anchors.top
:
parent
.
top
anchors.topMargin
:
30
font.pointSize
:
12
text
:
"<h2>Mist (0.8.
4
)</h2><br><h3>Development</h3>Jeffrey Wilcke<br>Viktor Trón<br>Felix Lange<br>Taylor Gerring<br>Daniel Nagy<br>Gustav Simonsson<br><h3>UX/UI</h3>Alex van de Sande<br>Fabian Vogelsteller"
text
:
"<h2>Mist (0.8.
5
)</h2><br><h3>Development</h3>Jeffrey Wilcke<br>Viktor Trón<br>Felix Lange<br>Taylor Gerring<br>Daniel Nagy<br>Gustav Simonsson<br><h3>UX/UI</h3>Alex van de Sande<br>Fabian Vogelsteller"
}
}
...
...
cmd/mist/main.go
View file @
8cc6647e
...
...
@@ -36,7 +36,7 @@ import (
const
(
ClientIdentifier
=
"Mist"
Version
=
"0.8.
4
"
Version
=
"0.8.
5
"
)
var
ethereum
*
eth
.
Ethereum
...
...
cmd/utils/cmd.go
View file @
8cc6647e
...
...
@@ -272,7 +272,7 @@ func BlockDo(ethereum *eth.Ethereum, hash []byte) error {
parent
:=
ethereum
.
ChainManager
()
.
GetBlock
(
block
.
ParentHash
())
statedb
:=
state
.
New
(
parent
.
Root
(),
ethereum
.
Db
())
_
,
err
:=
ethereum
.
BlockProcessor
()
.
TransitionState
(
statedb
,
parent
,
block
)
_
,
err
:=
ethereum
.
BlockProcessor
()
.
TransitionState
(
statedb
,
parent
,
block
,
true
)
if
err
!=
nil
{
return
err
}
...
...
core/block_processor.go
View file @
8cc6647e
...
...
@@ -60,12 +60,12 @@ func NewBlockProcessor(db ethutil.Database, txpool *TxPool, chainManager *ChainM
return
sm
}
func
(
sm
*
BlockProcessor
)
TransitionState
(
statedb
*
state
.
StateDB
,
parent
,
block
*
types
.
Block
)
(
receipts
types
.
Receipts
,
err
error
)
{
func
(
sm
*
BlockProcessor
)
TransitionState
(
statedb
*
state
.
StateDB
,
parent
,
block
*
types
.
Block
,
transientProcess
bool
)
(
receipts
types
.
Receipts
,
err
error
)
{
coinbase
:=
statedb
.
GetOrNewStateObject
(
block
.
Header
()
.
Coinbase
)
coinbase
.
SetGasPool
(
CalcGasLimit
(
parent
,
block
))
// Process the transactions on to parent state
receipts
,
_
,
_
,
_
,
err
=
sm
.
ApplyTransactions
(
coinbase
,
statedb
,
block
,
block
.
Transactions
(),
false
)
receipts
,
_
,
_
,
_
,
err
=
sm
.
ApplyTransactions
(
coinbase
,
statedb
,
block
,
block
.
Transactions
(),
transientProcess
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -100,10 +100,9 @@ func (self *BlockProcessor) ApplyTransaction(coinbase *state.StateObject, stated
// Notify all subscribers
if
!
transientProcess
{
go
self
.
eventMux
.
Post
(
TxPostEvent
{
tx
})
go
self
.
eventMux
.
Post
(
statedb
.
Logs
())
}
go
self
.
eventMux
.
Post
(
statedb
.
Logs
())
return
receipt
,
txGas
,
err
}
...
...
@@ -179,7 +178,7 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big
return
}
receipts
,
err
:=
sm
.
TransitionState
(
state
,
parent
,
block
)
receipts
,
err
:=
sm
.
TransitionState
(
state
,
parent
,
block
,
false
)
if
err
!=
nil
{
return
}
...
...
@@ -316,13 +315,10 @@ func (sm *BlockProcessor) GetLogs(block *types.Block) (logs state.Logs, err erro
var
(
parent
=
sm
.
bc
.
GetBlock
(
block
.
Header
()
.
ParentHash
)
//state = state.New(parent.Trie().Copy())
state
=
state
.
New
(
parent
.
Root
(),
sm
.
db
)
state
=
state
.
New
(
parent
.
Root
(),
sm
.
db
)
)
defer
state
.
Reset
()
sm
.
TransitionState
(
state
,
parent
,
block
)
sm
.
TransitionState
(
state
,
parent
,
block
,
true
)
sm
.
AccumulateRewards
(
state
,
block
,
parent
)
return
state
.
Logs
(),
nil
...
...
core/filter.go
View file @
8cc6647e
...
...
@@ -111,14 +111,14 @@ func (self *Filter) Find() state.Logs {
// current parameters
if
self
.
bloomFilter
(
block
)
{
// Get the logs of the block
logs
,
err
:=
self
.
eth
.
BlockProcessor
()
.
GetLogs
(
block
)
unfiltered
,
err
:=
self
.
eth
.
BlockProcessor
()
.
GetLogs
(
block
)
if
err
!=
nil
{
chainlogger
.
Warnln
(
"err: filter get logs "
,
err
)
break
}
logs
=
append
(
logs
,
self
.
FilterLogs
(
logs
)
...
)
logs
=
append
(
logs
,
self
.
FilterLogs
(
unfiltered
)
...
)
}
block
=
self
.
eth
.
ChainManager
()
.
GetBlock
(
block
.
ParentHash
())
...
...
@@ -146,7 +146,6 @@ func (self *Filter) FilterLogs(logs state.Logs) state.Logs {
Logs
:
for
_
,
log
:=
range
logs
{
if
!
includes
(
self
.
address
,
log
.
Address
())
{
//if !bytes.Equal(self.address, log.Address()) {
continue
}
...
...
rpc/packages.go
View file @
8cc6647e
...
...
@@ -167,6 +167,15 @@ func (self *EthereumApi) Logs(id int, reply *interface{}) error {
return
nil
}
func
(
self
*
EthereumApi
)
AllLogs
(
args
*
FilterOptions
,
reply
*
interface
{})
error
{
filter
:=
core
.
NewFilter
(
self
.
xeth
.
Backend
())
filter
.
SetOptions
(
toFilterOptions
(
args
))
*
reply
=
toLogs
(
filter
.
Find
())
return
nil
}
func
(
p
*
EthereumApi
)
GetBlock
(
args
*
GetBlockArgs
,
reply
*
interface
{})
error
{
err
:=
args
.
requirements
()
if
err
!=
nil
{
...
...
@@ -509,6 +518,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return
err
}
return
p
.
Logs
(
args
,
reply
)
case
"eth_logs"
:
args
,
err
:=
req
.
ToFilterArgs
()
if
err
!=
nil
{
return
err
}
return
p
.
AllLogs
(
args
,
reply
)
case
"eth_gasPrice"
:
*
reply
=
defaultGasPrice
return
nil
...
...
rpc/util.go
View file @
8cc6647e
...
...
@@ -84,6 +84,7 @@ type Log struct {
Address
string
`json:"address"`
Topic
[]
string
`json:"topics"`
Data
string
`json:"data"`
Number
uint64
`json:"number"`
}
func
toLogs
(
logs
state
.
Logs
)
(
ls
[]
Log
)
{
...
...
@@ -94,6 +95,7 @@ func toLogs(logs state.Logs) (ls []Log) {
l
.
Topic
=
make
([]
string
,
len
(
log
.
Topics
()))
l
.
Address
=
toHex
(
log
.
Address
())
l
.
Data
=
toHex
(
log
.
Data
())
l
.
Number
=
log
.
Number
()
for
j
,
topic
:=
range
log
.
Topics
()
{
l
.
Topic
[
j
]
=
toHex
(
topic
)
}
...
...
state/log.go
View file @
8cc6647e
...
...
@@ -12,16 +12,19 @@ type Log interface {
Address
()
[]
byte
Topics
()
[][]
byte
Data
()
[]
byte
Number
()
uint64
}
type
StateLog
struct
{
address
[]
byte
topics
[][]
byte
data
[]
byte
number
uint64
}
func
NewLog
(
address
[]
byte
,
topics
[][]
byte
,
data
[]
byte
)
*
StateLog
{
return
&
StateLog
{
address
,
topics
,
data
}
func
NewLog
(
address
[]
byte
,
topics
[][]
byte
,
data
[]
byte
,
number
uint64
)
*
StateLog
{
return
&
StateLog
{
address
,
topics
,
data
,
number
}
}
func
(
self
*
StateLog
)
Address
()
[]
byte
{
...
...
@@ -36,6 +39,10 @@ func (self *StateLog) Data() []byte {
return
self
.
data
}
func
(
self
*
StateLog
)
Number
()
uint64
{
return
self
.
number
}
func
NewLogFromValue
(
decoder
*
ethutil
.
Value
)
*
StateLog
{
log
:=
&
StateLog
{
address
:
decoder
.
Get
(
0
)
.
Bytes
(),
...
...
vm/environment.go
View file @
8cc6647e
...
...
@@ -54,6 +54,7 @@ type Log struct {
address
[]
byte
topics
[][]
byte
data
[]
byte
log
uint64
}
func
(
self
*
Log
)
Address
()
[]
byte
{
...
...
@@ -68,6 +69,10 @@ func (self *Log) Data() []byte {
return
self
.
data
}
func
(
self
*
Log
)
Number
()
uint64
{
return
self
.
log
}
func
(
self
*
Log
)
RlpData
()
interface
{}
{
return
[]
interface
{}{
self
.
address
,
ethutil
.
ByteSliceToInterface
(
self
.
topics
),
self
.
data
}
}
...
...
vm/vm.go
View file @
8cc6647e
...
...
@@ -578,7 +578,7 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I
}
data
:=
mem
.
Get
(
mStart
.
Int64
(),
mSize
.
Int64
())
log
:=
&
Log
{
context
.
Address
(),
topics
,
data
}
log
:=
&
Log
{
context
.
Address
(),
topics
,
data
,
self
.
env
.
BlockNumber
()
.
Uint64
()
}
self
.
env
.
AddLog
(
log
)
self
.
Printf
(
" => %v"
,
log
)
...
...
xeth/xeth.go
View file @
8cc6647e
...
...
@@ -288,13 +288,11 @@ func (self *XEth) Transact(toStr, valueStr, gasStr, gasPriceStr, codeStr string)
//fmt.Printf("create tx: %x %v\n", tx.Hash()[:4], tx.Nonce())
/*
// Do some pre processing for our "pre" events and hooks
block := self.chainManager.NewBlock(key.Address())
coinbase := state.GetOrNewStateObject(key.Address())
coinbase.SetGasPool(block.GasLimit())
self.blockProcessor.ApplyTransactions(coinbase, state, block, types.Transactions{tx}, true)
*/
// Do some pre processing for our "pre" events and hooks
block
:=
self
.
chainManager
.
NewBlock
(
key
.
Address
())
coinbase
:=
state
.
GetOrNewStateObject
(
key
.
Address
())
coinbase
.
SetGasPool
(
block
.
GasLimit
())
self
.
blockProcessor
.
ApplyTransactions
(
coinbase
,
state
,
block
,
types
.
Transactions
{
tx
},
true
)
err
=
self
.
eth
.
TxPool
()
.
Add
(
tx
)
if
err
!=
nil
{
...
...
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