Bitcoin Forum
April 25, 2024, 06:48:15 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Using bitcoind to determine sending address to check for green address  (Read 1967 times)
DBordello (OP)
Sr. Member
****
Offline Offline

Activity: 349
Merit: 250


BTCPak.com - Exchange your Bitcoins for MP!


View Profile WWW
February 19, 2012, 05:52:11 PM
Last edit: February 19, 2012, 07:24:39 PM by DBordello
 #1

I am considering adding support to my service for a couple of green addresses.

Is there a way to use the standard bitcoind to determine the source of incoming transactions?  Or am I required to use a web service such as blockchain.info or roll my own client?

A patch to the standard bitcoin client would be great.  

Thoughts?

Dan

www.BTCPak.com - Exchange your bitcoins for MP: Secure, Anonymous and Easy!
1714070895
Hero Member
*
Offline Offline

Posts: 1714070895

View Profile Personal Message (Offline)

Ignore
1714070895
Reply with quote  #2

1714070895
Report to moderator
1714070895
Hero Member
*
Offline Offline

Posts: 1714070895

View Profile Personal Message (Offline)

Ignore
1714070895
Reply with quote  #2

1714070895
Report to moderator
1714070895
Hero Member
*
Offline Offline

Posts: 1714070895

View Profile Personal Message (Offline)

Ignore
1714070895
Reply with quote  #2

1714070895
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714070895
Hero Member
*
Offline Offline

Posts: 1714070895

View Profile Personal Message (Offline)

Ignore
1714070895
Reply with quote  #2

1714070895
Report to moderator
1714070895
Hero Member
*
Offline Offline

Posts: 1714070895

View Profile Personal Message (Offline)

Ignore
1714070895
Reply with quote  #2

1714070895
Report to moderator
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
February 19, 2012, 07:22:49 PM
 #2

A [p]atch to the standard bitcoin client would be great.  

I'm not generally in favor of this at this time.  "Green addresses" add irrelevant bloat to the block chain (no one but the recipient cares about that data, certainly not people 10 years from now) and compromise the privacy of Bitcoin users— even people who aren't directly the users of green addresses.  They also encourage poor key management practices (e.g. keep all your funds on a single green address) or even more chain bloat (by doing two step transactions).

I also understand from talking to Magicaltux that green addresses have not been much of a success.

We added the signmessage functionality so that people could use a well known public key (your green address if you will) to sign any data they want, including transaction IDs, without putting anything in the blockchain or publishing it.    For example, when you made a withdraw from a trusted bank, the bank could use its well known key to signmessage the relevant transaction ID.  It could then either send this signature directly to the recipient if you provided a payment URL,  or provide it to the user as a "confirmation value" which they could carry over to the other side.

Unfortunately MTGOX did not implement the former because they don't want their customers telling them that they're sending funds to $QUESTIONABLE_PLACE, and didn't implement the latter because it's not fully automatic.

gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
February 19, 2012, 08:29:57 PM
 #3

I have a simple protocol here for private messages associated with transactions which can only be read by the reviver. This would allow inband broadcast green addresses without compromising privacy or bloating the blockchain:

Say we have a TXN(Me->You) with a TXID.  I want to tell you that it was really RealME who created this transaction, even though no one knows who Me is, and I want to do this in a way you can prove to others that RealMe claims to be Me should I screw you... but we don't want anyone else to know otherwise.

So I first send TXN(Me->You) on the network.

I then form a message to be sent secretly to you  Message={TXID,SIGN(RealMe,TXID)}

I then compute Ek = ECDH(Me_private,You_public) and then compute Em = Enc(Ek,Message).

Then I sign Em,  Sig_EM = SIGN(Me,TXID||Em) and finally I broadcast {TXID,Em,Sig_EM}.

Relaying nodes are able to associate the message to a particular recent transaction and only allow one (or a small number) of messages to prevent DOS.  But other than telling that the sender of TXN(Me->You) send a message they learn nothing more.

The recipient of the transaction would see they received a message. They could repeat the procedure, decode the message, and find the signature in it proving that RealMe claims responsibility for the transaction.   Should I cheat them by reneging on the transaction, they could publish the signature to prove my untrustworthyness.

