Bitcoin Forum
May 07, 2024, 01:14:37 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 [2] 3 4 »
21  Bitcoin / Development & Technical Discussion / Re: Yet another Coin Control Release on: March 04, 2013, 08:31:23 PM
update v0.8.0

Changes:
- GUI: removed tab coin control, it is now integrated in send coins dialog as popup
- REMOVAL: removed trace back feature completely, because it is no more possible with pruned txindex
- FEATURE: control of change address (auto,back to input,custom)
- rebased to current master, using the new lockCoin methods
- updated screenshots
- submitted pull request
22  Bitcoin / Development & Technical Discussion / Yet another Coin Control Release [CLOSED] on: February 15, 2013, 01:38:36 PM
Here's some good news for all coin control fans:

I was going to merge the old coin control code, making a few changes to the crappy GUI form, but ended up in a complete rewrite of coin control:)
I have been testing this for a week now, works great for me, so I guess, I can throw this out to the public now.

What is coin control?
When you send bitcoins to someone else, the bitcoin client chooses kinda randomly which of your addresses will send the coins. With coin control you can exactly choose, which of your addresses will be the sending addresses. And even more specific which of your unspent outputs will be the sending inputs.
  
What is an unspent output?
Lets say your bitcoin address is 111. Now someone sends 1 BTC to this address. Now address 111 has one unspent output. Now someone else sends 2 BTC to this address. Now address 111 has two unspent outputs and a balance of 3 BTC in total. Now lets say you want to send someone 0.1 BTC. One could say "ok, simply subtract 0.1 BTC from the first unspent output and send it". But this is not possible, because the bitcoin protocol works different. You always have to spent the whole output. This means in this case the bitcoin client would take the first unspent output, send 0.1 BTC to the other person and 0.9 BTC back to yourself. For this the client creates a new change address in the background and adds this address to your wallet. This address would then have one unspent output of 0.9 BTC. This means every wallet has kinda "hidden" change addresses. For example if you now would loose your wallet, but still know the private key of 111, you would be only able to get the 2 BTC back. The 0.9 BTC from the change address are gone, because you would have to know the private key of the change address.
  
Why coin control?
The first version of coin control was called "Patching The Bitcoin Client To Make It More Anonymous". Sometimes when you receive bitcoins, the sender or even the public knows that it is you who owns the bitcoin address. Now if you later want to make a real anonymous payment, you shouldnt use those coins. Also you get full control over your unspent outputs and can do things like choosing which address actually owns the coins, clean them up or send all change back to the origin address etc. You can also prevent the bitcoin client from creating a change address by exactly sending the amount of selected unspent outputs minus the fee. Also you get a better impression of whats going on in your wallet and get a better understanding of the bitcoin protocol.

Changes to the GUI

Screenshots
screenshot1.png
screenshot2.png
screenshot3.png
screenshot4.png
screenshot5.png

Main
  • Settings checkbox "Display coin control features (experts only!)" (default=no)

Tab Send coins
  • Button Inputs
    • click on this button opens actual coin control dialog. If no Inputs are selected "automatically selected" is shown.
  • Change Checkbox
    • checked -> provide custom change address

Coin Control Dialog
  • Shows a list of all unspent outputs with two view modes
    • tree mode: outputs including change are grouped by wallet address
      tree can be opened showing the actual outputs for this wallet address including change
      if change, the change bitcoin address is shown in column "address", otherwise the column "address" is empty, because its a direct output of the wallet address having the bitcoin address already shown in the parent node (same with label)
    • list mode: simple list of all unspent outputs
  • select outputs by checkbox -> only the checked outputs are used when sending a transaction
    if none are selected -> coin control inactive (just as normal)
  • check/uncheck all by clicking on "(Un)select all"
  • sort colums
  • tooltip available in column list mode in column label for the change (shows from which address the change came from)
  • Context menu
    Copy to clipboard (amount,label,address,transaction id,lock,unlock)
  • Labels at the top
    Quantity: number of selected outputs
    Amount: sum of selected unspent outputs
    Fee:   see "Calculation of fee and transaction size" below
    minus fee: simply the amount shown is "Selected" minus the amount shown in "Fee"
    Bytes: see "Calculation of fee and transaction size" below
    Priority: priority = coinage / transactionsize. coinage = value * confirmations.  miners order transactions by priority when selecting which go into a block
    Low Output: "yes" if any recipient receives an amount < 0.01BTC
    Change: shows the change you get back
  • direct right click the labels for copy amount to clipboard
   


Selection
In this version of coin control, all selected outputs are going into the transaction for sure!!
Of course, if you select more than you actually send, the bitcoin core will send the rest back to you as change, just as normal.
And of course, if you select less than you send you will get "The amount exceeds your balance".
And as already mentioned, if none are selected, coin control is inactive, this means everything is just the same as without coin control.
  
Fee
If the sum of selected outputs minus the amount you are going to send is smaller than the required fee, you will probably get
"The total exceeds your balance when the transaction fee is included"
This is because you didnt select enough outputs to pay the fee.
You always must select enough outputs, so that those outputs can pay the fee.
  
Calculation of fee and transaction size
The fee is calculated according to the fee set in the Settings menu.
The calculation assumes 2 outputs in total. One for the destination address and one for the change.
The formula is nBytesOutputs + (2 * 34) + 10. nBytesOutputs is the sum of selected outputs, 148 or 180 bytes per output, depending if compressed public key.
Due to the inner workings of bitcoin the size per output is actually +/- 1 byte. Meaning the shown calculation is not always 100% correct.
If you send exactly "selected minus fee" then you will not have change (1 output only). The transaction will then be 34 bytes smaller as what was calculated before.

Free Transactions
In order to be able to send a free transaction, you need to follow the rules:
     - transaction size must be < 10000 bytes
     - priority must be at least "medium"
     - any recipient must receive at least 0.01BTC
     - change must be either zero or at least 0.01BTC
  If you violate one rule you will see a min-fee and also the labels turn red:
  Bytes.Priority,Low Output,Change. Depending which rule you violated.
  Those 4 labels also have tool tips explaining this.
  Also remember that violating one of the first 2 rules means 0.0005 PER kilobyte min-fee,
  while violating one of the last 2 means 0.0005 min-fee only.

Links
Source code
Pull Request
Binaries including this patch available here
Bitcoin OMG

23  Economy / Lending / Re: loan me 2 [btc] ill give you documents on: January 19, 2013, 08:39:01 PM
I loaned him the coins, very friendly person, everything seems legit to me. I will post after he paid me back.
24  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 08:33:00 PM
CONGRATULATIONS to the winner and everybody for participating.

I guess in the end it was about seconds between you 2 guys.

Anyway I post the solution scripts in php and bash.

The gpg password was:

Code:
888ee31308b8c062ff643b790a22aa8acad3db64

php
Code:
$password = 'cozz';
for ($i = 1; $i <= 5; $i++) $password = md5($password.'pepper');
$password = base64_encode($password);
$password = sha1($password); # git uses sha1
for ($i = 1; $i <= 2; $i++) $password = hash('sha256',$password); # bitcoin
$password = preg_replace('/[0-9]+/','', $password).'500euro';
for($i = 0; $i < strlen($password); $i++) $password[$i] = chr(ord($password[$i])+3); # caesar
$password = hash('whirlpool',$password.'+alice');
for ($i = 1; $i <= 50; $i++) $password = hash('whirlpool',$password);
$password = str_replace('78427939','',$password); # phone number
for ($i = 1; $i <= 6; $i++) $password = hash('ripemd160',$password);
echo "$password\n";

bash
Code:
function ord() {
  LC_CTYPE=C printf '%d' "'$1"
}

function chr() {
  printf \\$(printf '%03o' $1)
}

