summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryurisvb <yurisvb@pm.me>2023-12-19 21:22:20 +0000
committerbitcoindev <bitcoindev@gnusha.org>2023-12-19 21:22:46 +0000
commit7d5dcbaf9464837581180f2424e8d9792eb08947 (patch)
treebe64d9a15a4b81ddc3382b538cbbdec74b41931f
parent071efc7376185f98d0bde1036b1db87e6002dc8f (diff)
downloadpi-bitcoindev-7d5dcbaf9464837581180f2424e8d9792eb08947.tar.gz
pi-bitcoindev-7d5dcbaf9464837581180f2424e8d9792eb08947.zip
Re: [bitcoin-dev] Lamport scheme (not signature) to economize on L1
-rw-r--r--83/b36d1a07fd04cb724876169d0ff5638c538096330
1 files changed, 330 insertions, 0 deletions
diff --git a/83/b36d1a07fd04cb724876169d0ff5638c538096 b/83/b36d1a07fd04cb724876169d0ff5638c538096
new file mode 100644
index 000000000..e9c47bd5c
--- /dev/null
+++ b/83/b36d1a07fd04cb724876169d0ff5638c538096
@@ -0,0 +1,330 @@
+Return-Path: <yurisvb@pm.me>
+Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])
+ by lists.linuxfoundation.org (Postfix) with ESMTP id 50A48C0037
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Tue, 19 Dec 2023 21:22:46 +0000 (UTC)
+Received: from localhost (localhost [127.0.0.1])
+ by smtp3.osuosl.org (Postfix) with ESMTP id 1953960EA1
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Tue, 19 Dec 2023 21:22:46 +0000 (UTC)
+DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 1953960EA1
+Authentication-Results: smtp3.osuosl.org;
+ dkim=pass (2048-bit key) header.d=pm.me header.i=@pm.me header.a=rsa-sha256
+ header.s=protonmail3 header.b=ix3XUtYe
+X-Virus-Scanned: amavisd-new at osuosl.org
+X-Spam-Flag: NO
+X-Spam-Score: -2.1
+X-Spam-Level:
+X-Spam-Status: No, score=-2.1 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, RCVD_IN_MSPIKE_H5=0.001,
+ RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001]
+ autolearn=ham autolearn_force=no
+Received: from smtp3.osuosl.org ([127.0.0.1])
+ by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
+ with ESMTP id m4Qr8sjrHgqt
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Tue, 19 Dec 2023 21:22:45 +0000 (UTC)
+Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch [185.70.43.16])
+ by smtp3.osuosl.org (Postfix) with ESMTPS id A211160EDE
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Tue, 19 Dec 2023 21:22:44 +0000 (UTC)
+DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org A211160EDE
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pm.me;
+ s=protonmail3; t=1703020962; x=1703280162;
+ bh=7+Ds7qtkTRCSF9Vi707SSLcLvf4Ftf8F1hT9hvjIL1c=;
+ h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
+ Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
+ Message-ID:BIMI-Selector;
+ b=ix3XUtYeATToe3ZiNnB2tmavqegQOtWpXh4MpIjWDhUASk1DTU0am/qGkd8ndDmSA
+ 7LE7nokPLe4mrPKVmg6L+xpLLnfNK9FPaIkoMGSpjM30l6sVoXS1RB/YRB59HuiWQJ
+ Wo4SD5EHbT5IhdBAh7SEhFMSltCDYI7QZQIkZYciZAoiMHFlu+qkkzQkHhzSGsaVO/
+ 0Ri/S4phlzqtjeipZiVB7pbcvQCPzKDZHZEPoTS7t3MOqnIUejUUW3hIjKaBdW35C0
+ SAW6U6CwbYs2Bjai2LAi7XKxEd/xlSntEFO+Wf9cQRbeu2xtZt6Tv1/DOrGY+5X33H
+ 1Af218uihymew==
+Date: Tue, 19 Dec 2023 21:22:20 +0000
+To: Nagaev Boris <bnagaev@gmail.com>
+From: yurisvb@pm.me
+Message-ID: <HG9-9VDKRd3-0v0x9QP05_Cjyk9Y3UW-94A1RHsT3xMQYmb7Y6sk9-wTUlqVZzm6ACigM7aM-B6NB-z6jVCCXhQIGEYkEcBKryzP587FlIo=@pm.me>
+In-Reply-To: <CAFC_Vt5PcqqcREJ67Jzcg=K+Agd02a9f5uSit8LwkYHshbvF7A@mail.gmail.com>
+References: <nvbG12_Si7DVx9JbnnAvZbNdWk7hDQA23W1TXMkfYoU2iBA95Z1HzRnXgyiwFhDBmdi_rWL0dPllX1M9N9YZPDV47VgYADNd7CQA9CkAuX0=@pm.me>
+ <CAFC_Vt5xqhuXjNVeSGE2Pn=0N0MuB6pOnREzGhSQSpk+hTUUSg@mail.gmail.com>
+ <-lH1AcjRwuxfuqLPFOh_oga10Qm12fb7Se9imDeS5ft6CU3y8KTQa3tBP0twJJBFSHgj7FC8EIxvEser3oZdWvkeitRwERQl_cCdgAWtbTU=@pm.me>
+ <CAFC_Vt7B1oV0_uAwKe3NQLWE2jdQ_MF1W4fnVqkf8s=YHyfVyQ@mail.gmail.com>
+ <1aHuuO-k0Qo7Bt2-Hu5qPFHXi4RgRASpf9hWshaypHtdN-N9jkubcvmf-aUcFEA6-7L9FNXoilIyydCs41eK4v67GVflEd9WIuEF9t5rE8w=@pm.me>
+ <CAFC_Vt644Wqn7EcvoZwFscPMov8T5kO9ss_QRgNgVNir-bBA0Q@mail.gmail.com>
+ <ue8nChOuMtyW_JM-WxikLpWUSn9I99UHI5ukFVfLOEmQtCo4noetzyVKercbrwjr_EqNotDsR1QZ0oijMu11TO2jpEjlJF71OjLlNoZ-00Y=@pm.me>
+ <CAFC_Vt5PcqqcREJ67Jzcg=K+Agd02a9f5uSit8LwkYHshbvF7A@mail.gmail.com>
+Feedback-ID: 15605746:user:proton
+MIME-Version: 1.0
+Content-Type: multipart/signed; protocol="application/pgp-signature";
+ micalg=pgp-sha256;
+ boundary="------92a542ae0e51e7c7edc271876fb1e019e442ebc8ca96f04b032950b376d0d2a8";
+ charset=utf-8
+X-Mailman-Approved-At: Tue, 19 Dec 2023 21:45:43 +0000
+Cc: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
+Subject: Re: [bitcoin-dev] Lamport scheme (not signature) to economize on L1
+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: Tue, 19 Dec 2023 21:22:46 -0000
+
+This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
+--------92a542ae0e51e7c7edc271876fb1e019e442ebc8ca96f04b032950b376d0d2a8
+Content-Type: multipart/mixed;boundary=---------------------3f06cd0490d8849548ba8601b8734abf
+
+-----------------------3f06cd0490d8849548ba8601b8734abf
+Content-Transfer-Encoding: quoted-printable
+Content-Type: text/plain;charset=utf-8
+
+Thank you for putting yourself through the working of carefully analyzing =
+my proposition, Boris!
+
+1) My demonstration concludes 12 bytes is still a very conservative figure=
+ for the hashes. I'm not sure where did you get the 14 bytes figure. This =
+is 2*(14-12) =3D 4 bytes less.
+
+2) Thank you for pointing out that ECCPUB is necessary. That's exactly rig=
+ht and I failed to realize that. To lessen the exposure, and the risk of m=
+iner of LSIG, it can be left to be broadcast together with LAMPPRI.
+
+3) I avail to advocate for economizing down the fingerprint to just 128 bi=
+ts for the weakest-link-principle, since 128 bits is a nearly ubiquitous s=
+tandard, employed even by the majority of seeds. Not an argument against p=
+lain Schnorr, because Schnorr keys could use it too, but, compared with cu=
+rrent implementations, we have that would be 20-16=3D4 bytes less.
+
+4) [Again, argument against plain, because it cuts for both sides:] To eco=
+nomize even further, there is also the entropy-derivation cost trade-off o=
+f N times costlier derivation for log2(N) less bits. If applied to the Add=
+ress, we could shave away another byte.
+
+5) T0 is just the block height of burying of LSIG doesn't need to be burie=
+d. T2 can perfectly be hard-coded to always be the block equivalent of T0 =
++ 48 hours (a reasonable spam to prevent innocent defaulting on commitment=
+ due to network unavailability). T1 is any value such as T0 < T1 < T2, (ty=
+pically T1 <=3D T0+6) of user's choosing, to compromise between, on one ha=
+nd, the convenience of unfreezing UTXO and having TX mining completed ASAP=
+ and, on the other, avoiding the risk of blockchain forking causing LAMPPR=
+I to be accidentally leaked in the same block height as LSIG, which allows=
+ for signatures to be forged. So this is 16 bytes less.
+
+Miners would keep record of unconfirmed BL's, because of the reward of min=
+ing either possible outcome of it (successful transaction or execution of =
+commitment). Everything is paid for.
+
+So, unless I'm forgetting something else, all other variables kept equal, =
+we have 20 bytes lighter than Schnorr; and up to 25 bytes less the current=
+ implementation of Schnorr, if items 3 and 4 are implemented too. Already =
+we have a reduction of between 21% and 26%, while, so far, nobody in the m=
+ailing list has disputed how 'outrageously' conservative the 12 bytes figu=
+re is.
+
+Any other objections?
+
+YSVB
+
+Sent with Proton Mail secure email.
+
+On Tuesday, December 19th, 2023 at 6:08 PM, Nagaev Boris <bnagaev@gmail.co=
+m> wrote:
+
+
+> On Tue, Dec 19, 2023 at 11:07=E2=80=AFAM yurisvb@pm.me wrote:
+> =
+
+
+> > Thank you for the question, Boris. That was an easy one:
+> > =
+
+
+> > Short answer is Lamport hashes are protected by long hash of key finge=
+rprint an ECC (Schnorr or otherwise conventional) public-key, which is not=
+ published until first transaction. For clarity:
+> > =
+
+
+> > HL(.) =3D serial-work- and memory-hard hash with short digest (ex.: Ar=
+gon2 with ~ 12 bytes output. "L" for "Lamport");
+> > HC(.) =3D nonspecific representation of conventional, serial-work- and=
+ memory-easy hashes with long (brute-force-resistant) digest length. "C" f=
+or "Conventional";
+> > KDF(.) =3D conventional key deriving function
+> > ECCPUB =3D public key correspondent to ECCPRI
+> > ECCPRI =3D KDF(seed, tag) //conventional BTC signing key (could be Sch=
+norr instead)
+> > LAMPPUB =3D HL(LAMPPRIi)
+> > LAMPPRI =3D HL(seed, tag) //Though it is (more) feasible to crack a se=
+ed S that works as pre-image to LAMPRI, such seed can only be deemed valid=
+ if the public key correspondent to KDF(s) =3D ECCPUB, so ultimately, crac=
+king seed is still as hard as cracking a conventional seed.
+> > ADDR =3D H(ECCPUB, LAMPPUB) //Conventional BTC key fingerprinting with=
+ conventionally used hashes and their respective brute-force-resistant dig=
+est lengths
+> > TX =3D plaintext transaction
+> > LSIG =3D HL(TX, LAMPPRI)
+> > COMMITMENT =3D Smart contract stating "This UTXO is frozen until one o=
+f the following happens: A) publishing of a L such that HL(TX,L) =3D LSIG =
+before T2 in which case TX is deemed valid and executed, or B) T2 blocks f=
+rom now, when miner of LSIG has gets F1+FF1, and the miner of COMMITMENT g=
+ets FC, both from UTXO"
+> > BL =3D "Bundle of Lamport scheme" =3D (TX, LSIG)
+> > BC =3D "Bundle of Commitment and Conventional Signing" =3D (COMMITMENT=
+, ECCPRI(COMMITMENT), ECCPUB, LAMPPUB) //LAMPPUB is added here to allow ea=
+sy verification that ECCPUB corresponds to ADDR
+> > BT =3D "Total Bundle" =3D (BL, BC)
+> > F1 =3D fee offered to mine BL
+> > FF1 =3D fine offered to miner of BL to compensate for delay
+> > FC =3D fee offered to mine BC in case of default
+> > T0 =3D Block height of broadcasting of BT
+> > T1 =3D Block height owner should aim at broadcasting LAMPPRI block ~ T=
+0+1 to T0+6 blocks. This is to protect owner from dissensus (revealing LAM=
+PPRI in a block and have it utilized to forge transaction in a competing b=
+lock of same height).
+> > T2 =3D Block height of expiration of commitment ~ T0+24 hours to T0+ a=
+ few days to protect user from execution of commitment being triggered by =
+innocent unavailability.
+> > =
+
+
+> > From ADDR alone, Miners, cannot forge a valid LSIG, nor try to ascerta=
+in LAMPPUB or LAMPPRI, because of pre-image-resistance of H(.) and brute-f=
+orce resistance of ECCPUB before being published. The saving happens becau=
+se, safe from T2 passing without LAMPRI being broadcasted, only BL and LAM=
+PPR, and not BC, end up in Blockchain.
+> > =
+
+
+> > The proposed scheme, therefore allows for only 1 instance of Lamport s=
+chemed-based economic transaction, which has to be the first transaction o=
+f ADDR (because of publishing of ECCPUB). After this first transaction, AD=
+DR is stil valid, just no longer able to issue transactions.
+> > =
+
+
+> > The proposed scheme, therefore, favors the good practice of non-addres=
+s reuse.
+> > =
+
+
+> > YSVB
+> =
+
+
+> =
+
+
+> Thank you for the great explanation, Yuri!
+> =
+
+
+> Let's make sure we are on the same page.
+> =
+
+
+> I calculated the on-chain footprint of signatures of the proposed
+> scheme and compared it with schnorr keys as are used in taproot.
+> =
+
+
+> Lamport scheme, the case no ECC signature is published:
+> - output: 20 bytes. ADDR =3D H(ECCPUB, LAMPPUB)
+> - input 1: LSIG (14 bytes)
+> - input 2: ECCPUB, LAMPPRI (32+14=3D46). (ECCPUB is needed to verify
+> hashing to ADDR; LAMPPUB is not needed onchain, because it is a hash
+> of LAMPPRI.)
+> Total onchain footprint: 20+14+46=3D80 (bytes)
+> Is this correct?
+> =
+
+
+> Taproot:
+> - output: 32 bytes (schnorr public key)
+> - input: 64 bytes (schnorr signature)
+> Total: 32+64 =3D 96 (bytes)
+> =
+
+
+> Some additional space is needed in the lamport scheme case to address
+> T0 from T1 and to have T1 in the first place. Tx overhead is around 10
+> bytes and say 6 bytes for the reference. It looks, the footprint will
+> be the same.
+> =
+
+
+> =
+
+
+> =
+
+
+> --
+> Best regards,
+> Boris Nagaev
+-----------------------3f06cd0490d8849548ba8601b8734abf
+Content-Type: application/pgp-keys; filename="publickey - yurisvb@pm.me - 0x535F445D.asc"; name="publickey - yurisvb@pm.me - 0x535F445D.asc"
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename="publickey - yurisvb@pm.me - 0x535F445D.asc"; name="publickey - yurisvb@pm.me - 0x535F445D.asc"
+
+LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4c0JOQkYySmpSWUJDQUM1MXlo
+K0s0MmF0c0V5MGdCTmgvaklXR1hzQnRFLzdJOGFuUmZkZTcvcWdHeXkKbEx4TXFZRE1OelUwN3c5
+Z3VINllKRDdWdzNaUmxTVGVqNU9Hc2laOFJ2OUp4YXBYc0MxeDMrdHhOQkFQClYyVml1MVpsMnhK
+Y29sTDkrem9SUmhmU25lVDVaZm1IQlpBSklKbmhOdU80ajhrRi9iNDRFaEZ3NkwvTgpGbE9rK1VC
+SkVvS0FFQWttd09aWWpVTDd6MStRdzJBZkJIVGVwNFMzYmY4SmZMNDFOUVJsRnBSa3MrSkMKTjNa
+c0ozZmZhNURjWjVqTGgyK2k5Mlg2eE8yVW5nM0hLYXhJYTVtbzB3cGVvQ1JQdUxNRjE2cjVQelJ4
+CjJmNldzZVlUbWVmZWVYUGUzZEhyTTR4ai9ndHpBRGNxaFd6VVZLM21ZNTdPTXhVYjJ4MWdqZ1Z6
+QUJFQgpBQUhOSFhsMWNtbHpkbUpBY0cwdWJXVWdQSGwxY21semRtSkFjRzB1YldVK3dzQjFCQkFC
+Q0FBZkJRSmQKaVkwV0Jnc0pCd2dEQWdRVkNBb0NBeFlDQVFJWkFRSWJBd0llQVFBS0NSQXYzelY4
+UzhOTVZkTkRCLzlRCnZRRlpZNkRzR3FMOTlkKzI2QjdHYmRCb0VjenUxL2NqTVpNdE9QeW9nSElF
+eXllalR3R1RVN3ZYNEpWZQozRHZnbnd4U2xIYjQ2dDU2VGV3OU5rZ2V4MmFIb0hGRnJBd3MraTVa
+ajdZN2lhL2l2RVozZE1KR3dNSUoKeVlQS08rdG1ockxNYWlSSFdnUnhtSG5mRnhUY1dFQ1dSZEk3
+dDRJWFp3Rm9QN2Z3TVVVVXQrV3NTbzJSCnJhUVZEL3NTL2F2TlF5T2h6YTlLcVBQNjBZY3B2RUtj
+UXArL2hyTjRRcFhVSkxiaDFZMVlqeUhlbDhnQgpRa3p2QzUwUjVxTzRlY2xxSy9FMEhESnlDWmZN
+TThkV2o0REJrTWN2SzlsYjB5b3ZRMDFFTXp1NkU1NEcKYjZ0VFp1bktQTVpVd1J1SW5FY0hHMjV0
+azdWUEM4clJTU0hqeDhTT3pzQk5CRjJKalJZQkNBQ3RiUWdNCldRSnMvTVdZbDR2THRLSlhYbFlS
+T2h1YkVWbjRjTFdZSmVFWHpzSllCQWRlNWh0QlEzc212UjJ2NnVJegptejJpaXFsSkVVdmYwY2xM
+WS9QVExoSGVTbWE5VTRodzRaRDNZKzV6WWxINURza2l1N3lLZTdIVmpEVmkKd1FJN25acWRvanJs
+dDhCZENiOVNMaXRNaFRvR1crS2E1VCtUOWNmbWthMk1qa3pRSFBNTEJtdVJ6a2V2ClBkZFF6M0xB
+MjMzZDNHREVTZklCYy91OC9YelBUNkZTZ3MzSEh4OEFJbFdQbEJaYmh6WmpQNlRLclRNRQpOSEtK
+cmxTRlZKclErL25QU28ya0VSL0VDczF0aUJEY0JkamVPYWx6LzdRVWN0Rnp3NGdjS0RtMGpUeEkK
+cVhWVlV3a2tuRkM4NDZMTjNBT2p0UWRyOVV3czVsTzhkeXBGQUJFQkFBSEN3RjhFR0FFSUFBa0ZB
+bDJKCmpSWUNHd3dBQ2drUUw5ODFmRXZEVEZXS2VBZ0FxRXN1QXJMZFprYXBvZDI3K2hpcHZZNUcr
+eVRLQW1NMApIVlhmQzJiMVdtNXQwQXhOVXVkMlJ1OTE1MHA3V09CRXpXYkxnNXdzOTc1M296dlZi
+cFpIQU9uVGZOeXoKUUR5QWhmZ1hNQjIvdzRERXEwT2tlQVBRNXhsQWtISDZpUW1hSkZiYy9FRjRX
+ZWZWeE92MnNRNDlRNks5Ci9Bb1FROG54RVh1RzRidXVrclEwTGVlTVAzNEdMWUhYK2JvWENHQmxI
+MGhiZm5kc3VQbEdqYnBnWVErdQplclJGTlB4N1JtSWtnQjJ0WmhwZkZ3VGtid1c2TVFmWDM5Z3F1
+SitwVEVKUnA5UmpJVjFZU2txSjZJUkgKQkc4eFBocGgzT3huaWJyWkdlbGdtakpNM2QwM1k5OSs3
+OXBvdTRlY09BeWYyTHMrMVVTY2NDTzA2YnI4CldlcjJ3cmI0WXc9PQo9aHJheAotLS0tLUVORCBQ
+R1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCg==
+-----------------------3f06cd0490d8849548ba8601b8734abf--
+
+--------92a542ae0e51e7c7edc271876fb1e019e442ebc8ca96f04b032950b376d0d2a8
+Content-Type: application/pgp-signature; name="signature.asc"
+Content-Description: OpenPGP digital signature
+Content-Disposition: attachment; filename="signature.asc"
+
+-----BEGIN PGP SIGNATURE-----
+Version: ProtonMail
+
+wsBzBAEBCAAnBYJlggl5CZAv3zV8S8NMVRYhBFNfRF3t6Z4/pmFJQy/fNXxL
+w0xVAACU+gf+KpdrCimgxN9BpYm33VRwkp0Z7lRMZLaXjPU0L04saeDwedyN
+xUKJQn+e0v8bhLjcTduGS2GFdnTatw/PsIMWTnV4zH2207St0nZM+7I/+9uY
+w+YvvvjvQV2Go2E3AJNjqA5Wz/nJlppY9rQHMFP+23VOVuEzP9cu7pdQNttq
+KxIap36rz7i+ShJcbqua7s+DkNeW1fBG6ikoM8LvYaZ/MKGjuIHpmOBUjLdx
+xDt221xj03DSeIIJNNOR1RSF/VO1DGoUNqYZMNv2lmm15EvfR+Uzwq8THkRC
+wy0oJjm4JI8vbd4qYCbr+zLkF7HfTjYzwE9ihnX3ehGqJd8g4YjXXA==
+=YX0X
+-----END PGP SIGNATURE-----
+
+
+--------92a542ae0e51e7c7edc271876fb1e019e442ebc8ca96f04b032950b376d0d2a8--
+
+