UNPKG

@0xcert/ethereum-order-gateway

Version:

Order gateway module for executing atomic operations on the Ethereum blockchain.

30 lines (27 loc) 985 B
import { Order } from '@0xcert/scaffold'; import { OrderGateway } from '../core/gateway'; import { createRecipeTuple } from '../lib/order'; const functionSignature = '0xd1c87f30'; const inputTypes = ['tuple(address, address, tuple[](uint8, uint32, address, bytes32, address, uint256), uint256, uint256)']; const outputTypes = ['bytes32']; /** * Creates hash from order data. * @param gateway Order gateway instance. * @param order Order data. */ export default async function(gateway: OrderGateway, order: Order) { const recipeTuple = createRecipeTuple(gateway, order); try { const attrs = { to: gateway.id, data: functionSignature + gateway.provider.encoder.encodeParameters(inputTypes, [recipeTuple]).substr(2), }; const res = await gateway.provider.post({ method: 'eth_call', params: [attrs, 'latest'], }); return gateway.provider.encoder.decodeParameters(outputTypes, res.result)[0]; } catch (error) { return null; } }