Trade Token
- OTR
- HTTPS
There are different ways to trade tokens over OTR.
Buy Token
To buy a token, you must call buyToken
on dataset(Dataset.TOKEN)
. buyToken
takes an object of type TradeTokenTangleRequest
as parameter in which you can specify the token you want to buy, the price for the offer and the amount.
const otrRequestBuy = await otr(otrAddress).dataset(Dataset.TOKEN).buyToken({
count: 10,
symbol: 'IOTA',
price: 0.002,
});
buyToken
returns an oject of type OtrRequest
<
TradeTokenTangleRequest
>
Sell Token
Sell Base Token
To sell the base token, you must call sellBaseToken
on dataset(Dataset.TOKEN)
. sellBaseToken
takes an object of type TradeTokenTangleRequest
as parameter in which you can specify the price for the offer and the amount.
const otrRequestSellBase = await otr(otrAddress).dataset(Dataset.TOKEN).sellBaseToken({
count: 10,
symbol: 'SMR',
price: 0.002,
});
sellBaseToken
returns an oject of type OtrRequest
<
TradeTokenTangleRequest
>
Sell Native Token
To sell a token, you must call sellMintedToken
on dataset(Dataset.TOKEN)
. sellMintedToken
takes an object of type TradeTokenTangleRequest
as parameter in which you can specify the token you want to buy, the price for the offer and the amount.
const otrRequestSell = await otr(otrAddress).dataset(Dataset.TOKEN).sellMintedToken('tokenId', {
count: 10,
symbol: 'IOTA',
price: 0.002,
});
sellMintedToken
returns an oject of type OtrRequest
<
TradeTokenTangleRequest
>
To trade a token, you must call tradeToken
on dataset(Dataset.TOKEN_MARKET)
. tradeToken
takes an object of type Build5Request<
TradeTokenRequest
>
as parameter in which you can specify the token you want to trade, the price for the offer and the kind of trade like buy or sell.
const response = await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.tradeToken({
address: address.bech32,
signature: signature.signature,
publicKey: {
hex: signature.publicKey,
network: Network.RMS,
},
body: {
count: 10,
symbol: 'IOTA',
price: 0.002,
type: 'buy',
},
});
tradeToken
returns an oject of type Transaction
.
Get executed trades:
// Get all active BUYs through live stream. Use getMemberBidsLive to get member's one.
const tokenId = 'tokenId';
await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.getBidsLive(tokenId, TokenTradeOrderType.BUY, TokenTradeOrderStatus.ACTIVE)
.subscribe((bids) => {
console.log(bids);
});
// Get all active SELLs through live stream. Use getMemberBidsLive to get member's one.
await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.getBidsLive(tokenId, TokenTradeOrderType.SELL, TokenTradeOrderStatus.ACTIVE)
.subscribe((bids) => {
console.log(bids);
});
// Get live stream of token purchases
await https(origin)
Full How-To Code
- OTR
- HTTPS
import { Dataset } from '@build-5/interfaces';
import { otr, SoonaverseOtrAddress } from '@build-5/sdk';
async function main() {
// @ts-ignore
const otrAddress = SoonaverseOtrAddress[origin];
try {
const otrRequestBuy = await otr(otrAddress).dataset(Dataset.TOKEN).buyToken({
count: 10,
symbol: 'IOTA',
price: 0.002,
});
var fireflyDeeplink = otrRequestBuy.getFireflyDeepLink();
console.log(fireflyDeeplink);
const otrRequestSellBase = await otr(otrAddress).dataset(Dataset.TOKEN).sellBaseToken({
count: 10,
symbol: 'SMR',
price: 0.002,
});
fireflyDeeplink = otrRequestSellBase.getFireflyDeepLink();
console.log(fireflyDeeplink);
const otrRequestSell = await otr(otrAddress).dataset(Dataset.TOKEN).sellMintedToken('tokenId', {
count: 10,
symbol: 'IOTA',
price: 0.002,
});
fireflyDeeplink = otrRequestSell.getFireflyDeepLink();
console.log(fireflyDeeplink);
} catch (e) {
console.log(e);
return;
}
}
main().then(() => process.exit());
import { Dataset, Network, TokenTradeOrderStatus, TokenTradeOrderType } from '@build-5/interfaces';
import { Build5, SoonaverseApiKey, https } from '@build-5/sdk';
import { address } from '../../utils/secret';
import { walletSign } from '../../utils/utils';
async function main() {
const origin = Build5.TEST;
const member = await https(origin).createMember({
address: address.bech32,
signature: '',
body: {
address: address.bech32,
},
});
try {
const signature = await walletSign(member.uid, address);
const response = await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.tradeToken({
address: address.bech32,
signature: signature.signature,
publicKey: {
hex: signature.publicKey,
network: Network.RMS,
},
body: {
count: 10,
symbol: 'IOTA',
price: 0.002,
type: 'buy',
},
});
console.log(response);
} catch (e) {
console.log(e);
return;
}
}
main().then(() => process.exit());
mainRead().then(() => process.exit());
// Other examples
async function mainRead() {
// Get all active BUYs through live stream. Use getMemberBidsLive to get member's one.
const tokenId = 'tokenId';
await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.getBidsLive(tokenId, TokenTradeOrderType.BUY, TokenTradeOrderStatus.ACTIVE)
.subscribe((bids) => {
console.log(bids);
});
// Get all active SELLs through live stream. Use getMemberBidsLive to get member's one.
await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_MARKET)
.getBidsLive(tokenId, TokenTradeOrderType.SELL, TokenTradeOrderStatus.ACTIVE)
.subscribe((bids) => {
console.log(bids);
});
// Get live stream of token purchases
await https(origin)
.project(SoonaverseApiKey[origin])
.dataset(Dataset.TOKEN_PURCHASE)
.getPuchasesLive(tokenId)
.subscribe((bids) => {
console.log(bids);
});
}