diff --git a/data/testing__nft_sales_exchange_art.csv b/data/testing__nft_sales_exchange_art.csv index c08fbad6..f3f71b1b 100644 --- a/data/testing__nft_sales_exchange_art.csv +++ b/data/testing__nft_sales_exchange_art.csv @@ -2,4 +2,7 @@ tx_id,purchaser,seller,mint,sales_amount m4Z84jUhtz8bJoVAv6NzAaqG4MLr8an5e1ofynziU94jANZYZrQgqs2QyE5RbSbHMhdYu3pEQf4VNEErkivoSAN,AnUvEuvzDaueXZCaEMqWUsXa2aSmn2uR3bpqzWQE3XB5,AeHmkgcz9dGs2sXrjEMrAcDaktUJyVTKknG3CQ9jKRyn,8JtwhYSvu9i2djKqinaerGYAq9zVXWeA2paAf1hq62UW,0.066 KcQ2QT1Ck84ho3MRbfAbBLG69R48XskEwCLbav43sZFEqn7gxQ3HPuWX6aYdJvLNNtng82mYB7r2ASGQ4wtzF9k,2L6j3wZXEByg8jycytabZitDh9VVMhKiMYv7EeJh6R2H,8ocb3s8wnyzZvwnfUENmwhPg4rQb1aGSRKKxWkpQztkN,B14kCrMnHunXPCRh2hYRrCMT6N4v3VyE4mTmPiGQqzN6,0.5 4CnhCbQnMqHGLq86eN3UWi4bg5e4iz4d1an7Stbn5g1n7GmbYWUYeXC9X22xYhCTN8EhGpNzEnPbEU8yedV8atdb,2L6j3wZXEByg8jycytabZitDh9VVMhKiMYv7EeJh6R2H,7VGeHCW3c32bNC9x28HP3kXLm8uMAbWXpp5CbRuSvDr1,F7d618d9qCCJAukpa7KGVH6Y5vbhSkkGztsp9XcA8Kwe,0.1 -w9ARwPqxJyqMsQs5o7ZfawpmhpjcMRRkic86aqj7ixPjRNvzW1Xeg3iMSCGd1xDfVbkG9dqD6nFAtpgAUpMxhgT,ESUBLsnMRuttzEz3D1aFZt3xkNZnsWcRCmtYGSDCEzn8,CQYnzKnradM5pfUMnt71kuaX5zx5XFydPifMvrq8536R,HHnih8Ffib4ijsr26foLi8Fr4L5iwbDX3jU1iysUKWQr,0.399300001 \ No newline at end of file +w9ARwPqxJyqMsQs5o7ZfawpmhpjcMRRkic86aqj7ixPjRNvzW1Xeg3iMSCGd1xDfVbkG9dqD6nFAtpgAUpMxhgT,ESUBLsnMRuttzEz3D1aFZt3xkNZnsWcRCmtYGSDCEzn8,CQYnzKnradM5pfUMnt71kuaX5zx5XFydPifMvrq8536R,HHnih8Ffib4ijsr26foLi8Fr4L5iwbDX3jU1iysUKWQr,0.399300001 +LoBw8ZMW2f7UAk4EB97eG6GV8uqtvw8aA7SoXgwRU2wPCznDGEZoiqwr5yixGidQUFdUfgHKnwi8TE9X3kQSxaM,J9mJ1Cq5UZiD8f8h9u4atdCReLtiNxqVDQhoVywATCbd,J9mJ1Cq5UZiD8f8h9u4atdCReLtiNxqVDQhoVywATCbd,GapKqefWtpzNaMPMB6BWXt5Ad9E99RX2muyVLoK8hJt8,0.69407856 +4XviPQ4rUE6GVt3VfZ6LwWtvxYiZSA5pmTTsVX1HKhebTbekkLruEFJg4pC1DLVXMBwv18uKVGGQKnSqfPH7bqEn,JCKeAejKgMdSKCVdYHpyN9vN7r4hyATzyF21FJpJFNgQ,JCKeAejKgMdSKCVdYHpyN9vN7r4hyATzyF21FJpJFNgQ,2nYaLvLTRbiGtdQjaFJZdumA36kqJRPES151qz8xTZJg,0.50407856 +4nXmwBuuGpyV41QmatkmjgYpkVUmcmHFG1vxkuNmtAUfagG8E9a9ZPDy2TCDDvJP9ocp789pacsY57MXMwnZNmE2,EwUTcnP6nu3rckUCWVut4bu82k8bGuZ1DGnpQt5VsU7m,EwUTcnP6nu3rckUCWVut4bu82k8bGuZ1DGnpQt5VsU7m,Gm6bFLdQ7SY7h8CfLXwtjChxGKj3oFfWiuvGwZ93j8nE,3.20407856 \ No newline at end of file diff --git a/models/silver/nfts/silver__nft_sales_exchange_art.sql b/models/silver/nfts/silver__nft_sales_exchange_art.sql index 731d4c77..a63b151a 100644 --- a/models/silver/nfts/silver__nft_sales_exchange_art.sql +++ b/models/silver/nfts/silver__nft_sales_exchange_art.sql @@ -18,7 +18,7 @@ WITH buys AS ( i.value :parsed :info :lamports :: NUMBER, 0 ) - ) / POW( + ) / pow( 10, 9 ) AS sales_amount, @@ -32,6 +32,10 @@ WITH buys AS ( LEFT OUTER JOIN TABLE(FLATTEN(inner_instruction :instructions)) i WHERE program_id = 'AmK5g2XcyptVLCFESBCJqoSfwV3znGoVYQnqEnaAZKWn' -- Exchange Art Buys + AND NOT ARRAY_CONTAINS( + 'EXBuYPNgBUXMTsjCbezENRUtFQzjUNZxvPGTd11Pznk5' :: variant, + instruction :accounts + ) {% if is_incremental() %} AND _inserted_timestamp >= ( @@ -54,6 +58,70 @@ GROUP BY instruction :accounts [6] :: STRING, _inserted_timestamp ), +buy_nows AS ( + SELECT + e.block_timestamp, + e.block_id, + e.tx_id, + e.succeeded, + program_id, + SUM( + COALESCE( + i.value :parsed :info :lamports :: NUMBER, + 0 + ) + ) / pow( + 10, + 9 + ) AS sales_amount, + instruction :accounts [0] :: STRING AS purchaser, + instruction :accounts [1] :: STRING AS seller, + instruction :accounts [3] :: STRING AS mint, + e._inserted_timestamp + FROM + {{ ref('silver__events') }} + e + LEFT OUTER JOIN TABLE(FLATTEN(inner_instruction :instructions)) i + INNER JOIN {{ ref('silver__transactions') }} + t + ON e.tx_id = t.tx_id + LEFT JOIN TABLE(FLATTEN(t.log_messages)) l + WHERE + e.program_id = 'EXBuYPNgBUXMTsjCbezENRUtFQzjUNZxvPGTd11Pznk5' -- Exchange Art Buy Nows + AND l.value :: STRING = 'Program log: Instruction: ExecuteBuynowSale' + AND e.succeeded = TRUE + AND t.succeeded = TRUE + +{% if is_incremental() %} +AND e._inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +AND t._inserted_timestamp >= ( + SELECT + MAX(_inserted_timestamp) + FROM + {{ this }} +) +{% else %} + AND e.block_timestamp :: DATE >= '2021-10-30' + AND t.block_timestamp :: DATE >= '2021-10-30' +{% endif %} +GROUP BY + e.block_timestamp, + e.block_id, + e.tx_id, + e.succeeded, + program_id, + instruction :accounts [0] :: STRING, + instruction :accounts [1] :: STRING, + instruction :accounts [3] :: STRING, + e._inserted_timestamp +HAVING + sales_amount <> 0 +), redeems AS ( SELECT e.block_timestamp, @@ -99,7 +167,7 @@ bid_txs AS ( e.tx_id, instruction :accounts [0] :: STRING AS purchaser, instruction :accounts [2] :: STRING AS acct_1, - i.value :parsed :info :lamports / POW( + i.value :parsed :info :lamports / pow( 10, 9 ) AS bid_amount @@ -115,7 +183,7 @@ bid_txs AS ( program_id = 'exAuvFHqXXbiLrM4ce9m1icwuSyXytRnfBkajukDFuB' AND l.value :: STRING ILIKE 'Program log: processing AuctionInstruction::RegisterBid%' AND i.value :parsed :info :lamports IS NOT NULL - AND e.succeeded = TRUE + AND e.succeeded = TRUE AND t.succeeded = TRUE {% if is_incremental() %} @@ -160,7 +228,21 @@ FROM buys WHERE sales_amount > 0 -- removes transfers -UNION +UNION ALL +SELECT + block_timestamp, + block_id, + tx_id, + succeeded, + program_id, + sales_amount, + purchaser, + seller, + mint, + _inserted_timestamp +FROM + buy_nows +UNION ALL SELECT block_timestamp, block_id, diff --git a/models/silver/nfts/silver__nft_sales_exchange_art.yml b/models/silver/nfts/silver__nft_sales_exchange_art.yml index 96f61fa4..4add8fd5 100644 --- a/models/silver/nfts/silver__nft_sales_exchange_art.yml +++ b/models/silver/nfts/silver__nft_sales_exchange_art.yml @@ -18,7 +18,18 @@ models: model_condition: "where tx_id in ('m4Z84jUhtz8bJoVAv6NzAaqG4MLr8an5e1ofynziU94jANZYZrQgqs2QyE5RbSbHMhdYu3pEQf4VNEErkivoSAN', 'KcQ2QT1Ck84ho3MRbfAbBLG69R48XskEwCLbav43sZFEqn7gxQ3HPuWX6aYdJvLNNtng82mYB7r2ASGQ4wtzF9k', '4CnhCbQnMqHGLq86eN3UWi4bg5e4iz4d1an7Stbn5g1n7GmbYWUYeXC9X22xYhCTN8EhGpNzEnPbEU8yedV8atdb', - 'w9ARwPqxJyqMsQs5o7ZfawpmhpjcMRRkic86aqj7ixPjRNvzW1Xeg3iMSCGd1xDfVbkG9dqD6nFAtpgAUpMxhgT')" + 'w9ARwPqxJyqMsQs5o7ZfawpmhpjcMRRkic86aqj7ixPjRNvzW1Xeg3iMSCGd1xDfVbkG9dqD6nFAtpgAUpMxhgT', + '4XviPQ4rUE6GVt3VfZ6LwWtvxYiZSA5pmTTsVX1HKhebTbekkLruEFJg4pC1DLVXMBwv18uKVGGQKnSqfPH7bqEn', + 'LoBw8ZMW2f7UAk4EB97eG6GV8uqtvw8aA7SoXgwRU2wPCznDGEZoiqwr5yixGidQUFdUfgHKnwi8TE9X3kQSxaM', + '4nXmwBuuGpyV41QmatkmjgYpkVUmcmHFG1vxkuNmtAUfagG8E9a9ZPDy2TCDDvJP9ocp789pacsY57MXMwnZNmE2')" + - tx_excluded: + name: silver__nft_sales_exchange_art_tx_excluded_test + excluded_tx_ids: + - 464JTdP9J2joPgA3A6YGxK2b9B5tKJE8gzDeUxdGUtdhwELR4ncZzkDc6U71ypFww9ZELwuQPAN8bfzgHve7nW1o + - s67gqc1LED5MupXrfvXctwoNeShM3gmgDvWZuQTmMnRBUWR1ktkcfazYbHQVnEmVTsKYAHQnRQduRc81mNtZonD + - GkrUBY7EqHdvcosYkSuNhLHQ2bXwsMYTwVXuoJnoVxjDVfVCCifxGSxn8W9bB6PfibGEWVHzVG7oUvXLpBy4RF8 + - 2HBbrn21CdQYiJ9J74ZauBXYawjozbecqF7w3dFswp1SnzE5H8uFnqiU16LfQrY9DrkGsx9WQNkqW8vvZ4Q7tPeR + - 296LwbWf4EPx9CjD1w2Dr7ibsjYMn2E2smyTLBMsKsHb8hCA4Mc4QUxgfXMiU8qAbnPvSLBwtgjEM8uxFBH7ym6W columns: - name: BLOCK_TIMESTAMP description: "{{ doc('block_timestamp') }}"