Pages:
Author

Topic: Vanity bitcoin addresses: a new way to keep your CPU busy - page 4. (Read 29764 times)

newbie
Activity: 22
Merit: 0
I would love this using the GPU.
newbie
Activity: 20
Merit: 0
Of source big problem with wallat safty!
Copy "wallat.pasta" to use/steal there bitcoins from open sesame wallat!
newbie
Activity: 24
Merit: 0
The idea is cool, but I think there's a big problem in safty.

After you generated a bitcoin address, that means you hold the 'wallat.data' of this address and of source you've a copy of the file.

After you sending this wallet to others, you may still have a copy of the file, how could others believe that you won't use/steal there bitcoins from this wallat?
legendary
Activity: 1288
Merit: 1076
Thanks for reviving this old thread.

I've added a "vanityAddress" function in my bash lib:

Code:
#!/bin/bash
#
# This is free and unencumbered software released into the public domain.
#
# Anyone is free to copy, modify, publish, use, compile, sell, or
# distribute this software, either in source code form or as a compiled
# binary, for any purpose, commercial or non-commercial, and by any
# means.
#
# In jurisdictions that recognize copyright laws, the author or authors
# of this software dedicate any and all copyright interest in the
# software to the public domain. We make this dedication for the benefit
# of the public at large and to the detriment of our heirs and
# successors. We intend this dedication to be an overt act of
# relinquishment in perpetuity of all present and future rights to this
# software under copyright law.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
#
# Requires bc, dc, openssl, xxd
#

base58=({1..9} {A..H} {J..N} {P..Z} {a..k} {m..z})
bitcoinregex="^[$(printf "%s" "${base58[@]}")]{34}$"

decodeBase58() {
    local s=$1
    for i in {0..57}
    do s="${s//${base58[i]}/ $i}"
    done
    dc <<< "16o0d${s// /+58*}+f"
}

encodeBase58() {
    # 58 = 0x3A
    bc <<<"ibase=16; n=${1^^}; while(n>0) { n%3A ; n/=3A }" |
    tac |
    while read n
    do echo -n ${base58[n]}
    done
}

checksum() {
    xxd -p -r <<<"$1" |
    openssl dgst -sha256 -binary |
    openssl dgst -sha256 -binary |
    xxd -p -c 80 |
    head -c 8
}

checkBitcoinAddress() {
    if [[ "$1" =~ $bitcoinregex ]]
    then
        h=$(decodeBase58 "$1")
        checksum "00${h::${#h}-8}" |
        grep -qi "^${h: -8}$"
    else return 2
    fi
}

hash160() {
    openssl dgst -sha256 -binary |
    openssl dgst -rmd160 -binary |
    xxd -p -c 80
}

hash160ToAddress() {
    printf "%34s\n" "$(encodeBase58 "00$1$(checksum "00$1")")" |
    sed "y/ /1/"
}

publicKeyToAddress() {
    hash160ToAddress $(
    openssl ec -pubin -pubout -outform DER 2>/dev/null |
    tail -c 65 |
    hash160
    )
}

makeBitcoinPair() {
    openssl ecparam -genkey -name secp256k1 |
        tee >(gpg -ae -r grondilu) |
        openssl ec -pubout |
        publicKeyToAddress
}

timestamp() {
    hash160ToAddress "$(hash160)"
}

bigEndianHex2littleEndianHex() {
    local s=''
    while read -n 2 char
    do s=$char$s
    done
    echo $s
}

bitcoinHash() {
    bigEndianHex2littleEndianHex |
    xxd -p -r |
    openssl dgst -sha256 -binary |
    openssl dgst -sha256 -binary |
    xxd -p -c 80 |
    bigEndianHex2littleEndianHex
}

vanityAddress() {
    local pub priv
    while [[ ! "$pub" =~ $1 ]]
    do
        priv="$(openssl ecparam -genkey -name secp256k1 2>/dev/null)"
        pub="$(openssl ec -pubout 2>/dev/null <<<"$priv" | publicKeyToAddress)"
    done
    echo "$pub
    $priv"
}
legendary
Activity: 1372
Merit: 1007
1davout
Just to give some perspective: in order to run out of addresses, each human currently living on the planet (±6 billions) has to generate 500 million of addresses for each single nano-second (10⁻⁹s) during the entire age of the universe (15 billions of years).
Read "the restaurant at the end of the universe" you might then want to review your statement Cheesy
sr. member
Activity: 428
Merit: 253

But there are 2^160 possible bitcoin addresses,

Just to give some perspective: in order to run out of addresses, each human currently living on the planet (±6 billions) has to generate 500 million of addresses for each single nano-second (10⁻⁹s) during the entire age of the universe (15 billions of years).

I think that, from that point of view, the system is pretty safe.
newbie
Activity: 29
Merit: 0
I have a simple handshake scheme which allows me to generate a new address for you without me finding out your private key.

How does this work? You HAVE to explain it or the public wont trust your keys. Furthermore, some segment of the population has to understand it fully, the rest will follow the herd of smart people.

