本文概述
比特币在互联网上引起了很多轰动。它被嘲笑, 遭到攻击, 最终被接受并成为我们生活的一部分。但是, 比特币并不孤单。目前, 有700多种AltCoin实现, 它们使用相似的原理和各种加密货币算法。
那么, 你需要创建像比特币这样的东西吗?
在不试图理解你个人去创建去中心化, 匿名的货币/信息交换系统的动机(但仍希望它属于道德和法律活动范围)的情况下, 让我们首先分解一下新付款系统的基本要求:
- 所有交易均应通过互联网进行
- 我们不想拥有一个中央机构来处理交易
- 用户应该是匿名的, 并且只能通过其虚拟身份进行标识
- 单个用户可以拥有任意数量的虚拟身份
- 价值供应(新的虚拟账单)必须以受控方式添加
互联网上的分散信息共享
满足我们清单中的前两个要求, 删除通过Internet进行信息交换的中央机构, 已经成为可能。你需要的是对等(P2P)网络。
P2P网络中的信息共享类似于朋友和家人之间的信息共享。如果你与网络的至少一个成员共享信息, 则最终, 此信息将到达网络的其他每个成员。唯一的区别是, 在数字网络中, 此信息不会以任何方式更改。
你可能已经听说过BitTorrent, 它是最流行的P2P文件共享(内容交付)系统之一。 P2P共享的另一个流行应用是Skype以及其他聊天系统。
最重要的是, 你可以实现或使用现有的开源P2P协议之一来支持你的新加密货币, 我们将其称为Topcoin。
散列算法
要了解数字身份, 我们需要了解密码哈希如何工作。散列是将任意大小的数字数据映射到固定大小的数据的过程。简而言之, 散列是获取一些可读信息并做出毫无意义的信息的过程。
你可以将散列与从政客那里获得答案进行比较。你提供给他们的信息清晰易懂, 而他们提供的输出看起来像是随机的单词流。
一个好的哈希算法需要满足一些要求:
- 哈希算法的输出长度必须是固定的(一个好的值是256个字节)
- 即使输入数据的最小变化也必须在输出中产生显着差异
- 相同的输入将始终产生相同的输出
- 必须没有办法反转输出值以计算输入
- 计算HASH值不应占用大量计算资源, 并且应快速
如果你看一下简单的统计信息, 仅由于我们的HASH长度受到限制, 我们将有数量有限(但数量巨大)的HASH值。但是, 我们的哈希算法(我们将其命名为Politician256)应该足够可靠, 以至于它只能为不同的输入生成重复的哈希值, 就像动物园中的猴子设法在打字机上正确键入Hamlet一样频繁!
如果你认为Hamlet只是一个名字或单词, 请立即停止阅读, 或阅读有关无限猴子定理的信息。
电子签名
在签署文件时, 你要做的就是将签名附加到文档的文本上。数字签名是类似的:你只需要将个人数据附加到要签名的文档上即可。
如果你了解哈希算法遵守这样的规则, 即即使输入数据的最小变化也必须在输出中产生显着差异, 那么很明显为原始文档创建的HASH值将与为文档创建的HASH值不同带有附加的签名。
原始文档和为该文档生成的HASH值加上你的个人数据的组合是经过数字签名的文档。
这就是我们获得虚拟身份的方式, 虚拟身份定义为在创建该HASH值之前附加到文档的数据。
接下来, 你需要确保你的签名不能被复制, 并且没有人可以代表你执行任何交易。确保签名安全的最佳方法是自己保留签名, 并为他人提供另一种方法来验证签名的文档。同样, 我们可以依靠现有的技术和算法。我们需要使用的是公钥密码学, 也称为非对称密码学。
要进行此工作, 你需要创建一个私钥和一个公钥。这两个键在某种数学上是相关的, 并且将相互依赖。用于制作这些密钥的算法将确保每个私钥将具有不同的公钥。顾名思义, 私钥是你将自己保留的信息, 而公钥是你将共享的信息。
如果使用私钥(你的身份)和原始文档作为签名算法的输入值来创建HASH值, 并假设你对密钥保密, 则可以确保没有其他人可以为该文档产生相同的HASH值。
如果有人需要验证你的签名, 他或她将使用原始文档, 你产生的HASH值以及你的公共密钥作为签名验证算法的输入, 以验证这些值是否匹配。
如何发送比特币/钱
假设你已经实现了P2P通信, 用于创建数字身份(私钥和公钥)的机制, 并为用户提供了使用其私钥对文档进行签名的方法, 那么你就可以开始向对等方发送信息了。
由于我们没有中央机构来验证你拥有多少资金, 因此系统每次都必须询问你, 然后检查你是否撒谎。因此, 你的交易记录可能包含以下信息:
- 我有100个Topcoins
- 我想寄10枚硬币给我的药剂师进行药物治疗(你将在此处包括你的药剂师公钥)
- 我想给系统一枚硬币作为交易费用(我们稍后会再讲)
- 我要保留其余的89个硬币
剩下要做的唯一事情就是用你的私钥对交易记录进行数字签名, 然后将交易记录传输到网络中的对等方。届时, 每个人都将收到某人(你的虚拟身份)向他人(你的药剂师的虚拟身份)汇款的信息。
你的工作完成了。但是, 只有在整个网络都同意你确实拥有100个硬币并因此可以执行此交易之前, 你才需要支付药物费用。只有在你的交易通过验证后, 你的药剂师才能获得资金并向你发送药物。
加密货币矿工:代理的新品种
在我看来, 矿工是非常努力的人, 在我看来, 他们的薪水很低。在加密货币的数字世界中, 矿工扮演着非常相似的角色, 除了在这种情况下, 他们从事的是计算量大的工作, 而不是挖土。与真正的矿工不同, 一些加密货币矿工在过去五年中赚了一笔小钱, 但许多其他人却因这种冒险的努力而损失了一笔财富。
矿工是系统的核心组件, 其主要目的是确认用户请求的每笔交易的有效性。
为了确认交易(或其他一些用户请求的几笔交易的组合)的有效性, 矿工将做两件事。
首先, 他们将依靠”每个人都知道一切”这一事实, 这意味着系统中执行的每个事务都将被复制并可供网络中的任何对等方使用。他们将调查你的交易历史, 以确认你实际上有100个硬币。确认你的帐户余额后, 它们将生成特定的HASH值。该哈希值必须具有特定的格式;它必须以一定数量的零开始。
有两个用于计算此HASH值的输入:
- 交易记录数据
- 矿工的工作量证明
考虑到即使输入数据的最小变化也必须在输出HASH值上产生显着差异, 所以矿工的任务非常艰巨。他们需要为工作量证明变量找到一个特定的值, 该值将产生一个以零开头的HASH。如果你的系统在每个经过验证的交易中至少需要40个零, 则矿工将需要计算大约2 ^ 40个不同的HASH值, 以找到正确的工作量证明。
矿工找到工作证明的适当价值后, 便有权获得交易费(你愿意支付的单枚硬币), 该费用可以作为已验证交易的一部分添加。每个经过验证的交易都将传输到网络中的对等节点, 并以称为区块链的特定数据库格式存储。
但是, 如果矿工数量增加并且他们的硬件变得更加高效, 会发生什么呢?比特币以前是在CPU, GPU和FPGA上开采的, 但最终矿工开始设计自己的ASIC芯片, 这些芯片的功能比这些早期解决方案要强大得多。随着哈希率的提高, 挖掘难度也随之提高, 从而确保了平衡。当将更多的散列能力引入网络时, 难度会增加, 反之亦然;如果许多矿工因为他们的运营不再有利可图而决定停止生产, 那么将重新调整难度以匹配新的哈希率。
傻瓜区块链:全球加密货币总账
区块链包含系统中执行的所有交易的历史记录。每笔经过验证的交易或每批交易都将成为链中的另一环。每个单独的区块链开发公司都依赖此公共分类账。
因此, 从本质上讲, 比特币区块链是一个公共分类帐, 其中交易按时间顺序列出。
比特币区块链中的第一个环称为创世纪块
要阅读有关区块链工作原理的更多信息, 我建议阅读Nermin Hajdarbegovic撰写的《区块链技术解释:支持比特币》。
对于系统中活跃的矿工数量没有限制。这意味着两个或多个矿工可以验证同一笔交易。如果发生这种情况, 系统将通过简单地计算零来检查每个矿工在验证交易中投入的总精力。投入更多精力(找到更多的前导零)的矿工将占上风, 并且将接受他或她的阻止。
控制货币供应
比特币系统的第一条规则是最多可以生成21, 000, 000个比特币。这个数字仍然没有实现, 按照目前的趋势, 人们认为这个数字将在2140年达到。
这可能会让你质疑这种系统的实用性, 因为2100万个单元听起来并不多。但是, 比特币系统支持的分数值小至八位小数(0.00000001)。为了纪念中本聪(Satoshi Nakamoto), 中小本币的最小单位被称为中本聪(Satoshi), 中本聪是比特币协议背后的匿名开发者。
创建新硬币是为了奖励矿工验证交易。该奖励不是你在创建交易记录时指定的交易费用, 而是由系统定义的。随着时间的流逝, 奖励金额逐渐减少, 一旦达到发行的硬币总数(21m), 奖励金额将最终设置为零。发生这种情况时, 交易费用将发挥更为重要的作用, 因为矿工可能会选择优先处理更有价值的交易以进行验证。
除了设置最大硬币数上限之外, 比特币系统还使用一种有趣的方式来限制新硬币的日产量。通过校准工作量计算所需的前导零的最小数量, 验证交易和获得新硬币奖励所需的时间始终设置为大约10分钟。如果将新块添加到区块链之间的时间减少, 则系统可能要求工作量证明生成45或50个前导零。
因此, 通过限制可以产生多少速度和多少新硬币, 比特币系统有效地控制了货币供应。
开始”打印”你自己的货币
如你所见, 制作自己的比特币版本并不困难。通过利用以创新方式实施的现有技术, 你可以获得加密货币所需的一切。
- 所有交易都是使用P2P通信在Internet上进行的, 因此不需要中央机构
- 用户可以通过使用异步加密来执行匿名交易, 并且只能通过其私钥/公钥组合来识别它们
- 你已经对所有交易实施了经过验证的全局分类帐, 这些交易已安全复制到网络中的每个对等方
- 你拥有安全, 自动化和受控的货币供应, 从而无需中央授权即可确保货币稳定
值得一提的最后一件事是, 从本质上讲, 加密货币是一种在分布式对等网络中将匿名价值/信息从一个用户转移到另一个用户的方法。
考虑使用随机数据替换你的交易记录中的硬币, 这些数据甚至可以使用异步加密技术进行加密, 因此只有发送者和接收者才能解密它。现在考虑将其应用于诸如物联网之类的东西!
加密货币系统可能是实现我们的炉灶和烤面包机之间通信的一种有趣方式。
鸣叫
许多技术重量级人物已经在探索在物联网平台中使用区块链技术, 但这并不是该相对较新技术的唯一潜在应用。
如果你没有理由创建自己的替代货币(除了一个实际的笑话), 则可以尝试将相同或相似的方法用于其他用途, 例如分布式身份验证, 创建游戏中使用的虚拟货币, 社交网络以及其他应用程序, 或者你可以继续为你的电子商务业务创建一个新的忠诚度计划, 该计划将为常规客户奖励可以稍后兑换的虚拟令牌。
评论前必须登录!
注册