From 4ef3ec2d70bb6e40f9cee0b0a6fd17208f05494c Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 22 May 2022 13:54:04 +0100 Subject: [PATCH] Add ability to lookup transactions by address --- frontend/src/lib/Transaction.svelte | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/src/routes/address/[address].svelte | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ frontend/src/routes/block/[id].svelte | 98 ++------------------------------------------------------------------------------------------------ migrations/up/V1__initial_schema.sql | 1 + web-api/src/database/transactions.rs | 46 +++++++++++++++++++++++++++++++++++++++++++++- web-api/src/methods/address.rs | 34 ++++++++++++++++++++++++++++++++++ web-api/src/methods/block.rs | 16 ++++++++-------- web-api/src/methods/mod.rs | 2 ++ 8 files changed, 250 insertions(+), 105 deletions(-) create mode 100644 frontend/src/lib/Transaction.svelte create mode 100644 frontend/src/routes/address/[address].svelte create mode 100644 web-api/src/methods/address.rs diff --git a/frontend/src/lib/Transaction.svelte b/frontend/src/lib/Transaction.svelte new file mode 100644 index 0000000..877a131 --- /dev/null +++ b/frontend/src/lib/Transaction.svelte @@ -0,0 +1,109 @@ + + +
+

+ § + {transaction.hash} +

+ +
+
+ {#if transaction.coinbase} +
+ Coinbase +
+ {:else} + {#each transaction.inputs as input} +
+
+
+ {#if input.previous_output?.address} + + {input.previous_output?.address} + + {:else} + {briefHexToAsm(input.script).join('\n') || 'WITNESS (TODO)'} + {/if} +
+ + {#if input.previous_output} +
+ {(input.previous_output.value / scale).toFixed(8)} BTC +
+ {/if} +
+
+ {/each} + {/if} +
+ + + +
+ ↓ +
+ +
+ {#each transaction.outputs as output} +
+
+
+ {#if output.address} + + {output.address} + + {:else} + {briefHexToAsm(output.script).join(' ').trim() || output.script} + {/if} +
+ +
+ {(output.value / scale).toFixed(8)} BTC +
+
+
+ {/each} +
+
+
+ + diff --git a/frontend/src/routes/address/[address].svelte b/frontend/src/routes/address/[address].svelte new file mode 100644 index 0000000..ed0902a --- /dev/null +++ b/frontend/src/routes/address/[address].svelte @@ -0,0 +1,49 @@ + + + + +
+
+

{address}

+
+ +
+

{transactions.length} Transaction{transactions.length > 1 ? 's' : ''}

+
+ + {#each transactions as transaction} + + {/each} +
+ + diff --git a/frontend/src/routes/block/[id].svelte b/frontend/src/routes/block/[id].svelte index 3d0474b..43e94f1 100644 --- a/frontend/src/routes/block/[id].svelte +++ b/frontend/src/routes/block/[id].svelte @@ -30,11 +30,10 @@
@@ -63,74 +62,7 @@ {#each block.transactions as transaction} -
-

- § - {transaction.hash} -

- -
-
- {#if transaction.coinbase} -
- Coinbase -
- {:else} - {#each transaction.inputs as input} -
-
-
- {#if input.previous_output?.address} - - {input.previous_output?.address} - - {:else} - {briefHexToAsm(input.script).join('\n') || 'WITNESS (TODO)'} - {/if} -
- - {#if input.previous_output} -
- {(input.previous_output.value / scale).toFixed(8)} BTC -
- {/if} -
-
- {/each} - {/if} -
- - - -
- ↓ -
- -
- {#each transaction.outputs as output} -
-
-
- {#if output.address} - - {output.address} - - {:else} - {briefHexToAsm(output.script).join(' ').trim() || output.script} - {/if} -
- -
- {(output.value / scale).toFixed(8)} BTC -
-
-
- {/each} -
-
-
+ {/each}