Til then tho, there's no market.
staff
Activity: 4172
Merit: 8419
If there is a demand for it, I might be tempted to start a webservice like the faucet where people can buy vanity addresses for a small bitcoin fee. I have a simple handshake scheme which allows me to generate a new address for you without me finding out your private key. My method sounds like it's faster than Gavin's and mathematically it's non-trivial. It can find addresses containing a short string like "gavin" in a fraction of a second for example.
ByteCoin

I think the claim that you can do this search without knowing the private key is surprising and dubious.

I'd be interested in hearing more about how you propose to do this.
 

newbie
Activity: 29
Merit: 0
Wow... i should be a little less gluttonous though... or really lucky :p
Thanks for the estimation.

Is your software using the GPU too? Whats the nominal market value for this derivative market? Smiley

You sharing your vanity generation code? Smiley
hero member
Activity: 540
Merit: 500
Wow... i should be a little less gluttonous though... or really lucky :p
Thanks for the estimation.
sr. member
Activity: 416
Merit: 277
How long will it take to find an address matching : "^1Khalahan[A-Z0-9]" ? Cheesy

You need to search about 1.28E14 keys. Using my software (if I remember the performance correctly) that'd take me about 4 years.

ByteCoin
hero member
Activity: 540
Merit: 500
Vanity key tried 29'800'000.

How long will it take to find an adress matching : "^1Khalahan[A-Z0-9]" ? Cheesy
legendary
Activity: 1288
Merit: 1076
IllSend1000BTCtoWhoEvrMakesDisAddr

Awww, even replacing the lower-case-l's with 1's it ain't right:
Code:
$ bitcoind validateaddress I11Send1000BTCtoWhoEvrMakesDisAddr
{
    "isvalid" : false
}

Hum ?  What did I get wrong ?  I thought it would be ok.   I guess I didn't understand what base58 is exactly...  My bad.


edit:
ok I checked Satoshi's code (in base58.h), and now I know :

//
// Why base-58 instead of standard base-64 encoding?
// - Don't want 0OIl characters that look the same in some fonts and
//      could be used to create visually identical looking account numbers.
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
//
legendary
Activity: 1652
Merit: 2216
Chief Scientist
IllSend1000BTCtoWhoEvrMakesDisAddr

Awww, even replacing the lower-case-l's with 1's it ain't right:
Code:
$ bitcoind validateaddress I11Send1000BTCtoWhoEvrMakesDisAddr
{
    "isvalid" : false
}
legendary
Activity: 1288
Merit: 1076
IllSend1000BTCtoWhoEvrMakesDisAddr


Good luck

Smiley


More seriously, I think this app is useless, but very much fun.  I'm looking forward to see a stable version.
legendary
Activity: 1246
Merit: 1014
Strength in numbers
leet-speak might help with finding things a bit quicker: http://en.wikipedia.org/wiki/Leet

It would basically be a automatically applied transformation from regular text to a regexp which includes the leet-character alternatives. Mostly the numeric ones that are usable I imagine.

Haha, clever.
sr. member
Activity: 440
Merit: 250
#SWGT CERTIK Audited
leet-speak might help with finding things a bit quicker: http://en.wikipedia.org/wiki/Leet

It would basically be a automatically applied transformation from regular text to a regexp which includes the leet-character alternatives. Mostly the numeric ones that are usable I imagine.
full member
Activity: 132
Merit: 101
I would love a regular expression functionality, I vote for PCRE and POSIX ERE functionality! in that order.
sr. member
Activity: 416
Merit: 277
ByteCoin: cool!  Are you finding alternative public keys for a given ECC private key?  (are there multiple public keys for a given private ECC key???  I know very little about elliptic curve cryptography)

The maths fundamentally does allow this under certain circumstances but a good implementation checks for it and only accepts the "normal" form. I imagine that the library does a good job and, even if it didn't, a patch would rapidly end such tricks.

My method involves laboriously generating  billions of new addresses every second - but how to do that best requires some thought. There's no way of distinguishing between my novelty addresses and just being very lucky when generating a normal address.

I am surprised, I wouldn't think an improvement that extreme would be possible. Your algorithm must still take exponential time as chars increase right?

Sadly yes.

If you guys want a small number of novelty addresses and are prepared to pay handsomely for them then I can generate some "manually". If there's deeper demand then I will look into automating the process but it would take a lot longer to set up. What would people pay for having the first novelty address starting with "1" and followed by the characters of their choice?

ByteCoin
legendary
Activity: 1652
Merit: 2216
Chief Scientist
ByteCoin: cool!  Are you finding alternative public keys for a given ECC private key?  (are there multiple public keys for a given private ECC key???  I know very little about elliptic curve cryptography)

And to all:  I couldn't resist, I updated the patch so it can search for a regular expression and so it starts a separate thread and doesn't monopolize the RPC thread.  My machine is busy looking for a bitcoin address that matches '^1Gavin' right now.

Pages:
Jump to: