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
209
210
211
212
213
214
215
216
|
Return-Path: <dkbryant@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
[172.17.192.35])
by mail.linuxfoundation.org (Postfix) with ESMTPS id 1D2C6273
for <bitcoin-dev@lists.linuxfoundation.org>;
Thu, 2 Jul 2015 04:44:43 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-oi0-f46.google.com (mail-oi0-f46.google.com
[209.85.218.46])
by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 523F71B3
for <bitcoin-dev@lists.linuxfoundation.org>;
Thu, 2 Jul 2015 04:44:42 +0000 (UTC)
Received: by oiyy130 with SMTP id y130so47649232oiy.0
for <bitcoin-dev@lists.linuxfoundation.org>;
Wed, 01 Jul 2015 21:44:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
h=mime-version:reply-to:date:message-id:subject:from:to:content-type;
bh=e2beeraQYiJUO9tvdBc9mxafa5Y2sN/k0RHVyP4oL24=;
b=k8eEM1cwQp0aNU+6dRg0ZkPe+Kg+OpsW8XM0gSAo31LEXrOtLDyh+Q48sEn+cnDRq7
EQpB86tlups6Ho9ua3pTvo8efJHlzqAndUV+m1Vn+kNmZkjSIr/veHQFUifTHHcvH0La
gLm4Ki+bIlU7/44FlVWRZvmNtfJ8magFqC5quoQy5ahvdWYSYNOVxpj9UzIVBqW9X4S1
7et5+dojQ4YVbmg2YrwILvQtrE022QXg6Kygl8hGdKY6LaWdZY0iwlWt73Xa2/bg/Iyc
MJD/6BRSUGdduREmksd5lylxA+rAQ+SQLu/VGMcgtzK4pt1Ugc+Yc1kHZ+b8UI93JjIz
BkTA==
MIME-Version: 1.0
X-Received: by 10.182.135.129 with SMTP id ps1mr3731559obb.84.1435812281681;
Wed, 01 Jul 2015 21:44:41 -0700 (PDT)
Received: by 10.76.1.114 with HTTP; Wed, 1 Jul 2015 21:44:41 -0700 (PDT)
Date: Wed, 1 Jul 2015 23:44:41 -0500
Message-ID: <CAAUFj10D37A1kfqFNPWz6bOMYSFXQbecJ+RxxOnw6HtwUg70mg@mail.gmail.com>
From: Dan Bryant <dkbryant@gmail.com>
To: bitcoin-dev@lists.linuxfoundation.org
Content-Type: text/plain; charset=UTF-8
X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM,
RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
smtp1.linux-foundation.org
Subject: [bitcoin-dev] REQ BIP # / Discuss - Sweep incoming unconfirmed
transactions with a bounty.
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
Reply-To: DKBryant@gmail.com
List-Id: Bitcoin Development Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
<mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Thu, 02 Jul 2015 04:44:43 -0000
This is a process BIP request to add functionality to the Bitcoin-Core
reference implementation. If accepted, this could also add
flexibility into any future fee schedules.
https://github.com/d4n13/bips/blob/master/bip-00nn.mediawiki
Note, left the formatting in, since mediawiki is a fairly light markup.
==================================
<pre>
BIP: nn
Title: Sweep unconfirmed transactions by including their outputs in
high fee transactions
Author: Dan Bryant <dkbryant@gmail.com>
Status: Draft
Type: Process
Created: 2015-07-01
</pre>
==Abstract==
This BIP describes an enhancement to the reference client that
addresses the need incentive inclusion of unconfirmed transactions.
This method will create new high fee (or bounty) transactions that
spend the desired unconfirmed transactions. To claim the high fee
(bounty) transactions, miners will need to include the desired
unconfirmed transactions.
==Motivation==
There are times when an individual receives a payment from someone
that is in a poorly crafted transaction. This transaction may include
no fees, or insufficient fees to be included by many miners. The
recipient would be willing to pay a nominal transaction fee to have
the payment transaction swept into the next block, but has no simple
way to craft this incentive.
This BIP could be highly desirable for merchants who may have little
control over the type of wallets their customers use. A merchant will
want to ensure that all POS transactions to their hot wallet be given
a high probability of inclusion in the next block. This BIP would
allow the merchant to sweep all their POS transactions currently in
the mempool into one high fee sweep, thus greatly increasing the
chance that they are in the next block.
Although many wallets have the ability to tailor the transaction fees
of payments that are sent, this BIP is unique in the sense that it
allows people to offer a bounty for transactions that are incoming.
==Specification==
This BIP would have two implementations; an automatic sweep of
incoming unconfirmed transaction setting, and a manual sweep of
unconfirmed transaction setting. Both would have the ability to set
the fee amount the user would like to pay for the sweep.
====Automatic sweep of incoming unconfirmed transactions====
An automatic sweep configuration may be ideal for merchants who want
to ensure that their incoming transactions are not skipped over by
miners. An automatic sweep setting would consist of four fields,
<tt>'''sweep_fee'''</tt>, <tt>'''skipped_count'''</tt>, and
<tt>'''btc_threshold'''</tt>
Currently, the standard transaction fee is 0.0001 BTC, a generous
sweep bounty would be 0.001 BTC. Skipped-count will control the age
of unconfirmed transactions to include in the sweep. If skipped-count
is set to three, then any incoming transaction that remains
unconfirmed for 3 blocks would trigger a sweep. A skipped-count of 0
would trigger a sweep whenever any transaction is skipped, or if it
reaches an age of 10 minutes, regardless of how long the current block
is taking.
As a safeguard to paying a bounty for small "dust" transactions, a
minimum btc-threshold would be required for any automatic
configuration. A good starting threshold would be 0.10 BTC. These
automatic settings would allow a wallet implementing this BIP to
automatically perform a sweep of unconfirmed transactions whenever
more than 0.10 BTC of incoming transactions were detected in the
mempool. Furthermore, no more than one automatic sweep would be
performed in any 10 minute window.
Whenever a sweep is triggered, all incoming unconfirmed transactions
should be swept, not simply the ones that triggered the sweep. These
would include new transactions as well as dust transactions. Each
sweep transaction would go to a new wallet address since recycling
wallet addresses is poor practice.
====Manual sweep of incoming unconfirmed transactions====
A manual sweep of incoming unconfirmed transactions would be a special
type of "Send" in the current reference implementation. A manual
sweep would auto-fill a send transaction with all currently
unconfirmed incoming transactions in the mempool. The fee field would
be completely settable by the user and would auto-fill with the
suggestions of 0.001 BTC
A manual sweep would also be available as a context option when
selecting any unconfirmed transaction.
==Compatibility==
Wallet software that does not support this BIP will continue to
operate without modification.
==Examples==
<pre>
//unconf_tx = ef7c0cbf6ba5af68d2ea239bba709b26ff7b0b669839a63bb01c2cb8e8de481e
//hifee_tx = f5a5ce5988cc72b9b90e8d1d6c910cda53c88d2175177357cc2f2cf0899fbaad
//rcpt_addr = moQR7i8XM4rSGoNwEsw3h4YEuduuP6mxw7 # recipient controlled addr.
//chng_addr = mvbnrCX3bg1cDRUu8pkecrvP6vQkSLDSou # recipient controlled addr.
// UNCONF_TX - Assume a zero fee TX that miners are refusing in mempool
{
"txid" : "$unconf_tx",
//...
"vin" : [
//...
],
"vout" : [
{
"value" : 1.50000000,
"n" : 0,
"scriptPubKey" : {
//...
"addresses" : [
"$rcpt_addr"
]
}
}
]
}
// HIFEE_TX - Requires UNCONF_TX to be included in order to claim the
// high (0.001 BTC) fee. Note this transaction is going from one
// address to another in the same wallet. Both are controlled by the
// recipient.
{
"txid" : "$hifee_tx",
//...
"vin" : [
{
"txid" : "$unconf_tx",
"vout" : 0
//...
}
],
"vout" : [
{
"value" : 1.49900000,
"n" : 0,
"scriptPubKey" : {
//...
"addresses" : [
"$chng_addr"
]
}
}
]
}
</pre>
|