summaryrefslogtreecommitdiff
path: root/ee/21e027ff7807ed1afc787087aab9ebb3f9d6da
blob: d9841d7ddbc247f8be50c14a537de5e2710a7f75 (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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
Return-Path: <veleslav.bips@protonmail.com>
Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])
 by lists.linuxfoundation.org (Postfix) with ESMTP id 83BE8C002D
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Thu, 25 Aug 2022 19:24:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by smtp4.osuosl.org (Postfix) with ESMTP id 4E19E418A9
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Thu, 25 Aug 2022 19:24:28 +0000 (UTC)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 4E19E418A9
Authentication-Results: smtp4.osuosl.org;
 dkim=pass (2048-bit key) header.d=protonmail.com header.i=@protonmail.com
 header.a=rsa-sha256 header.s=protonmail3 header.b=zNykJAn9
X-Virus-Scanned: amavisd-new at osuosl.org
X-Spam-Flag: NO
X-Spam-Score: -2.102
X-Spam-Level: 
X-Spam-Status: No, score=-2.102 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001]
 autolearn=ham autolearn_force=no
Received: from smtp4.osuosl.org ([127.0.0.1])
 by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id V7t4DkkUXmRU
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Thu, 25 Aug 2022 19:24:26 +0000 (UTC)
X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org B772741870
Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22])
 by smtp4.osuosl.org (Postfix) with ESMTPS id B772741870
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Thu, 25 Aug 2022 19:24:25 +0000 (UTC)
Date: Thu, 25 Aug 2022 19:24:16 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail3; t=1661455462; x=1661714662;
 bh=g2UoRxmdR+qUAAGVOj8ZHu7HGVfJq0PHxXZ/LRysmAQ=;
 h=Date:To:From:Reply-To:Subject:Message-ID:Feedback-ID:From:To:Cc:
 Date:Subject:Reply-To:Feedback-ID:Message-ID;
 b=zNykJAn9+R+RnmRUR2bxVWnA051ltV5oUmHSMkilq3Mah1W9qXtg8DnIbXpByf/zP
 2Zq5+dNHpXilgKmIU8qp7AXyP0bZ82BlMSvPVm40GbRPf4b+X7UGRFaJPewCVBnG88
 BQfNG1dzVSsUWXKNErGawmlJhmUZ68DHNqgmfk1f14NJmL7Du179yvRPaFo6HCUkzq
 OwCmma96x6KBvCPQV0o9ptCOQ6A+FiatFgFcO1EpCkXsg10CD4mGttFOPB6vwbyB0M
 HA9kTLlcUpZx6kSz+yEkpNNvyFfSeba/lR07guJ0LxCVg3qD4maENaYi4MRvHdILhp
 5bR75TCSKzoYw==
To: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
From: =?utf-8?B?0JLQtdC70LXRgdC70LDQsg==?= <veleslav.bips@protonmail.com>
Reply-To: =?utf-8?B?0JLQtdC70LXRgdC70LDQsg==?= <veleslav.bips@protonmail.com>
Message-ID: <emmQNdTtCoPOwRQ7xjUN937V30qIsadPo2a0LW_QdAgKwFTSRWhYLHAfrDsa6ow2Yw08HPRH0cPDEq5zgHhVJEz6n0XVP_hDNcJzTEvtrv0=@protonmail.com>
Feedback-ID: 3024060:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Mailman-Approved-At: Thu, 25 Aug 2022 20:27:16 +0000
Subject: [bitcoin-dev] BIP Draft: Revocable Proof-of-Burn Transaction
	Template
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Bitcoin Protocol 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, 25 Aug 2022 19:24:28 -0000

Dear Bitcoin Development Mailing List,

I would like to present for initial comment a new draft BIP that we have be=
en working on.

This BIP provides a new standard template for creating revocable proof-of-b=
urn transactions that can be easily and cheaply verified by nodes running u=
nder SPV assumptions.

We would very much appreciate further peer-feedback and critical comment so=
 that this proposal may be improved as it continues through the formal stan=
dardisation process.

Please find the full draft-proposal appended, you may also use the link pro=
vided to view the online rendered copy.

