summaryrefslogtreecommitdiff
path: root/04/19999b544deea0b8bf096f610354a1689059c2
blob: 0fd7898e2532ef5466de8ff31ecb7c67a02bf499 (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
Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193]
	helo=mx.sourceforge.net)
	by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <elombrozo@gmail.com>) id 1TlyME-0005g2-E7
	for bitcoin-development@lists.sourceforge.net;
	Fri, 21 Dec 2012 08:53:30 +0000
Received-SPF: pass (sog-mx-3.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.220.46 as permitted sender)
	client-ip=209.85.220.46; envelope-from=elombrozo@gmail.com;
	helo=mail-pa0-f46.google.com; 
Received: from mail-pa0-f46.google.com ([209.85.220.46])
	by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1TlyM9-0004vO-5I
	for bitcoin-development@lists.sourceforge.net;
	Fri, 21 Dec 2012 08:53:30 +0000
Received: by mail-pa0-f46.google.com with SMTP id bh2so2676482pad.19
	for <bitcoin-development@lists.sourceforge.net>;
	Fri, 21 Dec 2012 00:53:19 -0800 (PST)
X-Received: by 10.68.234.229 with SMTP id uh5mr37541746pbc.123.1356079999339; 
	Fri, 21 Dec 2012 00:53:19 -0800 (PST)
Received: from [192.168.1.100] (cpe-72-130-140-12.san.res.rr.com.
	[72.130.140.12])
	by mx.google.com with ESMTPS id hs2sm6638719pbc.22.2012.12.21.00.53.18
	(version=TLSv1/SSLv3 cipher=OTHER);
	Fri, 21 Dec 2012 00:53:18 -0800 (PST)
From: Eric Lombrozo <elombrozo@gmail.com>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_7AD35CF4-8C03-4D70-B3F9-F58F2329330B"
Message-Id: <B03D534F-BAB6-4068-A8B4-AE28764F3D88@gmail.com>
Date: Fri, 21 Dec 2012 00:53:16 -0800
To: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\))
X-Mailer: Apple Mail (2.1499)
X-Spam-Score: -0.6 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(elombrozo[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	1.0 HTML_MESSAGE           BODY: HTML included in message
	-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
	author's domain
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1TlyM9-0004vO-5I
Subject: [Bitcoin-development]  Multiwallet support
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: Fri, 21 Dec 2012 08:53:30 -0000


--Apple-Mail=_7AD35CF4-8C03-4D70-B3F9-F58F2329330B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

I started working on a new feature to allow for watch-only addresses in =
wallets. https://github.com/bitcoin/bitcoin/pull/2121

In order to integrate this feature nicely into bitcoin / bitcoin, it =
will be necessary to disable signing and privkey export operations for =
watch-only addresses. Since disabling these things for only some of the =
keys in a wallet but not others is an API nightmare and complicates =
CreateTransaction logic, I propose adding multiple wallet capabilities =
and specifying upon creation whether a wallet is a:

1)  full signing wallet
	- importaddress is disabled.

2) watch-only wallet
	- signing and privkey export operations are disabled.
	- importprivkey only saves the associated address but not the =
private key. (behaves like importaddress <address for privkey>)

In order to do the above, it will be necessary to add multiple wallet =
support. Anyhow, that was my initial motivation for multiple wallets - =
but obviously, there are a number of other reasons why people might want =
multiple wallet support.

----------------------

Adding the ability to specify multiple wallets with associated names and =
passphrases in the config file should be fairly straightforward. =
However, exposing multiple wallets via RPC will be tricky as the =
existing RPC is not designed to support multiple wallets.

As to not break compatibility with the existing RPC calls, we can have a =
main wallet which is always used as the default wallet. If the user =
wants to use a different wallet, the name of the wallet would have to be =
specified in the call. Unfortunately, it doesn't look like we can use =
many of the existing RPC calls (sendfrom, sendmany,sendtoaddress, =
etc...) since they all have optional parameters already and it would be =
awkward to just tack on the wallet name parameter at the end. Also, =
walletpassphrase is problematic as it is not stateless. So it looks like =
we need a whole separate set of calls which require a wallet name and =
passphrase (if the wallet is encrypted).

