common

package
v5.0.3 Latest Latest
Warning

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

Go to latest
Published: Oct 31, 2023 License: GPL-3.0, LGPL-3.0, LGPL-3.0-or-later Imports: 24 Imported by: 0

Documentation

Overview

Package common contains various helper functions.

Index

Constants

View Source
const (
	PosV1 = iota + 1
	PosV2
	PosV3
)
View Source
const (
	// GenNotationFunc wacom
	GenNotationFunc = iota
	// GenAssetFunc wacom
	GenAssetFunc
	// SendAssetFunc wacom
	SendAssetFunc
	// TimeLockFunc wacom
	TimeLockFunc
	// BuyTicketFunc wacom
	BuyTicketFunc
	// OldAssetValueChangeFunc wacom (deprecated)
	OldAssetValueChangeFunc
	// MakeSwapFunc wacom
	MakeSwapFunc
	// RecallSwapFunc wacom
	RecallSwapFunc
	// TakeSwapFunc wacom
	TakeSwapFunc
	// EmptyFunc wacom
	EmptyFunc
	// MakeSwapFuncExt wacom
	MakeSwapFuncExt
	// TakeSwapFuncExt wacom
	TakeSwapFuncExt
	// AssetValueChangeFunc wacom
	AssetValueChangeFunc
	// MakeMultiSwapFunc wacom
	MakeMultiSwapFunc
	// RecallMultiSwapFunc wacom
	RecallMultiSwapFunc
	// TakeMultiSwapFunc wacom
	TakeMultiSwapFunc
	// ReportIllegalFunc wacom
	ReportIllegalFunc
	// UnknownFunc
	UnknownFunc = 0xff
)
View Source
const (
	// TimeLockNow wacom
	TimeLockNow uint64 = 0
	// TimeLockForever wacom
	TimeLockForever uint64 = 0xffffffffffffffff
)
View Source
const (
	// HashLength is the expected length of the hash
	HashLength = 32
	// AddressLength is the expected length of the adddress
	AddressLength = 20
)

Lengths of hashes and addresses in bytes.

Variables

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

	BigMaxUint64 = new(big.Int).SetUint64(math.MaxUint64)
)

Common big integers often used

View Source
var (
	UseTestnetRule = false
	UseDevnetRule  = false

	MainnetConstantinopleEnableHeight *big.Int = nil
	TestnetConstantinopleEnableHeight *big.Int = big.NewInt(1577000)
	DevnetConstantinopleEnableHeight  *big.Int = big.NewInt(0)
)
View Source
var (
	// FSNCallAddress wacom
	FSNCallAddress = HexToAddress("0xffffffffffffffffffffffffffffffffffffffff")

	// TicketLogAddress wacom (deprecated)
	TicketLogAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffffe")

	// NotationKeyAddress wacom
	NotationKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffffd")

	// AssetKeyAddress wacom
	AssetKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffffc")

	// TicketKeyAddress wacom
	TicketKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffffb")

	// SwapKeyAddress wacom
	SwapKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffffa")

	// MultiSwapKeyAddress wacom
	MultiSwapKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffff9")

	// ReportIllegalAddress wacom
	ReportKeyAddress = HexToAddress("0xfffffffffffffffffffffffffffffffffffffff8")
)
View Source
var (
	// AutoBuyTicket wacom
	AutoBuyTicket = false
	// AutoBuyTicketChan wacom
	AutoBuyTicketChan = make(chan int, 10)

	// ReportIllegal wacom
	ReportIllegalChan = make(chan []byte)
)
View Source
var (
	// If a contract want to receive Fusion Asset and TimeLock from an EOA,
	// the contract must impl the following 'receiveAsset' interface.
	ReceiveAssetFuncHash = Keccak256Hash([]byte("receiveAsset(bytes32,uint64,uint64,uint8,uint256[])")) // = 0xda28283ac3f28139b37690353d09e3b910702b960661a29c039ad0e5b6460329

	LogFusionAssetReceivedTopic = Keccak256Hash([]byte("LogFusionAssetReceived(bytes32,address,uint256,uint64,uint64,uint8)")) // = 0x8a9c8666f57c1ade38343d03dc1d891f209af2efb28c551a4a2c96160e7a2a6b

	LogFusionAssetSentTopic = Keccak256Hash([]byte("LogFusionAssetSent(bytes32,address,uint256,uint64,uint64,uint8)")) // = 0xf9c07f165baf6a7868a16aa9de8b6f41fe0849ba33af6ece038847047c6606e7
)
View Source
var (
	ErrTransactionsFrozen = errors.New("all transactions unless buytickets are frozen")
	ErrAccountFrozen      = errors.New("account frozen")
)
View Source
var (
	VOTE1_FREEZE_TX_START uint64 = 739500
	VOTE1_FREEZE_TX_END   uint64 = 786000

	Vote1RefundAddress = HexToAddress("0xff948d492c31814dEde4CAA0af8824eF02Eb48D2")
	Vote1DrainList     = []Address{
		HexToAddress("0xb66cce16736feb5a50a9883675708027d3427c3c"),
		HexToAddress("0x782da6fb0562074ec21942a7829064a8c2bb05c4"),
		HexToAddress("0x6deed6878d062cd8754b3284306be814b215e332"),
	}
)
View Source
var (
	DebugMode = false
)
View Source
var MAINNET_FORKS = []uint64{
	739500,
	1818300,
}

