Author

Topic: Prove offline transactions to customers? (Read 685 times)

legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
April 21, 2014, 10:24:34 PM
#14
You could make it automated, up to right before the withdrawal part, where a human has to approve the transaction before broadcasting it. Or the software does not have access to the private keys (you can make an encrypted wallet or use pywallet to create a wallet with no private keys)
hero member
Activity: 707
Merit: 505
You don't even have to use any hot wallets.....do withdrawals every few hours manually.
I appreciate the advice and that is a cool idea but i'm hoping to have the system as automated as possible so it looks like that wont be possible for me Sad
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
You don't even have to use any hot wallets. Everything can be cold. Some gambling websites don't have hot wallets, they do withdrawals every few hours manually.
hero member
Activity: 707
Merit: 505
Yeah I will have to go adjust a few things, not really a catastrophe just not as ideal as it was in my mind. Love learning about the in's and out's though like this. It's another bitcoin gambling service (like we don't have enough of those) hopefully i'll be plugging it in the announcements section in another week or two Smiley
legendary
Activity: 3472
Merit: 4801
From a security standpoint though this is a bit of a nightmare and it now makes sense to me why so many exchanges have had their funds stolen when they have been hacked.
One of the main goals I had with my app was to make the service as cheap as possible but my fees are basically going to have to double now unfortunately.
Secondly moving my collected fees to a cold storage wallet cannot happen after every transaction because again the (network) fees are going to accumulate too quickly, I'm now faced with the prospect of waiting until a certain amount of profit is reached and then transferring it to a secure wallet in batches, this is great news for prospective hackers because it means I'll be keeping coins in hot wallets for longer. Darn Sad

It sounds like you need to reconsider how you are handling cold storage and hot storage.

You haven't explained much about what your service is supposed to do, but perhaps it isn't necessary to move funds so much.

The fees are going to be similar whether you wait for large batches or not, since the fee is paid per kilobyte and each output that you try to move will be nearly 200 bytes.

Perhaps it would make more sense to receive all payments directly to a cold storage address so you don't have to move it all.  A hot wallet is only necessary for the funds that will be sent out. 
hero member
Activity: 707
Merit: 505
April 21, 2014, 07:12:30 PM
#9
From a security standpoint though this is a bit of a nightmare and it now makes sense to me why so many exchanges have had their funds stolen when they have been hacked.
One of the main goals I had with my app was to make the service as cheap as possible but my fees are basically going to have to double now unfortunately.
Secondly moving my collected fees to a cold storage wallet cannot happen after every transaction because again the (network) fees are going to accumulate too quickly, I'm now faced with the prospect of waiting until a certain amount of profit is reached and then transferring it to a secure wallet in batches, this is great news for prospective hackers because it means I'll be keeping coins in hot wallets for longer. Darn Sad
legendary
Activity: 3472
Merit: 4801
April 21, 2014, 03:55:50 PM
#8
Well that certainly is bad news Sad I was hoping to move my commissions into a cold storage wallet using the 'move' command so that  in case my server was ever hacked the company profits wouldn't be spendable but now it seems every transaction will have to be broadcast to the network and paid for, darn.
Well thank you all for your input and clarification I'm very grateful Smiley

Thanks again Smiley

There are no bitcoins in wallets.  Wallets are just a collection of private keys and the address associated with each private key.

All actual value is represented in the blockchain as a chain of transactions.  Bitcoin protects this value with a requirement that a digital signature be provided from the appropriate private keys to update the blockchain with a transaction transferring control of the value to someone else's private key.

As such, the only way to "move" value in bitcoin to a new address is to create a transaction, broadcast it to the network, and have it confirmed into the blockchain.

At the technical level it gets even messier than that, since there are no actual bitcoins or addresses.  Those are just abstractions we humans use to make discussions easier when talking about transferring control of value.
hero member
Activity: 707
Merit: 505
April 21, 2014, 03:45:42 PM
#7
Well that certainly is bad news Sad I was hoping to move my commissions into a cold storage wallet using the 'move' command so that  in case my server was ever hacked the company profits wouldn't be spendable but now it seems every transaction will have to be broadcast to the network and paid for, darn.
Well thank you all for your input and clarification I'm very grateful Smiley