Yours sincerely,
Veleslav


PS. Upon being assigned a BIP-Number, I will write to the list with the upd=
ated URL.

https://github.com/veleslavs/bips/blob/bip-rpob-tx-template/bip-rpob-tx-tem=
plate.mediawiki


<pre>
  BIP: bip-rpob-tx-template
  Layer: Applications
  Title: Revocable Proof-of-Burn Transaction Template
  Author: Veleslav <veleslav.bips@protonmail.com>
  Comments-Summary: No comments yet.
  Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-bip-rpob-=
tx-template
  Status: Draft
  Type: Standards Track
  Created: 2022-08-18
  License: BSD-3-Clause
           CC0-1.0
</pre>

=3D=3DIntroduction=3D=3D

=3D=3D=3DAbstract=3D=3D=3D
This BIP proposes an application-layer template for revocable proof-of-burn=
, or ''"RPoB"'', transactions.

* This proposal uses a new transaction version number to allow for future e=
xtensions.
* This proposal recommends that implementations who mine and relay transact=
ion to update their standard transaction templates as defined by this docum=
ent.

This proposal aims to support decentralised systems, allowing the use ''RPo=
B'' assertions in a consistent, efficient, reliable, and interoperable way.

''The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOU=
LD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document ar=
e to be interpreted as described in RFC 2119.''

=3D=3D=3DCopyright=3D=3D=3D
This document is dual licensed as BSD 3-clause and Creative Commons CC0 1.0=
 Universal.

=3D=3D=3DMotivation=3D=3D=3D
In signalling theory<ref group=3D"Note">Evolutionary biology theory of comm=
unication, or ''"signalling theory"'', where creatures make honest signals =
that are hard to cheat, for mutual evolutionary advantage.</ref>, proof of =
burn<ref group=3D"Note">In Bitcoin, ''proof of burn'' places bitcoin value =
into outputs that provably unspendable. This dose not reduce the wealthy of=
 the network, but instead reduces the velocity of these coins to zero. Tran=
sferring the network wealth onto the remaining coins that have a non-zero v=
elocity.</ref> is a costly signal,<ref group=3D"Note">A ''"costly signal"''=
 indicates dedication, an observer expects that such a signal is not made f=
lippantly because the high cost.</ref> allowing the network to assign a def=
ault trust.<ref group=3D"Note">An entity is assigned a ''"default trust"'' =
value when they are not connected to the trust graph. Without a default sou=
rce trust, growing a decentralised web-of-trust network is impossible. New =
users face a catch-22 problem: they are disconnected from the trust graph a=
nd don't have a possibility to prove themselves.</ref> Bitcoin naturally pr=
ovides an implementation of proof of burn without feedback loops,<ref group=
=3D"Note">A ''"feedback loop"'' is when a trust signal can be amplified by =
a privileged subset of the network by feeding the creation-cost of this sig=
nal back into the process of making the signal.</ref> allowing for default =
trust to be assigned fairly in decentralised networks.<ref group=3D"Note">N=
ew users are able to use a proof-of-burn to bootstrap themselves into new t=
rust networks. 'New-user-with-burn-proofs' can be welcomed-in with basic se=
rvices and focused attention, as the network knows that it was costly to ge=
nerate the burn-proof.</ref>

The ability to revoke<ref group=3D"Note">To ''"revoke", is'' publicly asser=
ting that a previous statement should not be valued as originally intended.=
</ref> past assertions is important for many applications,<ref group=3D"Not=
e">Unexpected things happen, for example, the loss or compromise of private=
 keys.</ref> therefore proposal couples bitcoin proof-of-burn with a revoca=
tion mechanic.

In choosing to standardise via the BIP peer-reviewed process, we hope to gi=
ve the community greater confidence in making use of bitcoin-based revocabl=
e proof of burn technology.

=3D=3D=3D=3DNotes:=3D=3D=3D=3D
<references group=3D"Note" />

=3D=3DDesign=3D=3D

