Documentation ¶
Overview ¶
Package common contains various helper functions.
Index ¶
- Constants
- Variables
- func Bytes2Hex(d []byte) string
- func CopyBytes(b []byte) (copiedBytes []byte)
- func EmptyHash(h Hash) bool
- func FromHex(s string, prefix string) []byte
- func Hex2Bytes(str string) []byte
- func Hex2BytesFixed(str string, flen int) []byte
- func IsHexAddress(s string) bool
- func LeftPadBytes(slice []byte, l int) []byte
- func RightPadBytes(slice []byte, l int) []byte
- func ToHex(b []byte, prefix string) string
- type Account
- type ActiveCheckpoint
- type Address
- func (a Address) Big() *big.Int
- func (a Address) Bytes() []byte
- func (a *Address) Compare(a2 Address) int
- func (a Address) Format(s fmt.State, c rune)
- func (a Address) Hash() Hash
- func (a Address) Hex() string
- func (a Address) MarshalJSON() ([]byte, error)
- func (a Address) MarshalText() ([]byte, error)
- func (a *Address) Set(other Address)
- func (a *Address) SetBytes(b []byte)
- func (a *Address) SetString(s string)
- func (a Address) Str() string
- func (a Address) String() string
- func (a *Address) Unmarshal(input []byte) error
- func (a *Address) UnmarshalJSON(input []byte) error
- func (a *Address) UnmarshalText(input []byte) error
- type AppState
- type Balance
- type BitArray
- func (bA *BitArray) Bytes() []byte
- func (bA *BitArray) GetIndex(i int) bool
- func (bA *BitArray) MarshalJSON() ([]byte, error)
- func (bA *BitArray) SetIndex(i int, v bool) bool
- func (bA *BitArray) Size() uint
- func (bA *BitArray) String() string
- func (bA *BitArray) StringIndented(indent string) string
- func (bA *BitArray) UnmarshalJSON(bz []byte) error
- type BlockId
- type BtcActiveCheckpoint
- type BtcHeader
- type BtcSignature
- type Candidate
- type ChainID
- type Coin
- type CoinSymbol
- type Commit
- type CommitSig
- type Deposit
- type FinalizedCheckpoints
- type FrozenFund
- type Hash
- func (h Hash) Big() *big.Int
- func (h Hash) Bytes() []byte
- func (h Hash) Format(s fmt.State, c rune)
- func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value
- func (h Hash) Hex() string
- func (h Hash) MarshalText() ([]byte, error)
- func (h *Hash) Set(other Hash)
- func (h *Hash) SetBytes(b []byte)
- func (h *Hash) SetString(s string)
- func (h Hash) Str() string
- func (h Hash) String() string
- func (h Hash) TerminalString() string
- func (h *Hash) UnmarshalJSON(input []byte) error
- func (h *Hash) UnmarshalText(input []byte) error
- type Header
- type MntActiveCheckpoint
- type MntHeader
- type MntSignature
- type Multisig
- type PartSetHeader
- type Pubkey
- type RlpBlockID
- type RlpBtcHeader
- type RlpCommit
- type RlpCommitSig
- type RlpMntHeader
- type RlpMntSignedHeader
- type RlpPartSetHeader
- type RlpSimpleProof
- type RlpValidator
- type RlpValidatorSet
- type Signatory
- type SignatoryPubkey
- type SignatorySet
- type SignatorySetSnapshot
- type Stake
- type StateSignatorySet
- type StorageSize
- type TmAddress
- type Txid
- type UnprefixedAddress
- type UnprefixedHash
- type UsedCheck
- type Utxo
- type UtxoId
- type Validator
- type Version
- type Withdrawal
Constants ¶
const ( ChainTestnet = 0x02 ChainMainnet = 0x01 CurrentChainID = ChainMainnet BtcCheckpointInterval = 120 MntCheckpointInterval = 2 )
const ( HashLength = 32 AddressLength = 20 PubKeyLength = 32 CoinSymbolLength = 10 TxidLength = 32 UtxoIdLength = 36 )
Variables ¶
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
Functions ¶
func Hex2BytesFixed ¶
func IsHexAddress ¶
IsHexAddress verifies whether a string can represent a valid hex-encoded Minter address or not.
func LeftPadBytes ¶
func RightPadBytes ¶
Types ¶
type ActiveCheckpoint ¶
type ActiveCheckpoint struct { Btc BtcActiveCheckpoint `json:"btc"` Mnt MntActiveCheckpoint `json:"mnt"` }
type Address ¶
type Address [AddressLength]byte
func BigToAddress ¶
func BytesToAddress ¶
func HexToAddress ¶
func StringToAddress ¶
func (Address) Format ¶
Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.
func (Address) MarshalJSON ¶
func (Address) MarshalText ¶
MarshalText returns the hex representation of a.
func (*Address) SetBytes ¶
Sets the address to the value of b. If b is larger than len(a) it will panic
func (*Address) UnmarshalJSON ¶
UnmarshalJSON parses a hash in hex syntax.
func (*Address) UnmarshalText ¶
UnmarshalText parses a hash in hex syntax.
type AppState ¶
type AppState struct { Note string `json:"note"` StartHeight uint64 `json:"start_height"` Validators []Validator `json:"validators,omitempty"` Candidates []Candidate `json:"candidates,omitempty"` Accounts []Account `json:"accounts,omitempty"` Coins []Coin `json:"coins,omitempty"` FrozenFunds []FrozenFund `json:"frozen_funds,omitempty"` UsedChecks []UsedCheck `json:"used_checks,omitempty"` MaxGas uint64 `json:"max_gas"` TotalSlashed string `json:"total_slashed"` LastBtcCheckpointHeight uint64 LastMntCheckpointHeight uint64 SignatorySet StateSignatorySet `json:"signatory_set"` PendingBtcWithdrawals []Withdrawal `json:"pending_btc_withdrawals"` PendingMntWithdrawals []Withdrawal `json:"pending_mnt_withdrawals"` Utxos []Utxo `json:"utxos"` ProcessedDeposits []Deposit `json:"processed_deposits"` BtcHeaders []BtcHeader `json:"btc_headers"` MntHeaders []MntHeader `json:"mnt_headers"` FinalizedCheckpoints FinalizedCheckpoints `json:"finalized_checkpoints"` ActiveCheckpoint ActiveCheckpoint `json:"active_checkpoint"` }
type Balance ¶
type Balance struct { Coin CoinSymbol `json:"coin"` Value string `json:"value"` }
type BitArray ¶
type BitArray struct { Bits uint `json:"bits"` // NOTE: persisted via reflect, must be exported Elems []uint64 `json:"elems"` // NOTE: persisted via reflect, must be exported // contains filtered or unexported fields }
BitArray is a thread-safe implementation of a bit array.
func NewBitArray ¶
NewBitArray returns a new bit array. It returns nil if the number of bits is zero.
func (*BitArray) GetIndex ¶
GetIndex returns the bit at index i within the bit array. The behavior is undefined if i >= bA.Bits
func (*BitArray) MarshalJSON ¶
MarshalJSON implements json.Marshaler interface by marshaling bit array using a custom format: a string of '-' or 'x' where 'x' denotes the 1 bit.
func (*BitArray) SetIndex ¶
SetIndex sets the bit at index i within the bit array. The behavior is undefined if i >= bA.Bits
func (*BitArray) String ¶
String returns a string representation of BitArray: BA{<bit-string>}, where <bit-string> is a sequence of 'x' (1) and '_' (0). The <bit-string> includes spaces and newlines to help people. For a simple sequence of 'x' and '_' characters with no spaces or newlines, see the MarshalJSON() method. Example: "BA{_x_}" or "nil-BitArray" for nil.
func (*BitArray) StringIndented ¶
StringIndented returns the same thing as String(), but applies the indent at every 10th bit, and twice at every 50th bit.
func (*BitArray) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler interface by unmarshaling a custom JSON description.
type BlockId ¶
type BlockId struct { Hash string `json:"hash"` PartsHeader PartSetHeader `json:"parts_header"` }
type BtcActiveCheckpoint ¶
type BtcActiveCheckpoint struct { Withdrawals []Withdrawal `json:"withdrawals"` Utxos []Utxo `json:"utxos"` Signatures []BtcSignature `json:"signatures"` VotingPower uint64 `json:"voting_power"` }
type BtcSignature ¶
type BtcSignature struct { PubKey SignatoryPubkey `json:"pub_key"` Sigs [][64]byte `json:"sigs"` }
type Coin ¶
type Coin struct { Symbol CoinSymbol `json:"symbol"` Volume string `json:"volume"` }
type CoinSymbol ¶
type CoinSymbol [CoinSymbolLength]byte
func GetBaseCoin ¶
func GetBaseCoin() CoinSymbol
func StrToCoinSymbol ¶
func StrToCoinSymbol(s string) CoinSymbol
func (CoinSymbol) Bytes ¶
func (c CoinSymbol) Bytes() []byte
func (CoinSymbol) Compare ¶
func (c CoinSymbol) Compare(c2 CoinSymbol) int
func (CoinSymbol) IsBaseCoin ¶
func (c CoinSymbol) IsBaseCoin() bool
func (CoinSymbol) MarshalJSON ¶
func (c CoinSymbol) MarshalJSON() ([]byte, error)
func (CoinSymbol) String ¶
func (c CoinSymbol) String() string
func (*CoinSymbol) UnmarshalJSON ¶
func (c *CoinSymbol) UnmarshalJSON(input []byte) error
type Deposit ¶
type Deposit struct { MainnetTxid Txid `json:"mainnet_txid"` Coin CoinSymbol `json:"coin"` Amount string `json:"amount"` Owner Address `json:"owner"` }
type FinalizedCheckpoints ¶
type FrozenFund ¶
type FrozenFund struct { Height uint64 `json:"height"` Address Address `json:"address"` CandidateKey *Pubkey `json:"candidate_key,omitempty"` Coin CoinSymbol `json:"coin"` Value string `json:"value"` }
type Hash ¶
type Hash [HashLength]byte
Hash represents the 32 byte Keccak256 hash of arbitrary data.
func BytesToHash ¶
func StringToHash ¶
func (Hash) Format ¶
Format implements fmt.Formatter, forcing the byte slice to be formatted as is, without going through the stringer interface used for logging.
func (Hash) MarshalText ¶
MarshalText returns the hex representation of h.
func (*Hash) SetBytes ¶
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 ¶
Set string `s` to h. If s is larger than len(h) s will be cropped (from left) to fit.
func (Hash) String ¶
String implements the stringer interface and is used also by the logger when doing full logging into a file.
func (Hash) TerminalString ¶
TerminalString implements log.TerminalStringer, formatting a string for console output during logging.
func (*Hash) UnmarshalJSON ¶
UnmarshalJSON parses a hash in hex syntax.
func (*Hash) UnmarshalText ¶
UnmarshalText parses a hash in hex syntax.
type Header ¶
type Header struct { Version Version `json:"version"` ChainID string `json:"chain_id"` Height int64 `json:"height"` Time int64 `json:"time"` LastBlockID BlockId `json:"last_block_id"` LastCommitHash string `json:"last_commit_hash"` DataHash string `json:"data_hash"` ValidatorsHash string `json:"validators_hash"` NextValidatorsHash string `json:"next_validators_hash"` ConsensusHash string `json:"consensus_hash"` AppHash string `json:"app_hash"` LastResultsHash string `json:"last_results_hash"` EvidenceHash string `json:"evidence_hash"` ProposerAddress string `json:"proposer_address"` }
type MntActiveCheckpoint ¶
type MntActiveCheckpoint struct { Withdrawals []Withdrawal `json:"withdrawals"` Signatures []MntSignature `json:"signatures"` VotingPower uint64 `json:"voting_power"` }
type MntSignature ¶
type MntSignature struct { PubKey SignatoryPubkey `json:"pubkey"` Sig []byte `json:"sig"` }
type PartSetHeader ¶
type Pubkey ¶
type Pubkey [32]byte
func BytesToPubkey ¶
func HexToPubkey ¶
func (Pubkey) MarshalJSON ¶
func (Pubkey) MarshalText ¶
func (*Pubkey) UnmarshalJSON ¶
type RlpBlockID ¶
type RlpBlockID struct { Hash tmbytes.HexBytes PartsHeader RlpPartSetHeader }
type RlpBtcHeader ¶
type RlpBtcHeader struct { Version uint32 PrevBlock chainhash.Hash MerkleRoot chainhash.Hash Timestamp uint64 Bits uint32 Nonce uint32 }
func WireToRlp ¶
func WireToRlp(h wire.BlockHeader) RlpBtcHeader
func (RlpBtcHeader) Wire ¶
func (h RlpBtcHeader) Wire() wire.BlockHeader
type RlpCommit ¶
type RlpCommit struct { Height uint64 Round uint BlockID RlpBlockID Signatures []RlpCommitSig }
type RlpCommitSig ¶
type RlpMntHeader ¶
type RlpMntHeader struct { Version version.Consensus ChainID string Height uint64 Time uint64 LastBlockID RlpBlockID LastCommitHash tmbytes.HexBytes DataHash tmbytes.HexBytes ValidatorsHash tmbytes.HexBytes NextValidatorsHash tmbytes.HexBytes ConsensusHash tmbytes.HexBytes AppHash tmbytes.HexBytes LastResultsHash tmbytes.HexBytes EvidenceHash tmbytes.HexBytes ProposerAddress crypto.Address }
func (RlpMntHeader) ToTMType ¶
func (h RlpMntHeader) ToTMType() *tmtypes.Header
type RlpMntSignedHeader ¶
type RlpMntSignedHeader struct { Header RlpMntHeader Commit RlpCommit }
func TMSignedHeaderToRlp ¶
func TMSignedHeaderToRlp(h tmtypes.SignedHeader) RlpMntSignedHeader
func (RlpMntSignedHeader) ToTMType ¶
func (h RlpMntSignedHeader) ToTMType() tmtypes.SignedHeader
type RlpPartSetHeader ¶
type RlpSimpleProof ¶
func SimpleProofToRlp ¶
func SimpleProofToRlp(sp merkle.SimpleProof) RlpSimpleProof
func (RlpSimpleProof) ToTMType ¶
func (sp RlpSimpleProof) ToTMType() merkle.SimpleProof
type RlpValidator ¶
type RlpValidatorSet ¶
type RlpValidatorSet struct { Validators []RlpValidator Proposer RlpValidator }
func TMValidatorsSetToRlp ¶
func TMValidatorsSetToRlp(v tmtypes.ValidatorSet) RlpValidatorSet
func (RlpValidatorSet) ToTMType ¶
func (v RlpValidatorSet) ToTMType() tmtypes.ValidatorSet
type Signatory ¶
type Signatory struct { VotingPower uint64 `json:"voting_power"` PubKey SignatoryPubkey `json:"pub_key"` }
type SignatoryPubkey ¶
type SignatoryPubkey [33]byte
type SignatorySet ¶
type SignatorySet struct { Map map[SignatoryPubkey]Signatory `json:"map"` Set []Signatory `json:"set"` TotalVotingPower uint64 `json:"total_voting_power"` }
func (SignatorySet) TwoThirdsVotingPower ¶
func (s SignatorySet) TwoThirdsVotingPower() uint64
type SignatorySetSnapshot ¶
type SignatorySetSnapshot struct { Time uint64 `json:"time"` Signatories SignatorySet `json:"signatories"` }
type Stake ¶
type Stake struct { Owner Address `json:"owner"` Coin CoinSymbol `json:"coin"` Value string `json:"value"` BipValue string `json:"bip_value"` }
type StateSignatorySet ¶
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 Txid ¶
type Txid [TxidLength]byte
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 UtxoId ¶
type UtxoId [UtxoIdLength]byte