傻瓜加密货币:比特币及其他
已发表: 2022-03-11比特币在互联网上引起了很多轰动。 它被嘲笑,被攻击,最终被接受,成为我们生活的一部分。 然而,比特币并不孤单。 目前,有超过 700 种 AltCoin 实现,它们使用类似的原理和各种加密货币算法。
那么,你需要什么来创造像比特币这样的东西?
在不试图理解你个人创建一个去中心化、匿名的货币/信息交换系统的动机(但仍然希望它在道德和法律活动的范围内)的情况下,让我们首先分解我们新支付系统的基本要求:
- 所有交易都应通过互联网进行
- 我们不希望有一个中央机构来处理交易
- 用户应该是匿名的,并且只能通过他们的虚拟身份来识别
- 单个用户可以拥有任意数量的虚拟身份
- 必须以受控方式添加价值供应(新的虚拟票据)
去中心化的互联网信息共享
满足我们列表中的前两个要求,取消在 Internet 上进行信息交换的中央机构,已经成为可能。 您需要的是点对点 (P2P)网络。
P2P 网络中的信息共享类似于朋友和家人之间的信息共享。 如果您与至少一个网络成员共享信息,最终该信息将到达网络的所有其他成员。 唯一的区别是,在数字网络中,这些信息不会以任何方式改变。
您可能听说过 BitTorrent,它是最流行的 P2P 文件共享(内容交付)系统之一。 另一个流行的 P2P 共享应用程序是 Skype,以及其他聊天系统。
底线是您可以实施或使用现有的开源 P2P 协议之一来支持您的新加密货币,我们将其称为Topcoin 。
哈希算法
要了解数字身份,我们需要了解加密哈希的工作原理。 散列是将任意大小的数字数据映射到固定大小的数据的过程。 简单来说,散列是一个获取一些可读信息并制作一些毫无意义的东西的过程。
您可以将散列与从政客那里获得答案进行比较。 您提供给他们的信息清晰易懂,而他们提供的输出看起来像是随机的单词流。
一个好的散列算法需要几个要求:
- 哈希算法的输出长度必须是固定的(一个好的值是 256 字节)
- 即使输入数据的最小变化也必须产生显着的输出差异
- 相同的输入总是会产生相同的输出
- 一定没有办法反转输出值来计算输入
- 计算 HASH 值不应该是计算密集型的,应该很快
如果您看一下简单的统计数据,我们将拥有有限(但巨大)数量的可能 HASH 值,这仅仅是因为我们的 HASH 长度是有限的。 但是,我们的散列算法(我们将其命名为 Politician256)应该足够可靠,以至于它只为不同的输入生成重复的散列值,其频率与动物园中的猴子设法在打字机上正确键入哈姆雷特一样频繁!
如果您认为哈姆雷特只是一个名字或一个词,请立即停止阅读,或者阅读有关无限猴子定理的内容。
电子签名
签署论文时,您只需将签名附加到文档文本即可。 数字签名是类似的:您只需要将您的个人数据附加到您正在签名的文档中。
如果您了解散列算法遵循即使输入数据的最小变化也必须在输出中产生显着差异的规则,那么很明显,为原始文档创建的 HASH 值将不同于为文档创建的 HASH 值。附上签名。
原始文档和为该文档生成的带有您的个人数据的 HASH 值的组合是一个数字签名文档。
这就是我们获取您的虚拟身份的方式,该身份被定义为您在创建该 HASH 值之前附加到文档的数据。
接下来,您需要确保您的签名不能被复制,并且没有人可以代表您执行任何交易。 确保您的签名安全的最佳方法是自己保存,并为其他人提供不同的方法来验证已签名的文档。 同样,我们可以依靠现成的技术和算法。 我们需要使用的是公钥密码学,也称为非对称密码学。
要完成这项工作,您需要创建一个private key和一个public key 。 这两个键将具有某种数学相关性并相互依赖。 您将用于制作这些密钥的算法将确保每个私钥都有不同的公钥。 正如他们的名字所暗示的那样,私钥是您将为自己保留的信息,而公钥是您将共享的信息。
如果您使用您的私钥(您的身份)和原始文档作为签名算法的输入值来创建 HASH 值,假设您将密钥保密,您可以确定没有其他人可以为该文档生成相同的 HASH 值.
如果有人需要验证您的签名,他或她将使用原始文档、您生成的 HASH 值和您的公钥作为签名验证算法的输入,以验证这些值是否匹配。
如何发送比特币/金钱
假设您已经实现了 P2P 通信、创建数字身份(私钥和公钥)的机制,并为用户提供了使用他们的私钥签署文档的方法,那么您就可以开始向同行发送信息了。
由于我们没有中央机构来验证您有多少钱,因此系统必须每次都询问您,然后检查您是否撒谎。 因此,您的交易记录可能包含以下信息:
- 我有 100 顶币
- 我想寄 10 个硬币给我的药剂师买药(你可以在此处包括你的药剂师公钥)
- 我想给系统一个硬币作为交易费用(我们稍后再讨论)
- 我想保留剩下的89个硬币
剩下要做的就是用您的私钥对交易记录进行数字签名,并将交易记录传输给网络中的同行。 届时,每个人都会收到某人(您的虚拟身份)正在向其他人(您的药剂师的虚拟身份)汇款的信息。

