作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Demir Selmanovic的头像

Demir Selmanovic

Demir是一名开发人员和项目经理,在广泛的软件开发角色方面拥有超过15年的专业经验.

专业知识

工作经验

24

分享

比特币在互联网上引起了很大的轰动. 它被嘲笑,被攻击,最终它被接受并成为我们生活的一部分. 然而, 比特币 并不孤单. 此时此刻,有 超过700个AltCoin 实现,使用类似的原理和各种加密货币算法.

加密货币假人封面插图

那么,你需要什么来创造像比特币这样的东西?

而不是试图理解你创建一个去中心化的, 交换金钱/信息的匿名系统(但仍希望它在道德和法律活动范围内), 让我们先分析一下新支付系统的基本要求:

  1. 所有交易都应在互联网上进行
  2. 我们不希望有一个中央机构来处理交易
  3. 用户应该是匿名的,并且只能通过他们的虚拟身份来识别
  4. 单个用户可以拥有任意多个虚拟身份
  5. 价值供给(新的虚拟货币)必须以可控的方式增加

互联网上分散的信息共享

满足列表中的前两个要求, 消除互联网上信息交换的中央权威, 已经是可能的. 你需要的是一个 点对点(P2P) 网络.

P2P网络中的信息共享类似于朋友和家人之间的信息共享. 如果您与至少一个网络成员共享信息, 最终,这些信息将到达网络中的每一个其他成员. 唯一的区别是,在数字网络中,这些信息不会以任何方式被改变.

加密货币算法和Toptal

你可能听说过BitTorrent, 最流行的P2P文件共享(内容分发)系统之一. 另一个流行的P2P共享应用是Skype,以及其他聊天系统.

底线是,您可以实现或使用现有的开源P2P协议之一来支持您的新加密货币, 我们称之为 Topcoin.

散列算法

为了理解数字身份,我们需要了解如何 加密哈希行得通. 哈希是将任意大小的数字数据映射到固定大小的数据的过程. 简单地说, 哈希是一个获取一些可读信息并生成一些毫无意义的信息的过程.

你可以把哈希算法比作从政客那里得到答案. 你提供给他们的信息是清晰易懂的, 而它们提供的输出看起来像随机的单词流.

P2P协议

一个好的哈希算法需要以下几个条件:

  1. 哈希算法的输出长度必须是固定的(较好的值是256字节)
  2. 即使是最小的输入数据变化,也一定会产生显著的输出差异
  3. 相同的投入总是会产生相同的产出
  4. 必须没有办法反转输出值来计算输入
  5. 计算HASH值不应该是计算密集型的,应该是快速的

如果你看一下简单的统计数据, 我们将拥有有限(但巨大)的可能HASH值, 因为我们的HASH长度是有限的. 然而, 我们的哈希算法(我们把它命名为politan256)应该足够可靠,它只会为不同的输入产生重复的哈希值,其频率就像动物园里的猴子在打字机上正确输入哈姆雷特一样!

如果你认为哈姆雷特只是一个名字或一个词,请现在停止阅读,或者阅读有关 无限猴定理.

数字签名

在签署一份文件时,你所需要做的就是在文件的正文后面加上你的签名. 数码签署是类似的:你只需要在你要签署的文件上附上你的个人资料.

如果你明白哈希算法遵循的规则 即使是最小的输入数据变化,也一定会产生显著的输出差异, 那么很明显,为原始文档创建的HASH值将不同于为附加签名的文档创建的HASH值.

原始文档和为附加您的个人数据的文档生成的HASH值的组合是一个 数字签名文件.

这样我们就能找到你的 虚拟身份,它被定义为在创建该HASH值之前附加到文档中的数据.

下一个, 你需要确保你的签名不能被复制, 没有人可以代表你执行任何交易. 这是确保你的签名安全的最好方法, 是自己留着吗, 并为其他人提供一种不同的方法来验证签名的文档. 同样,我们可以依靠现成的技术和算法. 我们需要使用的是 公开密匙加密 也被称为 不对称加密.

要实现此功能,您需要创建一个 私钥 和一个 公钥. 这两个键会有某种数学上的关联,并且相互依赖. 用于制作这些密钥的算法将确保每个私钥都有一个不同的公钥. 顾名思义, 私钥是您只为自己保留的信息, 而公钥是您将共享的信息.

