utils

package
v1.17.14 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: BSD-3-Clause Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HashLength is the expected length of the hash
	HashLength = 32
	// AddressLength is the expected length of the address
	AddressLength = 20
)

Variables

View Source
var (
	// Big0 is 0 represented as a big.Int
	Big0 = big.NewInt(0)
	// Big1 is 1 represented as a big.Int
	Big1 = big.NewInt(1)
)

Functions

func CopyBytes

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

CopyBytes returns an exact copy of the provided bytes.

func Decode

func Decode(input string) ([]byte, error)

Decode decodes a hex string with 0x prefix.

func DeleteIndex added in v1.4.18

func DeleteIndex[S ~[]E, E any](s S, i int) S

DeleteIndex moves the last element in the slice to index [i] and shrinks the size of the slice by 1.

This is an O(1) operation that allows the removal of an element from a slice when the order of the slice is not important.

If [i] is out of bounds, this function will panic.

func Detach added in v1.4.18

func Detach(ctx context.Context) context.Context

func EncodeToBytes

func EncodeToBytes(val interface{}) ([]byte, error)

EncodeToBytes encodes the given values to RLP. This is a minimal implementation specifically for CreateAddress.

func Err added in v1.4.18

func Err(errors ...error) error

func FromHex

func FromHex(s string) []byte

FromHex returns the bytes represented by the hexadecimal string s. s may be prefixed with "0x".

func GetStacktrace added in v1.4.18

func GetStacktrace(all bool) string

func IsSortedAndUnique added in v1.4.18

func IsSortedAndUnique[T Sortable[T]](s []T) bool

Returns true iff the elements in [s] are unique and sorted.

func IsSortedAndUniqueByHash added in v1.4.18

func IsSortedAndUniqueByHash[T ~[]byte](s []T) bool

Returns true iff the elements in [s] are unique and sorted based by their hashes.

func IsSortedAndUniqueOrdered added in v1.4.18

func IsSortedAndUniqueOrdered[T cmp.Ordered](s []T) bool

Returns true iff the elements in [s] are unique and sorted.

func IsSortedBytes added in v1.4.18

func IsSortedBytes[T ~[]byte](s []T) bool

Returns true iff the elements in [s] are sorted.

func MustDecode

func MustDecode(input string) []byte

MustDecode decodes a hex string with 0x prefix. It panics for invalid input.

func MustParseBig256

func MustParseBig256(s string) *big.Int

MustParseBig256 parses a hex or decimal string as a quantity of at most 256 bits. The result has 256 bits (32 bytes). Leading zeros are kept as required.

func PaddedBigBytes

func PaddedBigBytes(bigint *big.Int, n int) []byte

PaddedBigBytes encodes a big integer as a big-endian byte slice. The length of the slice is at least n bytes.

func ParseBig256

func ParseBig256(s string) (*big.Int, bool)

ParseBig256 parses a hex or decimal string as a quantity of at most 256 bits. The result has 256 bits (32 bytes). Leading zeros are kept as required.

func RandomBytes added in v1.4.18

func RandomBytes(n int) []byte

RandomBytes returns a slice of n random bytes Intended for use in testing

func Sort added in v1.4.18

func Sort[T Sortable[T]](s []T)

Sorts the elements of [s].

func SortByHash added in v1.4.18

func SortByHash[T ~[]byte](s []T)

Sorts the elements of [s] based on their hashes.

func UnmarshalFixedJSON

func UnmarshalFixedJSON(typ reflect.Type, input, out []byte) error

UnmarshalFixedJSON decodes the input as a string with 0x prefix and required length. The output given is assumed to be large enough.

func Zero added in v1.4.18

func Zero[T any]() (_ T)

Returns a new instance of a T.

Types

type Address

type Address [AddressLength]byte

Address represents the 20 byte address of an Ethereum account.

func BytesToAddress

func BytesToAddress(b []byte) Address

BytesToAddress returns Address with value b. If b is larger than len(h), b will be cropped from the left.

func HexToAddress

func HexToAddress(s string) Address

HexToAddress returns Address with byte values of s. If s is larger than len(h), s will be cropped from the left.

func (Address) Bytes

func (a Address) Bytes() []byte

Bytes gets the byte slice representation of the address.

func (*Address) SetBytes

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

SetBytes sets the address to the value of b. If b is larger than len(a), b will be cropped from the left.

func (Address) String

func (a Address) String() string

String implements fmt.Stringer.

type Atomic added in v1.4.18

type Atomic[T any] struct {
	// contains filtered or unexported fields
}

func NewAtomic added in v1.4.18

func NewAtomic[T any](value T) *Atomic[T]

func (*Atomic[T]) Get added in v1.4.18

func (a *Atomic[T]) Get() T

func (*Atomic[T]) MarshalJSON added in v1.4.18

func (a *Atomic[T]) MarshalJSON() ([]byte, error)

func (*Atomic[T]) Set added in v1.4.18

func (a *Atomic[T]) Set(value T)

func (*Atomic[T]) Swap added in v1.4.18

func (a *Atomic[T]) Swap(value T) T

func (*Atomic[T]) UnmarshalJSON added in v1.4.18

func (a *Atomic[T]) UnmarshalJSON(b []byte) error

type Bytes

type Bytes []byte

Bytes marshals/unmarshals as a JSON string with 0x prefix. The empty slice marshals as "0x".

func (Bytes) MarshalText

func (b Bytes) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler

type BytesPool added in v1.4.18

type BytesPool [intSize]sync.Pool

BytesPool tracks buckets of available buffers to be allocated. Each bucket allocates buffers of the following length:

0 1 3 7 15 31 63 127 ... MaxInt

In order to allocate a buffer of length 19 (for example), we calculate the number of bits required to represent 19 (5). And therefore allocate a slice from bucket 5, which has length 31. This is the bucket which produces the smallest slices that are at least length 19.

When replacing a buffer of length 19, we calculate the number of bits required to represent 20 (5). And therefore place the slice into bucket 4, which has length 15. This is the bucket which produces the largest slices that a length 19 slice can be used for.

func NewBytesPool added in v1.4.18

func NewBytesPool() *BytesPool

func (*BytesPool) Get added in v1.4.18

func (p *BytesPool) Get(length int) *[]byte

Get returns a non-nil pointer to a slice with the requested length.

It is not guaranteed for the returned bytes to have been zeroed.

func (*BytesPool) Put added in v1.4.18

func (p *BytesPool) Put(bytes *[]byte)

Put takes ownership of a non-nil pointer to a slice of bytes.

Note: this function takes ownership of the underlying array. So, the length of the provided slice is ignored and only its capacity is used.

type Hash

type Hash [HashLength]byte

Hash represents the 32 byte Keccak256 hash of arbitrary data.

type Sortable added in v1.4.18

type Sortable[T any] interface {
	Compare(T) int
}

Directories

Path Synopsis
crypto
bls
keychain/keychainmock
Package keychainmock is a generated GoMock package.
Package keychainmock is a generated GoMock package.
Package filesystem is a generated GoMock package.
Package filesystem is a generated GoMock package.
filesystemmock
Package filesystemmock is a generated GoMock package.
Package filesystemmock is a generated GoMock package.
Package hashing is a generated GoMock package.
Package hashing is a generated GoMock package.
hashingmock
Package hashingmock is a generated GoMock package.
Package hashingmock is a generated GoMock package.
iteratormock
Package iteratormock is a generated GoMock package.
Package iteratormock is a generated GoMock package.
resourcemock
Package resourcemock is a generated GoMock package.
Package resourcemock is a generated GoMock package.

Jump to

Keyboard shortcuts

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