Swap token

A ํ† ํฐ์„ B ํ† ํฐ์œผ๋กœ Swapํ•˜๊ฒŒ ๋˜๋ฉด, A ํ† ํฐ์€ fromToken์ด, B ํ† ํฐ์€ toToken์ด ๋ฉ๋‹ˆ๋‹ค.

setSlippage

ํ•จ์ˆ˜ ์ด๋ฆ„

setSlippage()

Slippage๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” 0.01% ๋‹จ์œ„์ด๋ฉฐ 100์„ ์ž…๋ ฅํ•˜๋ฉด slippage๊ฐ€ 1%๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์‹คํ–‰ ์ธ์ž๊ฐ’

ParameterTypeDescription
slippageinteger0.01% ๋‹จ์œ„๋กœ slippage ์„ค์ •

ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’

undefined

ํ•จ์ˆ˜ ์˜ˆ์ œ

/* slippage ์„ค์ • N%, ์ •์ˆ˜๋งŒ ๋ฉ๋‹ˆ๋‹ค. */
x2easy.swap.setSlippage(10); // slippage๊ฐ€ 0.1%๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

estimationDestinationPrice

๐Ÿ’ก

estimationDestinationPrice()๋กœ ๋ฐ›๊ฒŒ ๋  ์˜ˆ์ƒ Token ์ˆ˜๋Ÿ‰ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์ด๋ฆ„

estimationDestinationPrice()

Swap ๊ฒฐ๊ณผ ๊ฐ€๊ฒฉ์„ ๊ตฌํ•ด์˜ต๋‹ˆ๋‹ค. (slippage ์ ์šฉ๋œ ๊ณ„์‚ฐ์‹)

ํ•จ์ˆ˜ ์‹คํ–‰ ์ธ์ž๊ฐ’

ParameterTypeDescription
amountnumberswapํ•  ์ˆ˜๋Ÿ‰
isBaseFromAmountbooleantrue์ด๋ฉด fromToken๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.(๊ธฐ๋ณธ๊ฐ’: true)
reversebooleanfromToken๊ณผ toToken์ด ๋’ค์ง‘์–ด์กŒ๋Š”์ง€ ์—ฌ๋ถ€(๊ธฐ๋ณธ๊ฐ’: false)
fromTokenAddressstringfromTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)
toTokenAddressstringtoTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)

ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’

Result

TypeDescription
number๊ณ„์‚ฐ๋œ ๊ฐ€๊ฒฉ

ํ•จ์ˆ˜ ์˜ˆ์ œ

/* fromToken์„ toToken์œผ๋กœ Swapํ•˜๋Š”๋ฐ, 0.05 fromToken์„ ๋„ฃ์—ˆ์„ ๋•Œ toToken์˜ ์˜ˆ์ƒ๊ฐ€๊ฒฉ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ */
const price = await x2easy.swap.estimationDestinationPrice(
0.05, // amount
true, // isBaseFromAmount (default: true)
false, // reverse (default: false)
fromTokenAddress, // fromTokenAddress (default: '')
toTokenAddress // toTokenAddress (default: new X2Easy(contractAddress) ํ• ๋•Œ ๋„ฃ์—ˆ๋˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’.)
);
console.log(price); // 500

estimationGas

ํ•จ์ˆ˜ ์ด๋ฆ„

estimationGas()

swapTransaction ํ•จ์ˆ˜์™€ ๋˜‘๊ฐ™์€ Parameter๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

ํ•ด๋‹น Parameter ๊ทธ๋Œ€๋กœ swapTransaction๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋ฐœ์ƒํ•œ ๊ฐ€์Šค๋น„๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์‹คํ–‰ ์ธ์ž๊ฐ’

ParameterTypeDescription
amountnumberswapํ•  ์ˆ˜๋Ÿ‰
passwordstring๋น„๋ฐ€๋ฒˆํ˜ธ
isBaseFromAmountbooleantrue์ด๋ฉด fromToken๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.(๊ธฐ๋ณธ๊ฐ’: true)
reversebooleanfromToken๊ณผ toToken์ด ๋’ค์ง‘์–ด์กŒ๋Š”์ง€ ์—ฌ๋ถ€(๊ธฐ๋ณธ๊ฐ’: false)
fromTokenAddressstringfromTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)
toTokenAddressstringtoTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)

ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’

Object item reusltDescription
gasUsed์˜ˆ์ธก๋˜๋Š” ๊ฐ€์Šค ์‚ฌ์šฉ๋Ÿ‰
gasPrice์˜ˆ์ธก๋˜๋Š” ๊ฐ€์Šค ๊ฐ€๊ฒฉ (gwei ๋‹จ์œ„)
paidGas์ง€๋ถˆํ•œ ์ด ๊ฐ€์Šค๋น„
paidGasToEther์ง€๋ถˆํ•œ ์ด ๊ฐ€์Šค๋น„ (ether ๋‹จ์œ„)