你的工作完成了。 然而,直到整个网络同意你确实有 100 个硬币,你的药物才会被支付,因此可以执行这个交易。 只有在您的交易得到验证后,您的药剂师才会收到资金并将药物寄给您。
加密货币矿工:一种新的代理品种
众所周知,矿工是非常努力工作的人,在我看来,他们的薪水严重偏低。 在加密货币的数字世界中,矿工扮演着非常相似的角色,除了在这种情况下,他们做的是计算密集型的工作,而不是挖掘成堆的泥土。 与真正的矿工不同,一些加密货币矿工在过去五年中赚取了一笔不小的财富,但许多其他人在这种冒险的努力中损失了一笔财富。
矿工是系统的核心组成部分,其主要目的是确认用户请求的每笔交易的有效性。
为了确认您的交易的有效性(或几个其他用户请求的几笔交易的组合),矿工将做两件事。
首先,他们将依赖于“每个人都知道一切”这一事实,这意味着系统中执行的每笔交易都被复制并可供网络中的任何对等方使用。 他们将查看您的交易历史,以验证您实际上有 100 个硬币。 确认您的帐户余额后,他们将生成特定的 HASH 值。 这个哈希值必须有特定的格式; 它必须以一定数量的零开头。
计算此 HASH 值有两个输入:
- 交易记录数据
- 矿工的工作量证明
考虑到即使是输入数据的最小变化也必须产生输出 HASH 值的显着差异,矿工的任务非常艰巨。 他们需要为工作量证明变量找到一个特定值,该变量将产生一个以零开头的 HASH。 如果您的系统在每个经过验证的交易中需要至少 40 个零,那么矿工将需要计算大约 2^40 个不同的 HASH 值才能找到正确的工作量证明。
一旦矿工为工作量证明找到合适的价值,他或她就有权获得交易费(您愿意支付的单一硬币),该费用可以作为验证交易的一部分添加。 每个经过验证的交易都会传输到网络中的对等点,并以称为区块链的特定数据库格式存储。
但是,如果矿工数量增加,他们的硬件变得更有效率,会发生什么? 比特币曾经在 CPU、GPU 和 FPGA 上开采,但最终矿工们开始设计自己的 ASIC 芯片,这些芯片比这些早期的解决方案强大得多。 随着哈希率的上升,挖矿难度也会上升,从而确保平衡。 当更多的哈希算力被引入网络时,难度会上升,反之亦然; 如果许多矿工因为他们的运营不再有利可图而决定退出,那么难度会重新调整以匹配新的哈希率。
傻瓜区块链:全球加密货币分类帐
区块链包含系统中执行的所有交易的历史记录。 每笔经过验证的交易或一批交易都成为链中的另一个环。 每个区块链开发公司都依赖于这个公共账本。
因此,比特币区块链本质上是一个公共分类账,其中交易按时间顺序列出。
比特币区块链中的第一环称为创世区块
要了解有关区块链如何工作的更多信息,我建议阅读 Nermin Hajdarbegovic 的 Blockchain Technology Explained: Powering Bitcoin。
您的系统中活跃的矿工数量没有限制。 这意味着两个或多个矿工可以验证同一个交易。 如果发生这种情况,系统将通过简单地计算零来检查每个矿工在验证交易方面投入的总精力。 投入更多精力(发现更多前导零)的矿工将占上风,他或她的区块将被接受。
控制货币供应
比特币系统的第一条规则是最多可以生成 21,000,000 个比特币。 这个数字还没有达到,按照目前的趋势,预计到 2140 年会达到这个数字。
这可能会让您质疑这样一个系统的实用性,因为 2100 万台听起来并不多。 但是,比特币系统支持小数点到小数点后八位(0.00000001)。 比特币的这个最小单位被称为中本聪,以纪念比特币协议背后的匿名开发者中本聪。
创建新硬币作为对验证交易的矿工的奖励。 该奖励不是您创建交易记录时指定的交易费用,而是系统定义的。 奖励金额随着时间的推移而减少,一旦达到发行的硬币总数(21m),最终将设置为零。 发生这种情况时,交易费用将发挥更重要的作用,因为矿工可能会选择优先考虑更有价值的交易进行验证。
除了设置最大硬币数量的上限外,比特币系统还使用一种有趣的方式来限制每日新硬币的生产。 通过校准工作量证明计算所需的前导零的最小数量,验证交易和获得新硬币奖励所需的时间始终设置为大约 10 分钟。 如果将新块添加到区块链之间的时间减少,系统可能会要求工作量证明生成 45 或 50 个前导零。
因此,通过限制生成新硬币的速度和数量,比特币系统有效地控制了货币供应量。
开始“打印”你自己的货币
如您所见,制作自己的比特币版本并不难。 通过利用以创新方式实施的现有技术,您拥有加密货币所需的一切。
- 所有交易均使用 P2P 通信通过 Internet 进行,因此无需中央机构
- 用户可以利用异步加密技术执行匿名交易,并且仅通过他们的私钥/公钥组合来识别他们
- 您已经实现了所有交易的经过验证的全局分类帐,该分类帐已安全复制到网络中的每个对等方
- 您拥有安全、自动化和受控的货币供应,无需中央机构即可确保您的货币稳定
最后值得一提的是,从本质上讲,加密货币是一种在分布式对等网络中将匿名价值/信息从一个用户转移到另一个用户的方式。
考虑用随机数据替换交易记录中的硬币,这些数据甚至可能使用异步密码术进行加密,因此只有发送者和接收者才能解密它。 现在考虑将其应用于物联网之类的东西!
许多科技巨头已经在探索在物联网平台中使用区块链技术,但这并不是这项相对较新的技术的唯一潜在应用。
如果您认为没有理由创建自己的替代货币(恶作剧除外),您可以尝试使用相同或类似的方法来做其他事情,例如分布式身份验证、创建游戏中使用的虚拟货币、社交网络和其他应用程序,或者您可以继续为您的电子商务业务创建一个新的忠诚度计划,这将奖励普通客户虚拟代币,以后可以兑换。