=3D=3D=3DConceptual=3D=3D=3D
''"Proof-of-Burn"'' transactions have long exited in Bitcoin, ''"OP_RETURN"=
'' transactions, (named after the op-code ''"return"'', that causes the pub=
lic key script to return in failure, hence making the output unspendable an=
d "burning" any value allocated to that output), these transactions have be=
en actively mined since the release of Bitcoin-Core 0.9.

Since OP_RETURN doesn't allow the public key script to be spent (as is it's=
 design), there hasn't been any built-in solution addressing the requiremen=
ts a application-useable proof-of-burn transaction, in particular:

*A standard association with a public key in for transaction.
*A standard protocol to publicly revoke a proof-of-burn transaction.

In this proposal we satisfy these requirements by specifying a taproot publ=
ic key in the op_return payload and an another output for revocation.

=3D=3D=3DOther Requirements=3D=3D=3D
Operation under <abbr title=3D"Simple Payment Verification">SPV</abbr> assu=
mptions:
*Transactions are small: ''RPoB transactions (non-witness-part) are fixed t=
o two possible sizes, depending if there is a change output, or not.''
*Revocations are quickly and cheaply indexed: ''RPoB revocations only requi=
re obtaining the preimage to a double-sha256 hash. This is easily indexed a=
nd propagated in a gossip network.''

Ease of implementation:
*Use of only Taproot and Schnorr: ''To reduce the scope of the transaction,=
 we use only Taproot for inputs and Outputs, and Schnorr for the signature =
that covers the funding outpoint.''

Transaction funded by 3rd party:
* It should be secure for an untrusted 3rd party fund the proof-of-burn tra=
nsaction. ''Allowing for services to fund these transactions and be compens=
ated with some sort of off-chain payment.''

Future extendability:
*Making use of the transaction version feature of bitcoin. ''This allows fo=
r easier indexing strategies in the future, (with a simple consensus change=
: to include in the coinbase the number of the transactions in the block by=
 their transaction version).''
* Including a byte for 8 version flag bits. ''This allows for a reliable wa=
y to upgrade in the future in a forward-comparable way.''

=3D=3D=3DTransaction Design Overview:=3D=3D=3D
[[File:bip-rpob-tx-template/rpob-template-summary-table.svg]]

=3D=3DSpecification=3D=3D
This section specifies our RPoB transaction template.

=3D=3D=3DTransaction=3D=3D=3D
General form:
<pre>
version:      0x3
marker:       0x0
flag:         0x1
txin_count:   0x1
txout_count:  0x2 (without change) or 0x3 (with change)
lock_time:    (any)
</pre>

*RPoB transactions MUST use the transaction version (nVersion) 0x03.

*RPoB transactions MUST have only one input and either two or three outputs=
.

=3D=3D=3DInput 1: Funding=3D=3D=3D
General form:
<pre>
signature_script:  (empty)
witness_script:    <taproot_witness>
</pre>

*The RPoB transaction input MUST be P2TR (Pay to Tap Root).

=3D=3D=3DOutput 1: Burn and Data=3D=3D=3D
General form:

<pre>
value:              (any)
public_key_script:  RETURN < 1-byte-rpob_version_flag>
                           <32-byte-rpob_secp256k1_public_key>
                           <64-byte-rpob_schnorr_signature>
</pre>

The public key script fields are:

<pre>
rpob_version_flag:           1-byte , 0x00 (initial version).
rpob_secp256k1_public_key:  32-bytes, SECP256K1 compact public key.
rpob_schnorr_signature:     64-bytes, bip-340 Schnorr Signature.
</pre>

*The first RPoB transaction contains the burn value, that is made unspendab=
le by the 'OP_RETURN' in the public key script.

=3D=3D=3DOutput 2: Revocation Puzzle=3D=3D=3D
General form:

<pre>
value:              0
public_key_script:  SIZE 32 EQUALVERIFY HASH256
                    <32-byte-rpob_revocation_puzzle>
                    EQUAL
</pre>

*The Value of the Revocation Puzzle Output MUST be zero.

<code>HASH256</code> is defined by ''double sha256'':

<pre>
rpob_revocation_puzzle:    32-bytes, public, SHA256(SHA256(
                                     <32-byte-rpob_revocation_solution>
                                     ))

