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
7c707d14
Commit
7c707d14
authored
May 11, 2017
by
Péter Szilágyi
Committed by
GitHub
May 11, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #14454 from karalabe/mobile-surface-txrlp
mobile: add toString & rlp/json encoding for protocol types
parents
c5840ce1
953a9951
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
159 additions
and
3 deletions
+159
-3
types.go
mobile/types.go
+159
-3
No files found.
mobile/types.go
View file @
7c707d14
...
...
@@ -19,10 +19,12 @@
package
geth
import
(
"encoding/json"
"errors"
"fmt"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rlp"
)
// A Nonce is a 64-bit hash which proves (combined with the mix-hash) that
...
...
@@ -61,6 +63,45 @@ type Header struct {
header
*
types
.
Header
}
// NewHeaderFromRLP parses a header from an RLP data dump.
func
NewHeaderFromRLP
(
data
[]
byte
)
(
*
Header
,
error
)
{
h
:=
&
Header
{
header
:
new
(
types
.
Header
),
}
if
err
:=
rlp
.
DecodeBytes
(
data
,
h
.
header
);
err
!=
nil
{
return
nil
,
err
}
return
h
,
nil
}
// EncodeRLP encodes a header into an RLP data dump.
func
(
h
*
Header
)
EncodeRLP
()
([]
byte
,
error
)
{
return
rlp
.
EncodeToBytes
(
h
.
header
)
}
// NewHeaderFromJSON parses a header from an JSON data dump.
func
NewHeaderFromJSON
(
data
string
)
(
*
Header
,
error
)
{
h
:=
&
Header
{
header
:
new
(
types
.
Header
),
}
if
err
:=
json
.
Unmarshal
([]
byte
(
data
),
h
.
header
);
err
!=
nil
{
return
nil
,
err
}
return
h
,
nil
}
// EncodeJSON encodes a header into an JSON data dump.
func
(
h
*
Header
)
EncodeJSON
()
(
string
,
error
)
{
data
,
err
:=
json
.
Marshal
(
h
.
header
)
return
string
(
data
),
err
}
// String implements the fmt.Stringer interface to print some semi-meaningful
// data dump of the header for debugging purposes.
func
(
h
*
Header
)
String
()
string
{
return
h
.
header
.
String
()
}
func
(
h
*
Header
)
GetParentHash
()
*
Hash
{
return
&
Hash
{
h
.
header
.
ParentHash
}
}
func
(
h
*
Header
)
GetUncleHash
()
*
Hash
{
return
&
Hash
{
h
.
header
.
UncleHash
}
}
func
(
h
*
Header
)
GetCoinbase
()
*
Address
{
return
&
Address
{
h
.
header
.
Coinbase
}
}
...
...
@@ -76,9 +117,7 @@ func (h *Header) GetTime() int64 { return h.header.Time.Int64() }
func
(
h
*
Header
)
GetExtra
()
[]
byte
{
return
h
.
header
.
Extra
}
func
(
h
*
Header
)
GetMixDigest
()
*
Hash
{
return
&
Hash
{
h
.
header
.
MixDigest
}
}
func
(
h
*
Header
)
GetNonce
()
*
Nonce
{
return
&
Nonce
{
h
.
header
.
Nonce
}
}
func
(
h
*
Header
)
GetHash
()
*
Hash
{
return
&
Hash
{
h
.
header
.
Hash
()}
}
func
(
h
*
Header
)
GetHashNoNonce
()
*
Hash
{
return
&
Hash
{
h
.
header
.
HashNoNonce
()}
}
func
(
h
*
Header
)
GetHash
()
*
Hash
{
return
&
Hash
{
h
.
header
.
Hash
()}
}
// Headers represents a slice of headers.
type
Headers
struct
{
headers
[]
*
types
.
Header
}
...
...
@@ -101,6 +140,45 @@ type Block struct {
block
*
types
.
Block
}
// NewBlockFromRLP parses a block from an RLP data dump.
func
NewBlockFromRLP
(
data
[]
byte
)
(
*
Block
,
error
)
{
b
:=
&
Block
{
block
:
new
(
types
.
Block
),
}
if
err
:=
rlp
.
DecodeBytes
(
data
,
b
.
block
);
err
!=
nil
{
return
nil
,
err
}
return
b
,
nil
}
// EncodeRLP encodes a block into an RLP data dump.
func
(
b
*
Block
)
EncodeRLP
()
([]
byte
,
error
)
{
return
rlp
.
EncodeToBytes
(
b
.
block
)
}
// NewBlockFromJSON parses a block from an JSON data dump.
func
NewBlockFromJSON
(
data
string
)
(
*
Block
,
error
)
{
b
:=
&
Block
{
block
:
new
(
types
.
Block
),
}
if
err
:=
json
.
Unmarshal
([]
byte
(
data
),
b
.
block
);
err
!=
nil
{
return
nil
,
err
}
return
b
,
nil
}
// EncodeJSON encodes a block into an JSON data dump.
func
(
b
*
Block
)
EncodeJSON
()
(
string
,
error
)
{
data
,
err
:=
json
.
Marshal
(
b
.
block
)
return
string
(
data
),
err
}
// String implements the fmt.Stringer interface to print some semi-meaningful
// data dump of the block for debugging purposes.
func
(
b
*
Block
)
String
()
string
{
return
b
.
block
.
String
()
}
func
(
b
*
Block
)
GetParentHash
()
*
Hash
{
return
&
Hash
{
b
.
block
.
ParentHash
()}
}
func
(
b
*
Block
)
GetUncleHash
()
*
Hash
{
return
&
Hash
{
b
.
block
.
UncleHash
()}
}
func
(
b
*
Block
)
GetCoinbase
()
*
Address
{
return
&
Address
{
b
.
block
.
Coinbase
()}
}
...
...
@@ -137,6 +215,45 @@ func NewTransaction(nonce int64, to *Address, amount, gasLimit, gasPrice *BigInt
return
&
Transaction
{
types
.
NewTransaction
(
uint64
(
nonce
),
to
.
address
,
amount
.
bigint
,
gasLimit
.
bigint
,
gasPrice
.
bigint
,
data
)}
}
// NewTransactionFromRLP parses a transaction from an RLP data dump.
func
NewTransactionFromRLP
(
data
[]
byte
)
(
*
Transaction
,
error
)
{
tx
:=
&
Transaction
{
tx
:
new
(
types
.
Transaction
),
}
if
err
:=
rlp
.
DecodeBytes
(
data
,
tx
.
tx
);
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// EncodeRLP encodes a transaction into an RLP data dump.
func
(
tx
*
Transaction
)
EncodeRLP
()
([]
byte
,
error
)
{
return
rlp
.
EncodeToBytes
(
tx
.
tx
)
}
// NewTransactionFromJSON parses a transaction from an JSON data dump.
func
NewTransactionFromJSON
(
data
string
)
(
*
Transaction
,
error
)
{
tx
:=
&
Transaction
{
tx
:
new
(
types
.
Transaction
),
}
if
err
:=
json
.
Unmarshal
([]
byte
(
data
),
tx
.
tx
);
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// EncodeJSON encodes a transaction into an JSON data dump.
func
(
tx
*
Transaction
)
EncodeJSON
()
(
string
,
error
)
{
data
,
err
:=
json
.
Marshal
(
tx
.
tx
)
return
string
(
data
),
err
}
// String implements the fmt.Stringer interface to print some semi-meaningful
// data dump of the transaction for debugging purposes.
func
(
tx
*
Transaction
)
String
()
string
{
return
tx
.
tx
.
String
()
}
func
(
tx
*
Transaction
)
GetData
()
[]
byte
{
return
tx
.
tx
.
Data
()
}
func
(
tx
*
Transaction
)
GetGas
()
int64
{
return
tx
.
tx
.
Gas
()
.
Int64
()
}
func
(
tx
*
Transaction
)
GetGasPrice
()
*
BigInt
{
return
&
BigInt
{
tx
.
tx
.
GasPrice
()}
}
...
...
@@ -185,6 +302,45 @@ type Receipt struct {
receipt
*
types
.
Receipt
}
// NewReceiptFromRLP parses a transaction receipt from an RLP data dump.
func
NewReceiptFromRLP
(
data
[]
byte
)
(
*
Receipt
,
error
)
{
r
:=
&
Receipt
{
receipt
:
new
(
types
.
Receipt
),
}
if
err
:=
rlp
.
DecodeBytes
(
data
,
r
.
receipt
);
err
!=
nil
{
return
nil
,
err
}
return
r
,
nil
}
// EncodeRLP encodes a transaction receipt into an RLP data dump.
func
(
r
*
Receipt
)
EncodeRLP
()
([]
byte
,
error
)
{
return
rlp
.
EncodeToBytes
(
r
.
receipt
)
}
// NewReceiptFromJSON parses a transaction receipt from an JSON data dump.
func
NewReceiptFromJSON
(
data
string
)
(
*
Receipt
,
error
)
{
r
:=
&
Receipt
{
receipt
:
new
(
types
.
Receipt
),
}
if
err
:=
json
.
Unmarshal
([]
byte
(
data
),
r
.
receipt
);
err
!=
nil
{
return
nil
,
err
}
return
r
,
nil
}
// EncodeJSON encodes a transaction receipt into an JSON data dump.
func
(
r
*
Receipt
)
EncodeJSON
()
(
string
,
error
)
{
data
,
err
:=
rlp
.
EncodeToBytes
(
r
.
receipt
)
return
string
(
data
),
err
}
// String implements the fmt.Stringer interface to print some semi-meaningful
// data dump of the transaction receipt for debugging purposes.
func
(
r
*
Receipt
)
String
()
string
{
return
r
.
receipt
.
String
()
}
func
(
r
*
Receipt
)
GetPostState
()
[]
byte
{
return
r
.
receipt
.
PostState
}
func
(
r
*
Receipt
)
GetCumulativeGasUsed
()
*
BigInt
{
return
&
BigInt
{
r
.
receipt
.
CumulativeGasUsed
}
}
func
(
r
*
Receipt
)
GetBloom
()
*
Bloom
{
return
&
Bloom
{
r
.
receipt
.
Bloom
}
}
...
...
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