mainnet fork heights

View Source
var OwnerUSANAssetID = HexToHash("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe")

OwnerUSANAssetID wacom

View Source
var SystemAsset = Asset{
	Name:        "Fusion",
	Symbol:      "FSN",
	Decimals:    18,
	Total:       new(big.Int).Mul(big.NewInt(81920000), big.NewInt(1000000000000000000)),
	ID:          SystemAssetID,
	Description: "https://fusion.org",
}

SystemAsset wacom

View Source
var SystemAssetID = HexToHash("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")

SystemAssetID wacom

View Source
var TESTNET_FORKS = []uint64{
	534500,
	1577000,
}

testnet fork heights

Functions

func AbsolutePath

func AbsolutePath(datadir string, filename string) string

AbsolutePath returns datadir + filename, or filename if it is absolute.

func BigUint64

func BigUint64(v *big.Int) (uint64, bool)

func Bytes2Hex

func Bytes2Hex(d []byte) string

Bytes2Hex returns the hexadecimal encoding of d.

func BytesToInt

func BytesToInt(b []byte) int

BytesToInt wacom

func BytesToUint32

func BytesToUint32(b []byte) uint32

BytesToUint32 wacom

func BytesToUint64

func BytesToUint64(b []byte) uint64

BytesToUint64 wacom

func CheckSwapTargets

func CheckSwapTargets(targets []Address, addr Address) error

func CopyBytes

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

CopyBytes returns an exact copy of the provided bytes.

func DebugCall

func DebugCall(callback func())

func DebugInfo

func DebugInfo(msg string, ctx ...interface{})

func DecodeFsnCallParam

func DecodeFsnCallParam(fsnCall *FSNCallParam, funcParam interface{}) (interface{}, error)

func DecodeTxInput

func DecodeTxInput(input []byte) (interface{}, error)

func FileExist

func FileExist(filePath string) bool

FileExist checks if a file exists at filePath.

func FromHex

func FromHex(s string) []byte

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

func GetBigInt

func GetBigInt(data []byte, start uint64, size uint64) *big.Int

func GetConstantinopleEnableHeight

func GetConstantinopleEnableHeight() *big.Int

func GetData

func GetData(data []byte, start uint64, size uint64) []byte

func GetForkHeight

func GetForkHeight(n int) uint64

func GetFsnCallFee

func GetFsnCallFee(to *Address, funcType FSNCallFunc) *big.Int

func GetPoSHashVersion

func GetPoSHashVersion(blockNumber *big.Int) int

func GetUint64

func GetUint64(data []byte, start uint64, size uint64) (uint64, bool)

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 InitDevnet

func InitDevnet()

func InitTestnet

func InitTestnet()

func IntToBytes

func IntToBytes(n int) []byte

IntToBytes wacom

func IsFsnCall

func IsFsnCall(to *Address) bool

func IsHardFork

func IsHardFork(n int, blockNumber *big.Int) bool

func IsHeaderSnapCheckingEnabled

func IsHeaderSnapCheckingEnabled(blockNumber *big.Int) bool

func IsHexAddress

func IsHexAddress(s string) bool

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

func IsMultipleMiningCheckingEnabled

func IsMultipleMiningCheckingEnabled(blockNumber *big.Int) bool

func IsPrivateSwapCheckingEnabled

func IsPrivateSwapCheckingEnabled(blockNumber *big.Int) bool

func IsReceiveAssetPayableTx

func IsReceiveAssetPayableTx(blockNumber *big.Int, input []byte) bool

func IsSmartTransferEnabled

func IsSmartTransferEnabled(blockNumber *big.Int) bool

func IsVote1ForkBlock

func IsVote1ForkBlock(blockNumber *big.Int) bool

func IsWholeAsset

func IsWholeAsset(start, end, timestamp uint64) bool

func LeftPadBytes

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

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

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 MaxUint64

func MaxUint64(x, y uint64) uint64

func MinUint64

