mirror of
https://github.com/alexgo-io/stacks-blockchain-api.git
synced 2026-01-12 22:43:34 +08:00
fix: fetch abi on tx /with-transfers (#895)
This commit is contained in:
@@ -5331,9 +5331,13 @@ export class PgDataStore
|
||||
tx_id: string;
|
||||
}): Promise<DbTxWithAssetTransfers> {
|
||||
return this.query(async client => {
|
||||
const queryParams: (string | Buffer)[] = [stxAddress, hexToBuffer(tx_id)];
|
||||
const queryParams: (string | Buffer | DbTxTypeId)[] = [
|
||||
stxAddress,
|
||||
hexToBuffer(tx_id),
|
||||
DbTxTypeId.ContractCall,
|
||||
];
|
||||
const resultQuery = await client.query<
|
||||
TxQueryResult & {
|
||||
ContractTxQueryResult & {
|
||||
count: number;
|
||||
event_index?: number;
|
||||
event_type?: number;
|
||||
@@ -5375,7 +5379,14 @@ export class PgDataStore
|
||||
events.event_type_id as event_type,
|
||||
events.amount as event_amount,
|
||||
events.sender as event_sender,
|
||||
events.recipient as event_recipient
|
||||
events.recipient as event_recipient,
|
||||
CASE WHEN transactions.type_id = $3 THEN (
|
||||
SELECT abi
|
||||
FROM smart_contracts
|
||||
WHERE smart_contracts.contract_id = transactions.contract_call_contract_id
|
||||
ORDER BY abi != 'null' DESC, canonical DESC, microblock_canonical DESC, block_height DESC
|
||||
LIMIT 1
|
||||
) END as abi
|
||||
FROM transactions
|
||||
LEFT JOIN events ON transactions.tx_id = events.tx_id AND transactions.tx_id = $2
|
||||
ORDER BY block_height DESC, microblock_sequence DESC, tx_index DESC, event_index DESC
|
||||
|
||||
@@ -4823,6 +4823,80 @@ describe('api tests', () => {
|
||||
],
|
||||
};
|
||||
expect(JSON.parse(fetchAddrTx3.text)).toEqual(expectedResp6);
|
||||
|
||||
const fetchAddrTx4 = await supertest(api.server).get(
|
||||
`/extended/v1/address/${testAddr5}/0x1232/with_transfers`
|
||||
);
|
||||
expect(fetchAddrTx4.status).toBe(200);
|
||||
expect(fetchAddrTx4.type).toBe('application/json');
|
||||
const expectedResp7 = {
|
||||
stx_received: '0',
|
||||
stx_sent: '4321',
|
||||
stx_transfers: [
|
||||
{
|
||||
amount: '4321',
|
||||
recipient: 'ST2F8G7616B2F8PYG216BX9AJCHP7YRK7ND7M0ZN3',
|
||||
sender: 'ST3V11C6X2EBFN72RMS3B1NYQ1BX98F61GVYRDRXW',
|
||||
},
|
||||
],
|
||||
tx: {
|
||||
anchor_mode: 'any',
|
||||
block_hash: '0x1234',
|
||||
block_height: 1,
|
||||
burn_block_time: 39486,
|
||||
burn_block_time_iso: '1970-01-01T10:58:06.000Z',
|
||||
canonical: true,
|
||||
contract_call: {
|
||||
contract_id: 'ST27W5M8BRKA7C5MZE2R1S1F4XTPHFWFRNHA9M04Y.hello-world',
|
||||
function_args: [
|
||||
{
|
||||
hex: '0x010000000000000000000000000001e240',
|
||||
name: 'amount',
|
||||
repr: 'u123456',
|
||||
type: 'uint',
|
||||
},
|
||||
{
|
||||
hex: '0x0d0000000568656c6c6f',
|
||||
name: 'desc',
|
||||
repr: '"hello"',
|
||||
type: 'string-ascii',
|
||||
},
|
||||
],
|
||||
function_name: 'test-contract-fn',
|
||||
function_signature:
|
||||
'(define-public (test-contract-fn (amount uint) (desc string-ascii)))',
|
||||
},
|
||||
event_count: 5,
|
||||
execution_cost_read_count: 0,
|
||||
execution_cost_read_length: 0,
|
||||
execution_cost_runtime: 0,
|
||||
execution_cost_write_count: 0,
|
||||
execution_cost_write_length: 0,
|
||||
fee_rate: '10',
|
||||
is_unanchored: false,
|
||||
microblock_canonical: true,
|
||||
microblock_hash: '',
|
||||
microblock_sequence: 2147483647,
|
||||
nonce: 0,
|
||||
parent_block_hash: '',
|
||||
parent_burn_block_time: 1626122935,
|
||||
parent_burn_block_time_iso: '2021-07-12T20:48:55.000Z',
|
||||
post_condition_mode: 'allow',
|
||||
post_conditions: [],
|
||||
sender_address: 'ST27W5M8BRKA7C5MZE2R1S1F4XTPHFWFRNHA9M04Y.hello-world',
|
||||
sponsor_address: 'ST3J8EVYHVKH6XXPD61EE8XEHW4Y2K83861225AB1',
|
||||
sponsored: false,
|
||||
tx_id: '0x1232',
|
||||
tx_index: 5,
|
||||
tx_result: {
|
||||
hex: '0x0100000000000000000000000000000001',
|
||||
repr: 'u1',
|
||||
},
|
||||
tx_status: 'success',
|
||||
tx_type: 'contract_call',
|
||||
},
|
||||
};
|
||||
expect(JSON.parse(fetchAddrTx4.text)).toEqual(expectedResp7);
|
||||
});
|
||||
|
||||
test('list contract log events', async () => {
|
||||
|
||||
Reference in New Issue
Block a user