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
d42a56af
Commit
d42a56af
authored
Mar 02, 2017
by
Felix Lange
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common: add UnprefixedHash, UnprefixedAddress
parent
b4547a56
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
14 deletions
+30
-14
types.go
common/types.go
+30
-14
No files found.
common/types.go
View file @
d42a56af
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
package
common
package
common
import
(
import
(
"encoding/hex"
"fmt"
"fmt"
"math/big"
"math/big"
"math/rand"
"math/rand"
...
@@ -30,13 +31,8 @@ const (
...
@@ -30,13 +31,8 @@ const (
AddressLength
=
20
AddressLength
=
20
)
)
type
(
// Hash represents the 32 byte Keccak256 hash of arbitrary data.
// Hash represents the 32 byte Keccak256 hash of arbitrary data.
type
Hash
[
HashLength
]
byte
Hash
[
HashLength
]
byte
// Address represents the 20 byte address of an Ethereum account.
Address
[
AddressLength
]
byte
)
func
BytesToHash
(
b
[]
byte
)
Hash
{
func
BytesToHash
(
b
[]
byte
)
Hash
{
var
h
Hash
var
h
Hash
...
@@ -113,7 +109,24 @@ func EmptyHash(h Hash) bool {
...
@@ -113,7 +109,24 @@ func EmptyHash(h Hash) bool {
return
h
==
Hash
{}
return
h
==
Hash
{}
}
}
// UnprefixedHash allows marshaling a Hash without 0x prefix.
type
UnprefixedHash
Hash
// UnmarshalText decodes the hash from hex. The 0x prefix is optional.
func
(
h
*
UnprefixedHash
)
UnmarshalText
(
input
[]
byte
)
error
{
return
hexutil
.
UnmarshalFixedUnprefixedText
(
"UnprefixedHash"
,
input
,
h
[
:
])
}
// MarshalText encodes the hash as hex.
func
(
h
UnprefixedHash
)
MarshalText
()
([]
byte
,
error
)
{
return
[]
byte
(
hex
.
EncodeToString
(
h
[
:
])),
nil
}
/////////// Address
/////////// Address
// Address represents the 20 byte address of an Ethereum account.
type
Address
[
AddressLength
]
byte
func
BytesToAddress
(
b
[]
byte
)
Address
{
func
BytesToAddress
(
b
[]
byte
)
Address
{
var
a
Address
var
a
Address
a
.
SetBytes
(
b
)
a
.
SetBytes
(
b
)
...
@@ -181,12 +194,15 @@ func (a *Address) UnmarshalText(input []byte) error {
...
@@ -181,12 +194,15 @@ func (a *Address) UnmarshalText(input []byte) error {
return
hexutil
.
UnmarshalFixedText
(
"Address"
,
input
,
a
[
:
])
return
hexutil
.
UnmarshalFixedText
(
"Address"
,
input
,
a
[
:
])
}
}
// PP Pretty Prints a byte slice in the following format:
// UnprefixedHash allows marshaling an Address without 0x prefix.
// hex(value[:4])...(hex[len(value)-4:])
type
UnprefixedAddress
Address
func
PP
(
value
[]
byte
)
string
{
if
len
(
value
)
<=
8
{
// UnmarshalText decodes the address from hex. The 0x prefix is optional.
return
Bytes2Hex
(
value
)
func
(
a
*
UnprefixedAddress
)
UnmarshalText
(
input
[]
byte
)
error
{
}
return
hexutil
.
UnmarshalFixedUnprefixedText
(
"UnprefixedAddress"
,
input
,
a
[
:
])
}
return
fmt
.
Sprintf
(
"%x...%x"
,
value
[
:
4
],
value
[
len
(
value
)
-
4
])
// MarshalText encodes the address as hex.
func
(
a
UnprefixedAddress
)
MarshalText
()
([]
byte
,
error
)
{
return
[]
byte
(
hex
.
EncodeToString
(
a
[
:
])),
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