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
15550dc8
Commit
15550dc8
authored
Apr 22, 2015
by
Jeffrey Wilcke
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #766 from tgerring/issue762
Treat hexnums as big.Int instead of int64. Closes #762
parents
4ddbf81e
13dc8627
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
41 deletions
+46
-41
args.go
rpc/args.go
+46
-41
No files found.
rpc/args.go
View file @
15550dc8
...
...
@@ -53,22 +53,23 @@ func blockHeight(raw interface{}, number *int64) error {
return
nil
}
func
numString
(
raw
interface
{},
number
*
int64
)
error
{
func
numString
(
raw
interface
{})
(
*
big
.
Int
,
error
)
{
var
number
*
big
.
Int
// Parse as integer
num
,
ok
:=
raw
.
(
float64
)
if
ok
{
*
number
=
int64
(
num
)
return
nil
number
=
big
.
NewInt
(
int64
(
num
)
)
return
n
umber
,
n
il
}
// Parse as string/hexstring
str
,
ok
:=
raw
.
(
string
)
if
!
ok
{
return
NewInvalidTypeError
(
""
,
"not a number or string"
)
if
ok
{
number
=
common
.
String2Big
(
str
)
return
number
,
nil
}
*
number
=
common
.
String2Big
(
str
)
.
Int64
()
return
nil
return
nil
,
NewInvalidTypeError
(
""
,
"not a number or string"
)
}
// func toNumber(v interface{}) (int64, error) {
...
...
@@ -202,33 +203,36 @@ func (args *NewTxArgs) UnmarshalJSON(b []byte) (err error) {
args
.
To
=
ext
.
To
args
.
Data
=
ext
.
Data
var
num
int64
var
num
*
big
.
Int
if
ext
.
Value
==
nil
{
num
=
0
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
Value
,
&
num
);
err
!=
nil
{
num
,
err
=
numString
(
ext
.
Value
)
if
err
!=
nil
{
return
err
}
}
args
.
Value
=
big
.
NewInt
(
num
)
args
.
Value
=
num
num
=
nil
if
ext
.
Gas
==
nil
{
num
=
0
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
Gas
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
ext
.
Gas
);
err
!=
nil
{
return
err
}
}
args
.
Gas
=
big
.
NewInt
(
num
)
args
.
Gas
=
num
num
=
nil
if
ext
.
GasPrice
==
nil
{
num
=
0
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
GasPrice
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
ext
.
GasPrice
);
err
!=
nil
{
return
err
}
}
args
.
GasPrice
=
big
.
NewInt
(
num
)
args
.
GasPrice
=
num
// Check for optional BlockNumber param
if
len
(
obj
)
>
1
{
...
...
@@ -286,33 +290,33 @@ func (args *CallArgs) UnmarshalJSON(b []byte) (err error) {
}
args
.
To
=
ext
.
To
var
num
int64
var
num
*
big
.
Int
if
ext
.
Value
==
nil
{
num
=
int64
(
0
)
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
Value
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
ext
.
Value
);
err
!=
nil
{
return
err
}
}
args
.
Value
=
big
.
NewInt
(
num
)
args
.
Value
=
num
if
ext
.
Gas
==
nil
{
num
=
int64
(
0
)
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
Gas
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
ext
.
Gas
);
err
!=
nil
{
return
err
}
}
args
.
Gas
=
big
.
NewInt
(
num
)
args
.
Gas
=
num
if
ext
.
GasPrice
==
nil
{
num
=
int64
(
0
)
num
=
big
.
NewInt
(
0
)
}
else
{
if
err
:=
numString
(
ext
.
GasPrice
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
ext
.
GasPrice
);
err
!=
nil
{
return
err
}
}
args
.
GasPrice
=
big
.
NewInt
(
num
)
args
.
GasPrice
=
num
args
.
Data
=
ext
.
Data
...
...
@@ -655,6 +659,7 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
// return NewDecodeParamError(fmt.Sprintf("ToBlock %v", err))
var
num
int64
var
numBig
*
big
.
Int
// if blank then latest
if
obj
[
0
]
.
FromBlock
==
nil
{
...
...
@@ -682,22 +687,22 @@ func (args *BlockFilterArgs) UnmarshalJSON(b []byte) (err error) {
args
.
Latest
=
num
if
obj
[
0
]
.
Limit
==
nil
{
num
=
defaultLogLimit
num
Big
=
big
.
NewInt
(
defaultLogLimit
)
}
else
{
if
err
:=
numString
(
obj
[
0
]
.
Limit
,
&
num
);
err
!=
nil
{
if
numBig
,
err
=
numString
(
obj
[
0
]
.
Limit
);
err
!=
nil
{
return
err
}
}
args
.
Max
=
int
(
num
)
args
.
Max
=
int
(
num
Big
.
Int64
()
)
if
obj
[
0
]
.
Offset
==
nil
{
num
=
defaultLogOffset
num
Big
=
big
.
NewInt
(
defaultLogOffset
)
}
else
{
if
err
:=
numString
(
obj
[
0
]
.
Offset
,
&
num
);
err
!=
nil
{
if
numBig
,
err
=
numString
(
obj
[
0
]
.
Offset
);
err
!=
nil
{
return
err
}
}
args
.
Skip
=
int
(
num
)
args
.
Skip
=
int
(
num
Big
.
Int64
()
)
if
obj
[
0
]
.
Address
!=
nil
{
marg
,
ok
:=
obj
[
0
]
.
Address
.
([]
interface
{})
...
...
@@ -894,16 +899,16 @@ func (args *WhisperMessageArgs) UnmarshalJSON(b []byte) (err error) {
args
.
From
=
obj
[
0
]
.
From
args
.
Topics
=
obj
[
0
]
.
Topics
var
num
int64
if
err
:=
numString
(
obj
[
0
]
.
Priority
,
&
num
);
err
!=
nil
{
var
num
*
big
.
Int
if
num
,
err
=
numString
(
obj
[
0
]
.
Priority
);
err
!=
nil
{
return
err
}
args
.
Priority
=
uint32
(
num
)
args
.
Priority
=
uint32
(
num
.
Int64
()
)
if
err
:=
numString
(
obj
[
0
]
.
Ttl
,
&
num
);
err
!=
nil
{
if
num
,
err
=
numString
(
obj
[
0
]
.
Ttl
);
err
!=
nil
{
return
err
}
args
.
Ttl
=
uint32
(
num
)
args
.
Ttl
=
uint32
(
num
.
Int64
()
)
return
nil
}
...
...
@@ -973,11 +978,11 @@ func (args *FilterIdArgs) UnmarshalJSON(b []byte) (err error) {
return
NewInsufficientParamsError
(
len
(
obj
),
1
)
}
var
num
int64
if
err
:=
numString
(
obj
[
0
],
&
num
);
err
!=
nil
{
var
num
*
big
.
Int
if
num
,
err
=
numString
(
obj
[
0
]
);
err
!=
nil
{
return
err
}
args
.
Id
=
int
(
num
)
args
.
Id
=
int
(
num
.
Int64
()
)
return
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