如果您使用您的私钥(您的身份)和原始文档作为控件的输入值 签名算法 创建HASH值, 假设你把钥匙保密了, 您可以确保没有其他人可以为该文档生成相同的HASH值.

比特币和加密货币是如何运作的

如果有人需要验证你的签名, 他或她将使用原始文件, 生成的HASH值, 你的公钥作为输入 签名验证算法 来验证这些值是否匹配.

签名验证算法

如何发送比特币/货币

假设您已经实现了P2P通信, 创建数字身份的机制(私钥和公钥), 并为用户提供了使用私钥签署文档的方法, 您已经准备好开始向您的同伴发送信息.

因为我们没有一个中央机构来验证你有多少钱, 系统每次都会询问你, 然后检查你是否撒谎了. 因此,您的交易记录可能包含以下信息:

  1. 我有100个Topcoins
  2. 我想给我的药剂师寄10个硬币买药你要把药剂师的公钥放在这里)
  3. 我想给系统一个硬币作为交易费(我们稍后会回到这个问题)
  4. 我想保留剩下的89枚硬币

剩下唯一要做的就是用您的私钥对交易记录进行数字签名,并将交易记录传输给网络中的对等节点. 在这一点上, 每个人都会收到某人(你的虚拟身份)给另一个人(你的药剂师的虚拟身份)汇款的信息。.

你的任务完成了. 然而, 除非整个网络都同意你真的有100个硬币,否则你的药费不会被支付, 因此可以执行这个交易. 只有在您的交易被验证后,您的药剂师才能获得资金并将药物发送给您.

加密货币矿工:一种新型的代理人

众所周知,矿工工作非常努力,但在我看来,他们的工资却很低. 在加密货币的数字世界里, 矿工扮演着非常相似的角色, 除了这次, 他们做的是计算密集型的工作,而不是挖成堆的土. 不像真正的矿工, 一些加密货币矿工在过去五年里赚了一笔小钱, 但还有许多人在这种冒险的尝试中损失了一大笔钱.

矿工是系统的核心组成部分,他们的主要目的是确认用户请求的每笔交易的有效性.

为了确认您的交易的有效性(或几个其他用户请求的几笔交易的组合), 矿工将做两件事.

第一个, 他们将依赖于“每个人都知道一切”这一事实,这意味着系统中执行的每笔交易都被复制,并可供网络中的任何对等点使用. 他们会查看你的交易历史,以验证你一开始实际上有100个硬币. 一旦您的帐户余额被确认,他们将生成一个特定的HASH值. This hash value must have a specific format; it must start with certain number of zeros.

计算这个HASH值有两种输入:

  1. 交易记录数据
  2. 矿工的proof-of-work

考虑到 即使输入数据中最小的变化也会对输出HASH值产生显著的差异在美国,矿工的任务非常艰巨. 他们需要找到a的特定值 proof-of-work 变量,该变量将生成以零开头的HASH. 如果您的系统要求在每个经过验证的事务中至少有40个零, 矿工需要计算大约2^40个不同的HASH值才能找到正确的 proof-of-work.

一旦矿工找到合适的工作量证明值, 他或她有权获得交易费(你愿意支付的一枚硬币), 哪些可以作为验证事务的一部分添加. 每个经过验证的事务都被传输到网络中的对等节点,并存储在称为 区块链.

但是,如果矿工的数量增加,他们的硬件变得更加高效,会发生什么呢? 比特币过去是在cpu上挖矿的, 然后是gpu和fpga, 但最终矿工们开始设计自己的ASIC芯片, 哪些比这些早期的解决方案更强大. 随着哈希率的增加,挖矿难度也会增加,从而确保了平衡. 当更多的哈希能力被引入网络时, the difficulty goes up and vice versa; if many miners decide to pull the plug because their operation is no longer profitable, 难度被重新调整以匹配新的哈希率.

傻瓜区块链:全球加密货币分类账

区块链包含系统中执行的所有事务的历史记录. 每一个经过验证的交易,或一批交易,都成为链中的另一个环. 每一个 区块链开发公司 依赖于这个公共分类账.

So, 比特币区块链, 本质上, 按时间顺序列出交易的公共分类账.

比特币区块链中的第一个环被称为创世区块

要了解更多关于区块链如何工作的信息,我建议阅读 区块链技术解释:为比特币提供动力,作者:Nermin Hajdarbegovic.

您的系统中活动的矿工数量没有限制. 这意味着两个或更多的矿工可以验证同一笔交易. 如果发生这种情况, 系统将通过简单地计数零来检查每个矿工在验证交易时投入的总工作量. 投入更多努力(找到更多前导零)的矿工将占上风,他或她的区块将被接受.

控制货币供应量

比特币系统的第一条规则是,最多可以生成21,000,000个比特币. 这一数字仍未实现, 根据目前的趋势, 据认为,这个数字将在2140年达到.

这可能会导致您质疑这种系统的有用性, 因为2100万台听起来并不多. 然而,比特币系统支持小到八位小数(0.00000001). 比特币的最小单位被称为a Satoshi为了纪念比特币协议背后的匿名开发者中本聪(Satoshi Nakamoto).

新硬币是作为对验证交易的矿工的奖励而创建的. 这个奖励 不是交易费吗 您在创建事务记录时指定的,但它由系统定义. 奖励金额随着时间的推移而减少,最终将在发行的硬币总数(2100万)达到后设置为零. 当这种情况发生时, 交易费用将发挥更重要的作用,因为矿工可能会选择优先考虑更有价值的交易进行验证.

除了设置最大硬币数量的上限, 比特币系统还使用了一种有趣的方式来限制每日新硬币的生产. 通过校准工作量证明计算所需的最小前导零数, 验证事务所需的时间, 并获得新硬币的奖励, 总是设置为大约10分钟. 如果向区块链添加新块之间的时间减少, 系统可能要求工作量证明生成45或50个前导零.

So, 通过限制生成新币的速度和数量, 比特币系统有效地控制了货币供应.

开始“印刷”你自己的货币

正如你所看到的,制造自己的比特币并不是那么困难. 利用现有技术, 以创新的方式实施, 你已经拥有了加密货币所需的一切.

  1. 所有的交易都是在互联网上使用P2P通信进行的, 从而消除了对中央权威的需要
  2. 用户可以通过使用异步加密来执行匿名交易,并且只能通过私钥/公钥组合来识别
  3. 您已经实现了一个经过验证的所有交易的全局分类账,该分类账已被安全地复制到网络中的每个对等点
  4. 你有一个安全的, 自动化, 控制货币供应量, 在不需要中央权威的情况下确保你的货币稳定

最后值得一提的是,从本质上讲, 加密货币是一种在分布式点对点网络中将匿名价值/信息从一个用户转移到另一个用户的方法.

考虑将交易记录中的硬币替换为随机数据,这些数据甚至可以使用异步加密技术进行加密,以便只有发送方和接收方可以破译它. 现在想想把它应用到 物联网!

加密货币系统可能是一种有趣的方式,可以实现炉子和烤面包机之间的通信.

许多科技巨头已经在探索在物联网平台中使用区块链技术, 但这并不是唯一的原因 潜在的应用 这种相对较新的技术.

如果你觉得没有理由创造自己的替代货币(除了恶作剧), 您可以尝试在其他事情上使用相同或类似的方法, 比如分布式身份验证, 创造用于游戏中的虚拟货币, 社交网络, 以及其他应用, 或者你可以继续为你的电子商务业务创建一个新的忠诚度计划, 哪一种方式可以用虚拟代币奖励老客户,这些代币以后可以兑换.

了解基本知识

  • 什么是加密货币?

    加密货币是一种数字交换媒介,依靠密码学来保护和验证交易. 大多数加密货币,比如比特币,都是去中心化的、基于共识的.

  • 什么是区块链?

    区块链本质上是一个数字签名的财务分类账. 区块链上的每笔交易都在公共分类账上可见, 所有条目都分布在整个网络中, 要求对每个事务达成共识.

  • 区块链是如何工作的?

    系统中执行的每笔交易都成为区块链的一部分, 但只有在一定数量的节点达成共识后,交易才有效. 然后,交易被添加到一个新的区块链中.

聘请Toptal这方面的专家.
现在雇佣
Demir Selmanovic的头像
Demir Selmanovic

位于 萨拉热窝,波斯尼亚-黑塞哥维那联邦,波斯尼亚-黑塞哥维那

成员自 2014年7月8日

作者简介

Demir是一名开发人员和项目经理,在广泛的软件开发角色方面拥有超过15年的专业经验.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

专业知识

工作经验

24

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.