type ContractPrice struct {
PairId PairId
MarketPrice BigUint
}
- PairId: The contract pair id defined by zkLink.
- MarketPrice: The market price of the contract pair
type SpotPriceInfo struct {
TokenId TokenId
Price BigUint
}
- TokenId: The token id defined by zkLink.
- price: The spot price of the token.
The spot order type of taker and maker. it's a opaque data type.
func NewOrder(
accountId AccountId,
subAccountId SubAccountId,
slotId SlotId,
nonce Nonce,
baseTokenId TokenId,
quoteTokenId TokenId,
amount BigUint,
price BigUint,
isSell bool,
hasSubsidy bool,
makerFeeRate uint8,
takerFeeRate uint8,
signature *ZkLinkSignature
) *Order
Create a new Order.
input:
- accountId: the user account id
- subAccountId: the user sub account id
- slotId: the slot id of order
- nonce: the nonce of user account
- baseTokenId: the token id of the base token of trade pair, for example, "BTC" token id of "BTCUSDT" pair
- quoteTokenId: the token id of the quote token of trade pari, for example, "USDT" token id of "BTCUSDT" pair
- amount: the amount of base token
- price: the price of base token
- isSell: sell token or not
- hasSubsidy: subsidy only works for maker and makerFeeRate
- makeFeeRate: the fee maker rate, 100 means 1%, max is 2.56%
- takerFeeRate: the fee taker rate, 100 means 1%, max is 2.56%
- signature: optional, the L3 signature of the Order
func (*Order) GetSignature() ZkLinkSignature
Get the L3 signature of the Order
func (*Order) GetSignature() ZkLinkSignature {
Get the Order signature.
func (*Order) GetBytes() []uint8
Get the encoded bytes to create the L3 signature.
func (*Order) JsonStr() string
Get the json string of the Order.
func (*Order) IsValid() bool
Check if the Order is valid or not.
func (*Order) IsSignatureValid() bool
Check if the L3 signature is valid or not.
func (*Order) CreateSignedOrder(zklinkSigner *ZkLinkSigner) (*Order, error)
Returns a new order with L3 signature.
input:
- zklinkSigner: zkLinkSigner
type OrderMatchingBuilder struct {
AccountId AccountId
SubAccountId SubAccountId
Taker *Order
Maker *Order
Fee BigUint
FeeToken TokenId
ContractPrices []ContractPrice
MarginPrices []SpotPriceInfo
ExpectBaseAmount BigUint
ExpectQuoteAmount BigUint
}
The builder is used to bo build OrderMatching transaction.
OrderMatching transaction type, it's a opaque data type.
func NewOrderMatching(builder OrderMatchingBuilder) *OrderMatching
Create a new OrderMatching transaction.
func (*OrderMatching) GetBytes() []uint8
Get the encoded bytes used to create the L3 signature.
func (*OrderMatching) TxHash() []uint8
Get the transaction hash of OrderMatching transaction.
func (*OrderMatching) JsonStr() string
Get the json string of the OrderMatching transaction.
func (*OrderMatching) IsValid() bool
Check if all the fields in OrderMatching are valid. For example, if the ChainId
is exceeded the maximum ChainId, it will return false.
func (*OrderMatching) CreateSignedTx(signer *ZkLinkSigner) (*OrderMatching, error)
Sign the Transfer transaction with the ZkLinkSigner, L1 signature and L3 signature will be created.
input:
- signer: ZkLinkSigner
func (*OrderMatching) GetSignature() ZkLinkSignature
Get the L3 signature of OrderMatching transaction.
func (*OrderMatching) IsSignatureValid() bool
Check if the L3 signature in the transaction is valid or not.
func (*OrderMatching) ToZklinkTx() ZkLinkTx
Change the transaction to the ZkLinkTx