good morning!!!!
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
bor
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Harbor Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
open
bor
Commits
953a9951
Unverified
Commit
953a9951
authored
May 10, 2017
by
Péter Szilágyi
Browse files
Options
Downloads
Patches
Plain Diff
mobile: add toString & rlp/json encoding for protocol types
parent
c5840ce1
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
mobile/types.go
+159
-3
159 additions, 3 deletions
mobile/types.go
with
159 additions
and
3 deletions
mobile/types.go
+
159
−
3
View file @
953a9951
...
...
@@ -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
()}
}
// 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
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment