common

package
v0.0.0-...-e1f35ab Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2020 License: LGPL-3.0 Imports: 24 Imported by: 69

Documentation

Overview

Package common contains various helper functions.

Index

Constants

View Source
const (
	HashLength     = 32
	AddressLength  = 20
	DataHashLength = 4
)
View Source
const (
	LocalTxs   = 0
	InputTxs   = 1
	OutputTxs  = 2
	MaxTxs     = OutputTxs + 1
	InvalidTxs = 4
)

extend txs

View Source
const BitTotal = 2 // 13
View Source
const MaxShardingTotal = (2 << (BitTotal - 1))

Variables

View Source
var (
	Big1   = big.NewInt(1)
	Big2   = big.NewInt(2)
	Big3   = big.NewInt(3)
	Big0   = big.NewInt(0)
	Big32  = big.NewInt(32)
	Big256 = big.NewInt(0xff)
	Big257 = big.NewInt(257)
)

Common big integers often used

View Source
var (
	ErrInterfaceType = errors.New("interface type not match")
	ErrToDo          = errors.New("need to do")
)

Functions

func AbsolutePath

func AbsolutePath(Datadir string, filename string) string

func Bytes2Hex

func Bytes2Hex(d []byte) string

func CheckChan

func CheckChan() interface{}

func CheckEleSharding

func CheckEleSharding(rShard, lShard uint16, rEthHeight, lEthHeight uint64, rEleHeight, lEleHeight uint64) bool

func CompressBytes

func CompressBytes(data []byte) ([]byte, error)

func CopyBytes

func CopyBytes(b []byte) (copiedBytes []byte)

Copy bytes

Returns an exact copy of the provided bytes

func EleSyncRule

func EleSyncRule(remoteHeightEle, localHeightEle, remoteHeightEth, localHeightEth int64) bool

func EmptyAddress

func EmptyAddress(a Address) bool

func EmptyHash

func EmptyHash(h Hash) bool

func FileExist

func FileExist(filePath string) bool

func FromHex

func FromHex(s string) []byte

func GetAlign64

func GetAlign64(pos int64) int64

func GetBrotherSharding

func GetBrotherSharding(currentShard, totalShard uint16) int16

func GetChildSharding

func GetChildSharding(currentShard, totalShard uint16) (int16, int16)

func GetEleShardHeight

func GetEleShardHeight(rShard, lShard uint16) uint64

func GetEleSharding

func GetEleSharding(eBase *Address, lampHeight uint64) uint16

func GetErrBytes

func GetErrBytes(err error) []byte

func GetErrString

func GetErrString(errBytes []byte) string

func GetIPPort

func GetIPPort(ip string) (string, string)

Parameter ip format: *.*.*.*:*, or [::]:*

func GetNextShardingHeight

func GetNextShardingHeight(lampHeight uint64) uint64

func GetParentSharding

func GetParentSharding(currentShard, totalShard uint16) int16

func GetRealSharding

func GetRealSharding(address Address) uint16

Real sharding by address, sharding [0, 8191]

func GetSharding

func GetSharding(address Address, lampHeight uint64) uint16

func GetSharding2

func GetSharding2(realShard, totalShard uint16) uint16

func GetSharding3

func GetSharding3(realShard uint16, lampHeight uint64) uint16

func GetShardingHeight

func GetShardingHeight(s uint16) uint64

func GetShareObjData

func GetShareObjData(sharingCode string) (objId uint64, offset uint64, length uint64, price uint64, timeStart string, timeStop string, fileName string, sharerCSNodeID string, receiver string, key string, err error)

func GetTimeString

func GetTimeString(sec uint64) string

func GetTotalSharding

func GetTotalSharding(lampHeight uint64) uint16

func GetTxsType

func GetTxsType(eBase, from, to *Address, lampHeight uint64) int

func GetUnixTime

func GetUnixTime(str string) (uint64, error)

func GetconsenusBft

func GetconsenusBft() bool

convenient for test

func Hex2Bytes

func Hex2Bytes(str string) []byte

func Hex2BytesFixed

func Hex2BytesFixed(str string, flen int) []byte

func IsFreeAct

func IsFreeAct(h uint64, t uint8) bool

func IsHexAddress

func IsHexAddress(s string) bool

IsHexAddress verifies whether a string can represent a valid hex-encoded Ethereum address or not.

func IsSameIP

func IsSameIP(ip, ip2 string) bool

func IsSameSharding

func IsSameSharding(a, b Address, lampHeight uint64) bool

func KeyID

func KeyID(addr Address, objID uint64) string

func LeftPadBytes

func LeftPadBytes(slice []byte, l int) []byte

func LoadJSON

func LoadJSON(file string, val interface{}) error

LoadJSON reads the given file and unmarshals its content.

func MakeName

func MakeName(name, version string) string

MakeName creates a node name that follows the ethereum convention for such names. It adds the operation system name and Go runtime version the name.

func Max

func Max(x, y int64) int64

func Min

func Min(x, y int64) int64

func PrintDepricationWarning

