orai-combinator-bsc-sdk
v1.0.1
Published
- [Table of contents](#table-of-contents) - [TRAVA STATION SDK](#trava-station-sdk) - [Utilities](#utilities) - [Pull token](#pull-token) - [Send token](#send-token) - [Wrap token](#wrap-token) - [Unwrap token](#unwrap-token) - [Swap
Downloads
1
Readme
Table of contents
- Table of contents
- TRAVA STATION SDK
- TRAVA SIMULATION ROUTE
- Approve token
TRAVA STATION SDK
import {actions} from "trava-station-sdk"
Với các actions:
Utilities
Pull token
const pull_token_action = new actions.basic.PullTokenAction(
token: String,
from: String,
amount: uint256
)
Send token
const send_token_action = new actions.basic.SendTokenAction(
token: String,
to: String,
amount: uint256
)
Wrap token
const pull_token_action = new actions.basic.PullTokenAction()
const wrap_token_action = new actions.basic.WrapBnbAction(
amount: uint256
)
Unwrap token
const unwrap_token_action = new actions.basic.UnwrapBnbAction(
amount: uin256,
to: String
)
Pancake
Swap
const swapUtil = new SwapUtil(web3);
const info = new await swapUtil.getInformationFromInput(tokenAddr1, tokenAddr2, slipparage, amount);
const minimumReceive = info.minimumReceive
const priceImpact = info.priceImpact;
const path = info.path;
const swap_token_action = new actions.pancakeswap.PancakeSwapV2(
amountIn: uint256,
amountOutMin: 0,
path: path,
to: _to address,
deadline: timestamp + 30 * 60 * 1000
from: _from address
)
Orai Liquid Staking
Stake
const orai_ls_stake_action = new actions.OraiLiquidStakingStakeAction(
amount,
from,
contract address
)
Unstake
const orai_ls_unstake_action = new actions.OraiLiquidStakingUnstakeAction(
amount,
from
)
WithdrawUnstake
const orai_ls_withdraw_unstake_action = new actions.OraiLiquidStakingWithdrawUnstakedAction(
to
)
Execute actions
Sau khi có được các action xong, để execute Freight giả sử kết hợp action supply và borrow, repay và withdraw
import {Recipe} from "trava-station-sdk";
const recipe = new Recipe(
"ten action = address user + timestamp",
[
swap_token_action,
orai_ls_stake_action,
orai_ls_unstake_action,
send_token_action
]
)
const encoded = recipe.encodeForDsProxyCall();
//sau đó dùng contract Proxy để execute (abi e để dưới), address của contract này là proxy của người dùng
let tx;
if(co action su dung BNB nhu wrap) {
tx = await proxyCOntract.execute(encoded[0], encoded[1], {value: total amountBNB});
} else {
tx = await proxyContract.execute(encoded[0], encoded[1])
}
await tx.wait();
ABI IDSProxy Contract
[
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "execute",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_cacheAddr",
"type": "address"
}
],
"name": "setCache",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "payable",
"type": "function"
}
]
Approve token
Approve BEP20 token
ABI contract BEP20 token
[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "remaining", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint256", "name": "digits", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
Cách approve token
gọi hàm approve trong abi ERC20 token tham số truyền vào là:
- address token
- lượng amount cần approve
Approve token trong các Action
Cách approve
- Trừ đồng BNB, các đồng token khác cần approve
- Contract gọi hàm approve trong abi là address BEP20 token
- 2 tham số trong approve là:
- tham số đầu tiên là address _to
- tham số thứ 2 là amount đang dùng
- tham số đầu tiên của approve luôn là smartWallet
- Chỉ khi from là wallet mới cần approve, from là smart wallet thì không cần
Các actions cần approve
Pull token: approve token cần pull
Swap token: approve token cần swap
Orai LS Stake: approve orai token
publish orchai-combinator-bsc-sdk to npm
go to file tsconfig.json, if module != "ESNext", change module to "ESNext"
delete two folder /esm /umd if they exist
run
npm run build
after build, to publish repo on npm, change version repo in package.json (can't publish a repo have same version with repo existing on npm), if you use repo for test, please add "testnet" before each version and increase version after each time publish
if you don't login npm, please create account npm on website https://www.npmjs.com/, then login npm in terminal by running command
npm login
after you login success, you can publish repo on npm by following command
npm publish