AutoDeleveraging
Name
Type
Required
Description
type
String
yes
The value is "AutoDeleveraging"
oraclePrices
struct
yes
contains all infomation about contract price and margin price
adlSize
BigUint
yes
The ADL size, the value can't be zero
signature
yes
The pub key hash corresponding to the signature must be aligned with the initiator account
where the ContractPrice and SpotPriceInfo defined as below:
For example:
{
"type": "AutoDeleveraging",
"accountId": 0,
"subAccountId": 0,
"subAccountNonce": 0,
"oraclePrices": {
"contractPrices": [
{
"pairId": 1,
"marketPrice": "100"
}
],
"marginPrices": [
{
"tokenId": 1,
"price": "100"
}
]
},
"adlAccountId": 0,
"pairId": 0,
"adlSize": "0",
"adlPrice": "0",
"fee": "100",
"feeToken": 1,
"signature": {
"pubKey": "0x43cbec0bf142a942df9db99d27bd4ceeb8f4e75f9444b4cee4e3170965854404",
"signature": "366e759d61a5052073e13147ed3e8e1642dfea10cd423bbb9a795932a15a4c122fa5e71c35a7d59198fa2d7ed28bb1f44e5c5392049607347855243ddc027d00"
}
}Sign autoDeleveraging
import (
fmt
sdk "github.com/zkLinkProtocol/zklink_sdk/generated/uniffi/zklink_sdk"
)
func SignAutoDeleveraging() {
privateKey := "0xbe725250b123a39dab5b7579334d5888987c72a58f4508062545fe6e08ca94f4"
contract_price1 := sdk.ContractPrice{
sdk.PairId(1),
*big.NewInt(656566),
}
contract_price2 := sdk.ContractPrice{
sdk.PairId(3),
*big.NewInt(52552131),
}
var contract_prices = make([]sdk.ContractPrice,2)
contract_prices[0] = contract_price1
contract_prices[1] = contract_price2
margin_price1 := sdk.SpotPriceInfo {
sdk.TokenId(17),
*big.NewInt(3236653653635635),
}
margin_price2 := sdk.SpotPriceInfo {
sdk.TokenId(18),
*big.NewInt(549574875297),
}
var margin_prices = make([]sdk.SpotPriceInfo,2)
margin_prices[0] = margin_price1
margin_prices[1] = margin_price2
builder := sdk.AutoDeleveragingBuilder{
sdk.AccountId(3),
sdk.SubAccountId(1),
sdk.Nonce(9),
contract_prices,
margin_prices,
sdk.AccountId(7),
sdk.PairId(3),
*big.NewInt(1000),
*big.NewInt(100000000000),
*big.NewInt(10000),
sdk.TokenId(18),
}
tx := sdk.NewAutoDeleveraging(builder)
signer, err := sdk.NewSigner(privateKey)
if err != nil {
return
}
txSignature, err := signer.SignAutoDeleveraging(tx)
if err != nil {
return
}
fmt.Println("L1 signature: %s", txSignature.Layer1Signature)
fmt.Println("signed Tx: %s", txSignature.Tx)
submitterSignature, err := signer.SubmitterSignature(txSignature.Tx)
fmt.Println("submitter signature: %s, %s", submitterSignature.PubKey, submitterSignature.Signature)
}For more detail please refer to Golang example in SDK
const {AutoDeleveragingBuilder,Signer,newAutoDeleveraging,ContractPrice,SpotPriceInfo,RpcClient } = require('./node-dist/zklink-sdk-node');
async function testAutoDeleveraging() {
const private_key = "be725250b123a39dab5b7579334d5888987c72a58f4508062545fe6e08ca94f4";
try {
const contract_price1 = new ContractPrice(1,"10000000000000");
const contract_price2 = new ContractPrice(1,"2000000000000");
let contract_prices = [];
contract_prices.push(contract_price1.jsonValue());
contract_prices.push(contract_price2.jsonValue());
let margin_prices = [];
const margin_price1 = new SpotPriceInfo(17,"3236653653635635");
const margin_price2 = new SpotPriceInfo(18,"549574875297");
margin_prices.push(margin_price1.jsonValue());
margin_prices.push(margin_price2.jsonValue());
let tx_builder = new AutoDeleveragingBuilder(5,1,10,contract_prices,margin_prices,3,2,"33535545","188888","199",17);
let tx = newAutoDeleveraging(tx_builder);
console.log(tx);
const signer = new Signer(private_key);
let tx_signature = signer.signAutoDeleveraging(tx);
console.log(tx_signature);
let submitter_signature = signer.submitterSignature(tx_signature.tx);
console.log(submitter_signature);
//send to zklink
let rpc_client = new RpcClient("testnet");
let tx_hash = await rpc_client.sendTransaction(tx_signature.tx,null,submitter_signature);
console.log(tx_hash);
} catch (error) {
console.error(error);
}
}For more detail please refer to javascript example
Last updated
Was this helpful?