Query Withdrawable Margin Amount

Description

You could query the withdrawable amount of base tokens and SLD tokens by calling this interface.

User Interface

TODO(Snapshots)

Function Description

Contract Address

MVault contract (referenced by General Info section)

Contract Name

MVault.sol

Function

function queryMarginBalance() public view returns (

uint256 baseMarginAmount,

uint256 sldMarginAmount

)

Function Selector

0xea17f924

Invocation Type

Ethereum Call

Passing Parameters

None

Return Value

uint256 baseMarginAmount: withdrawable token margin amount uint256 sldMarginAmount: withdrawable SLD token margin amount

ABI Description

    {
      "inputs": [],
      "name": "queryMarginBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "baseMarginAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "sldMarginAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }

Examples

Calling Examples

// This example is written by using Web3.js
// More details on Web3.js could be found here - https://web3js.readthedocs.io/

var Web3 = require('web3');
const BigNumber = require('bignumber.js');

// BSC Mainnet: https://bsc-dataseed.binance.org
// BSC Testnet: https://data-seed-prebsc-1-s1.binance.org:8545
const  web3 = new Web3("https://data-seed-prebsc-1-s1.binance.org:8545");

// Need MVault contract address
const CONTRACT_ADDRESS = "Replace with MVault contract address";
const ABI = [    {
      "inputs": [],
      "name": "queryMarginBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "baseMarginAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "sldMarginAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }];

var contract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS);

contract.methods.queryMarginBalance().call({
}, function(error, result){
    if(!error) {
      console.log('Response:', result);
    } else {
      console.log(error);
    }
});

HTTP Request Example

Query Margins

POST (BSC Mainnet) https://bsc-dataseed.binance.org/

Make a contract call to get deposited funds details of Shield Protocol V1. More details on how to make a contract call request via BSC RPC could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction

Request Body

Name
Type
Description

jsonrpc

string

"2.0"

method

string

"eth_call"

params

array

the signed transaction data coerced into string array, for instance,

id

number

request sequence id, you could use timestamp as id

{
    "jsonrpc": "2.0",
    "id": 1234,
    "result": "0x00000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000006c6b935b8bbd400000"
}

Request Body Example:

{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "to": "0x85B18E8b86F998835099e6a021e2b1e8d5BcA9C7",
            "data": "0xea17f924"
        },
        "latest"
    ],
    "id": 1234
}

CURL Example:

curl --location --request POST 'https://data-seed-prebsc-1-s1.binance.org:8545/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "to": "0x85B18E8b86F998835099e6a021e2b1e8d5BcA9C7",
            "data": "0xea17f924"
        },
        "latest"
    ],
    "id": 1234
}'

Last updated