Bitcoin Forum
June 14, 2024, 08:09:08 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: What do OffChain Tx Look Like When They Hit The Blockchain?  (Read 1240 times)
IanDeMartino (OP)
Member
**
Offline Offline

Activity: 75
Merit: 10


View Profile
October 15, 2014, 07:25:33 AM
 #1

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 Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
October 15, 2014, 08:09:39 AM
 #2

I think they simply don't touch your deposits until someone does a withdrawal to a wallet outside Coinbase.

IanDeMartino (OP)
Member
**
Offline Offline

Activity: 75
Merit: 10


View Profile
October 15, 2014, 08:13:16 AM
 #3

Right, but, does it look at all special?

Tips: 1BJXcqnQyQipwo5ft1WzZpV3qJGEDE2JkP
chennan
Legendary
*
Offline Offline

Activity: 1316
Merit: 1004


View Profile
October 15, 2014, 08:24:09 AM
 #4

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 Offline

Activity: 1039
Merit: 1004



View Profile
October 15, 2014, 08:51:54 AM
 #5

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
Hero Member
*****
Offline Offline

Activity: 854
Merit: 1000


View Profile
October 15, 2014, 09:01:08 AM
 #6

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
Hero Member
*****
Offline Offline

Activity: 686
Merit: 500



View Profile
October 16, 2014, 02:27:01 AM
 #7

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 Offline

Activity: 1036
Merit: 1000


Thug for life!


View Profile
October 16, 2014, 11:35:34 PM
 #8

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
Sr. Member
****
Offline Offline

Activity: 325
Merit: 250


View Profile
October 16, 2014, 11:42:34 PM
 #9

This is pretty normal, there would be very little point to moving funds around in the same wallet.
PRab
Member
**
Offline Offline

Activity: 98
Merit: 10


View Profile
October 17, 2014, 12:03:38 AM
 #10

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 Offline

Activity: 3416
Merit: 1912


The Concierge of Crypto


View Profile
October 17, 2014, 01:45:53 AM
 #11

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 Offline

Activity: 1036
Merit: 1000


Thug for life!


View Profile
October 17, 2014, 02:25:19 AM
 #12

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.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!