@0xcert/ethereum-order-gateway
Version:
Order gateway module for executing atomic operations on the Ethereum blockchain.
32 lines (29 loc) • 1.08 kB
text/typescript
import { Order } from '@0xcert/scaffold';
import { OrderGateway } from '../core/gateway';
import { createOrderHash, createSignatureTuple } from '../lib/order';
const functionSignature = '0x8fa76d8d';
const inputTypes = ['address', 'bytes32', 'tuple(bytes32, bytes32, uint8, uint8)'];
const outputTypes = ['bool'];
/**
* Checks if signature is valid.
* @param gateway Order gateway instance.
* @param order Order data.
* @param claim Claim data.
*/
export default async function(gateway: OrderGateway, order: Order, claim: string) {
const orderHash = createOrderHash(gateway, order);
const signatureTuple = createSignatureTuple(claim);
try {
const attrs = {
to: gateway.id,
data: functionSignature + gateway.provider.encoder.encodeParameters(inputTypes, [order.makerId, orderHash, signatureTuple]).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;
}
}