func MinUint64(x, y uint64) uint64

func ParseHexOrString

func ParseHexOrString(str string) ([]byte, error)

ParseHexOrString tries to hexdecode b, but if the prefix is missing, it instead just returns the raw bytes

func ParseReceiveAssetPayableTxInput

func ParseReceiveAssetPayableTxInput(p *TransferTimeLockParam, input []byte, timestamp uint64) error

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

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

func TicketPrice

func TicketPrice(blocknumber *big.Int) *big.Int

TicketPrice place holder for ticket price

func ToHex deprecated

func ToHex(b []byte) string

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

Deprecated: use hexutil.Encode instead.

func Uint32ToBytes

func Uint32ToBytes(n uint32) []byte

Uint32ToBytes wacom

func Uint64ToBytes

func Uint64ToBytes(n uint64) []byte

Uint64ToBytes wacom

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

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

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

Big converts an address to a big integer.

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

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

func (Address) IsSpecialKeyAddress

func (addr Address) IsSpecialKeyAddress() bool

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) 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 {
	ID          Hash
	Owner       Address
	Name        string
	Symbol      string
	Decimals    uint8
	Total       *big.Int `json:",string"`
	CanChange   bool
	Description string
}

Asset wacom

func (*Asset) MarshalJSON

func (u *Asset) MarshalJSON() ([]byte, error)

type AssetValueChangeExArgs

type AssetValueChangeExArgs struct {
	FusionBaseArgs
	AssetID     Hash         `json:"asset"`
	To          Address      `json:"to"`
	Value       *hexutil.Big `json:"value"`
	IsInc       bool         `json:"isInc"`
	TransacData string       `json:"transacData"`
}

func (*AssetValueChangeExArgs) ToData

func (args *AssetValueChangeExArgs) ToData() ([]byte, error)

func (*AssetValueChangeExArgs) ToParam

type AssetValueChangeExParam

type AssetValueChangeExParam struct {
	AssetID     Hash
	To          Address
	Value       *big.Int `json:",string"`
	IsInc       bool
	TransacData string
}

AssetValueChangeExParam wacom

func (*AssetValueChangeExParam) Check

func (p *AssetValueChangeExParam) Check(blockNumber *big.Int) error

Check wacom

func (*AssetValueChangeExParam) ToBytes

func (p *AssetValueChangeExParam) ToBytes() ([]byte, error)

ToBytes wacom

type BuyTicketArgs

type BuyTicketArgs struct {
	FusionBaseArgs
	Start *hexutil.Uint64 `json:"start"`
	End   *hexutil.Uint64 `json:"end"`
}

BuyTicketArgs wacom

func (*BuyTicketArgs) Init

func (args *BuyTicketArgs) Init(defStart uint64)

func (*BuyTicketArgs) ToData

func (args *BuyTicketArgs) ToData() ([]byte, error)

func (*BuyTicketArgs) ToParam

func (args *BuyTicketArgs) ToParam() *BuyTicketParam

type BuyTicketParam

type BuyTicketParam struct {
	Start uint64
	End   uint64
}

BuyTicketParam wacom

func (*BuyTicketParam) Check

func (p *BuyTicketParam) Check(blockNumber *big.Int, timestamp uint64) error

Check wacom

func (*BuyTicketParam) ToBytes

func (p *BuyTicketParam) ToBytes() ([]byte, error)

ToBytes wacom

type EmptyParam

type EmptyParam struct{}

func (*EmptyParam) ToBytes

func (p *EmptyParam) ToBytes() ([]byte, error)

type FSNBaseArgsInterface

type FSNBaseArgsInterface interface {
	BaseArgs() *FusionBaseArgs
	ToData() ([]byte, error)
}

type FSNCallFunc

type FSNCallFunc uint8

FSNCallFunc wacom

func (FSNCallFunc) Name

func (f FSNCallFunc) Name() string

type FSNCallParam

type FSNCallParam struct {
	Func FSNCallFunc
	Data []byte
}

///////////////// param type /////////////////////// FSNCallParam wacom

func (*FSNCallParam) Check

func (p *FSNCallParam) Check(blockNumber *big.Int) error

///////////////// param checking /////////////////////// Check wacom

func (*FSNCallParam) ToBytes

func (p *FSNCallParam) ToBytes() ([]byte, error)

///////////////// param ToBytes /////////////////////// ToBytes wacom

type FcSendAssetFlag

type FcSendAssetFlag uint8
const (
	FcUseAny                FcSendAssetFlag = iota // 0
	FcUseAnyToTimeLock                             // 1
	FcUseTimeLock                                  // 2
	FcUseTimeLockToTimeLock                        // 3
	FcUseAsset                                     // 4
	FcUseAssetToTimeLock                           // 5
	FcInvalidSendAssetFlag
)

func (FcSendAssetFlag) IsToTimeLock

func (flag FcSendAssetFlag) IsToTimeLock() bool

func (FcSendAssetFlag) IsUseAsset

func (flag FcSendAssetFlag) IsUseAsset() bool

func (FcSendAssetFlag) IsUseTimeLock

func (flag FcSendAssetFlag) IsUseTimeLock() bool

type FusionBaseArgs

type FusionBaseArgs struct {
	From     Address         `json:"from"`
	Gas      *hexutil.Uint64 `json:"gas"`
	GasPrice *hexutil.Big    `json:"gasPrice"`
	Nonce    *hexutil.Uint64 `json:"nonce"`
}

FusionBaseArgs wacom

func (*FusionBaseArgs) BaseArgs

func (args *FusionBaseArgs) BaseArgs() *FusionBaseArgs

func (*FusionBaseArgs) ToData

func (args *FusionBaseArgs) ToData() ([]byte, error)

type GenAssetArgs

type GenAssetArgs struct {
	FusionBaseArgs
	Name        string       `json:"name"`
	Symbol      string       `json:"symbol"`
	Decimals    uint8        `json:"decimals"`
	Total       *hexutil.Big `json:"total"`
	CanChange   bool         `json:"canChange"`
	Description string       `json:"description"`
}

GenAssetArgs wacom

func (*GenAssetArgs) ToData

func (args *GenAssetArgs) ToData() ([]byte, error)

func (*GenAssetArgs) ToParam

func (args *GenAssetArgs) ToParam() *GenAssetParam

type GenAssetParam

type GenAssetParam struct {
	Name        string
	Symbol      string
	Decimals    uint8
	Total       *big.Int `json:",string"`
	CanChange   bool
	Description string
}

GenAssetParam wacom

func (*GenAssetParam) Check

func (p *GenAssetParam) Check(blockNumber *big.Int) error

Check wacom

func (*GenAssetParam) ToAsset

func (p *GenAssetParam) ToAsset() Asset

ToAsset wacom

func (*GenAssetParam) ToBytes

func (p *GenAssetParam) ToBytes() ([]byte, error)

ToBytes wacom

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 Keccak256Hash

func Keccak256Hash(data ...[]byte) (h Hash)

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

func (h Hash) TerminalString() string

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

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 KeyValue

type KeyValue struct {
	Key   string
	Value interface{}
}

KeyValue wacom

func NewKeyValue

func NewKeyValue(name string, v interface{}) *KeyValue

NewKeyValue wacom

type MakeMultiSwapArgs

type MakeMultiSwapArgs struct {
	FusionBaseArgs
	FromAssetID   []Hash
	FromStartTime []*hexutil.Uint64
	FromEndTime   []*hexutil.Uint64
	MinFromAmount []*hexutil.Big
	ToAssetID     []Hash
	ToStartTime   []*hexutil.Uint64
	ToEndTime     []*hexutil.Uint64
	MinToAmount   []*hexutil.Big
	SwapSize      *big.Int
	Targes        []Address
	Time          *big.Int
	Description   string
}

MakeMultiSwapArgs wacom

func (*MakeMultiSwapArgs) Init

func (args *MakeMultiSwapArgs) Init(time *big.Int)

func (*MakeMultiSwapArgs) ToData

func (args *MakeMultiSwapArgs) ToData() ([]byte, error)

func (*MakeMultiSwapArgs) ToParam

func (args *MakeMultiSwapArgs) ToParam() *MakeMultiSwapParam

type MakeMultiSwapParam

type MakeMultiSwapParam struct {
	FromAssetID   []Hash
	FromStartTime []uint64
	FromEndTime   []uint64
	MinFromAmount []*big.Int `json:",string"`
	ToAssetID     []Hash
	ToStartTime   []uint64
	ToEndTime     []uint64
	MinToAmount   []*big.Int `json:",string"`
	SwapSize      *big.Int   `json:",string"`
	Targes        []Address
	Time          *big.Int
	Description   string
}

MakeMultiSwapParam wacom

func (*MakeMultiSwapParam) Check

func (p *MakeMultiSwapParam) Check(blockNumber *big.Int, timestamp uint64) error

Check wacom

func (*MakeMultiSwapParam) ToBytes

