summaryrefslogtreecommitdiff
path: root/1c/4ef1f87b810dd4c01e95c4d599220b4baee464
blob: 3c85ec89e29198f35b001e7950fcc74b3882db0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191]
	helo=mx.sourceforge.net)
	by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <chris@beams.io>) id 1Wa6Og-00047R-Mt
	for bitcoin-development@lists.sourceforge.net;
	Tue, 15 Apr 2014 16:39:46 +0000
X-ACL-Warn: 
Received: from chello084114181075.1.15.vie.surfer.at ([84.114.181.75]
	helo=mini.local) by sog-mx-1.v43.ch3.sourceforge.com with esmtp 
	(Exim 4.76) id 1Wa6Of-0004CU-0f
	for bitcoin-development@lists.sourceforge.net;
	Tue, 15 Apr 2014 16:39:46 +0000
Received: from localhost (localhost [127.0.0.1])
	by mini.local (Postfix) with ESMTP id 9152365897E;
	Tue, 15 Apr 2014 18:39:36 +0200 (CEST)
X-Virus-Scanned: amavisd-new at mini.local
Received: from mini.local ([127.0.0.1])
	by localhost (mini.local [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Ua-KMaD7Chtd; Tue, 15 Apr 2014 18:39:35 +0200 (CEST)
Received: from [192.168.0.32] (chello084114181075.1.15.vie.surfer.at
	[84.114.181.75]) by mini.local (Postfix) with ESMTPSA id B8DB865896E;
	Tue, 15 Apr 2014 18:39:35 +0200 (CEST)
Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\))
Content-Type: multipart/signed;
	boundary="Apple-Mail=_BE47429A-1EC1-4E6F-8EAE-C380B8EA892A";
	protocol="application/pgp-signature"; micalg=pgp-sha1
X-Pgp-Agent: GPGMail 2.1 (525b9ae)
From: Chris Beams <chris@beams.io>
In-Reply-To: <7270706.tTNIRFK64H@crushinator>
Date: Tue, 15 Apr 2014 18:39:35 +0200
Message-Id: <981A0A04-EAE7-45BE-81FC-92A40A6B2DA4@beams.io>
References: <1756895.gV83Q4MX2a@crushinator> <1832687.kEVurC5ttk@crushinator>
	<CABaLYCu7by9AsurAcjzjo4QR_3Ln6DZrq7GPH_KxTokUbGTEeg@mail.gmail.com>
	<7270706.tTNIRFK64H@crushinator>
To: Matt Whitlock <bip@mattwhitlock.name>
X-Mailer: Apple Mail (2.1874)
X-Spam-Score: 1.3 (+)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	1.3 RCVD_IN_RP_RNBL        RBL: Relay in RNBL,
	https://senderscore.org/blacklistlookup/
	[84.114.181.75 listed in bl.score.senderscore.com]
	0.0 RCVD_IN_SORBS_DUL RBL: SORBS: sent directly from dynamic IP address
	[84.114.181.75 listed in dnsbl.sorbs.net]
X-Headers-End: 1Wa6Of-0004CU-0f
Cc: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] Bug in 2-of-3 transaction signing in
	Bitcoind?
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Tue, 15 Apr 2014 16:39:46 -0000


--Apple-Mail=_BE47429A-1EC1-4E6F-8EAE-C380B8EA892A
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi Matt,

Looks interesting. Is the source available?


On Apr 15, 2014, at 6:27 PM, Matt Whitlock <bip@mattwhitlock.name> =
wrote:

On Tuesday, 15 April 2014, at 8:47 am, Mike Belshe wrote:
For what it is worth, I found btcd (the go implementation of bitcoind) =
has
much better error/diagnostics messages.  It would have given you more =
than
"-22 TX Rejected".  I used it to debug my own multi-sig transactions and =
it
was very helpful.

I'll have to check that out.


A follow-up on my initial post... I did just successfully create, sign, =
and transmit another 2-of-3 transaction, so once again, I'm sorry I =
bothered this list. But since I did (and am now doing so again), I'll =
give a little more background on what we've been up to. It's not quite =
as simple as what I've shared thus far.

We have built a tool from scratch in C++ that is kind of a Swiss Army =
knife of Bitcoin. It does all sorts of key and address conversions, hash =
functions, encoding and decoding, script disassembly, BIP38 =
encryption/decrytion, the Shamir Secret Sharing that I've posted about =
here on this list before, and transaction building and signing. It has =
its own wallet and it's own UTXO cache that contains only TXOs that are =
relevant to the objects in its wallet. It synchronizes its cache by =
scanning bitcoind's block data files. (It memory maps them and can do a =
full scan of the entire block chain in about a minute!) The wallet can =
contain keys, seeds, and multi-signature aggregates (which in turn can =
comprise keys and seeds). What we've been testing is deriving sequences =
of multi-sig P2SH addresses from a set of public seeds, sending bitcoins =
to those addresses, then using our tool to find those outputs in the =
block chain and to create transactions that redeem them, and then =
signing those trans
actions by supplying the private seeds to the tool.

Our tool is quite a bit easier to use than Bitcoind. (I was frankly =
appalled at the command-line syntax that was necessary to get Bitcoind =
to sign a P2SH multi-sig transaction.)

