<blockquote>
  <p><strong>Does using this architecture have any disadvantages over running a full bitcoin core to keep addresses?</strong></p>
</blockquote>

<p>Yes.</p>

<blockquote>
  <p>The "bitcoin core" will be some trusted public node that I don't control.</p>
</blockquote>

<p>That is a huge disadvantage.</p>

<p>As Satoshi Nakamoto <a href="https://bitcoin.org/en/bitcoin-paper" rel="nofollow noreferrer">wrote</a>:</p>

<blockquote>
  <p>What is needed is an electronic payment system based on cryptographic proof instead of trust,
  allowing any two willing parties to transact directly with each other <strong>without the need for a trusted
  third party</strong>.</p>
</blockquote>

<p>(my emphasis)</p>

<p>Every time someone tries to undo this they are kicking the founder of Bitcoin in the teeth!</p>

<hr>

<p>Other references</p>

<ul>
<li><a href="https://en.bitcoin.it/wiki/Thin_Client_Security#Server-Trusting_Clients" rel="nofollow noreferrer">Thin Client Security</a></li>
</ul>

CC BY-SA 4.0
2019-02-06T16:30:49.227Z
I understand this hurts the idea behind bitcoin! Otherwise, since the transactions are signed from my side, it doesn't seem like the third party node can act maliciously, the worst that they can do is ignore my transaction. Is there any other possible attack scenario?
viko
CC BY-SA 4.0
2019-02-06T16:48:57.023Z
@viko: See https://en.bitcoin.it/wiki/Thin_Client_Security#Server-Trusting_Clients
RedGrittyBrick
CC BY-SA 4.0
2019-02-06T10:51:20.193Z
2019-02-06T16:51:10.807Z
2019-02-06T16:51:10.807Z
RedGrittyBrick
<p>Yes you can use this architecture, provided that the bitcoin node you don't control doesn't know your private keys for any address you use.</p>
<p>What you want to do is use a reputable library, for instance electrum client, but there are many libraries in many languages available to do basic things.</p>
<p>From electrum client for instance, you can:</p>
<ul>
<li>create address (wallet, keep private)</li>
<li>create raw transaction (unsigned, and just collection of utxos basically)</li>
<li>sign transactions (keep private keys private), output hex of signed tx is safe to then broadcast</li>
<li>broadcast transactions</li>
</ul>
<p>Electrum client is sometimes called SPV mode (simple payment verification). This is the protocol used for lite clients, mobile wallets etc.</p>
<p>Once you sign your transaction, it can be broadcast via the bitcoin node you don't control, a public electrum server, or an explorer that offers relay via an api. Some mining pools offer transaction broadcasting as well.</p>
<p>The main thing to be hyper-vigilant about is that you keep your private keys (wif) secret.</p>
<p>As for getting a &quot;callback&quot; about transactions to your wallet, you can use an explorer to poll your addresses for new transactions. Also using an electrum wallet will give you the ability to do all of this as well.</p>

CC BY-SA 4.0
2024-03-13T16:05:20.590Z
2024-03-13T16:05:20.590Z
Mylo Mylo
<p>I'm trying to build a good security for my online bitcoin based application. Is something like this possible?</p>

<pre><code>send_bitcoin(address)
create_address()
sweep_balances()
       +
       |
       |
       v         New transactions
+-------------+  &lt;----------------   +--------------+
|             |                      |              |
| Wallet keys +---------------------&gt;+ Bitcoin core |
|             |                      |              |
+-------------+   Submit signed tx   +--------------+

</code></pre>

<p>The "Wallet keys" will be my hot wallet. There will be another wallet store which would be used for cold storage. The "bitcoin core" will be some trusted public node that I don't control.</p>

<p>Does using this architecture have any disadvantages over running a full bitcoin core to keep addresses?</p>

<p>I need to get callbacks for new transactions on the list of addresses in my store, that is not managed by bitcoin core. Is it possible using this method?</p>

<p>My reason is that running a full "bitcoin core" takes up too much computing resources &amp; disk which is expensive on cloud and by doing this I can avoid having to run and maintain a bitcoin node. I can submit a signed transaction to any trusted node.</p>

<p>Thanks.</p>

<bitcoin-core><wallet><bitcoind><exchanges>
Keeping wallet addresses outside bitcoin core
viko
# Keeping wallet addresses outside bitcoin core

(Asked by: username_0 on 2019-02-06)

I'm trying to build a good security for my online bitcoin based application. Is something like this possible?

```
send_bitcoin(address)
create_address()
sweep_balances()
       +
       |
       |
       v         New transactions
+-------------+  <----------------   +--------------+
|             |                      |              |
| Wallet keys +--------------------->+ Bitcoin core |
|             |                      |              |
+-------------+   Submit signed tx   +--------------+

```

The "Wallet keys" will be my hot wallet. There will be another wallet store which would be used for cold storage. The "bitcoin core" will be some trusted public node that I don't control.

Does using this architecture have any disadvantages over running a full bitcoin core to keep addresses?

I need to get callbacks for new transactions on the list of addresses in my store, that is not managed by bitcoin core. Is it possible using this method?

My reason is that running a full "bitcoin core" takes up too much computing resources & disk which is expensive on cloud and by doing this I can avoid having to run and maintain a bitcoin node. I can submit a signed transaction to any trusted node.

Thanks.

**Tags:** bitcoin-core, wallet, bitcoind, exchanges


---

## 2 answers

### Answer by username_1 on 2019-02-06. Score: 0

> **Does using this architecture have any disadvantages over running a full bitcoin core to keep addresses?**

Yes.

> The "bitcoin core" will be some trusted public node that I don't control.

That is a huge disadvantage.

As Satoshi Nakamoto [wrote](https://bitcoin.org/en/bitcoin-paper):

> What is needed is an electronic payment system based on cryptographic proof instead of trust,
> allowing any two willing parties to transact directly with each other **without the need for a trusted
> third party**.

(my emphasis)

Every time someone tries to undo this they are kicking the founder of Bitcoin in the teeth!

---

Other references

* [Thin Client Security](https://en.bitcoin.it/wiki/Thin_Client_Security#Server-Trusting_Clients)

> **Comments:**
> **username_0**: I understand this hurts the idea behind bitcoin! Otherwise, since the transactions are signed from my side, it doesn't seem like the third party node can act maliciously, the worst that they can do is ignore my transaction. Is there any other possible attack scenario?  
> **username_1**: @username_0: See https://en.bitcoin.it/wiki/Thin_Client_Security#Server-Trusting_Clients  

---

### Answer by username_2 on 2024-03-13. Score: 0

Yes you can use this architecture, provided that the bitcoin node you don't control doesn't know your private keys for any address you use.

What you want to do is use a reputable library, for instance electrum client, but there are many libraries in many languages available to do basic things.

From electrum client for instance, you can:

* create address (wallet, keep private)
* create raw transaction (unsigned, and just collection of utxos basically)
* sign transactions (keep private keys private), output hex of signed tx is safe to then broadcast
* broadcast transactions

Electrum client is sometimes called SPV mode (simple payment verification). This is the protocol used for lite clients, mobile wallets etc.

Once you sign your transaction, it can be broadcast via the bitcoin node you don't control, a public electrum server, or an explorer that offers relay via an api. Some mining pools offer transaction broadcasting as well.

The main thing to be hyper-vigilant about is that you keep your private keys (wif) secret.

As for getting a "callback" about transactions to your wallet, you can use an explorer to poll your addresses for new transactions. Also using an electrum wallet will give you the ability to do all of this as well.


---