The problem here is that the addresses we send funds to don't include a public key... only the hash of the public key. So I probably don't know You_public to perform the ECDH.   This could be resolved by making an address type with an extra 256 bit compressed public key tacked on the end.  This key would only be used to receive private messages associated with the address.  (This would also have the benefits of working with P2SH transactions, even complicated multisig ones so long as you don't mind that there is a single address which can be used to decode messages).

Such a system would enable some unfortunate additional parasitic applications of the Bitcoin network... but better to have them only ephemerally sending a limited amount of traffic rather than imposing on the blockchain for all time. By rate limiting these messages based on transactions they shouldn't make the situation any worse.
DBordello (OP)
Sr. Member
****
Offline Offline

Activity: 349
Merit: 250


BTCPak.com - Exchange your Bitcoins for MP!


View Profile WWW
February 26, 2012, 05:29:09 PM
 #4

Although green addresses could be debated, I am still looking for a way to identify them locally.

Are there any good solutions right now that allow someone to determine the inputs and outputs of a transaction (locally, without querying a web service)?  This would have to include unconfirmed transactions as well (otherwise abe would be a good option). 

Any ideas are appreciated.

www.BTCPak.com - Exchange your bitcoins for MP: Secure, Anonymous and Easy!
Herbert
Hero Member
*****
Offline Offline

Activity: 488
Merit: 500



View Profile WWW
February 27, 2012, 12:49:36 PM
 #5

Have a look at the bitcoin fork I made for www.bitcoinmonitor.net.

Among some other stuff the rpc command "getBlock" is extended to include basically the full block information, including all transactions with inputs and outputs that are contained in a block.
Also there is a new command "getAnyTransaction" which can be used to get information on any transaction known, not only to transactions which involve your own wallet. Also here all inpoints and outpoints are included.

=> https://github.com/TripleSpeeder/bitcoin

HTH.

www.bitcoinmonitor.net - Free payment notification via email, newsfeed, xpmm/jabber, url callback and full API access!
Send SMS with www.txt4coins.net! No registration, pay-per-use, full API access, bulk messages - All inclusive!
Pieter Wuille
Legendary
*
qt
Offline Offline

Activity: 1072
Merit: 1174


View Profile WWW
February 27, 2012, 08:18:19 PM
 #6

You may be interested in pull requests 841 and/or 886, which add such functionality to the reference client.

I must admit that I agree with gmaxwell here on the topic of green addresses: they use the block chain as a communication channel for what is essentially private information. Nonetheless, seeing block's and transaction's full contents is sometimes useful.

I do Bitcoin stuff.
Herbert
Hero Member
*****
Offline Offline

Activity: 488
Merit: 500



View Profile WWW
February 27, 2012, 09:40:25 PM
 #7

You may be interested in pull requests 841 and/or 886, which add such functionality to the reference client.
Nice. Seems to add much of the stuff I need :-)

www.bitcoinmonitor.net - Free payment notification via email, newsfeed, xpmm/jabber, url callback and full API access!
Send SMS with www.txt4coins.net! No registration, pay-per-use, full API access, bulk messages - All inclusive!
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532
Merit: 501


We have cookies


View Profile WWW
March 02, 2012, 08:32:52 PM
Last edit: March 21, 2012, 08:14:31 AM by DeepBit
 #8

I am considering adding support to my service for a couple of green addresses.

Is there a way to use the standard bitcoind to determine the source of incoming transactions?  Or am I required to use a web service such as blockchain.info or roll my own client?

A patch to the standard bitcoin client would be great.
Try to find gavin's monitoring patch and modify it to push each received TX to your software. This way you'll be able to accept TXes from green addresses with 0 confirmations.

Deepbit happily uses green addresses and if you have any questions you can PM or e-mail me.

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
DBordello (OP)
Sr. Member
****
Offline Offline

Activity: 349
Merit: 250


BTCPak.com - Exchange your Bitcoins for MP!


View Profile WWW
March 21, 2012, 01:59:18 AM
 #9

You may be interested in pull requests 841 and/or 886, which add such functionality to the reference client.

I must admit that I agree with gmaxwell here on the topic of green addresses: they use the block chain as a communication channel for what is essentially private information. Nonetheless, seeing block's and transaction's full contents is sometimes useful.


Pieter,

Pull 841 was perfect.  I am now able to validate green address transactions locally.

Thanks,
Dan

www.BTCPak.com - Exchange your bitcoins for MP: Secure, Anonymous and Easy!
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!