tx_builder

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2024 License: MIT Imports: 22 Imported by: 1

Documentation

Index

Constants

View Source
const (
	MainNetAddressPrefix = 0x0
	TestNetAddressPrefix = 0x6f

	MainNetPubKeyPrefix = 0x0
	TestNetPubKeyPrefix = 0x6f

	MainNetSecretPrefix = 0x80
	TestNetSecretPrefix = 0xef
)
View Source
const (
	UseAddressPrefix = MainNetAddressPrefix

	UsePubKeyPrefix = MainNetPubKeyPrefix
	UseSecretPrefix = MainNetSecretPrefix
)
View Source
const (
	PrefixLength     = 1
	KeyCpsFlagLength = 1

	// HashLength is the expected length of the hash
	HashLength = 20
	// AddressLength is the expected length of the address
	AddressLength    = 20
	PrivateKeyLength = 32
	PubKeyLength     = 33
	CheckSumLength   = 4
)

Lengths of hashes and addresses in bytes.

View Source
const (
	// ExpireSeconds tx expire seconds
	ExpireSeconds = 43200
)

Variables

This section is empty.

Functions

func AddrToHexAddr

func AddrToHexAddr(addr string) (string, error)

func Bytes2Hex

func Bytes2Hex(d []byte) string

Bytes2Hex returns the hexadecimal encoding of d.

func CopyBytes

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

CopyBytes returns an exact copy of the provided bytes.

func FromHex

func FromHex(s string) []byte

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

func GetCompressPubKey

func GetCompressPubKey(pubKeyBytes []byte) ([]byte, error)

func Hex2Bytes

func Hex2Bytes(str string) []byte

Hex2Bytes returns the bytes represented by the hexadecimal string str.

func Hex2BytesFixed

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

Hex2BytesFixed returns bytes of a specified fixed length flen.

func HexAddrToAddr

func HexAddrToAddr(hexAddr string) (string, error)

func HexKeyToWifKey

func HexKeyToWifKey(hexKey string) (string, error)

func IsHexAddress

func IsHexAddress(s string) bool

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

func LeftPadBytes

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

LeftPadBytes zero-pads slice to the left up to length l.

func PackBytes

func PackBytes(v []byte) []byte

func PackString

func PackString(v string) []byte

func PackUint16

func PackUint16(v uint16) []byte

func PackUint32

func PackUint32(v uint32) []byte

func PackUint64

func PackUint64(v uint64) []byte

func PackUint8

func PackUint8(v uint8) []byte

func PackVarInt

func PackVarInt(v uint64) []byte

func PubKeyToAddr

func PubKeyToAddr(pubKey string) (string, error)

func RightPadBytes

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

RightPadBytes zero-pads slice to the right up to length l.

func ToHex

func ToHex(b []byte) string

ToHex returns the hex representation of b, prefixed with '0x'. For empty slices, the return value is "0x0".

func ToHexArray

func ToHexArray(b [][]byte) []string

ToHexArray creates a array of hex-string based on []byte

func Transfer

func Transfer(from, to, asset, amount, keyWif string) (txHash string, err error)

func TrimLeftZeroes

func TrimLeftZeroes(s []byte) []byte

TrimLeftZeroes returns a subslice of s without leading zeroes

func TrimRightZeroes

func TrimRightZeroes(s []byte) []byte

TrimRightZeroes returns a subslice of s without trailing zeroes

func WifKeyToAddr

func WifKeyToAddr(wifKey string) (string, error)

func WifKeyToHexKey

func WifKeyToHexKey(wifKey string) (string, error)

func Withdraw added in v0.1.5

func Withdraw(from, to, amount, memo, keyWif string) (txHash string, err error)

Types

type AccountBindOperation