Thanks again Smiley
legendary
Activity: 3472
Merit: 4801
April 21, 2014, 09:35:10 AM
#6
"Accounts" in bitcoind  are not bitcoin "addresses".  Accounts are entirely invisible to anyone else other than the person using bitcoind.

Think of it a bit like a bank. Some one comes in and deposits cash, and the bank updates that person's "account".  Then someone comes in and withdraws some cash and the bank updates that person's "account". Note that the cash that was deposited by one person might be withdrawn by a different person, or by the same person.  The bank doesn't keep track of the individual notes to make sure that a person only withdraws the specific notes that they deposited.  Now, imagine that you call the bank and ask them to transfer some cash from your account to your friend's account.  The bank doesn't go into the vault and move physical notes between the two of you, they just update the two "account" balances.  If the bank allows people to overdraw their account, it is even possible for someone's "account" to be come negative.

bitcoind is similar.  If you use the "move" command, you are just reducing the value that bitcoind is keeping track of for one "account" and increasing the value in another "account"  You aren't moving any actual bitcoins.  When you send a payment "from an account", it may spend the same outputs that were originally recieved at that "account", but not necessarily.  If you want to control specifically which outputs are spent, you need to use coin control in the user interface or raw transactions from the bitcoind interface.
hero member
Activity: 707
Merit: 505
April 21, 2014, 08:09:40 AM
#5
Using the accounts feature in bitcoin core is not recommended. Accounts can go negative. They don't work like a proper accounts system.
I'm playing around on the test net and I can see the negatives you're talking about, very confusing. I would still very much like to understand the ins and outs of the move command though, their must be a use for it :/
legendary
Activity: 3682
Merit: 1580
April 21, 2014, 07:45:15 AM
#4
Using the accounts feature in bitcoin core is not recommended. Accounts can go negative. They don't work like a proper accounts system.
hero member
Activity: 707
Merit: 505
April 21, 2014, 07:32:48 AM
#3
Thank you for the speedy response.
I'm having a bit of trouble understanding the 'move' command then - Lets say someone sends me some btc to account 'x' in my wallet, i 'move' it in-house to account 'y' and send it back to them. Where will they think the coins came from?
If they see that the coins came from account 'y' (which they should) then where did account y get the coins from according to the publicly visible blockchain?

What i mean to say is, if they decided to follow the coins back to their source then they would get to the account 'y' wallet and reach a dead end but this doesn't ring true with me somehow. Please can you shed some light if possible?

Thanks again Smiley
hero member
Activity: 742
Merit: 502
Circa 2010
April 21, 2014, 07:21:02 AM
#2
I'm trying to develop a bitcoin app in which a customer will send me some funds, I will then move them around from one account to another and send it back to them.
To save on transaction fees I want to us the 'move' command for in-house transfers but when I do so I'm only provided with a True or False value rather than a transaction id.

My question is - When the funds are moved will this be this visible in the blockchain (blockchain.info in particular) and if not then how can I prove to my customers that the 'movements' took place and I'm not just lying to them?

Thanks in advance for any input Smiley

Unless I'm deeply mistaken the only way you can move funds between different addresses is to broadcast a transaction and have it confirmed in a block like everyone else (meaning you can't avoid fees unfortunately). As addresses are considered separate and your wallet is simply a conglomeration of addresses I don't think there is a function to move BTC between addresses in the same wallet. Obviously if you have a standard tx it will be visible on any blockchain explorer.
hero member
Activity: 707
Merit: 505
April 21, 2014, 07:15:50 AM
#1
Hi everyone Smiley

I'm trying to develop a bitcoin app in which a customer will send me some funds, I will then move them around from one account to another and send it back to them.
To save on transaction fees I want to us the 'move' command for in-house transfers but when I do so I'm only provided with a True or False value rather than a transaction id.

My question is - When the funds are moved will this be this visible in the blockchain (blockchain.info in particular) and if not then how can I prove to my customers that the 'movements' took place and I'm not just lying to them?

Thanks in advance for any input Smiley

(I'm not trying to develop a mixer by the way)
Jump to: