# Gavin Andresen # 2010-07-14 02:20:45 # https://bitcointalk.org/index.php?topic=286.msg2721#msg2721 @s{quotedtext} @s{quotedtext} I'm imagining: @p{par} A lightweight client would have a wallet with coins in it (public+private key pairs). @p{par} And a secure way of sending messages to, and getting messages from, any of the ultra-fast, always-connected heavyweight nodes. @p{par} The lightweight client sends money by: @p{brk} creating a transaction (signing coins with the private key) @p{brk} sending the signed transaction securely to the ultra-fast server, which puts it on the network. @p{brk} receiving confirmation that the transaction was valid and sent, and updating its wallet (marks coins as spent) @p{brk} (or getting a "you already spent those coins" error from the server) @p{par} The lightweight client receives money by: @p{brk} Either polling the server every once in a while, asking "Any payments to these BC addresses that I have in my wallet?" @p{brk} ... or asking the server to tell it whenever it sees a transaction to a list of BC addresses (or maybe when it sees @p{brk} a relevant transaction with N confirmations) @p{brk} When transactions occur, the lightweight client updates its wallet (adds the coins). @p{par} You don't have to trust the server; it never has your private keys. @p{par} Well, you do have to trust that the server doesn't lie about whether your transactions are valid or not, but why would the server lie about that? @p{par}