OSDN Git Service

Merge pull request #2118 from Bytom/opt_trace_service
[bytom/bytom.git] / common / types.go
index 30e8a04..a6ac9fa 100644 (file)
@@ -1,26 +1,9 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
-
 package common
 
 import (
-       _"encoding/hex"
+       _ "encoding/hex"
        "encoding/json"
        "errors"
-       "fmt"
        "math/big"
        "math/rand"
        "reflect"
@@ -28,16 +11,15 @@ import (
 )
 
 const (
-       HashLength    = 32
-       AddressLength = 42
+       HashLength       = 32
+       AddressLength    = 42
        PubkeyHashLength = 20
 )
 
 var hashJsonLengthErr = errors.New("common: unmarshalJSON failed: hash must be exactly 32 bytes")
 
 type (
-       Hash    [HashLength]byte
-       Address [AddressLength]byte
+       Hash [HashLength]byte
 )
 
 func BytesToHash(b []byte) Hash {
@@ -45,17 +27,15 @@ func BytesToHash(b []byte) Hash {
        h.SetBytes(b)
        return h
 }
+
 func StringToHash(s string) Hash { return BytesToHash([]byte(s)) }
 func BigToHash(b *big.Int) Hash  { return BytesToHash(b.Bytes()) }
-func HexToHash(s string) Hash    { return BytesToHash(FromHex(s)) }
-
 
 // Don't use the default 'String' method in case we want to overwrite
 
 // Get the string representation of the underlying hash
 func (h Hash) Str() string   { return string(h[:]) }
 func (h Hash) Bytes() []byte { return h[:] }
-func (h Hash) Big() *big.Int { return Bytes2Big(h[:]) }
 func (h Hash) Hex() string   { return "0x" + Bytes2Hex(h[:]) }
 
 // UnmarshalJSON parses a hash in its hex from to a hash.
@@ -91,9 +71,6 @@ func (h *Hash) SetBytes(b []byte) {
        copy(h[HashLength-len(b):], b)
 }
 
-// Set string `s` to h. If s is larger than len(h) it will panic
-func (h *Hash) SetString(s string) { h.SetBytes([]byte(s)) }
-
 // Sets h to other
 func (h *Hash) Set(other Hash) {
        for i, v := range other {
@@ -113,87 +90,3 @@ func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value {
 func EmptyHash(h Hash) bool {
        return h == Hash{}
 }
-
-/////////// Address
-func BytesToAddress(b []byte) Address {
-       var a Address
-       a.SetBytes(b)
-       return a
-}
-func StringToAddress(s string) Address { return BytesToAddress([]byte(s)) }
-func BigToAddress(b *big.Int) Address  { return BytesToAddress(b.Bytes()) }
-func HexToAddress(s string) Address    { return BytesToAddress(FromHex(s)) }
-
-// IsHexAddress verifies whether a string can represent a valid hex-encoded
-// Ethereum address or not.
-func IsHexAddress(s string) bool {
-       if len(s) == 2+2*AddressLength && IsHex(s) {
-               return true
-       }
-       if len(s) == 2*AddressLength && IsHex("0x"+s) {
-               return true
-       }
-       return false
-}
-
-// Get the string representation of the underlying address
-func (a Address) Str() string   { return string(a[:]) }
-func (a Address) Bytes() []byte { return a[:] }
-func (a Address) Big() *big.Int { return Bytes2Big(a[:]) }
-func (a Address) Hash() Hash    { return BytesToHash(a[:]) }
-func (a Address) Hex() string   { return "0x" + Bytes2Hex(a[:]) }
-
-// Sets the address to the value of b. If b is larger than len(a) it will panic
-func (a *Address) SetBytes(b []byte) {
-       if len(b) > len(a) {
-               b = b[len(b)-AddressLength:]
-       }
-       copy(a[AddressLength-len(b):], b)
-}
-
-// Set string `s` to a. If s is larger than len(a) it will panic
-func (a *Address) SetString(s string) { a.SetBytes([]byte(s)) }
-
-// Sets a to other
-func (a *Address) Set(other Address) {
-       for i, v := range other {
-               a[i] = v
-       }
-}
-
-// Serialize given address to JSON
-func (a Address) MarshalJSON() ([]byte, error) {
-       return json.Marshal(a.Str())
-}
-
-// Parse address from raw json data
-func (a *Address) UnmarshalJSON(data []byte) error {
-       if len(data) > 2 && data[0] == '"' && data[len(data)-1] == '"' {
-               data = data[1 : len(data)-1]
-       }
-
-       if len(data) != AddressLength {
-               return fmt.Errorf("Invalid address length, expected %d got %d bytes", AddressLength, len(data))
-       }
-
-       _, res, err := AddressDecode("bm", string(data))
-       if err != nil {
-               return err
-       }
-
-       if len(res) != PubkeyHashLength {
-               return fmt.Errorf("Invalid address")
-       }
-       a.Set(BytesToAddress(data))
-       return nil
-}
-
-// PP Pretty Prints a byte slice in the following format:
-//     hex(value[:4])...(hex[len(value)-4:])
-func PP(value []byte) string {
-       if len(value) <= 8 {
-               return Bytes2Hex(value)
-       }
-
-       return fmt.Sprintf("%x...%x", value[:4], value[len(value)-4])
-}