password="cozz"
for (( i=1; i<=5; i++ )); do
password=$(echo -n "$password""pepper" | md5sum | cut -d ' ' -f 1)
done
password=$(echo -n "$password" | base64)
password=$(echo -n "$password" | sha1sum | cut -d ' ' -f 1)
for (( i=1; i<=2; i++ )); do
password=$(echo -n "$password" | sha256sum | cut -d ' ' -f 1)
done
for (( i=0; i<=9; i++ )); do
password=${password//$i/}
done
password="$password""500euro"
for (( i=0; i<${#password}; i++ )); do
password="${password:0:$i}""$(chr $(($(ord ${password:$i:1})+3)))""${password:$(($i+1))}" # caesar
done
password=$(echo -n "$password""+alice" | whirlpoolsum | cut -d ' ' -f 1)
for (( i=1; i<=50; i++ )); do
   password=$(echo -n "$password" | whirlpoolsum | cut -d ' ' -f 1)
done
password=${password/78427939/}
for (( i=1; i<=6; i++ )); do
password=$(echo -n "$password" | openssl rmd160 | cut -d ' ' -f 2)
done
echo "$password"
25  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 08:09:52 PM
Oh I just noticed your script is still missing the phone number thing, but you will find that Im pretty sure.
26  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 08:07:30 PM

I'm very close - I can almost taste it!


Yep. To bring this to an end:
- original caesar cipher was shift by 3
- I shifted numbers too
- in total there are 51 jumps into the pool
  first on was me +alice
  then another 50 together

now go get the coins

27  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 07:31:48 PM

We jumped like another fifty times in that whirlpool : Whirlpool hash for 50 times?



correct. 1BTC f4c593b34f862d27f6ccc18415e5bdb9356635693c64a23d8ad1863ab1bb0853 (transactionid)

NO MORE BITCOINS NOW

its now only up to solving the riddle

28  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 07:23:32 PM

  • I can't tell whether I'm supposed to input my result from the previous hashes into the whirlpool.  Right now, I'm just assuming that and concatenating alice, and looping 50 times.  Maybe previous result goes in between cozz and alice, all three concatenated?

Just read the story. The script starts with name = "cozz" so imagine the hash being cozz.

  • Alice's phone number - sooo there's an 8 digit number used somewhere in the whirlpool rounds?  Not really sure where to put that..

I lost the phone number. So you have to get rid of it. You need not to search that much to find the number, its not made too difficult.

  • 888 and the airport.  I assume you mean prepend 888 to the airport code (such as BWI since we were talking Maryland earlier).  Or maybe you mean the origin code in Europe (such as a German airport).  Need a hint here I think.  Also, where does the previous result enter into this calculation?  Maybe we're supposed to ripemd160(888+airport+previous hash)?

As mentioned earlier the final gpg password starts with 888. The ripe-guy just guides me until I find my flight. There is no more guessing like adding airport or something, caesar was kinda the last thing to guess.
29  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 07:11:00 PM
Caesar

correct. 1BTC bee4464a735519ad7aac8eee58778b55c78a8849db93f368a853e0558d773a7f (transactionid)
30  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 07:06:50 PM
Very fun story.  I'm committing my progress here in python:

https://github.com/hank/life/blob/master/code/python/cozzriddle/cozz.py


i have sent you 1BTC for this b80460a1924b2f232ab4e938b9eccd2a498702583b26b720f1ffd4a9a953ab2c (transactionid)

I can confirm that the script is logocally correct up to the point after the money exchange. We get different results, because you used ascii instead of hex. So I post correct solutions here.
After the money exchange the hash must be
Code:
cdceddbefbedbcdeccecdfea500euro

php
Code:
$password = 'cozz';
for ($i = 1; $i <= 5; $i++) $password = md5($password.'pepper');
$password = base64_encode($password);
$password = sha1($password); # git uses sha1
for ($i = 1; $i <= 2; $i++) $password = hash('sha256',$password); # bitcoin
$password = preg_replace('/[0-9]+/','', $password).'500euro';
echo "exchange: $password\n";

bash
Code:
password="cozz"
for (( i=1; i<=5; i++ )); do
password=$(echo -n "$password""pepper" | md5sum | cut -d ' ' -f 1)
done
password=$(echo -n "$password" | base64)
password=$(echo -n "$password" | sha1sum | cut -d ' ' -f 1)
for (( i=1; i<=2; i++ )); do
password=$(echo -n "$password" | sha256sum | cut -d ' ' -f 1)
done
for (( i=0; i<=9; i++ )); do
password=${password//$i/}
done
password="$password""500euro"
echo "exchange: ""$password"

python
Code:
import binascii
# My ...
name = "cozz"
# Once I made a journey and visited some of my old friends.
# The first one is a doctor and he has 5 children (MD5)
# He lives in a very beautiful house.
# The house always impresses me so much that I drive 5 rounds around it before
# actually ringing the bell (while eating his meals)
# The only problem with this friend is that he uses pepper instead of salt
# to all his meals
import hashlib
m = binascii.b2a_hex(hashlib.md5(name+"pepper").digest())
m = binascii.b2a_hex(hashlib.md5(m+"pepper").digest())
m = binascii.b2a_hex(hashlib.md5(m+"pepper").digest())
m = binascii.b2a_hex(hashlib.md5(m+"pepper").digest())
m = binascii.b2a_hex(hashlib.md5(m+"pepper").digest())
print "After 5xmd5 = ", m
# The funny thing is after eating there you feel like your stomach has grown
# about 137% of the original size.
import base64
m = base64.b64encode(m)
print "After base64 = ", m
# The trip went on to Maryland. Sadly, the friend I was going to visit there
# wasn't at home. But accidentally I met a friend of this friend who also
# wanted to visit him. After all the only thing I can say about this friend of
# the friend is that he literally is a stupid or unpleasant person (git).
# git -> sha1
m = binascii.b2a_hex(hashlib.sha1(m).digest())
print "After sha1 = ", m
# As the trip was more expensive than I thought, I decided to step by at one of
# my richer friends and ask for some money. I dont even know which country he
# is really from, but his name sounds like japanese.
# Satoshi -> 2xsha256
m = hashlib.sha256(binascii.b2a_hex(hashlib.sha256(m).digest())).digest()
print "After 2xsha256 = ", binascii.b2a_hex(m)
# Having filled up my wallet I could no afford a flight to europe.
# Of course for that I had to make some money exchange.
# I simply exchanged all my numbered coins I had and became on 500euro note
# Which fit very well at the end of my wallet.
# (remove all numbers from hash, put "500euro" at the end
import re
m = binascii.b2a_hex(m)
m = re.sub(r'[0-9]', '', m) + "500euro"
print "After 'cashing in' numbers = ", m

31  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 06:03:13 PM
nope. cant remember Snefru being ass-kicked by a fat guy.
That "born before jesus" thing was too strong.
Then it must be GOST and the fat guy is USA, lol.

nope. but old guy LIVED in europe.
32  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:49:39 PM
Money exchange = MtGox?  (can't be that easy?)

nope. there is actually nothing more to guess here. I posted earlier simply remove all digits and then add a 500euro note,
"which fit very well AT THE END of my wallet."
33  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:47:18 PM

nope. cant remember Snefru being ass-kicked by a fat guy.
34  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:46:21 PM
Quote
The only problem with this friend is that he uses pepper instead of salt to all his meals. So I decided to leave quickly and went on to another friend. This friend always says that he even doesnt spice his meals.

Hmmm the password is not salted?

actually the opposite
35  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:33:19 PM
The only questions kinda open are who is the old guy and what operation here?
Then you have to put things together, at 2 points you have to guess from the story what exactly to hash.
Also what about the thing with the money exchange and where have I lost alice phone number?
36  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:23:49 PM
nope. git is the friend of the friend. so who could be that friend?
SHA1 (used by git)


correct.

157091000d210c98e63d5b5b09d424a16b1d8f31399740b5f28074551b4cfcd9 (transactionid)

3BTC left for right guesses.
37  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:21:21 PM

1JPgBnLMtz8Vbi7hcfjXkRR4f42kYbUmcd

Thanks!

50657135d2225d71a5cbfd48a12566c4e81d01ac15768a47aa2fac01ef3a1a6d (transactionid)

4BTC left
38  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:09:53 PM
Quote
The friend I visited in europe looks so old
Could be the string "enigma" concatenated

nope.
39  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 05:08:57 PM
literally is a stupid or unpleasant person

git = stupid or unpleasant person


correct. whats your BTC-address?

Maryland has the National Cryptologic Museum, so I would guess git-encrypt (which is AES256)

nope. git is the friend of the friend. so who could be that friend?
40  Bitcoin / Bitcoin Discussion / Re: Another riddle - guess script win 10BTC on: December 29, 2012, 04:48:08 PM
Quote
but his name sounds like japanese
Might refer to Satoshi

correct. The rich is guy is Satoshi. you win another 1BTC. 85a650ded24b61d11d83de0c98ee3269e097543f111a7cf3e7537ce4e549be17 (transactionid)

So 5BTC left to win for right guesses.

HINT
I also give away the hash here: its simply 2 rounds of sha256
Pages: « 1 [2] 3 4 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!