Shield V2
HomeTrade
  • Overview
  • Shield perpetual options
    • Basics
    • Mechanism
  • Getting started
    • Guides
    • FAQs
      • About Shield
      • About Trading
      • About Pools
  • Developers
    • Trading API References
      • Overview
        • Smart Contracts Overview
      • Interfaces
        • 1. Deposit Funds
        • 2. Withdraw Funds
        • 3. Check Funds
        • 4. Deposit DAI into Public Pool
        • 5. Withdraw DAI from Public Pool
        • 6. Check Funds on Public Pool
        • 7. Deposit DAI to Private Pool
        • 8. Withdraw DAI from Private Pool
        • 9. Check Funds on Private Pool
        • 10. Check Details on a Certain Order
        • 11. Get Funding Fee Rate of an Option Transaction
      • "How-To" Instructions
        • How to monitor opening and closing orders?
      • Addendum
        • Full ABI on Shield Protocol V1
        • References
  • Additionals
    • Audits
    • Lightpaper
    • Pricing Method Paper
    • Privacy Policy
    • Terms of Use
Powered by GitBook
On this page
  • Description
  • User Interface
  • Function Description
  • ABI Description
  • Examples
  • Calling Examples
  • HTTP Request Example
  • Send a Withdrawal Transaction
  1. Developers
  2. Trading API References
  3. Interfaces

3. Check Funds

Previous2. Withdraw FundsNext4. Deposit DAI into Public Pool

Last updated 2 years ago

Description

Check detailed funds information of an account, including total amount and available amount of deposited funds.

TBD: Narratives

User Interface

Function Description

Item

Description

Contract Address

Trading contract (referenced by Smart Contract Overview section)

Contract Name

SLDDAIContract.sol

Constant

mapping(address=>AccountInfo) public userAccount;

Struct

struct AccountInfo{ uint256 depositAmount; uint256 availableAmount; }

Function Selector

0xea5eda32

Invocation Type

Ethereum Call

Passing Parameters

User address

Return Value

The amount of deposited funds; The available amount of funds.

ABI Description

[{
	"inputs": [{
		"internalType": "address",
		"name": "",
		"type": "address"
	}],
	"name": "userAccount",
	"outputs": [{
		"internalType": "uint256",
		"name": "depositAmount",
		"type": "uint256"
	}, {
		"internalType": "uint256",
		"name": "availableAmount",
		"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");

const CONTRACT_ADDRESS = "Replace with trading contract address";
const ABI = [{
	"inputs": [{
		"internalType": "address",
		"name": "",
		"type": "address"
	}],
	"name": "userAccount",
	"outputs": [{
		"internalType": "uint256",
		"name": "depositAmount",
		"type": "uint256"
	}, {
		"internalType": "uint256",
		"name": "availableAmount",
		"type": "uint256"
	}],
	"stateMutability": "view",
	"type": "function"
}];

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

contract.methods.userAccount("Replace with User Address").call({
}, function(error, result){
    if(!error) {
      console.log('Response:', result);
    } else {
      console.log(error);
    }
});
# This example is written by using Web3.py
# More details on Web3.py could be found here - https://web3py.readthedocs.io/

HTTP Request Example

Send a Withdrawal Transaction

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": "0x32c10ce5f9f47ab82141d73a136823d3e20408e0",
            "data": "0xea5eda32000000000000000000000000834c673130c085057531f227dcbd375d803d9a98"
        },
        "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": "0x32c10ce5f9f47ab82141d73a136823d3e20408e0",
            "data": "0xea5eda32000000000000000000000000834c673130c085057531f227dcbd375d803d9a98"
        },
        "latest"
    ],
    "id": 1234
}'