type AccountBindOperation struct {
	Fee              Asset     `json:"fee"`
	CrosschainType   string    `json:"crosschain_type"`
	Addr             Address   `json:"addr"`
	AccountSignature Signature `json:"account_signature"`
	TunnelAddress    string    `json:"tunnel_address"`
	TunnelSignature  string    `json:"tunnel_signature"`
	GuaranteeId      string    `json:"guarantee_id,omitempty"`
}

func (*AccountBindOperation) Pack

func (to *AccountBindOperation) Pack() []byte

func (*AccountBindOperation) SetValue

func (to *AccountBindOperation) SetValue(keyWif string, fee uint64) error

type Address

type Address [AddressLength]byte

Address represents the 20 byte address of an Ethereum account.

func BigToAddress

func BigToAddress(b *big.Int) Address

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

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 string representation of the underlying address.

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

Hash converts an address to a hash by left-padding it with zeros.

func (Address) Hex

func (a Address) Hex() string

func (Address) ImplementsGraphQLType

func (a Address) ImplementsGraphQLType(name string) bool

ImplementsGraphQLType returns true if Hash implements the specified GraphQL type.

func (Address) MarshalText

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

MarshalText returns the hex representation of a.

func (*Address) Scan

func (a *Address) Scan(src interface{}) error

Scan implements Scanner for database/sql.

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) it will panic.

func (Address) String

func (a Address) String() string

String implements fmt.Stringer.

func (*Address) UnmarshalGraphQL

func (a *Address) UnmarshalGraphQL(input interface{}) error

UnmarshalGraphQL unmarshals the provided GraphQL query data.

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.

func (Address) Value

func (a Address) Value() (driver.Value, error)

Value implements valuer for database/sql.

type Asset

type Asset struct {
	Amount         int64  `json:"amount"`
	AssetId        string `json:"asset_id"`
	AssetIdNum     int64  `json:"-"`
	AssetPrecision int64  `json:"-"`
}

func (Asset) Pack

func (a Asset) Pack() []byte

func (*Asset) SetDefault

func (a *Asset) SetDefault()

type CrossChainWithdrawOperation added in v0.1.5

type CrossChainWithdrawOperation struct {
	Fee               Asset   `json:"fee"`
	WithdrawAccount   Address `json:"withdraw_account"`
	Amount            string  `json:"amount"`
	AssetSymbol       string  `json:"asset_symbol"`
	AssetId           string  `json:"asset_id"`
	CrossChainAccount string  `json:"crosschain_account"`
	Memo              string  `json:"memo"`
}

func (*CrossChainWithdrawOperation) Pack added in v0.1.5

func (to *CrossChainWithdrawOperation) Pack() []byte

func (*CrossChainWithdrawOperation) SetValue added in v0.1.5

func (to *CrossChainWithdrawOperation) SetValue(withdrawAddr string,
	amount string, assetSymbol string, assetId string, crossChainAccount string, memo string) error

type Hash

type Hash [HashLength]byte

Hash represents the 32 byte Keccak256 hash of arbitrary data.

func BigToHash

func BigToHash(b *big.Int) Hash

BigToHash sets byte representation of b to hash. If b is larger than len(h), b will be cropped from the left.

func BytesToHash

func BytesToHash(b []byte) Hash

BytesToHash sets b to hash. If b is larger than len(h), b will be cropped from the left.

func HexToHash

func HexToHash(s string) Hash

HexToHash sets byte representation of s to hash. If b is larger than len(h), b will be cropped from the left.

func (Hash) Big

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

Big converts a hash to a big integer.

func (Hash) Bytes

func (h Hash) Bytes() []byte

Bytes gets the byte representation of the underlying hash.

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

Hex converts a hash to a hex string.

func (Hash) ImplementsGraphQLType

func (Hash) ImplementsGraphQLType(name string) bool

ImplementsGraphQLType returns true if Hash implements the specified GraphQL type.

func (Hash) MarshalText

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

MarshalText returns the hex representation of h.

func (*Hash) Scan

func (h *Hash) Scan(src interface{}) error

Scan implements Scanner for database/sql.

func (*Hash) SetBytes

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

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) 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) UnmarshalGraphQL

func (h *Hash) UnmarshalGraphQL(input interface{}) error

UnmarshalGraphQL unmarshals the provided GraphQL query data.

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.

func (Hash) Value

func (h Hash) Value() (driver.Value, error)

Value implements valuer for database/sql.

type MintOperation

type MintOperation struct {
	Fee            Asset         `json:"fee"`
	Issuer         string        `json:"issuer"`
	AssetToIssue   Asset         `json:"asset_to_issue"`
	IssueToAccount string        `json:"issue_to_account"`
	IssueAddress   Address       `json:"issue_address"`
	Brc20Token     bool          `json:"brc20_token"`
	Memo           *interface{}  `json:"memo,omitempty"`
	Extensions     []interface{} `json:"extensions"`
}

func (*MintOperation) Pack

func (to *MintOperation) Pack() []byte

func (*MintOperation) SetValue

func (to *MintOperation) SetValue(issueAddr string,
	issueAssetId string, issueAssetIdNum int64, issueAmount int64, fee uint64) error

type OperationPair

type OperationPair [2]interface{}

type OperationType

type OperationType interface {
	Pack() []byte
}

type Signature

type Signature []byte

func (Signature) MarshalText

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

func (*Signature) UnmarshalText

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

type Transaction

type Transaction struct {
	RefBlockNum    uint16          `json:"ref_block_num"`
	RefBlockPrefix uint32          `json:"ref_block_prefix"`
	Expiration     UTCTime         `json:"expiration"`
	Operations     []OperationPair `json:"operations"`
	Extensions     []interface{}   `json:"extensions"`
	NoncePow       uint64          `json:"nonce"`
	Signatures     []Signature     `json:"signatures"`
}

func BuildTxAccountBind

func BuildTxAccountBind(refBlockNum uint16, refBlockPrefix uint32,
	keyWif string, fee uint64) (string, []byte, *Transaction, error)

func BuildTxMint

func BuildTxMint(refBlockNum uint16, refBlockPrefix uint32,
	issueAddr string,
	issueAssetId string, issueAssetIdNum int64, issueAmount int64, fee uint64) (string, []byte, *Transaction, error)

func BuildTxTransfer

func BuildTxTransfer(refBlockNum uint16, refBlockPrefix uint32,
	fromAddr string, toAddr, assetName string, amount uint64, fee uint64) (string, []byte, *Transaction, error)

func BuildTxWithdraw added in v0.1.5

func BuildTxWithdraw(refBlockNum uint16, refBlockPrefix uint32,
	withdrawAccount string, amount string, toAddr string, memo string) (string, []byte, *Transaction, error)

func SignTx

func SignTx(chainIdHex string, tx *Transaction, keyWif string) ([]byte, *Transaction, error)

func (*Transaction) Pack

func (tx *Transaction) Pack() []byte

type TransferOperation

type TransferOperation struct {
	Fee         Asset         `json:"fee"`
	GuaranteeId string        `json:"guarantee_id,omitempty"`
	From        string        `json:"from"`
	To          string        `json:"to"`
	FromAddr    Address       `json:"from_addr"`
	ToAddr      Address       `json:"to_addr"`
	Amount      Asset         `json:"amount"`
	Memo        *interface{}  `json:"memo,omitempty"`
	Extensions  []interface{} `json:"extensions"`
}

func (*TransferOperation) Pack

func (to *TransferOperation) Pack() []byte

func (*TransferOperation) SetValue

func (to *TransferOperation) SetValue(fromAddr string, toAddr string, assetName string,
	amount uint64, fee uint64) error

type UTCTime

type UTCTime uint32

func (UTCTime) MarshalText

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

func (*UTCTime) UnmarshalText

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

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.

Jump to

Keyboard shortcuts

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