@0xcert/ethereum-order-gateway
Version:
Order gateway module for executing atomic operations on the Ethereum blockchain.
30 lines (27 loc) • 985 B
text/typescript
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;
}
}