Create a p2p limit order
POST /ft/p2p/:chainId/
Examples
curl -X POST \
'https://api.paraswap.io/ft/p2p/1' \
--header 'Content-Type: application/json' \
--data-raw '{
"nonceAndMeta": "1490585846052014974250870934243084527261268076495",
"expiry": 1665493373,
"makerAsset": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"takerAsset": "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39",
"maker": "0xB4E6f1c1f9Ba3aD97e09603966b4ac773303a8d1",
"taker": "0xDEF171Fe48CF0115B1d80b88dc8eAB59176FEe57",
"makerAmount": "1000000000000000000",
"takerAmount": "8000000000000000000",
"signature": "0x1647ae642db6e02c39ac80f40b73df032ca43648c2d11c44d5c7437e0c3a151739e54b7d3ea22067226b723ac84ac577a487579b04e7197bc3b13abee5d3952a1c"
}'/* eslint-disable @typescript-eslint/no-unused-vars */
import axios from 'axios';
import { ethers } from 'ethers';
import {
// swap methods
constructPartialSDK,
constructEthersContractCaller,
constructAxiosFetcher,
// limitOrders methods
constructBuildLimitOrder,
constructSignLimitOrder,
constructPostLimitOrder,
// extra types
SignableOrderData,
LimitOrderToSend,
} from '..';
const wallet = ethers.Wallet.createRandom();
const fetcher = constructAxiosFetcher(axios);
const provider = wallet.connect(ethers.getDefaultProvider(1));
const contractCaller = constructEthersContractCaller(
{
ethersProviderOrSigner: provider,
EthersContract: ethers.Contract,
},
wallet.address
);
// type BuildLimitOrderFunctions
// & SignLimitOrderFunctions
// & PostLimitOrderFunctions
const paraSwapLimitOrderSDK = constructPartialSDK(
{
chainId: 1,
fetcher,
contractCaller,
},
constructBuildLimitOrder,
constructSignLimitOrder,
constructPostLimitOrder
);
const DAI = '0x6B175474E89094C44Da98b954EedeAC495271d0F';
const HEX = '0x2b591e99afe9f32eaa6214f7b7629768c40eeb39';
const orderInput = {
nonce: 1,
expiry: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // week from now, in sec
makerAsset: DAI,
takerAsset: HEX,
makerAmount: (1e18).toString(10),
takerAmount: (8e18).toString(10),
maker: wallet.address,
taker: '0x05182E579FDfCf69E4390c3411D8FeA1fb6467cf',
};
async function run() {
const signableOrderData: SignableOrderData =
await paraSwapLimitOrderSDK.buildLimitOrder(orderInput);
const signature: string = await paraSwapLimitOrderSDK.signLimitOrder(
signableOrderData
);
const orderToPostToApi: LimitOrderToSend = {
...signableOrderData.data,
signature,
};
const newOrder = await paraSwapLimitOrderSDK.postP2POrder(orderToPostToApi);
console.log(newOrder);
}
run();Query parameters:
Body parameters
Response
Data structure in our centralized systemLast updated