For instance,
	walletsendtoaddress <walletname> <passphrase> <bitcoinaddress> =
<amount> [comment] [comment-to]

I welcome any proposals or suggestions as to how this should be done.



--Apple-Mail=_7AD35CF4-8C03-4D70-B3F9-F58F2329330B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I =
started working on a new feature to allow for watch-only addresses in =
wallets.&nbsp;<a =
href=3D"https://github.com/bitcoin/bitcoin/pull/2121">https://github.com/b=
itcoin/bitcoin/pull/2121</a><div><br></div><div>In order to integrate =
this feature nicely into bitcoin / bitcoin, it will be necessary to =
disable signing and privkey export operations for watch-only addresses. =
Since disabling these things for only some of the keys in a wallet but =
not others is an API nightmare and complicates CreateTransaction logic, =
I propose adding multiple wallet capabilities and specifying upon =
creation whether a wallet is a:</div><div><br></div><div>1) &nbsp;full =
signing wallet</div><div><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-&nbsp;importaddress is =
disabled.</div><div><br></div><div>2) watch-only wallet</div><div><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&nbsp;signing and privkey export operations are =
disabled.</div><div><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-&nbsp;importprivkey only saves =
the associated address but not the private key. (behaves like =
importaddress &lt;address for privkey&gt;)</div><div><br></div><div>In =
order to do the above, it will be necessary to add multiple wallet =
support. Anyhow, that was my initial motivation for multiple wallets - =
but obviously, there are a number of other reasons why people might want =
multiple wallet =
support.</div><div><br></div><div>----------------------</div><div><br></d=
iv><div>Adding the ability to specify multiple wallets with associated =
names and passphrases in the config file should be fairly =
straightforward. However, exposing multiple wallets via RPC will be =
tricky as the existing RPC is not designed to support multiple =
wallets.</div><div><br></div><div><span style=3D"color: rgb(51, 51, 51); =
font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: =
13px; line-height: 20px; background-color: rgb(251, 251, 251); ">As to =
not break compatibility with the existing RPC calls, we can have a main =
wallet which is always used as the default wallet. If the user wants to =
use a different wallet, the name of the wallet would have to be =
specified in the call. Unfortunately, it doesn't look like we can use =
many of the existing RPC calls (sendfrom, sendmany,sendtoaddress, =
etc...) since they all have optional parameters already and it would be =
awkward to just tack on the wallet name parameter at the end. Also, =
walletpassphrase is problematic as it is not stateless. So it looks like =
we need a whole separate set of calls which require a wallet name and =
passphrase (if the wallet is encrypted).</span></div><div><span =
style=3D"color: rgb(51, 51, 51); font-family: Helvetica, arial, =
freesans, clean, sans-serif; font-size: 13px; line-height: 20px; =
background-color: rgb(251, 251, 251); "><br></span></div><div><span =
style=3D"color: rgb(51, 51, 51); font-family: Helvetica, arial, =
freesans, clean, sans-serif; font-size: 13px; line-height: 20px; =
background-color: rgb(251, 251, 251); ">For =
instance,</span></div><div><span style=3D"color: rgb(51, 51, 51); =
font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: =
13px; line-height: 20px; background-color: rgb(251, 251, 251); "><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span></span><span style=3D"font-family: Consolas, 'Liberation Mono', =
Courier, monospace; font-size: 12px; color: rgb(51, 51, 51); =
line-height: 19px; ">walletsendtoaddress &lt;walletname&gt; =
&lt;passphrase&gt; &lt;bitcoinaddress&gt; &lt;amount&gt; [comment] =
[comment-to]</span></div><div><br></div><div>I welcome any proposals or =
suggestions as to how this should be =
done.</div><div><br></div><div><br></div></body></html>=

--Apple-Mail=_7AD35CF4-8C03-4D70-B3F9-F58F2329330B--