func PrintDepricationWarning(str string)

PrintDepricationWarning prinst the given string in a box using fmt.Println.

func Report

func Report(extra ...interface{})

Report gives off a warning requesting the user to submit an issue to the github tracker.

func RightPadBytes

func RightPadBytes(slice []byte, l int) []byte

func ToHex

func ToHex(b []byte) string

func UncompressBytes

func UncompressBytes(data []byte) ([]byte, error)

Types

type Address

type Address [AddressLength]byte

Address represents the 20 byte address of an Ethereum account.

func BigToAddress

func BigToAddress(b *big.Int) Address

func BytesToAddress

func BytesToAddress(b []byte) Address

func HexToAddress

func HexToAddress(s string) Address

func StringToAddress

func StringToAddress(s string) Address

func (Address) Big

func (a Address) Big() *big.Int

func (Address) Bytes

func (a Address) Bytes() []byte

func (*Address) Equal

func (a *Address) Equal(b Address) bool

func (Address) Format

func (a Address) Format(s fmt.State, c rune)

Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.

func (Address) Hash

func (a Address) Hash() Hash

func (Address) Hex

func (a Address) Hex() string

Hex returns an EIP55-compliant hex string representation of the address.

func (Address) MarshalText

func (a Address) MarshalText() ([]byte, error)

MarshalText returns the hex representation of a.

func (*Address) PShortString

func (a *Address) PShortString() string

func (*Address) Set

func (a *Address) Set(other Address)

Sets a to other

func (*Address) SetBytes

func (a *Address) SetBytes(b []byte)

Sets the address to the value of b. If b is larger than len(a) it will panic

func (*Address) SetString

func (a *Address) SetString(s string)

Set string `s` to a. If s is larger than len(a) it will panic

func (Address) ShortString

func (a Address) ShortString() string

func (Address) Str

func (a Address) Str() string

Get the string representation of the underlying address

func (Address) String

func (a Address) String() string

String implements the stringer interface and is used also by the logger.

func (Address) ToHex

func (a Address) ToHex() string

Hex returns an EIP55-compliant hex string representation of the address(a hex string without 0x prefix).

func (*Address) UnmarshalJSON

func (a *Address) UnmarshalJSON(input []byte) error

UnmarshalJSON parses a hash in hex syntax.

func (*Address) UnmarshalText

func (a *Address) UnmarshalText(input []byte) error

UnmarshalText parses a hash in hex syntax.

type AddressNode

type AddressNode struct {
	Address Address
	NodeStr string
}

type Addresss

type Addresss []Address

type BlockIDNode

type BlockIDNode struct {
	BlockID uint64
	NodeStr string
}

type CSAuthData

type CSAuthData struct {
	Authorizer Address // authorizer
	StartTime  uint64  // authorize starttime
	EndTime    uint64  // authorize endtime
	Flow       uint64  // authorize flow
	// AuthAllowTime uint64  // authorizer allow time
	CSPickupTime  uint64 // pickup time
	AuthAllowFlow uint64 // authorizer allow flow
	CSPickupFlow  uint64 // pickup flow
	// UsedFlow      uint64 // used flow
	PayMethod uint8 // payment method, 0-time, 1-flow
}

type DataHash

type DataHash [DataHashLength]byte

func BytesToDataHash

func BytesToDataHash(b []byte) DataHash

func (*DataHash) Equal

func (h *DataHash) Equal(d DataHash) bool

func (*DataHash) SetBytes

func (h *DataHash) SetBytes(b []byte)

Sets the hash to the value of b. If b is larger than len(h), 'b' will be cropped (from the left).

type Hash

type Hash [HashLength]byte

Hash represents the 32 byte Keccak256 hash of arbitrary data.

func BigToHash

func BigToHash(b *big.Int) Hash

func BytesToHash

func BytesToHash(b []byte) Hash

func HexToHash

func HexToHash(s string) Hash

func StringToHash

func StringToHash(s string) Hash

func (Hash) Big

func (h Hash) Big() *big.Int

func (Hash) Bytes

func (h Hash) Bytes() []byte

func (*Hash) Equal

func (a *Hash) Equal(b Hash) bool

func (Hash) Format

func (h Hash) Format(s fmt.State, c rune)

Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.

func (Hash) Generate

func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value

Generate implements testing/quick.Generator.

func (Hash) Hex

func (h Hash) Hex() string

func (Hash) MarshalText

func (h Hash) MarshalText() ([]byte, error)

MarshalText returns the hex representation of h.

func (*Hash) PShortPointer

func (h *Hash) PShortPointer() string

func (*Hash) Set

func (h *Hash) Set(other Hash)

Sets h to other

func (*Hash) SetBytes

func (h *Hash) SetBytes(b []byte)

Sets the hash to the value of b. If b is larger than len(h), 'b' will be cropped (from the left).

func (*Hash) SetString

func (h *Hash) SetString(s string)

Set string `s` to h. If s is larger than len(h) s will be cropped (from left) to fit.

func (Hash) ShortString