func (p *MakeMultiSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type MakeSwapArgs

type MakeSwapArgs struct {
	FusionBaseArgs
	FromAssetID   Hash
	FromStartTime *hexutil.Uint64
	FromEndTime   *hexutil.Uint64
	MinFromAmount *hexutil.Big
	ToAssetID     Hash
	ToStartTime   *hexutil.Uint64
	ToEndTime     *hexutil.Uint64
	MinToAmount   *hexutil.Big
	SwapSize      *big.Int
	Targes        []Address
	Time          *big.Int
	Description   string
}

MakeSwapArgs wacom

func (*MakeSwapArgs) Init

func (args *MakeSwapArgs) Init(time *big.Int)

func (*MakeSwapArgs) ToData

func (args *MakeSwapArgs) ToData() ([]byte, error)

func (*MakeSwapArgs) ToParam

func (args *MakeSwapArgs) ToParam() *MakeSwapParam

type MakeSwapParam

type MakeSwapParam struct {
	FromAssetID   Hash
	FromStartTime uint64
	FromEndTime   uint64
	MinFromAmount *big.Int `json:",string"`
	ToAssetID     Hash
	ToStartTime   uint64
	ToEndTime     uint64
	MinToAmount   *big.Int `json:",string"`
	SwapSize      *big.Int `json:",string"`
	Targes        []Address
	Time          *big.Int
	Description   string
}

MakeSwapParam wacom

func (*MakeSwapParam) Check

func (p *MakeSwapParam) Check(blockNumber *big.Int, timestamp uint64) error

Check wacom

func (*MakeSwapParam) ToBytes

func (p *MakeSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type MixedcaseAddress

type MixedcaseAddress struct {
	// contains filtered or unexported fields
}

MixedcaseAddress retains the original string, which may or may not be correctly checksummed

func NewMixedcaseAddress

func NewMixedcaseAddress(addr Address) MixedcaseAddress

NewMixedcaseAddress constructor (mainly for testing)

func NewMixedcaseAddressFromString

func NewMixedcaseAddressFromString(hexaddr string) (*MixedcaseAddress, error)

NewMixedcaseAddressFromString is mainly meant for unit-testing

func (*MixedcaseAddress) Address

func (ma *MixedcaseAddress) Address() Address

Address returns the address

func (*MixedcaseAddress) MarshalJSON

func (ma *MixedcaseAddress) MarshalJSON() ([]byte, error)

MarshalJSON marshals the original value

func (*MixedcaseAddress) Original

func (ma *MixedcaseAddress) Original() string

Original returns the mixed-case input string

func (*MixedcaseAddress) String

func (ma *MixedcaseAddress) String() string

String implements fmt.Stringer

func (*MixedcaseAddress) UnmarshalJSON

func (ma *MixedcaseAddress) UnmarshalJSON(input []byte) error

UnmarshalJSON parses MixedcaseAddress

func (*MixedcaseAddress) ValidChecksum

func (ma *MixedcaseAddress) ValidChecksum() bool

ValidChecksum returns true if the address has valid checksum

type MultiSwap

type MultiSwap struct {
	ID            Hash
	Owner         Address
	FromAssetID   []Hash
	FromStartTime []uint64
	FromEndTime   []uint64
	MinFromAmount []*big.Int `json:",string"`
	ToAssetID     []Hash
	ToStartTime   []uint64
	ToEndTime     []uint64
	MinToAmount   []*big.Int `json:",string"`
	SwapSize      *big.Int   `json:",string"`
	Targes        []Address
	Time          *big.Int // Provides information for TIME
	Description   string
	Notation      uint64
}

MultiSwap wacom

type PrettyAge

type PrettyAge time.Time

PrettyAge is a pretty printed version of a time.Duration value that rounds the values up to a single most significant unit, days/weeks/years included.

func (PrettyAge) String

func (t PrettyAge) String() string

String implements the Stringer interface, allowing pretty printing of duration values rounded to the most significant time unit.

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 RecallMultiSwapArgs

type RecallMultiSwapArgs struct {
	FusionBaseArgs
	SwapID Hash
}

RecallMultiSwapArgs wacom

func (*RecallMultiSwapArgs) ToData

func (args *RecallMultiSwapArgs) ToData() ([]byte, error)

func (*RecallMultiSwapArgs) ToParam

func (args *RecallMultiSwapArgs) ToParam() *RecallMultiSwapParam

type RecallMultiSwapParam

type RecallMultiSwapParam struct {
	SwapID Hash
}

RecallMultiSwapParam wacom

func (*RecallMultiSwapParam) Check

func (p *RecallMultiSwapParam) Check(blockNumber *big.Int, swap *MultiSwap) error

Check wacom

func (*RecallMultiSwapParam) ToBytes

func (p *RecallMultiSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type RecallSwapArgs

type RecallSwapArgs struct {
	FusionBaseArgs
	SwapID Hash
}

RecallSwapArgs wacom

func (*RecallSwapArgs) ToData

func (args *RecallSwapArgs) ToData() ([]byte, error)

func (*RecallSwapArgs) ToParam

func (args *RecallSwapArgs) ToParam() *RecallSwapParam

type RecallSwapParam

type RecallSwapParam struct {
	SwapID Hash
}

RecallSwapParam wacom

func (*RecallSwapParam) Check

func (p *RecallSwapParam) Check(blockNumber *big.Int, swap *Swap) error

Check wacom

func (*RecallSwapParam) ToBytes

func (p *RecallSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type SendAssetArgs

type SendAssetArgs struct {
	FusionBaseArgs
	AssetID Hash         `json:"asset"`
	To      Address      `json:"to"`
	ToUSAN  uint64       `json:"toUSAN"`
	Value   *hexutil.Big `json:"value"`
}

SendAssetArgs wacom

func (*SendAssetArgs) ToData

func (args *SendAssetArgs) ToData() ([]byte, error)

func (*SendAssetArgs) ToParam

func (args *SendAssetArgs) ToParam() *SendAssetParam

type SendAssetParam

type SendAssetParam struct {
	AssetID Hash
	To      Address
	Value   *big.Int `json:",string"`
}

SendAssetParam wacom

func (*SendAssetParam) Check

func (p *SendAssetParam) Check(blockNumber *big.Int) error

Check wacom

func (*SendAssetParam) ToBytes

func (p *SendAssetParam) ToBytes() ([]byte, error)

ToBytes wacom

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 Swap

type Swap struct {
	ID            Hash
	Owner         Address
	FromAssetID   Hash
	FromStartTime uint64
	FromEndTime   uint64
	MinFromAmount *big.Int `json:",string"`
	ToAssetID     Hash
	ToStartTime   uint64
	ToEndTime     uint64
	MinToAmount   *big.Int `json:",string"`
	SwapSize      *big.Int `json:",string"`
	Targes        []Address
	Time          *big.Int // Provides information for TIME
	Description   string
	Notation      uint64
}

Swap wacom

type TailFlag

type TailFlag int
const (
	TailInBoth TailFlag = iota
	TailInFirst
	TailInSecond
)

type TakeMultiSwapArgs

type TakeMultiSwapArgs struct {
	FusionBaseArgs
	SwapID Hash
	Size   *big.Int
}

TakeSwapArgs wacom

func (*TakeMultiSwapArgs) ToData

func (args *TakeMultiSwapArgs) ToData() ([]byte, error)

func (*TakeMultiSwapArgs) ToParam

func (args *TakeMultiSwapArgs) ToParam() *TakeMultiSwapParam

type TakeMultiSwapParam

type TakeMultiSwapParam struct {
	SwapID Hash
	Size   *big.Int `json:",string"`
}

TakeMultiSwapParam wacom

func (*TakeMultiSwapParam) Check

func (p *TakeMultiSwapParam) Check(blockNumber *big.Int, swap *MultiSwap, timestamp uint64) error

Check wacom

func (*TakeMultiSwapParam) ToBytes

func (p *TakeMultiSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type TakeSwapArgs

type TakeSwapArgs struct {
	FusionBaseArgs
	SwapID Hash
	Size   *big.Int
}

TakeSwapArgs wacom

func (*TakeSwapArgs) ToData

func (args *TakeSwapArgs) ToData() ([]byte, error)

func (*TakeSwapArgs) ToParam

func (args *TakeSwapArgs) ToParam() *TakeSwapParam

type TakeSwapParam

type TakeSwapParam struct {
	SwapID Hash
	Size   *big.Int `json:",string"`
}

TakeSwapParam wacom

func (*TakeSwapParam) Check

func (p *TakeSwapParam) Check(blockNumber *big.Int, swap *Swap, timestamp uint64) error

Check wacom

func (*TakeSwapParam) ToBytes

func (p *TakeSwapParam) ToBytes() ([]byte, error)

ToBytes wacom

type Ticket

type Ticket struct {
	Owner Address
	TicketBody
}

func (*Ticket) MarshalJSON

func (t *Ticket) MarshalJSON() ([]byte, error)

func (*Ticket) String

func (t *Ticket) String() string

func (*Ticket) ToDisplay

func (t *Ticket) ToDisplay() TicketDisplay

type TicketBody

type TicketBody struct {
	ID         Hash
	Height     uint64
	StartTime  uint64
	ExpireTime uint64
}

Ticket wacom

func (*TicketBody) BlockHeight

func (t *TicketBody) BlockHeight() *big.Int

func (*TicketBody) IsInGenesis

func (t *TicketBody) IsInGenesis() bool

func (*TicketBody) Value

func (t *TicketBody) Value() *big.Int

type TicketBodySlice

type TicketBodySlice []TicketBody

func (TicketBodySlice) DeepCopy

func (s TicketBodySlice) DeepCopy() TicketBodySlice

type TicketDisplay

type TicketDisplay struct {
	Owner      Address
	Height     uint64
	StartTime  uint64
	ExpireTime uint64
	Value      *big.Int
}

type TicketPtrSlice

type TicketPtrSlice []*Ticket

func (TicketPtrSlice) String

func (s TicketPtrSlice) String() string

type TicketSlice

type TicketSlice []Ticket

func (TicketSlice) DeepCopy

func (s TicketSlice) DeepCopy() TicketSlice

func (TicketSlice) String

func (s TicketSlice) String() string

func (TicketSlice) ToMap

func (s TicketSlice) ToMap() map[Hash]TicketDisplay

type TicketsData

type TicketsData struct {
	Owner   Address
	Tickets TicketBodySlice
}

func (TicketsData) DeepCopy

func (s TicketsData) DeepCopy() TicketsData

func (TicketsData) ToMap

func (s TicketsData) ToMap() map[Hash]TicketDisplay

func (TicketsData) ToTicketSlice

func (s TicketsData) ToTicketSlice() TicketSlice

type TicketsDataSlice

type TicketsDataSlice []TicketsData

func (TicketsDataSlice) AddTicket

func (s TicketsDataSlice) AddTicket(ticket *Ticket) (TicketsDataSlice, error)

func (TicketsDataSlice) ClearExpiredTickets

func (s TicketsDataSlice) ClearExpiredTickets(timestamp uint64) (TicketsDataSlice, error)

func (TicketsDataSlice) DeepCopy

func (s TicketsDataSlice) DeepCopy() TicketsDataSlice

func (TicketsDataSlice) Get

func (s TicketsDataSlice) Get(id Hash) (*Ticket, error)

func (TicketsDataSlice) NumberOfOwners

func (s TicketsDataSlice) NumberOfOwners() uint64

func (TicketsDataSlice) NumberOfTickets

func (s TicketsDataSlice) NumberOfTickets() uint64

func (TicketsDataSlice) NumberOfTicketsAndOwners

func (s TicketsDataSlice) NumberOfTicketsAndOwners() (uint64, uint64)

func (TicketsDataSlice) NumberOfTicketsByAddress

func (s TicketsDataSlice) NumberOfTicketsByAddress(addr Address) uint64

func (TicketsDataSlice) RemoveTicket

func (s TicketsDataSlice) RemoveTicket(id Hash) (TicketsDataSlice, error)

func (TicketsDataSlice) ToMap

func (s TicketsDataSlice) ToMap() map[Hash]TicketDisplay

func (TicketsDataSlice) ToTicketSlice

func (s TicketsDataSlice) ToTicketSlice() TicketSlice

type TimeLock

type TimeLock struct {
	Items []*TimeLockItem
}

///////////////////////////// TimeLock /////////////////////////// TimeLock wacom

func GetSurplusTimeLock

func GetSurplusTimeLock(value *big.Int, start, end, timestamp uint64) *TimeLock

func GetTimeLock

func GetTimeLock(value *big.Int, start, end uint64) *TimeLock

func NewTimeLock

func NewTimeLock(items ...*TimeLockItem) *TimeLock

NewTimeLock wacom

func (*TimeLock) Add

func (z *TimeLock) Add(x, y *TimeLock) *TimeLock

Add wacom

func (*TimeLock) CanSub

func (z *TimeLock) CanSub(x *TimeLock) bool

func (*TimeLock) CheckValid

func (z *TimeLock) CheckValid()

func (*TimeLock) ClearExpired

func (z *TimeLock) ClearExpired(timestamp uint64) *TimeLock

func (*TimeLock) Clone

func (z *TimeLock) Clone() *TimeLock

Clone wacom

func (*TimeLock) Cmp

func (z *TimeLock) Cmp(x *TimeLock) int

Cmp wacom

func (*TimeLock) EqualTo

func (z *TimeLock) EqualTo(x *TimeLock) bool

func (*TimeLock) GetSpendableValue

func (z *TimeLock) GetSpendableValue(start, end uint64) *big.Int

func (*TimeLock) IsEmpty

func (z *TimeLock) IsEmpty() bool

func (*TimeLock) IsValid

func (z *TimeLock) IsValid() error

func (*TimeLock) Len

func (z *TimeLock) Len() int

func (*TimeLock) Less

func (z *TimeLock) Less(i, j int) bool

func (*TimeLock) RawString

func (z *TimeLock) RawString() string

func (*TimeLock) Set

func (z *TimeLock) Set(x *TimeLock) *TimeLock

Set wacom

func (*TimeLock) SetItems

func (z *TimeLock) SetItems(items []*TimeLockItem)

SetItems wacom

func (*TimeLock) String

func (z *TimeLock) String() string

String wacom

func (*TimeLock) Sub

func (z *TimeLock) Sub(x, y *TimeLock) *TimeLock

Sub wacom

func (*TimeLock) Swap

func (z *TimeLock) Swap(i, j int)

func (*TimeLock) ToDisplay

func (z *TimeLock) ToDisplay() *TimeLock

type TimeLockArgs

type TimeLockArgs struct {
	SendAssetArgs
	StartTime    *hexutil.Uint64 `json:"start"`
	EndTime      *hexutil.Uint64 `json:"end"`
	TimeLockType TimeLockType    `json:"type"`
}

TimeLockArgs wacom

func (*TimeLockArgs) Init

func (args *TimeLockArgs) Init(timeLockType TimeLockType)

func (*TimeLockArgs) ToData

func (args *TimeLockArgs) ToData() ([]byte, error)

func (*TimeLockArgs) ToParam

func (args *TimeLockArgs) ToParam() *TimeLockParam

type TimeLockItem

type TimeLockItem struct {
	StartTime uint64
	EndTime   uint64
	Value     *big.Int `json:",string"`
}

TimeLockItem wacom

func (*TimeLockItem) Add

func (*TimeLockItem) AdjustEnd

func (z *TimeLockItem) AdjustEnd(endTime uint64) *TimeLockItem

func (*TimeLockItem) AdjustStart

func (z *TimeLockItem) AdjustStart(startTime uint64) *TimeLockItem

func (*TimeLockItem) AdjustStartEnd

func (z *TimeLockItem) AdjustStartEnd(startTime uint64, endTime uint64) *TimeLockItem

func (*TimeLockItem) CanMerge

func (z *TimeLockItem) CanMerge(x *TimeLockItem) bool

func (*TimeLockItem) Clone

func (z *TimeLockItem) Clone() *TimeLockItem

func (*TimeLockItem) EqualRange

func (z *TimeLockItem) EqualRange(x *TimeLockItem) bool

func (*TimeLockItem) EqualTo

func (z *TimeLockItem) EqualTo(x *TimeLockItem) bool

func (*TimeLockItem) IsValid

func (z *TimeLockItem) IsValid() error

func (*TimeLockItem) MarshalJSON

func (u *TimeLockItem) MarshalJSON() ([]byte, error)

func (*TimeLockItem) Merge

func (z *TimeLockItem) Merge(x *TimeLockItem) *TimeLockItem

please ensure CanMerge condition is satisfied

func (*TimeLockItem) String

func (z *TimeLockItem) String() string

func (*TimeLockItem) Sub

func (*TimeLockItem) UnmarshalJSON

func (u *TimeLockItem) UnmarshalJSON(input []byte) error

type TimeLockParam

type TimeLockParam struct {
	Type      TimeLockType
	AssetID   Hash
	To        Address
	StartTime uint64
	EndTime   uint64
	Value     *big.Int `json:",string"`
}

TimeLockParam wacom

func (*TimeLockParam) Check

func (p *TimeLockParam) Check(blockNumber *big.Int, timestamp uint64) error

Check wacom

func (*TimeLockParam) ToBytes

func (p *TimeLockParam) ToBytes() ([]byte, error)

ToBytes wacom

type TimeLockType

type TimeLockType uint

TimeLockType wacom

const (
	AssetToTimeLock TimeLockType = iota
	TimeLockToTimeLock
	TimeLockToAsset
	SmartTransfer
)

TimeLockTypes wacom

type TransferTimeLockParam

type TransferTimeLockParam struct {
	AssetID     Hash
	StartTime   uint64
	EndTime     uint64
	Timestamp   uint64
	Flag        FcSendAssetFlag
	Value       *big.Int
	GasValue    *big.Int
	BlockNumber *big.Int
	IsReceive   bool
}

type UnprefixedAddress

type UnprefixedAddress Address

UnprefixedAddress 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.

Directories

Path Synopsis
Package bitutil implements fast bitwise operations.
Package bitutil implements fast bitwise operations.
Package compiler wraps the Solidity and Vyper compiler executables (solc; vyper).
Package compiler wraps the Solidity and Vyper compiler executables (solc; vyper).
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
Package overflow offers overflow-checked integer arithmetic operations for int, int32, and int64.
Package overflow offers overflow-checked integer arithmetic operations for int, int32, and int64.
Package prque implements a priority queue data structure supporting arbitrary value types and int64 priorities.
Package prque implements a priority queue data structure supporting arbitrary value types and int64 priorities.

Jump to

Keyboard shortcuts

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