rpob_revocation_solution:  32-bytes, secret, publicly reveal this value to =
revoke the proof-of-burn.
</pre>

*It is RECOMMENDED that implementations use a value for the <code>rpob_revo=
cation_solution</code> that is derived from the secret key used to generate=
 the  <code>rpob_secp256k1_public_key</code> .

=3D=3D=3DOutput 3, Optional: Change=3D=3D=3D
<pre>
value:              (any)
public_key_script:  1 <32-byte-taproot_witness_program>
</pre>

*This output MAY have any value.
*The public key MUST be a standard P2TW output.

=3D=3D=3DSignature: Included in Output 1=3D=3D=3D
<pre>
rpob_schnorr_signature:       64-bytes, bip-340, signature (
                                        <32-byte-rpob_signature_message_has=
h>,
                                        <32-byte-secp256k1_private_key>
                                        )

rpob_signature_message_hash:  32-bytes, bip-340, sha256_taged_hash (
                                        <77-byte-rpob_signature_message>,
                                        <16-byte-rpob_hash_tag>
                                        )

rpob_hash_tag:                16-bytes, utf-8-hash_tag ("rpob/BTC/MAINNET")
                                    or, utf-8-hash_tag ("rpob/BTC/TESTNET")

rpob_signature_message:       77-bytes, < 1-byte-version_flags>
                                        <32-byte-input_txid_hash>
                                        < 4-byte-input_index>
                                        < 8-byte-burn_output_value>
                                        <32-byte-rpob_revocation_puzzle>
</pre>

*The <code>rpob_schnorr_signature</code> uses the [https://github.com/bitco=
in/bips/blob/master/bip-0340.mediawiki BIP-340] algorithm.

=3D=3DDeployment=3D=3D

While the ''IsStandard'' rules are quite restricting, it is quite possible =
to submit transactions directly to miners, or co-operate with miners who wo=
uld enjoy to have some addition fee-revenue. So the initial process of test=
ing on the main-network should be possible.

If this standard gains significant attention, we are happy to write a suppl=
ementary BIP to define a new service bit to allow nodes to signal that this=
 new type of standard transaction is accepted.

=3D=3DRationale=3D=3D
=3D=3D=3DWhy require RPoB transactions to use a new transaction version?=3D=
=3D=3D

This allows for future indexing and enforcement strategies at the consensus=
 layer.

=3D=3D=3DWhy use a hash puzzle for the revocation?=3D=3D=3D

The hash-puzzle allows for easy indexing of the revocation, in the format:

<code><32-byte-revocation-puzzle> (if revoked: <32-byte-revocation-puzzle-p=
reimage>)</code>

*Since the digest algorithm is double sha256, even for a very large number =
of revocation, this index would be very cheap to verify.

*We envision nodes keeping track of all the revocation-puzzles listed in th=
e blockchain, as 32-byte each, a million RPoB is only 32mb. This can be fur=
ther optimised.

Additionally, we do not want to confuse a public key, (that can sign), and =
a revocation-puzzle (that may only revoke).

=3D=3D=3DWhy must the revocation output be of zero value?=3D=3D=3D

Revocation can be spent by anyone once the revocation pre-image has been pu=
blished.

=3D=3D=3DWhy does a RPoB need a signature at all?=3D=3D=3D

The primary purpose of the signature is to stop replay-attacks. (Somebody t=
akes your public-key and makes transaction where you don't control the revo=
cation).

The secondary purpose is to allow for untrusted parties to create transacti=
ons on your behalf. i.e. a 'RPoB' transaction creation service.
=3D=3D=3DWhy waste precious block space?=3D=3D=3D

Consuming block-space is a of secondary proof-of-burn that this proposal ta=
kes advantage of, as itself is limited and contested for (blocks are almost=
 full on average). There is an opportunity cost of the next best transactio=
n when a miner chooses to include a RPoB transaction their block.

Additionally, transaction fees are important for the long-term health of th=
e bitcoin-network, this proposal increases the demand for the blockchain.

=3D=3D=3DWhat do you want to make these RPoB transactions if there is insuf=
ficient block-space?=3D=3D=3D

