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
c8a9a4e7
Commit
c8a9a4e7
authored
May 29, 2015
by
Taylor Gerring
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Differentiate between 0 and unspecified gas/gasprice
parent
0f1cdfa5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
36 deletions
+73
-36
api.go
rpc/api.go
+30
-2
args.go
rpc/args.go
+12
-12
args_test.go
rpc/args_test.go
+12
-8
xeth.go
xeth/xeth.go
+19
-14
No files found.
rpc/api.go
View file @
c8a9a4e7
...
...
@@ -182,7 +182,21 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err
nonce
=
args
.
Nonce
.
String
()
}
v
,
err
:=
api
.
xeth
()
.
Transact
(
args
.
From
,
args
.
To
,
nonce
,
args
.
Value
.
String
(),
args
.
Gas
.
String
(),
args
.
GasPrice
.
String
(),
args
.
Data
)
var
gas
string
if
args
.
Gas
==
nil
{
gas
=
""
}
else
{
gas
=
args
.
Gas
.
String
()
}
var
gasprice
string
if
args
.
GasPrice
==
nil
{
gas
=
""
}
else
{
gas
=
args
.
GasPrice
.
String
()
}
v
,
err
:=
api
.
xeth
()
.
Transact
(
args
.
From
,
args
.
To
,
nonce
,
args
.
Value
.
String
(),
gas
,
gasprice
,
args
.
Data
)
if
err
!=
nil
{
return
err
}
...
...
@@ -603,5 +617,19 @@ func (api *EthereumApi) doCall(params json.RawMessage) (string, string, error) {
return
""
,
""
,
err
}
return
api
.
xethAtStateNum
(
args
.
BlockNumber
)
.
Call
(
args
.
From
,
args
.
To
,
args
.
Value
.
String
(),
args
.
Gas
.
String
(),
args
.
GasPrice
.
String
(),
args
.
Data
)
var
gas
string
if
args
.
Gas
==
nil
{
gas
=
""
}
else
{
gas
=
args
.
Gas
.
String
()
}
var
gasprice
string
if
args
.
GasPrice
==
nil
{
gas
=
""
}
else
{
gas
=
args
.
GasPrice
.
String
()
}
return
api
.
xethAtStateNum
(
args
.
BlockNumber
)
.
Call
(
args
.
From
,
args
.
To
,
args
.
Value
.
String
(),
gas
,
gasprice
,
args
.
Data
)
}
rpc/args.go
View file @
c8a9a4e7
...
...
@@ -261,22 +261,22 @@ func (args *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
args
.
Value
=
num
num
=
nil
if
ext
.
Gas
==
nil
{
num
=
big
.
NewInt
(
0
)
}
else
{
if
ext
.
Gas
!=
nil
{
if
num
,
err
=
numString
(
ext
.
Gas
);
err
!=
nil
{
return
err
}
}
else
{
num
=
nil
}
args
.
Gas
=
num
num
=
nil
if
ext
.
GasPrice
==
nil
{
num
=
big
.
NewInt
(
0
)
}
else
{
if
ext
.
GasPrice
!=
nil
{
if
num
,
err
=
numString
(
ext
.
GasPrice
);
err
!=
nil
{
return
err
}
}
else
{
num
=
nil
}
args
.
GasPrice
=
num
...
...
@@ -346,21 +346,21 @@ func (args *CallArgs) UnmarshalJSON(b []byte) (err error) {
}
args
.
Value
=
num
if
ext
.
Gas
==
nil
{
num
=
big
.
NewInt
(
0
)
}
else
{
if
ext
.
Gas
!=
nil
{
if
num
,
err
=
numString
(
ext
.
Gas
);
err
!=
nil
{
return
err
}
}
else
{
num
=
nil
}
args
.
Gas
=
num
if
ext
.
GasPrice
==
nil
{
num
=
big
.
NewInt
(
0
)
}
else
{
if
ext
.
GasPrice
!=
nil
{
if
num
,
err
=
numString
(
ext
.
GasPrice
);
err
!=
nil
{
return
err
}
}
else
{
num
=
nil
}
args
.
GasPrice
=
num
...
...
rpc/args_test.go
View file @
c8a9a4e7
...
...
@@ -573,14 +573,15 @@ func TestNewTxArgsGasMissing(t *testing.T) {
"data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]`
expected
:=
new
(
NewTxArgs
)
expected
.
Gas
=
big
.
NewInt
(
0
)
expected
.
Gas
=
nil
args
:=
new
(
NewTxArgs
)
if
err
:=
json
.
Unmarshal
([]
byte
(
input
),
&
args
);
err
!=
nil
{
t
.
Error
(
err
)
}
if
bytes
.
Compare
(
expected
.
Gas
.
Bytes
(),
args
.
Gas
.
Bytes
())
!=
0
{
if
args
.
Gas
!=
expected
.
Gas
{
// if bytes.Compare(expected.Gas.Bytes(), args.Gas.Bytes()) != 0 {
t
.
Errorf
(
"Gas shoud be %v but is %v"
,
expected
.
Gas
,
args
.
Gas
)
}
}
...
...
@@ -594,14 +595,15 @@ func TestNewTxArgsBlockGaspriceMissing(t *testing.T) {
"data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]`
expected
:=
new
(
NewTxArgs
)
expected
.
GasPrice
=
big
.
NewInt
(
0
)
expected
.
GasPrice
=
nil
args
:=
new
(
NewTxArgs
)
if
err
:=
json
.
Unmarshal
([]
byte
(
input
),
&
args
);
err
!=
nil
{
t
.
Error
(
err
)
}
if
bytes
.
Compare
(
expected
.
GasPrice
.
Bytes
(),
args
.
GasPrice
.
Bytes
())
!=
0
{
if
args
.
GasPrice
!=
expected
.
GasPrice
{
// if bytes.Compare(expected.GasPrice.Bytes(), args.GasPrice.Bytes()) != 0 {
t
.
Errorf
(
"GasPrice shoud be %v but is %v"
,
expected
.
GasPrice
,
args
.
GasPrice
)
}
...
...
@@ -829,9 +831,10 @@ func TestCallArgsGasMissing(t *testing.T) {
}
expected
:=
new
(
CallArgs
)
expected
.
Gas
=
big
.
NewInt
(
0
)
expected
.
Gas
=
nil
if
bytes
.
Compare
(
expected
.
Gas
.
Bytes
(),
args
.
Gas
.
Bytes
())
!=
0
{
if
args
.
Gas
!=
expected
.
Gas
{
// if bytes.Compare(expected.Gas.Bytes(), args.Gas.Bytes()) != 0 {
t
.
Errorf
(
"Gas shoud be %v but is %v"
,
expected
.
Gas
,
args
.
Gas
)
}
...
...
@@ -852,9 +855,10 @@ func TestCallArgsBlockGaspriceMissing(t *testing.T) {
}
expected
:=
new
(
CallArgs
)
expected
.
GasPrice
=
big
.
NewInt
(
0
)
expected
.
GasPrice
=
nil
if
bytes
.
Compare
(
expected
.
GasPrice
.
Bytes
(),
args
.
GasPrice
.
Bytes
())
!=
0
{
if
args
.
GasPrice
!=
expected
.
GasPrice
{
// if bytes.Compare(expected.GasPrice.Bytes(), args.GasPrice.Bytes()) != 0 {
t
.
Errorf
(
"GasPrice shoud be %v but is %v"
,
expected
.
GasPrice
,
args
.
GasPrice
)
}
}
...
...
xeth/xeth.go
View file @
c8a9a4e7
...
...
@@ -885,12 +885,29 @@ func (self *XEth) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceS
from
=
common
.
HexToAddress
(
fromStr
)
to
=
common
.
HexToAddress
(
toStr
)
value
=
common
.
Big
(
valueStr
)
gas
=
common
.
Big
(
gasStr
)
price
=
common
.
Big
(
gasPriceStr
)
gas
*
big
.
Int
price
*
big
.
Int
data
[]
byte
contractCreation
bool
)
if
len
(
gasStr
)
==
0
{
gas
=
DefaultGas
()
}
else
{
gas
=
common
.
Big
(
gasStr
)
}
if
len
(
gasPriceStr
)
==
0
{
price
=
DefaultGasPrice
()
}
else
{
price
=
common
.
Big
(
gasPriceStr
)
}
data
=
common
.
FromHex
(
codeStr
)
if
len
(
toStr
)
==
0
{
contractCreation
=
true
}
// 2015-05-18 Is this still needed?
// TODO if no_private_key then
//if _, exists := p.register[args.From]; exists {
...
...
@@ -916,18 +933,6 @@ func (self *XEth) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceS
// TODO: align default values to have the same type, e.g. not depend on
// common.Value conversions later on
if
gas
.
Cmp
(
big
.
NewInt
(
0
))
==
0
{
gas
=
DefaultGas
()
}
if
price
.
Cmp
(
big
.
NewInt
(
0
))
==
0
{
price
=
DefaultGasPrice
()
}
data
=
common
.
FromHex
(
codeStr
)
if
len
(
toStr
)
==
0
{
contractCreation
=
true
}
var
tx
*
types
.
Transaction
if
contractCreation
{
...
...
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