IanDeMartino (OP)
Member
Offline
Activity: 75
Merit: 10
|
|
October 15, 2014, 07:25:33 AM |
|
So, Coinbase does a bunch of offchain transactions to save on miner fees, then they take all those transactions and put them on the blockchain all at once.
Is this correct? That is how it works, right?
What does that look like on the blockchain? When a third party like Coinbase enters in a group of tx at once? Anyone have a link to such a transaction?
|
Tips: 1BJXcqnQyQipwo5ft1WzZpV3qJGEDE2JkP
|
|
|
Dabs
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
October 15, 2014, 08:09:39 AM |
|
I think they simply don't touch your deposits until someone does a withdrawal to a wallet outside Coinbase.
|
|
|
|
IanDeMartino (OP)
Member
Offline
Activity: 75
Merit: 10
|
|
October 15, 2014, 08:13:16 AM |
|
Right, but, does it look at all special?
|
Tips: 1BJXcqnQyQipwo5ft1WzZpV3qJGEDE2JkP
|
|
|
chennan
Legendary
Offline
Activity: 1316
Merit: 1004
|
|
October 15, 2014, 08:24:09 AM |
|
Although it will save fees for customers, it will hurt the blockchain from the long run. If all of bitcoin holders are approaching to such service, the accumulated transaction fees will be too few to incentivize the miners to carry on mining after the last block will be mined.
|
|
|
|
OnkelPaul
Legendary
Offline
Activity: 1039
Merit: 1005
|
|
October 15, 2014, 08:51:54 AM |
|
Offchain transactions are just records or changes in a database of a service that provides accounts for users. For example, if users A and B both have accounts at OnkelPaul.com, both can deposit bitcoins there by sending them to addresses handed out (and controlled) by OnkelPaul.com. From then on, they can trade with each other (and anyone else who has an account at OnkelPaul.com) which will only result in balance changes in my account database. These are the so-called offchain transactions. Once they want to withdraw, the send a withdrawal request (using a web page or whatever is appropriate at OnkelPaul.com). I'll check that their account balance in my database is sufficient, then I'll deduce that amount from their balance and send it from one of OnkelPaul.com's hot wallet addresses to their withdrawal target bitcoin address. One optimization (if I'm really eager to avoid miner fees) would be to batch withdrawals into one transaction so that one miner fee serves multiple withdrawals.
Onkel Paul
|
|
|
|
ticoti
|
|
October 15, 2014, 09:01:08 AM |
|
I think that they are offchain until someone want them to be on the blockchai, i.e until someone wants to take them out of coinbase
|
|
|
|
scarsbergholden
|
|
October 16, 2014, 02:27:01 AM |
|
So, Coinbase does a bunch of offchain transactions to save on miner fees, then they take all those transactions and put them on the blockchain all at once.
Is this correct? That is how it works, right?
What does that look like on the blockchain? When a third party like Coinbase enters in a group of tx at once? Anyone have a link to such a transaction?
No this is not correct. They only keep track of users' balances electronically. When a user wants to move their bitcon off of the coinbase "system" then coinbase will use various inputs that will be most efficient for them but will not necessarily be the inputs that you "received" from the off chain transactions. This allows for them to save on TX fees on the long term and allows them to have a competitive advantage for very small transactions
|
|
|
|
Argwai96
Legendary
Offline
Activity: 1036
Merit: 1000
Thug for life!
|
|
October 16, 2014, 11:35:34 PM |
|
Offchain transactions are just records or changes in a database of a service that provides accounts for users. For example, if users A and B both have accounts at OnkelPaul.com, both can deposit bitcoins there by sending them to addresses handed out (and controlled) by OnkelPaul.com. From then on, they can trade with each other (and anyone else who has an account at OnkelPaul.com) which will only result in balance changes in my account database. These are the so-called offchain transactions. Once they want to withdraw, the send a withdrawal request (using a web page or whatever is appropriate at OnkelPaul.com). I'll check that their account balance in my database is sufficient, then I'll deduce that amount from their balance and send it from one of OnkelPaul.com's hot wallet addresses to their withdrawal target bitcoin address. One optimization (if I'm really eager to avoid miner fees) would be to batch withdrawals into one transaction so that one miner fee serves multiple withdrawals.
Onkel Paul
The biggest advantage of off chain transactions is that you can have essentially unlimited transactions without having to pay any miner fees. The problem with off chain transactions is that you must trust the central provider of your database to accurately keep track of how much each user has in their account, which is against the principles of bitcoin
|
|
|
|
rapta
|
|
October 16, 2014, 11:42:34 PM |
|
This is pretty normal, there would be very little point to moving funds around in the same wallet.
|
|
|
|
PRab
Member
Offline
Activity: 98
Merit: 10
|
|
October 17, 2014, 12:03:38 AM |
|
I didn't see any post that actually addresses what a offchain transactions look like so here is my best attempt to draw one out.
Coinbase tells Alice a bitcoin deposit address via their webpage Coinbase --(address)--> Alice | HTTP(s) when Alice visits the coinbase website
Alice deposit's 1btc into the coinbase address. Alice --> Coinbase address | Standard bitcoin transaction recorded in blockchain
Coinbase notices that the address received 1btc and credits Alice in a private database Alice account = 1btc | Essentially a SQL insert statement
Alice now sends Bob 1btc from her coinbase account. Bob's address also happens to be a coinbase address. Coinbase does NOT need to make this transaction on the blockchain. Alice account - 1btc = 0btc | Essentially a SQL update statement Bob account + 1btc = 1btc | Essentially a SQL update statement
Finally, Bob sends 1btc to a friend Charlie, but Charlie does not use coinbase. Coinbase must make a transaction on the blockchain. Coinbase --> Charlie | Standard bitcoin transaction recorded in blockchain
As you can see, there were only 2 transactions recorded in the blockchain even though there were 3 total transactions. As long as both Alice and Bob trust coinbase to keep its DB correct, then they do not need the transaction recorded on the blockchain. Charlie doesn't care that the btc actually came from coinbase instead of Bob because the transaction has been recorded in the blockchain just like any other normal transaction.
|
|
|
|
Dabs
Legendary
Offline
Activity: 3416
Merit: 1912
The Concierge of Crypto
|
|
October 17, 2014, 01:45:53 AM |
|
Here's a nice example: Take off-chain gaming sites that accept bitcoin.
1. Alice decides to play some dice, deposits some BTC. 2. Bob decides to play some dice, deposits some BTC. 3. Charlie decides to play some dice, deposits some BTC. 4. 20 other people want to play too, they all deposit some BTC.
- snip - a few hours later - a few hundred or thousand games played.
30000. Everyone lost except a few. 30001. Some of the winners decide to withdraw.
As you can see, there are maybe 20 transactions recorded in the blockchain, even though they all collectively rolled dice 30,000 times.
This is true of most of these game sites. There's one listed in my sig (the last one) which is a referral link for me.
|
|
|
|
Argwai96
Legendary
Offline
Activity: 1036
Merit: 1000
Thug for life!
|
|
October 17, 2014, 02:25:19 AM |
|
I didn't see any post that actually addresses what a offchain transactions look like so here is my best attempt to draw one out.
Coinbase tells Alice a bitcoin deposit address via their webpage Coinbase --(address)--> Alice | HTTP(s) when Alice visits the coinbase website
Alice deposit's 1btc into the coinbase address. Alice --> Coinbase address | Standard bitcoin transaction recorded in blockchain
Coinbase notices that the address received 1btc and credits Alice in a private database Alice account = 1btc | Essentially a SQL insert statement
Alice now sends Bob 1btc from her coinbase account. Bob's address also happens to be a coinbase address. Coinbase does NOT need to make this transaction on the blockchain. Alice account - 1btc = 0btc | Essentially a SQL update statement Bob account + 1btc = 1btc | Essentially a SQL update statement
Finally, Bob sends 1btc to a friend Charlie, but Charlie does not use coinbase. Coinbase must make a transaction on the blockchain. Coinbase --> Charlie | Standard bitcoin transaction recorded in blockchain
As you can see, there were only 2 transactions recorded in the blockchain even though there were 3 total transactions. As long as both Alice and Bob trust coinbase to keep its DB correct, then they do not need the transaction recorded on the blockchain. Charlie doesn't care that the btc actually came from coinbase instead of Bob because the transaction has been recorded in the blockchain just like any other normal transaction.
The overall point of this is that bitcoin is fungible as it does not matter where the inputs for your TX came from as long as they are valid and do not get double spent.
|
|
|
|
|