长期信任与模拟计算机

  • BTCStudy
  • 发布于 3小时前
  • 阅读 32

本文是Andrew Poelstra在MIT Bitcoin Expo 2022上的演讲稿,主要讨论了如何长期安全地存储比特币私钥,并介绍了使用模拟计算机(特别是轮盘表)来避免对电子设备的信任依赖的方法。该方法包括使用轮盘表进行密钥生成、校验和验证、秘密分享等操作,以确保存储数据的完整性和安全性。

作者:Andrew Poelstra

来源: https://btctranscripts.com/mit-bitcoin-expo/mit-bitcoin-expo-2022/long-term-trust-and-analog-computers

本文为 Andrew Poelstra 在 MIT Bitcoin Expo 2022 上的演讲的转写稿,由 kouloumos 通过 review.btctranscripts.com 转录。

引言

我准备跟各位讲讲 “模拟计算机(analog computers)” 和 “长期信任(long-term trust)”。

所谓 “长期信任”,我指的是,你如何确信自己的比特币私钥(你的种子词,或者别的形式)得到了正确的存储?你确定数据是完整无缺的吗?你确信它能保存多长时间?这就是信任因素产生的地方。

历史上,在过去 100 年中,为了验证数据的完整性,你必须把它(数据)放到某种电子计算机中。然而,这样做的时候,你又不得不信任这些计算机不会在你看不见的地方搞鬼:它不会泄露你的数据、也不会摧毁这些数据、不会在数据出错时对你说谎,等等。

我的主张是,只需使用 “模拟计算机”,你就可以避免这些持续滋生的信任问题。模拟计算机是简单的机械设备 —— 我会展示一些 —— 它们会用你看得一清二楚的方式运行计算。

安全的硬件签名器有哪些元素?

(译者注:原文为 “hardware wallet”,直译是 “硬件钱包”,此处按较新的行业惯例,翻为 “硬件签名器”。)

在此之前,我们先概要讲讲硬件签名器,以及我们理解硬件签名器的惯常方式。一款硬件签名器,当然,就跟一个迷你接收器(dongle)一样,Ledger、Trezor、Coldcard,不管你买的是什么牌子,都差不多。你会在其中存储你的比特币(私钥),会用 USB 线将它连接电脑(也有可能你会用 SD 卡在电脑和签名器之间传递数据),在有需要的时候,它会代表你来生成签名。它是一种专用的硬件,你不能向它加载软件(至少,签过名的软件才能加载到里面)。我们的基本想法是:它不应该运行恶意软件,应该设计成能够处理敏感数据,而且对于导入它和从它传出的数据,你应该具有一定的控制权。

那么,哪些元素构成了一款优秀的硬件签名器呢?如果你到 Reddit 论坛的 r/Bitcoin 论坛询问,你会得到这样一些建议(PPT #3)。这些都是好的建议,应该说,是非常基本的建议。他们会说:

  • 你应该从流行的硬件签名器品牌中,挑选一个你能信得过其制造商的;
  • 在你收到货之后,确保产品的密封是完好的;
  • 如果产品中已经预先加载好了种子词,就表明它在某个环节已经遭遇了供应链攻击,你应该扔掉它 —— 绝对不能使用这些种子词;
    • 我会笑是因为,这是一种非常常见的供应链攻击。如果你在亚马逊或者别的什么网购平台购买硬件签名器,亚马逊的托运人会在产品上贴一张小纸条,写着 “请使用这套种子词”。这是非常容易做的手脚,但真的有人上当。所以别小看它。

这些都是购买硬件签名器的好建议。

但在座各位是 MIT 的学生,我们应该可以再专业一些,看看这些东西(硬件签名器)是怎么组装起来的。一些签名器带有安全芯片(secure elements),也就是专利芯片中的一类,它们是专门设计成抵御各种形式的破解和数据抽取的,而普通的计算机芯片则没有设计这样的抵御物理攻击者的能力。也许,你也关心它里面运行的是什么软件。你会希望它跟 “PSBT(待签名的比特币交易)” 格式一起工作,而不是一些随便的临时协议。也许你还希望它拥有最新的科技,比如支持 Taproot 输出、多签名和描述符,等等。也许你想下载他们的源代码来看看,所以它应该要开源。

就这些,我可以说上一整天,但这些东西你们也都能想到。遗憾的是,当前市场上还没有任何一款产品能满足我前面说的所有条件,所以,很有可能,即使你思考了一番,你的决定也不会有什么不同 —— 你还是只会买那些最流行的产品,只是会感觉它没那么安全。这里的关键是,你想得越多,你对保管你的比特币的方法的担心就越多。

所以,在这个兔子洞里,我们可以再往里探一层。如果你在正确的 IRC 频道中出没,或者花了时间跟大量比特币老炮儿交流,你会发现这样一种建议,很著名的 —— Greg Maxwell 会建议使用一台旧的 ThinkPad 或别的什么笔记本电脑,并且要求是你在比特币出名之前购买的。这样的设备中就不会有专门针对比特币的后门 —— 因为在制造它们的时候,还没有人知道比特币会变成这么有价值的东西。

也有许多人在 libsecp 的代码库中提交 bug,说它不能(比如说)在 8 位的处理器上工作,因为他们尝试在自己的 GameBoy、任天堂游戏机和旧计算器上运行比特币软件。我相信在座的绝大多数人都使用 TI-83 计算器。在 TI-83 之前,还有一款 TI-85,是更加原始的德州仪器(TI)图形计算器,在以前的学校里不得不用它。在上面你是可以运行比特币软件的。你可以实现密码学和 TI basic,然后就能运行比特币软件,而且可以假设你的 TI 计算器不会有相关的后门。并且也是一种很好的伪装。如果你是这样的人,那么你可能有一屋子老旧的、糟糕的电子产品,其中一半甚至没法开机,如果这一堆东西里有一个设备是你的比特币钱包,那没人会注意到它。所以,这是一个不坏的建议。如果你有这样的工具和动机,那么我毫无疑问会建议你这样做。

但是我们还可以再深入一些。我要建议的是,尽管这些电子设备比比特币还要古老、因此不太可能有后门,它们还是有芯片、有闪存(flash memory),可能还是有磨损均衡逻辑(wear leveling logic)或类似的东西。你依然无法断定它在做什么、确保它里面不会保存别的东西、没有侧信道(side channel)等等东西。但如果我们用纸和金属 —— 我指的是你肉眼可见并且可以用手操控的大块金属 —— 那你就能获得很好的物理直觉:到底有没有侧信道。你可以确信,化学定律中不会有能够破坏你的比特币的后门 —— 如果真的有,那你可以放心丢掉比特币了,因为无论是对你还是对别人,这玩意都不会有什么价值。但不会的,有一个很好的权威证据,就是《圣经》本身。

这样做的另一个好处是,如果你是手动运行所有这些计算的,那么所有的中间计算都在工作表上,也就是你写下来的纸上;所以,当你得到最终结果的时候,你可以将结果刻在金属板上,这样它就有了一个物理载体,而所有的中间计算过程都可以烧掉。你会得出一大堆工作表,但你只需付之一炬,它们就全部消失了;这就了结了。

在我的演讲的后半段,我会回到这个主题,并展示一些图片、旋转一些转盘什么的。但是,且让我先离题一会儿,向那些并不天生是金属脑袋、蒸汽朋克的人证明一下,这种思考和信任模式是合理的。

如何保护你自己?(信任与未来)

首先我要强调的一点是,这(信任)是一个长期持续的事情。如果你要保存比特币很长时间,比如几年甚至几十年,那么,对你管理自己私钥的方式,会有一种持续不断的信任要求。所以,自然就会有一个问题,如果你要使用硬件签名器,应该使用哪一种。也许你已经有一款硬件签名器在手了,但也许五年之内它就会坏掉。所以,你应该每 5 年或者 10 年买一个新的、每次都相信这一次买的不会再有问题了吗?还是说,你应该现在就买一打(12 个),用坏一个就换一个,同时指望这些老旧的设备不会被发现新的问题?又或者,你指望的是它们会变得极其罕见,以至于根本没有人会针对它?

我的意思是,两边都有各自的说法。而且显然,如果你使用的东西从不更新,那似乎是不安全的,因为你不会得到安全补丁,等等。但是,另一方面,如果你会一直更新它,那么就产生了一种新的信任要求,以及 bug 溜进来给你造成困扰的新机会。

所以,你必须为自己要购买的硬件签名器思考这个问题,你要考虑自己传入硬件的固件升级。你还要考虑一些常见的问题,比如说,如何测试自己的备份,即使你还没备份。也许你会使用这些金属板,也许你相信,如果没有人有意打开,瓷砖就不会移动。

我的意思是,这些做法当然都有意义,但是令人不安。如果你将所有材料存储在一块金属板上,然后在上面贴了一个防篡改标签,然后把它藏在一个地方 20 年 —— 那么,你最后一次见到这块金属板就是在 20 年前了。我说不准,你有多大的信心,这块金属板在你脱手之后从来没改变过?

这些都是可怕的问题,并不一定是理性上值得担心的问题,而且显然有不同程度的模糊地带,但它们是持续的不安的来源,也是你必须为自己回答的永续问题。

硬件什么时候会出错?(信任与现在)

现在,我来谈谈硬件签名器可能会出现的具体故障,以及你需要担心的不同方向。

有几种典型的、直接的形式 —— 你的硬件签名器可能有各种各样的故障,如果它的故障是显而易见的,我就称为 “直接故障”。其中之一是,如果你让硬件签名器生成密钥材料,绝大部分硬件签名器会 —— 只是接受你要求生成一个新的种子的指令,然后它会给你一套种子词,如果这些种子词是坏的,也就是说,是低熵的、或者从后门中复制而来的,那你就完蛋了。这当然是一种不信。我已经很久没有听到在比特币钱包上发生这种事了,但很久以前,在一款 Android 平台上的钱包上发生过,它使用了一个糟糕的 RNG(随机数生成器)。但是在硬件签名器上,如我所说,最常见的方式是有人在包装上贴一长纸条,上面印着坏的种子词、并建议你使用它,这种攻击容易得多。

还有一种故障发生在签名交易的时候。一些人潜入你的计算机,发现了能够绕过你的屏幕的办法 —— 屏幕向你展示的地址、收款目的地等等,根本是虚假的,在你不知不觉中,让你签名将自己所有的比都转给 TA 。

最后一种是,让你的签名器直接泄露你的密钥材料。可能利用了一些非常严重的 bug ,比如缓存池溢出(buffer overflow),并且在你的电脑上安装一些恶意软件、潜入你的硬件签名器,让它泄露你的私钥。然后你就完蛋了。

但是,也有一些非常微妙的故障,是你无法想到的,除非你是硬件签名器的开发者,或者你的职业是安全分析。我个人比较担心的是第一种,就是你会在各种电子存储空间中保存你的密钥材料,也许你只是临时使用,但它们可能不会被擦除。如果你的电脑使用的是 SSD(固态硬盘),SSD 自身会有磨损平衡逻辑:当一个存储单元被写入或读取达到一定次数之后,硬盘自己会判断,这个单元可能会损坏,所以不要再使用它了。硬盘的实际容量比广告上说的要大,所以它有空间来淘汰许多单元,而这些单元就会保持现状很长时间,什么时候出故障是随机的。所以,如果你在某个地方存储了私钥,在你要删除它的时候,必须用 0 数据或随机数据或者别的有用数据来覆盖它。但是,如果在你存储那个密钥材料期间,硬件就决定不再使用这个断言,那么即使你使用 0 数据来填充,也不能覆盖它。你会覆盖硬盘中别的一些随机的部分。多年以后,你丢掉这块硬盘时,某些人会想方设法弄到它并使用电子显微镜来检查它 —— 如果你是一个著名的比特币开发者,这种事并不是不可能 —— 这样,他们就能得到你的密钥材料,然后可以偷盗你的钱。而且,你根本不会知道是哪里出了问题,除非你自己有一台电子显微镜,然后将你的密钥材料加载到电子显微镜软件中 —— 假设我可以向你保证它不是密码学家们编写的 —— 然后检测出你的硬盘中还有没有相同的数据。然后,你还要把电子显微镜对准它自己的电子存储空间,做一些道格拉斯·霍夫施塔特(Douglas Hofstadter)会做的事情。这样做又贵、又复杂,我很确定我们中间没有人做过这样的事。

(译者注:道格拉斯·霍夫施塔特的中文名为 侯世达,是《哥德尔 & 埃舍尔 & 巴赫(GEB)》一书的作者。该书从研究 “自我指涉(自指)” 这种语言学现象开始。比如,“四个字的” 一词刚好也是四个字的,它恰好描述了自身的特性。演讲者的意思是,这也近似于一种自指:被用来检测其它电子存储空间的电子显微镜,对准了自己的电子存储空间。)

另一个更加微妙的事情是,你可能会签名一些不该签的东西。如果你可以欺骗硬件签名器,你就可以找出一个 bug,让它在屏幕上显示一些东西,但实际上签名的是另一些东西。然后你就会丢钱。你肯定不希望签名器有这样的 bug 。

最后一个是侧信道问题。如果你用的是 air-gapped(空气隔离)的硬件签名器,你就不需要担心这个问题;但如果你的硬件签名器是通过 USB 插入电脑的,而你的电脑上有恶意软件,那么恶意软件可以(比如说)请求一个签名,然后监听签名器、看看签名器要用多长时间来签名。也许恶意软件发现,硬件签名器生成签名的时间,会随着私钥中的 0 和 1 的数量不同而改变。恶意软件能够检测到这些时间差,然后推测一些关于私钥的信息、提取一些东西出来。所以,时钟是一种典型的侧信道,能耗也是。

如果你感染了能够直接访问你的 USB 总线的恶意软件,那恶意软件就能度量签名时间。或者,如果有人直接盗走了你的设备、将它连接到一个示波器上,那也能度量签名时间。其实各种各样的东西都可以度量。在签名器运行计算时,你可以度量它发出的电磁波。等等等等。这些高频率电子设备的本性就是,不论你如何加固硬件,它总是会泄露出它正在做的事。

这就是一个不信任电子设备的通行理由。它可以快速转移、它处理秘密数据、被设计成低能耗而且运转快速;通常,在常量运行时间、侧信道抗性和运转速度、低能耗之间,需要取舍。

轮盘表(信任与过去)

现在,让我们进入本次演讲的核心。实际上,从现在开始,我的幻灯片将都是图片。我希望它不要太过艰深。我没办法在 20 分钟里展示怎么实际使用它,所以我准备只是证明它的合理性,然后展示一些图片,再给你们一些链接、让你们自己发现更多东西。

这是我做过的最为专门的幻灯片,我们先从 “Volvelle(轮盘表)” 的定义开始。

轮盘表是一种由两张纸组成的物理计算机,这两张纸可以相向旋转。我会再给你们看一些特写照片。我手上的这个轮盘表是用线连在一起的,我用家用打印机打印出来的。我用 X-Acto 剪刀剪出了一些小窗户,所以你可以看到,随着它转动,窗口会出现不同的数值。我认为,这种计算机可以追溯到有历史文物留存的年代。但维基百科(Wikipedia)说,这种形式的轮盘表来自一位学者,他在大约公元 1000 年开发出了一堆全新的轮盘表技术。它们在历史上也确实被用于密码学。《密码破译者(The Code Breaker)》的作者在 1980 年撰写的一篇文章,讲到了在中世纪(the Middle Ages),轮盘表如何被大量运用于密码学,用于替换式密码(substitution ciphers)和我们熟悉的加密法。

那么,你可以拿着这个圆盘一样的东西,它有一个内圈和一个外圈,内圈中所有的符号都指向外圈中的符号。所以我可以直接把一个字符换成另一个字符,就像原始版本的加密一样。实际上,在 1400 年代,一位叫做 Alberti 的密码学家就是这样做的,所以这也是替换式密码被使用的真实历史案例之一。但是,我们也可以做新的事情。我准备展示它能做的所有事情。比如,纠错码(error correction codes)、多项式插值(polynomial interpretation),等等。只需要使用这些轮盘,你就可以运行许许多多的数学。

这是我刚刚给你看的轮盘表的一个较老版本的特写照片(幻灯片 #14)。在最上面有一个指针,你可以把它指向一个具体的数字,这种操作叫做 “加法”,虽然跟我们熟悉的加法一点也不像。需要把两个数值相加的时候,你可以让指针指向其中一个数值,然后在轮盘上寻找另一个数值,然后就能看到结果。非常直接。这是一个我的未婚妻送给我作为圣诞礼物的木轮盘。你可以看出,全家人都会觉得这很有趣。不过,令人遗憾,木轮盘转起来实在太慢了,所以我用纸的。

在继续之前,我想分享一段话(幻灯片 #16)。

那时,在亚历山大港(Alexandria)出现了一位女智者,她是异教徒,名为 “Hypatia”。她将最美好的时光都花在了魔法、星盘和乐器上,用她的撒旦伎俩迷惑了许多人。

—— Nikiu 主教 John,选自其 Chronicles 84.87 - 103,写于 Hypatia 生活年代的 300 年后

因为我认为这里有一个有趣的历史教训,也是我的意外收获。John 是一位生活在埃及某地的科普特主教(Coptic bishop),生活在公元 700 年左右;而这段话讲到的 Hypatia 则是一位生活在 300 多年前的亚历山大港的女学者。她是一个异教徒,是一位新柏拉图主义者(neoplatonist)。上面来自柏拉图主义(Platonism)的指控也许有真实之处,但可以肯定她不是一位巫师,我猜,她没法用星盘和乐器蛊惑儿童。但有趣的事情就在于,这位主教,生活在几个世纪之后,因为没有能力拿走 Hypatia 的比特币,只能给她扣上污名。因为她用到的这些星盘有效地保护了她,对抗了未来 300 年的科技发展。这就是我们应该追求的目标。

我希望在 300 年后,人们只能指控我是巫师,而不能拿走我的比特币;我想在座也一定有人是这样希望的。我相信我们能做到。

Codex32

这里有一套方案;我会概要介绍使用这套方案你能够做什么。再说一次,我不会讲解具体如何使用它们,幻灯片末尾会附带你可以点击的连接。

使用这些轮盘表,以及一些工作表和一份我们编写的说明书,你可以 —— 首先,你可以通过掷色子来生成钱币,或者说生成随机数据,即便你的色子不是完全均质的也没关系。比如说,许多便宜的色子,尤其是你在网上买的,在制造过程中会在内部形成这些包含空气的空洞,这是因为它们是挤塑制造的(drop-foring) —— 也可能是别的制造方式,但都可能形成瑕疵。因为有这些空洞,它就不是均质的,所以,在你投掷色子的时候,六个面出现的概率不会完全相等。我们有一个工作表,可以帮助你消除这种偏误。

你也可以计算和验证校验和,这给了你数据没有被改变的保证。我们称之为 “9 距校验和”,也就是说,当你给一段数据添加了这额外的 13 个字符(作为它的校验和)之后,副本如果出现了偏差(不同于原本),那么只要偏差不超过 8 个,你就都能检测出来 —— 检测出错误的概率已经是压倒性的高了。更酷的是,如果偏差不超过 4 个,你甚至可以直接纠正它们,也就是说用数学确定这些偏差出现在哪里、正确的数值应该是什么,不管这些偏差出现在哪个为之。所以,这给了你一些韧性。比如说,如果你要将一段数据刻到金属板上但你刻错了地方,或者你的金属板因为受热,某部分变得有些模糊;又或者,你用纸来记录数据,但这张纸打湿了;等等,这种纠错码可以保证你依然能复原数据(前提是数据损坏在一定范围内)。然后,使用纠错码和这些轮盘表的一个重大好处是,每一年(或者说每隔一段时间),当你要检查这些数据是否完好无损时,你都可以手动运行检验和验证算法,然后把中间过程都烧掉。运行完算法,你就知道你的数据依然完好:它没有被改动过、没有两个字符被调换了位置、没有故障(没被擦除信息);它没有遭遇你一开始制作备份时担心的那些事。所以,你有了一种持续的信心:你的数据是完整的,而且不掺杂对电子计算的任何新的信任要求。

我们还有 “Shamir 的秘密值分割”,所以你可以将一段秘密值分成许多份。你自己选择一个阈值,这里假设是 3;你可以将你的私钥分成 10 份,放到不同的地方,埋在世界上 10 个不同的角落;只要能凑齐 3 份,就能复原出你的私钥。但如果你只凑齐了其中 2 份,那么无论如何,你都得不到关于这个私钥的信息。这是一种很酷的阈值机制。你可以用这套方法来分割你的秘密值,也可以用这套方案来复原它。再说一次,不会用到电子计算机。而且,如果你将一个秘密分成 2 份,然后将阈值设为 2,这就相当于一种加密。你可以说,其中一份是加密的数据,而另一方就是密钥。这在你尝试携带实体的密钥数据迁徙时,是非常有用的。使用这种 2-of-2 分割,你可以把其中一份带上飞机,飞到下一个目的地。如果你遭到交通安全局(TSA)搜查,你就直接把它扔掉,再来一次。这没什么大不了。如果你的第一趟成功了,那么再飞两次,你就可以将数据安全地移动到你的目的地,不需要担心海关、TSA、火车扒手和其他东西,也不需要担心邮件检查员 —— 数不尽数。

色子生成器工作表

给大家看一些照片。这是色子生成器的工作表。你应该可以大致看出它是怎么工作的。基本上,就是你投一堆色子,每投两次就得到一个比特;如果第二次投出的数值大于第一次投出的数值,那就得到 1;反过来,那就得到 0 。顺带说一句,这套工具 —— 色子和标记 —— 都来自儿童游戏;它很方便,色子和标记有 5 种颜色,叫做 “Math Fun”;这是有史以来最糟糕的游戏,但正好适合我们的用途。所以,你先投一次,在工作表上表示数值的位置放好标记,然后再投一次,再放好标记。根据左页的树图,你就可以生成一堆长为 5 比特的数值。

流程解释

这张照片(幻灯片 #19)有一些轮盘表,是你会用在所有计算种的其中三个。本质上,你使用右边的第一个轮盘表来搜索叫做 “复原符号(recovery symbols)” 的东西;然后使用左边的双层轮盘表,将它转动到你的复原符号上,再翻过来,它就会翻译成碎片。然后,中间的一个,用来将所有所有碎片相加。这就是完成私钥分割的办法。也是你复原私钥的办法。完全就是这样 翻译-相加 的过程,实际上是非常机械的。你不需要知道这背后的任何数学原理,只需要跟着说明书做就行。它实际上有些解压、有些好玩。

玩一次要很长时间,复原一个私钥需要 30 到 60 分钟,但是真的好玩。你不会花费一整天、做了一大堆计算、然后一个错误就让你从头再来,你只需照说明书做就行,你可以使用校验和,说明书会帮助你规避错误、一路前行。

这张照片(幻灯片 #20)就是前面那个双层转轮表的背面,这里还有一张特写,所以你可以看出它是怎么工作的。你可以看出,我只是拿一把剪刀、剪出一些窗户,然后把它们放在一起。

纸的好处

我已经超时很多了,但请再给我 20 秒,让我总结一下我讲的东西。

使用纸的好处在这儿(幻灯片 #22):没有侧信道、没有 EMF(电动势),没有所有这些东西。你可以理解页验证这些东西是怎么工作的,而我认为这有一个非常大的心理优势。也就是,在你的私钥材料经历校验和生成、分割和复原流程的时候,你完全知道在它上面发生了什么事。你可以感受到它,它是有形的。如果你想让它消失,就可以让它消失。你不用请求硬盘控制器来覆写它,只需要把它扔进火堆,剩下的事情就交给造物主。

另一个方面是,这套东西可以持续工作,它不会过时。不管你怎么看,它都是非常直接的机械装置。就像是多项式插值(这种数学)本身一样,它是在 200 年前发明的,差不多吧,但直到今天也还是一样的。甚至,你可以自己重新构造出这个方案,真的。只要你直到一些数学,你就可以推断出这些轮盘表是怎么构造的,然后自己造一个出来。甚至可以不需要轮盘,只需要用一些对照查找表(lookup tables),手工就能制作。

在这个项目中,我用的名字是 “Pearlwort Snead”,这是 “Andrew Poelstra” 的变位词。我的合作者使用的名字是 “ Leon Olsson Curr” —— 这也是一个变位词,看看你们能不能解出他的真名吧。我们两个在 GitHub 上有一个库,里面有一个附带文件,可以为你生成所有这些工具,或者说它本身就是所有的工具。我们永远欢迎提出问题和讨论,以及所有的反馈。

预计今年我们会做出一个更加专业的版本。我们在美术和工具和材料上都仍在推敲,但计划会推出装订版本,如果你想要的话,可以在网上购买。最后,在你打印它们之前,我要向你们展示装订版本的样子。这是非常棒的光面纸,看起非常好。只需要剪下来,叠在一起,要用到黄铜的紧固件,但不需要胶水什么的。一点也不复杂,就是普通的美术用品。

谢谢各位。

(完)

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BTCStudy
BTCStudy
https://www.btcstudy.org/