ํ•จ์ˆ˜ ์˜ˆ์ œ

const gasFee = await x2easy.swap.estimationGas(
500, // amount
'123456', // password
false, // isBaseFromAmount (default: true)
true, // reverse (default: false)
fromTokenAddress, // fromTokenAddress (default: '')
toTokenAddress, // toTokenAddress (default: new X2Easy(contractAddress) ํ• ๋•Œ ๋„ฃ์—ˆ๋˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’.)
);
console.log(gasFee);
/*
{
"gasUsed": "195730" // ๊ฐ€์Šค ์‚ฌ์šฉ๋Ÿ‰
"gasPrice": "64238640917" // ๊ฐ€์Šค ๊ฐ€๊ฒฉ (gwei ๋‹จ์œ„)
"paidGas": " "12573429186684410" // ์ด ์ง€๋ถˆ ๊ฐ€์Šค๋Ÿ‰ (gasUsed * gasPrice)
"paidGasToEther": "0.01257342918668441" // ์ด ์ง€๋ถˆ ๊ฐ€์Šค๋Ÿ‰ (ether ๋‹จ์œ„)
}
*/

swapTransaction

ํ•จ์ˆ˜ ์ด๋ฆ„

swapTransaction()

Swap์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์ด ๋‚˜์˜ค๋Š”๋ฐ, ๋ฌธ์„œ์— ์ ํžŒ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ ๊ฐ’ ์™ธ์—๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์‹คํ–‰ ์ธ์ž๊ฐ’

ParameterTypeDescription
amountnumberswapํ•  ์ˆ˜๋Ÿ‰
passwordstring๋น„๋ฐ€๋ฒˆํ˜ธ
isBaseFromAmountbooleantrue์ด๋ฉด fromToken๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.(๊ธฐ๋ณธ๊ฐ’: true)
reversebooleanfromToken๊ณผ toToken์ด ๋’ค์ง‘์–ด์กŒ๋Š”์ง€ ์—ฌ๋ถ€(๊ธฐ๋ณธ๊ฐ’: false)
fromTokenAddressstringfromTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)
toTokenAddressstringtoTokenAddress๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์„ ํƒ์‚ฌํ•ญ)
const txResult = await x2easy.swap.swapTransaction(
500, // amount
'123456', // password
false, // isBaseFromAmount (default: true)
true, // reverse (default: false)
fromTokenAddress, // fromTokenAddress (default: '')
toTokenAddress, // toTokenAddress (default: new X2Easy(contractAddress) ํ• ๋•Œ ๋„ฃ์—ˆ๋˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’.)
);
console.log(txResult);
/*
{
more data... // ์ƒ๋žต
"hash": "0x0fb7ff39d9acd1e8528b09e58fd853965471044cbb539ea55b81ab72085b0c00", // ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ
"from": "0x92029B49f67785FFFF41a5E36B1A9afB4AC2497d", // ๋ณด๋‚ธ์‚ฌ๋žŒ
... more data // ์ƒ๋žต
}
*/

ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’

Object item reusltDescription
hashSwap Transaction Hash

์‘์šฉ ์˜ˆ์ œ

estimationDestinationPrice์™€ swapTrnasaction๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ˆ์ธก๊ฐ’์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.

(์‹ค์ œ๋กœ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๊ธฐ ์œ„ํ•ด ๋ณด์—ฌ์ค€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.)

/*
์•„๋ž˜ ์ฝ”๋“œ ์„ค๋ช… (์กฐ๊ฑด๋“ค)
1. fromToken -> toToken ์œผ๋กœ reverse๊ฐ€ ์—†์ด ์ •๋ฐฉํ–ฅ์œผ๋กœ swapํ•จ.
2. price๋Š” toToken ๊ธฐ์ค€์˜ price์ด๋‹ค.
์•„๋ž˜ ์ฝ”๋“œ๋Š” fromToken(0.05) -> toToken(๊ณ„์‚ฐํ•ด์•ผํ•จ) ์œผ๋กœ swap์„ ์ง„ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
swapํ•จ์ˆ˜ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๋ฐ, estimationDestinationPrice ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
*/
const price = await x2easy.swap.estimationDestinationPrice(
0.05, // amount
true, // isBaseFromAmount (default: true)
false // reverse (default: false)
);
// ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์‹œํ‚ด, ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‹คํ–‰๋œ ํŠธ๋žœ์žญ์…˜ ํ•ด์‹œ ๋ฐ˜ํ™˜
const txResult = await x2easy.swap.swapTransaction(
price, // amount
'123456', // password
false, // fromToken๋กœ ๊ณ„์‚ฐ๋œ toToken์˜ price๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ swap ๊ธฐ์ค€๊ฐ’์ด toToken์ด ๋œ๋‹ค.
false // reverse (default: false)
);