This isn't our problem. Those who have the economic purpose and resources t=
o make RPoB transactions will outcompete those who do not.

=3D=3DBackwards Compatibility=3D=3D

As this is an application layer structure without any preexisting deploymen=
t, we foresee no compatibility issues.

=3D=3DReference Implementation=3D=3D

To be made.

=3D=3DAcknowledgements=3D=3D

While we have somewhat independently come up with the concept of RPoB, the =
idea of having a public record of public key enrolments has been around for=
 a long time. None of the ideas in this BIP are new.

We would like to thank Jonas Schnelli, 'M', and 'P', for their past contrib=
utions.

=3D=3DAppendixes=3D=3D

=3D=3D=3DAppendix 1: Some alternatives to blockchain-based proof-of-burn:=
=3D=3D=3D
Blockchains provide the our first opportunity to have deterministic and dec=
entralised trust networks. Before blockchains we had proof-of-work and proo=
f-of-payments as the two main gate-keepers for boot-scraping new members in=
to a exclusive group:

=3D=3D=3D=3D Proof-of-Work: =3D=3D=3D=3D
For example,

* In games it could be to grind your character up to a certain level.
* Or it could be to make and present hand-drawn artworks.
* Or it could be to solve a CAPTCHA.

With proof-of-work blockchains provides a way to quantises an abstract an a=
mount of work into a value. Providing a solution "how much dose this work c=
ost?" problem: your work can be traded for bitcoin, and the bitcoin value i=
s set efficiently in the market.

=3D=3D=3D=3D Proof-of-Payment: =3D=3D=3D=3D
For example,

* Buying an expensive uniform item required for the clan.
* Paying membership dues.
* Proving a donation to a charity.

With proof-of-payment the problem is the feedback loops, who gets the payme=
nt is placed into a privileged position of responsibly. The blockchain solv=
es this with proof-of-burn outputs, the 'payment' goes back to the network,=
 distributed indirectly and proportionally the holders of bitcoin.

=3D=3D=3D=3D None: =3D=3D=3D=3D
For example,

* Pretty-Good-Privacy (PGP).

PGP provided the basic cryptographic infrastructure for secure communicatio=
n, including a basic web-of-trust where users can cross-sign each others ke=
ys, to make man-in-the-middle attacks harder to carry out. The primary prob=
lem with PGP is that any infrastructure that uses it is open to denial-of-s=
ervice attack, as making new pgp-key identities is extremely cheap.

The trust network also is open to sybil attack, as huge numbers of keys can=
 all cross-trust each other making it appear that they belong to a large-ge=
nuine trust network.

=3D=3D=3D=3D Other: =3D=3D=3D=3D

* Blockchain Timestamping, i.e. Open-Timestamps.

One of the most simple ways of assiging value to something is to prove that=
 it is old. Timestamping with a blockchain allows users to assert that they=
 didn't just create this account just now. -  However the problem is that t=
imestamps are cheap to make, and if the need for timestamps is predictable,=
 then adversaries can pre-generate many to misuse and attack a network at a=
 later date.

* Blockchain space Use.

Simply putting a statement into a blockchain itself, if there is any free-p=
ressure is indirect form of burn by via the miner.  By out-competing the ne=
xt-best-transaction set, this has burnt the value in the difference between=
 the fees of the two set.

Thus, it can be shown that if the blocks are full, a RPoB transaction with =
zero-burn-amount is still a proof-of-bun transaction!

=3D=3D=3D Appendix 2: Some notes on blockchain-based proof-of-burn and dece=
ntralised networks: =3D=3D=3D
Using a blockchain the relative value of a proof-of-burn is deterministical=
ly calculable:

* Trust calculations transferring a proof-of-burn into a "default trust" va=
lue are possible. Leading to the creation of trust graphs that can operate =
reliably without human intervention.
* Networks using such default trust calculations become inherently resistan=
t to distributed denial of service attacks.

All this cannot easily be achieved without leveraging the functionally of a=
 blockchain such as Bitcoin.

=3D=3DFootnotes=3D=3D

<references />