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);
});
}