$ ./btctool privkey < /dev/random > privseed1
$ ./btctool privkey < /dev/random > privseed2
$ ./btctool privkey < /dev/random > privseed3
$ pubseed1=3D$(./btctool pubkey < privseed1)
$ pubseed2=3D$(./btctool pubkey < privseed2)
$ pubseed3=3D$(./btctool pubkey < privseed3)
$ ./chaintool init
$ ./chaintool add demo 2 ":${pubseed1}" ":${pubseed2}" ":${pubseed3}"
$ ./chaintool ls
demo    2 =
:036447c7edc861b9f41fa0f611d81784f19ce692f37e8772b55c37c743cd526b49 =
:03c831711ea65decc06b0f3ccb4b9f1ba1a99a6933e520f6e7e4c3dbb4f015b701 =
:0347f2a0a346f21538fc451b95a600bc64ce5d2d28b89bf547697f3a77195d8dd1
$ ./btctool addresses 1 2 "${pubseed1}" "${pubseed2}" "${pubseed3}"
3GQd1tosFCE7Vo4TAiDHEKTaBgoyZTeL6R
$ bitcoind sendtoaddress 3GQd1tosFCE7Vo4TAiDHEKTaBgoyZTeL6R 0.01
6a9538f496f4c2d7f50c342fa6f6f76904a3b19f55f3a54a0003fc00b327d81b
(I waited here for the tx to get into a block)
$ ./chaintool sync /var/lib/bitcoin/.bitcoin/blocks 2> /dev/null
$ ./chaintool listunspent
[
       {
               "txid": =
"6a9538f496f4c2d7f50c342fa6f6f76904a3b19f55f3a54a0003fc00b327d81b",
               "vout": 1,
               "address": "3GQd1tosFCE7Vo4TAiDHEKTaBgoyZTeL6R",
               "scriptPubKey": =
"a914a1701be36532f05a74511fca89afce180c58189587",
               "amount": 1000000,
               "confirmations": 1
       }
]
$ cat > outputs << EOF
13QAKNuh9uFcEiNAsct6LSF1qWQR6HLarT 50000
1FV4Fm3VCXfWy7BAXzT8t5qqTvEKZSad9v
EOF
$ tx=3D$(./chaintool createtx 10000 demo < outputs)
(I manually edited ${tx} at this point to add an OP_RETURN output. We're =
currently working toward using OP_RETURN in a provable solvency scheme.)
$ signedtx1=3D$(./chaintool signtx "${tx}" < privseed1)
input #0: need 1 of =
[:03c831711ea65decc06b0f3ccb4b9f1ba1a99a6933e520f6e7e4c3dbb4f015b701, =
:0347f2a0a346f21538fc451b95a600bc64ce5d2d28b89bf547697f3a77195d8dd1]
$ signedtx2=3D$(./chaintool signtx "${signedtx1}" < privseed2)
$ bitcoind sendrawtransaction "${signedtx2}"
b485b185c77d803f75e1ccfee1b5072846c9e0728f4c955ca40dce82263f8f16
$ exit

:-)

=
--------------------------------------------------------------------------=
----
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and =
their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


--Apple-Mail=_BE47429A-1EC1-4E6F-8EAE-C380B8EA892A
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org

iQIcBAEBAgAGBQJTTWDHAAoJED0hT49bxe1zkp8P/RTkrtr9k4OmHPpAqtVgfVyh
//YyrMcemeI20V9t1Stqwfv8wa93zwxw4wXSlZUdofNYfHGS+X+mn+rt5lcK9l1Q
81aJScO/Yr+YrVUWN/ap+A1yk7ghbRQG/ESVZTNXnnLF7t5aHD0R6fbKhwe0TEDz
mEqFpMutX8JhRXLtmsJUnqoXddHSgeUu9efEbc0y4zX6glsVURsy6dPIY9l4vJ06
S4GSXrHA+EMWFtxNd+wxROBl1LZgIoUnhNwM8jKBrXi8/IuHmNHGL/DvIL7TYd4Y
57FQAXiWrThGUhyrGPGKachrW5PY4xAAvgfKmuxuPw28yXuV7S89uMzm71TTYdfW
ONHFB2Rqzdv4CvwEXhb99f+q/o7PcwH5Tufg/K0aQcEgmxN+7qj2P2b79Esi9eNJ
mIgvLS6ae+mjuH8fEwuISXp3bT0L5o/foYZy2nnXmtHCgXaMLW/UMfnqg/IKTUoO
uOekKRcdM6GL5+rrBZr11mm/ae2GmTLjGe1zI9hcbBnbrWX60kwi3dFVyOpenuqo
ffLgNz9xXMn5avzPHZPE+WNxjSlc+7mDBEVfu476SAhYoQImLptX+BR0y9wDeXDt
vHGVrrYA5BYqVTvGJn49w6Zjg0lakDrW7AhiRhxq34CkJorHriqQHt0INI8fNlYY
PIJBLQqiNAw8Q++vJaPW
=Md2q
-----END PGP SIGNATURE-----

--Apple-Mail=_BE47429A-1EC1-4E6F-8EAE-C380B8EA892A--