Merge pull request #441 from hirosystems/develop

release to beta
This commit is contained in:
Rafael Cárdenas
2025-02-18 14:32:50 -06:00
committed by GitHub
7 changed files with 71 additions and 42 deletions

View File

@@ -316,19 +316,21 @@ export const InscriptionResponse = Type.Object(
timestamp: Type.Integer({ examples: [1677733170000] }),
curse_type: Nullable(Type.String({ examples: ['p2wsh'] })),
recursive: Type.Boolean({ examples: [true] }),
recursion_refs: Nullable(
Type.Array(
recursion_refs: Type.Array(
Type.String({
examples: [
'1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0',
'541076e29e1b63460412d3087b37130c9a14abd0beeb4e9b2b805d2072c84dedi0',
],
})
)
),
parent: Nullable(
parent: Type.Null(), // Deprecated
parent_refs: Type.Array(
Type.String({
examples: ['1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0'],
examples: [
'1463d48e9248159084929294f64bda04487503d30ce7ab58365df1dc6fd58218i0',
'541076e29e1b63460412d3087b37130c9a14abd0beeb4e9b2b805d2072c84dedi0',
],
})
),
delegate: Nullable(

View File

@@ -89,8 +89,9 @@ export function parseDbInscriptions(
timestamp: parseTimestamp(i.timestamp),
curse_type: i.curse_type,
recursive: i.recursive,
recursion_refs: i.recursion_refs?.split(',') ?? null,
parent: i.parent,
recursion_refs: i.recursion_refs?.split(',') ?? [],
parent: null,
parent_refs: i.parent_refs?.split(',') ?? [],
metadata: i.metadata ? JSON.parse(i.metadata) : null,
delegate: i.delegate ?? null,
meta_protocol: i.metaprotocol ?? null,

View File

@@ -175,8 +175,7 @@ export class PgStore extends BasePgStore {
SELECT ip.parent_inscription_id
FROM inscription_parents AS ip
WHERE ip.inscription_id = i.inscription_id
LIMIT 1
) AS parent,
) AS parent_refs,
i.metadata,
s.rarity AS sat_rarity,
s.coinbase_height AS sat_coinbase_height,
@@ -191,6 +190,7 @@ export class PgStore extends BasePgStore {
i.timestamp AS genesis_timestamp,
i.address AS genesis_address,
i.charms,
i.delegate,
cur.address,
cur.tx_index,
cur.block_height,

View File

@@ -31,7 +31,7 @@ export type DbFullyLocatedInscriptionResult = {
curse_type: string | null;
recursive: boolean;
recursion_refs: string | null;
parent: string | null;
parent_refs: string | null;
metadata: string | null;
input_index: number;
pointer: number | null;

View File

@@ -94,8 +94,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -200,6 +201,7 @@ describe('/inscriptions', () => {
'b4b27b9a15f928b95a8ce4b418946553b7b313a345254cd9b23d79489175fa5ai0',
],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -299,9 +301,9 @@ describe('/inscriptions', () => {
url: '/ordinals/v1/inscriptions/f351d86c6e6cae3c64e297e7463095732f216875bcc1f3c03f950a492bb25421i0',
});
expect(response.statusCode).toBe(200);
expect(response.json().parent).toBe(
'9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0'
);
expect(response.json().parent_refs).toStrictEqual([
'9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201i0',
]);
});
test('shows inscription with metadata', async () => {
@@ -404,8 +406,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -487,8 +490,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: '88',
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -597,8 +601,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -655,8 +660,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -769,8 +775,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -863,8 +870,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: '{"tag":66}',
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -921,8 +929,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: '{"tag":66}',
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -1047,6 +1056,15 @@ describe('/inscriptions', () => {
expect(response.statusCode).toBe(200);
expect(response.headers['content-length']).toBe('5');
expect(response.body).toBe('Hello');
const response2 = await fastify.inject({
method: 'GET',
url: '/ordinals/v1/inscriptions/42174ecc8a245841035793390bb53d63b3c2acb61366446f601b09e73b94b656i0',
});
expect(response2.statusCode).toBe(200);
expect(response2.json().delegate).toBe(
'38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dci0'
);
});
});
@@ -1666,8 +1684,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -1697,8 +1716,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -1808,8 +1828,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '9f4a9b73b0713c5da01c0a47f97c6c001af9028d6bdd9e264dfacbc4e6790201',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -1849,8 +1870,9 @@ describe('/inscriptions', () => {
genesis_tx_id: '38c46a8bf7ec90bc7f6b797e7dc84baa97f4e5fd4286b92fe1b50176d03b18dc',
curse_type: null,
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,

View File

@@ -217,8 +217,9 @@ describe('/sats', () => {
value: '10000',
curse_type: 'p2wsh',
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,
@@ -249,8 +250,9 @@ describe('/sats', () => {
value: '10000',
curse_type: 'p2wsh',
recursive: false,
recursion_refs: null,
recursion_refs: [],
parent: null,
parent_refs: [],
metadata: null,
meta_protocol: null,
delegate: null,

View File

@@ -550,6 +550,15 @@ async fn update_tx_inscriptions_with_consensus_sequence_data(
None => inscription.curse_type.take(),
};
inscription.charms |= Sat(traversal.ordinal_number).charms();
if is_cursed {
if block_identifier.index >= get_jubilee_block_height(network) {
Charm::Vindicated.set(&mut inscription.charms);
} else {
Charm::Cursed.set(&mut inscription.charms);
}
}
let (destination, satpoint_post_transfer, output_value) = compute_satpoint_post_transfer(
&&*tx,
input_index,
@@ -588,14 +597,7 @@ async fn update_tx_inscriptions_with_consensus_sequence_data(
}
};
inscription.charms |= Sat(traversal.ordinal_number).charms();
if is_cursed {
if block_identifier.index >= get_jubilee_block_height(network) {
Charm::Vindicated.set(&mut inscription.charms);
} else {
Charm::Cursed.set(&mut inscription.charms);
}
} else {
if !is_cursed {
// The reinscriptions_data needs to be augmented as we go, to handle transaction chaining.
reinscriptions_data.insert(traversal.ordinal_number, traversal.get_inscription_id());
}