func (h Hash) ShortString() string

func (Hash) Str

func (h Hash) Str() string

Get the string representation of the underlying hash

func (Hash) String

func (h Hash) String() string

String implements the stringer interface and is used also by the logger when doing full logging into a file.

func (Hash) TerminalString

func (h Hash) TerminalString() string

TerminalString implements log.TerminalStringer, formatting a string for console output during logging.

func (Hash) ToHex

func (h Hash) ToHex() string

a hex string without 0x prefix

func (*Hash) UnmarshalJSON

func (h *Hash) UnmarshalJSON(input []byte) error

UnmarshalJSON parses a hash in hex syntax.

func (*Hash) UnmarshalText

func (h *Hash) UnmarshalText(input []byte) error

UnmarshalText parses a hash in hex syntax.

type Hashs

type Hashs []Hash

type PrettyDuration

type PrettyDuration time.Duration

PrettyDuration is a pretty printed version of a time.Duration value that cuts the unnecessary precision off from the formatted textual representation.

func (PrettyDuration) String

func (d PrettyDuration) String() string

String implements the Stringer interface, allowing pretty printing of duration values rounded to three decimals.

type SDBMailData

type SDBMailData struct {
	Sender      string
	Title       string
	Content     string
	TimeStamp   string
	FileSharing string
	Signature   string
	EncryptType string
	Key         string
}

type SharingCodeST

type SharingCodeST struct {
	FileObjID         uint64 `json:"ObjectID"`
	FileName          string `json:"FileName"`
	FileOffset        uint64 `json:"FileOffset"`
	FileSize          uint64 `json:"FileSize"`
	Receiver          string `json:"Receiver"`
	StartTime         string `json:"TimeStart"`
	StopTime          string `json:"TimeStop"`
	Price             uint64 `json:"Price"`
	SharerAgentNodeID string `json:"SharerCSNodeID"`
	Key               string `json:"Key"`
	Signature         string `json:"Signature"`
}

func (*SharingCodeST) HashNoSignature

func (s *SharingCodeST) HashNoSignature() Hash

type StorageSize

type StorageSize float64

StorageSize is a wrapper around a float value that supports user friendly formatting.

func (StorageSize) String

func (s StorageSize) String() string

String implements the stringer interface.

func (StorageSize) TerminalString

func (s StorageSize) TerminalString() string

TerminalString implements log.TerminalStringer, formatting a string for console output during logging.

type TxMailData

type TxMailData struct {
	Title       string `json:"Title,omitempty"`
	Sender      string `json:"Sender,omitempty"`
	Receiver    string `json:"Receiver,omitempty"`
	Content     string `json:"Content,omitempty"`
	TimeStamp   string `json:"TimeStamp,omitempty"`
	FileSharing string `json:"FileSharing,omitempty"`

	Signature   string `json:"Signature,omitempty"`
	EncryptType string `json:"EncryptType,omitempty"`
	Key         string `json:"Key,omitempty"`
}

func (*TxMailData) UnmarshalJson

func (mail *TxMailData) UnmarshalJson(jsonStr string) error

type UnprefixedAddress

type UnprefixedAddress Address

UnprefixedHash allows marshaling an Address without 0x prefix.

func (UnprefixedAddress) MarshalText

func (a UnprefixedAddress) MarshalText() ([]byte, error)

MarshalText encodes the address as hex.

func (*UnprefixedAddress) UnmarshalText

func (a *UnprefixedAddress) UnmarshalText(input []byte) error

UnmarshalText decodes the address from hex. The 0x prefix is optional.

type UnprefixedHash

type UnprefixedHash Hash

UnprefixedHash allows marshaling a Hash without 0x prefix.

func (UnprefixedHash) MarshalText

func (h UnprefixedHash) MarshalText() ([]byte, error)

MarshalText encodes the hash as hex.

func (*UnprefixedHash) UnmarshalText

func (h *UnprefixedHash) UnmarshalText(input []byte) error

UnmarshalText decodes the hash from hex. The 0x prefix is optional.

type WalletCSAuthData

type WalletCSAuthData struct {
	CsAddr        Address // CsAddr
	StartTime     uint64  // authorize starttime
	EndTime       uint64  // authorize endtime
	Flow          uint64  // authorize flow
	CSPickupTime  uint64  // pickup time
	AuthAllowFlow uint64  // authorizer allow flow
	CSPickupFlow  uint64  // pickup flow
	PayMethod     uint8   // payment method, 0-time, 1-flow
	NodeID        string
}

Directories

Path Synopsis
Package bitutil implements fast bitwise operations.
Package bitutil implements fast bitwise operations.
Package compiler wraps the Solidity compiler executable (solc).
Package compiler wraps the Solidity compiler executable (solc).
Package hexutil implements hex encoding with 0x prefix.
Package hexutil implements hex encoding with 0x prefix.
Package math provides integer math utilities.
Package math provides integer math utilities.
package mclock is a wrapper for a monotonic clock source
package mclock is a wrapper for a monotonic clock source

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL