区块链教程——区块链技术初学者指南

比特币和区块链技术的发展如此迅速,即使那些没有听说过加密货币或了解其工作原因的人也在寻求投资和探索这一领域。这个区块链教程博客将基本上按以下顺序提供有关比特币和区块链的所有基本知识:

  • 当前银行系统的问题-
  • Blockchain如何解决这些问题
  • 什么是区块链和比特币
  • 区块链的特点
  • 实际的用例
  • 演示:使用区块链实施数字银行

区块链技术和加密货币如今已成为人们开始执行标准交易的并行平台。现在,如果新系统正在慢慢替换现有系统,那么当前系统必定存在一些问题。我们将通过了解当前银行系统的问题来开始此区块链教程博客。

现行银行系统的问题:

任何现有系统都会遇到一些问题。 让我们看一下银行系统最常遇到的一些问题:

  • 高交易费用

让我们看一个更好地理解这个问题的例子:

在这里,Chandler向Joe发送100美元,但在Joe收到之前,它必须通过像银行或金融服务公司这样值得信赖的第三方。从此金额中扣除2%的交易费用,Joe在交易结束时仅收到98美元。现在这可能看起来不是很大,但想象一下,如果你发送10万美元而不是100美元,那么交易费用也会增加到2,000美元,这是一个很大的数额。根据SNL Financial和CNNMoney的报告,摩根大通,美国银行和富国银行在2015年从ATM和透支费中获得了60多亿美元。

  • 双倍花费

双重支出是数字现金方案中的一个错误,其中相同的单个数字代币被花费两次或更多次。为了帮助您更好地理解这个问题,让我举个例子:

彼得在他的帐户中只有500美元。他以400美元的价格同时向亚当发起2笔交易,以500美元的价格向Mary发起交易。通常这笔交易不会通过,因为他的账户中没有足够的900美元余额。但是,通过复制或伪造与每个数字交易相关联的数字代币,他可以在没有所需余额的情况下完成这些交易。此操作称为双倍花费。

  • 网络欺诈和帐户黑客攻击

在印度,2016年与信用卡/借记卡和网上银行相关的欺诈案件数量为14,824起。这些欺诈涉及的净额为77.79亿卢比,其中21亿卢比来自互联网欺诈,41.64亿卢比是来自ATM /借记卡相关的欺诈行为。

金融危机和崩溃

想象一下,把你所有的希望交给你信任的人,结果只知道他们已经消失了并只是告知在其他地方丢失了。这就是2007-08年银行和投资组织大量借贷并将其作为次级抵押贷款借给那些甚至无法偿还这些贷款的人们的情况。这反过来导致了有史以来最严重的金融危机之一,估计全球损失接近11万亿美元(11,000,000,000,000美元)。这只是最受欢迎的例子之一,我们多久听说过银行和金融服务公司因内部欺诈而崩溃?整个第三方系统建立在对中间人的盲目信任之上。

我们已经看到了每个人面临的一些最常见的问题。拥有一个克服这些问题的系统并为我们提供了一个与Blockchain Technology区块链技术完全相同的产品,这不是很好吗?

现在让我们尝试理解Blockchain和比特币如何解决这些问题,作为此区块链教程博客的下一部分:

Blockchain如何解决这些问题?

以下是区块链技术解决上述问题的一些方法:

  • 去中心化机制

与由中央或联邦当局控制和管理的银行和金融机构相比,区块链系统遵循去中心化的方法。在这里,作为系统一部分的每个人都对系统的增长和垮台负有同等责任。参与系统的每个人都拥有一些权力,而不是一个拥有权力的单一实体。

  • 公共分类帐

保存区块链上发生的所有交易细节的分类账是开放的,并且与系统关联的每个人都可以完全访问。加入区块链网络后,你可以下载自启动以来的完整交易清单。即使完整的分类帐是公开可访问的,交易中涉及的人员的详细信息仍然完全是匿名的。

  • 验证每笔交易

通过交叉检查分类帐来验证每个交易,并在几分钟后发送交易的验证信号。通过使用几种复杂的加密和hash算法,消除了双重花费的问题。

  • 低或无交易费用

交易费通常不适用,但区块链的某些变体确实实现了某些最低交易费用。然而,与银行和其他金融机构隐含的费用相比,这些交易费用相对较少。如果需要优先完成交易,则可以由用户添加额外的交易费用,以便优先验证交易。

现在我们已经谈到了现有系统的问题,并了解了区块链技术如何克服这些挑战,我相信你必须对区块链系统有所了解。

在这一点上,你可能仍然想知道区块链和比特币到底是什么。因此,让我们尝试在Blockchain教程的下一部分中理解这些重要的概念。

什么是区块链和比特币?

在我们继续了解什么是区块链之前,了解什么是比特币很重要:

比特币是一种加密货币和数字支付系统,由一个未知的程序员或一组程序员以Satoshi Nakamoto的名义发明。这意味着它们可以像通常的货币一样使用,但不像美元钞票那样存在。它们是一种在线货币,可用于购买东西。这些类似于人们计算机上存在的“数字现金”。比特币仅存在于云中,如Paypal,Citrus或Paytm。即它们是虚拟的,而不是物理的,它们在通过网络在人与人之间转移时被用作现金。

比特币系统是基于对等网络的,并且在没有中间设备的情况下直接在用户之间进行交易。这些交易由网络节点验证,并记录在称为区块链的公共分布式分类账中。由于系统在没有中央存储库或单个管理员的情况下工作,比特币被称为第一个去中心化的数字货币。

比特币生产使它们成为独特的货币。与普通货币不同,无法根据需要创建比特币。只能创建2100万比特币,其中已创造了1700万比特币。只要包含有效交易的块添加到区块链,就会创建比特币。这是创建比特币的唯一方法,通过各种数学和加密算法,我们确保不会创建或传播虚假的比特币。现在让我们了解更多区块链。

什么是区块链?

区块链可以称为整个加密货币系统的主干。区块链技术不仅可以帮助用户使用加密货币执行交易,还可以确保相关用户的安全性和匿名性。它是一个不断增长的称为块的记录列表,它们使用加密技术进行链接和保护。区块链可以作为“一个开放的分布式分类账,可以以可验证和永久的方式记录双方之间的交易。”该网络中每个人共享的分类账是公开的,供所有人查看。这带来了透明度和信任进入系统。

块是区块链的“当前”部分,它记录了部分或全部最近的交易,并且一旦完成就作为永久数据库进入Vlockchain。每次块完成时,都会生成一个新块。

区块链通常由对等网络管理,共同遵守用于验证新块的协议。一旦记录,任何给定块中的数据不能追溯地改变而不改变所有后续块和网络多数的共谋。存储在区块链中的交易是永久性的。他们不能被黑客攻击或操纵。一旦我们进入区块链的概念,我们将会更多地了解这一点。

现在我希望你对比特币和区块链有更好的理解。 继续我们的区块链教程博客,让我们看看区块链技术的功能,以帮助我们理解它变得如此受欢迎的原因。

区块链的特点

以下是区块链技术最重要的特点,使其成为革命性的技术:

  • SHA256哈希函数
  • 公钥密码学
  • 分布式分类帐和对等网络
  • 工作证明
  • 验证的激励措施

让我们尝试逐一理解它们中的每一个。

SHA256哈希函数

区块链技术中使用的核心哈希算法是SHA256。使用哈希的目的是因为输出不仅是“加密”,它不能被解密回原始文本。它是一种“单向”加密函数,对于任何大小的源文本都是固定大小。为了更好地理解,让我们看一下下面的例子:

如果你看第一个例子,我们将输入作为“Hello World”并输出为a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e。但是,只需在末尾添加“!”,输出就会完全变为7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069。如果我们将“H”改为“h”而将“W”改为“w”,则输出值变为7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9

我希望通过这个例子,你已经了解算法的复杂程度,即使输入中的最轻微变化也会导致输出发生巨大变化。

公钥密码学

此加密技术通过创建一组称为公钥和私钥的密钥来帮助用户。这里公钥与其他人共享,而私钥由用户保密。要了解这些键的作用,让我们看一下下面的示例,以便更好地理解:

如果Chandler向Joey发送一些比特币,该交易将有三条信息:

  • 乔伊的比特币地址。(乔伊的公钥)
  • 钱德勒送给乔伊的比特币数量。
  • 钱德勒的比特币地址。(钱德勒的公钥)

现在,所有这些数据以及加密的数字签名都通过网络发送以进行验证。数字签名也是Chandler的比特币地址和他发送给joey的金额相结合的哈希值。该数字签名由私钥加密。一旦必须验证此交易的矿工收到此数据,他就会同时执行2个流程:

  • 他获取所有未加密的数据,如Joey和Chandler的交易金额和公钥,并将其提供给哈希算法以获得哈希值,我们称之为Hash1。
  • 他接受数字签名并使用chandler的公钥对其进行解密,以获得哈希值,我们将其称为Hash2。

如果Hash1和Hash2都相同,那么这意味着这是一个有效的交易。

分布式分类帐和P2P网络

网络上的每个人都有一份分类帐。没有单一的集中拷贝。让我通过以下示例帮助您了解分类帐:假设你需要向你的朋友John发送10个比特币,其中你的比特币余额为974.65,John在此余额为37,你的余额将被10BTC扣除记入约翰的账户。

Blockchain有一种独特的方式来实现它。比特币区块链分类账中没有账户和余额。来自第一个交易的每个交易都存储在一个名为Blockchain的持续增长的数据库中。平均有大约2050个交易的区块,截至今天,区块链中有484,000个区块,交易量约为2.5亿。

该分类帐分布在比特币区块链的所有用户之间,即分类帐没有存储它的中心位置。网络上的每个人都拥有分类帐的副本,而真实副本是所有分布式分类帐的集合。

工作量证明

你可能想知道每个人是否同样拥有分类账,谁将区块链添加到区块链?人们如何信任这个人?

为此,我们有工作证明的概念。它基本上就像解决一个非常大的难题。它需要大量的计算工作。这项工作由我们称之为矿工的比特币网络中的人员完成。这些矿工的工作是验证交易并解决与正在创建的块相关的复杂数学难题。调整问题的难度,以便平均在10分钟内解决一个块。矿工搜索特定的随机数(数学值),其给出预定的所需散列。目前的难度级别是你需要尝试大约20.6千万亿的nonce来获得正确的哈希值。

每个块都有一个哈希值,它是前一个块的最终哈希值,交易数据的哈希值和nonce的组合。块的最终结果散列必须以指定数量的尾随零开始。正是这种计算找到了满足条件的随机数,这种条件使得挖掘的计算成本如此之高。

因此,找到这个nonce的人是成功的矿工,他/她可以将他们的块添加到区块链中。通过我们的P2P分布式网络,他/她广播他们的块并且每个人都验证哈希是否匹配,更新他们的区块链并继续立即解决下一个块。

验证的激励措施

比特币交易的最后一步是向创建最新区块的矿工给予奖励。这种奖励由区块链系统提供,用于验证交易和维护区块链。目前每个区块的奖励是12.5 BTC3,427,850卢比或53,390美元)。这是比特币矿业最有趣的部分。

比特币激励是产生新货币进入系统的唯一途径,据信到2140年,所有2100万比特币将被开采。

有了这个,我希望你现在对区块链技术有更多的了解和赞赏。区块链远不止比特币。金融业只是区块链旨在破坏的众多行业之一。继续我们的区块链教程,现在让我们看一下IBM和马士基的一个例子,了解供应链行业如何被区块链改变。

实际的用例

马士基是一家丹麦商业集团,在运输和物流以及能源领域开展业务。自1996年以来,马士基一直是世界上最大的集装箱船和供应船运营商。该公司总部位于丹麦哥本哈根,在130个国家设有子公司和办事处,员工约88,000人。

IBM是一家美国跨国科技公司,自1921年以来主要致力于业务解决方案,安全解决方案和存储解决方案。

  • 业务需求:

作为极具活力的供应链行业的一部分,跟踪最轻微的变化是客户的最高优先级。他们需要一种解决方案,使他们能够完成装运过程,而不会延误纸张工作。一种解决方案,能够将系统的所有利益相关者聚集在一起,并提供货件的实时状态。

  • 挑战:

今天,全球贸易中90%的货物都是由航运业承担的。这种供应链源于点对点通信的复杂性和绝对数量。这些通信涉及松散耦合的陆地运输提供商网络。货运代理,海关,经纪人,政府港口和海运承运商处理。集装箱货物的文件和信息估计成本是实际物理运输的两倍以上。

  • 解决方案:

IBM和Maersk正在通过供应链生态系统可访问的分布式权限平台解决此问题,该生态系统旨在交换事件数据和处理文档工作流。

Maersk和IBM正在采用区块链技术,通过数字化交易工作流程和端到端跟踪货物来创建全球防篡改系统。这消除了摩擦,包括昂贵的点对点通信。该合作将启动,具有每年跟踪数百万集装箱旅程的潜在能力,并与海关当局在选定的贸易航线上进行整合。

  • 结果:

  • 为供应链系统中涉及的所有利益相关者提供安全的数据交换平台。

  • 建立了一个防篡改存储库,用于存储作为流程一部分的所有相关文档。
  • 定期航运活动有助于减少重大延误和欺诈行为,每年可节省数十亿美元。
  • 减少贸易组织之间的壁垒,从而将全球GDP提高3%。
  • 帮助将整体交易量增加了12%。

这就是区块链技术如何帮助马士基,并一直在帮助全球其他许多公司。最后,作为Blockchain教程的一部分,我们将看一个关于如何在系统上设置私有自治Blockchain的演示。

演示:使用区块链实施数字银行

我们将使用以太坊区块链实施数字银行。以太坊是一个开源,公共,基于区块链的分布式计算平台。系统将允许我们:

  • 使用固定的市场供应和代币制作加密货币以表示真实世界的资产价值。
  • 创建一个自主私有区块链,其中包含花钱的规则。
  • 通过验证交易来挖掘新的以太网。

该演示可分为4个步骤:

  • 克隆Geth代码
  • 创建Genesis块
  • 为我们的区块链制定规则
  • 验证和挖掘以太网

第1步:克隆Geth代码:

geth是用于运行Go中实现的完整以太坊节点的命令行界面。通过安装和运行geth,你可以参加以太坊在线网络并且:

  • 挖掘真正的以太币
  • 在地址之间转移资金
  • 创建合约并发送交易
  • 搜索块历史

从github克隆geth存储库。为此,请打开一个新终端并执行以下命令:

1
$ git clone https://github.com/ethereum/go-ethereum

从github成功克隆文件后,我们需要最新版本的geth分支。

1
2
$ cd go-ethereum 
$ git tag

1
2
$ git checkout tags/v1.6.7 -b EdurekaEthereumV1.6.7
$ git branch

1
$ make all

第2步:创建Genesis Block

创世块是区块链的第一个区块。改变创世块是一种明确地让自己远离比特币区块链的方法,即用它自己独立的历史开始一个新的网络。要创建genesis文件,请执行以下命令:

1
2
3
4
$ cd go-ethereum
$ mkdir genesis
$ cd genesis
$ gedit genesis.json

第3步:为我们的区块链制定规则

我们的区块链规则将包含在我们创建的genesis.json文件中。 在genesis.json文件中添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
{ "config":{
"chainId": 123,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0,
},
"nonce": "0x3",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x4c4b40",
"difficulty": :0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000",
"coinbase": "0x000000000000000000000000000000000",
"alloc":{
}
}
  • nonce:64位hash值,证明与mix-hash相结合,已对此块执行了足够的计算。
  • timestamp:标量值,等于此块开始时Unixtime()函数的合理输出。
  • mixhash:256位hash,证明与nonce一起在此块上执行了足够的计算量。
  • difficulty:与随机数发现块期间应用的难度级别对应的标量值。
  • alloc:允许定义预先填充的钱包列表。这是以太坊特定功能,可以处理“以太网售前”时期。
  • parentHash:整个父块头的Keccak 256位哈希(包括其nonce和mixhash)。
  • extraData:可选的,但最大。32字节长的空间,以保护智能的信息为ethernity。
  • gasLimit:标量值,等于每块gas支出的当前链范围限制。
  • coinbase:矿工们在该区块中包含的第一笔交易。

现在我们需要初始化区块链。您可以使用以下命令执行此操作:

1
$ /home/edureka/go-ethereum/build/bin/geth --datadir ~/ethereum/net3 init genesis/genesis3.json

现在我们已经初始化了区块链,现在是我们给它进行geth控制访问的时候了。执行以下命令以启动geth控制台:

1
$ /home/edureka/go-ethereum/build/bin/geth --datadir ~/ethereum/net3/ --networkid 3 console

第4步:验证和挖掘以太网

在Geth控制台中,执行以下命令:

personal.newAccount():它创建一个新帐户作为区块链的一部分,其中附加了特定的钱包。

eth.accounts():它可以帮助你检查区块链中的各种帐户。

eth.blockNumber():这有助于你确定区块链中的块数。

miner.start():此函数用于启动挖掘过程。

你可以在下面看到运行的挖掘应用程序:

miner.stop():它停止了挖掘过程。

eth.blockNumber():在挖掘过程告诉您执行挖掘操作后您所在的块编号后执行此命令。 eth.getBalance(account number):该命令用于检查指定帐户中的以太币余额。

退出:退出geth控制台。

有了这个,我们成功地开采了以太币并完成了我们的银行演示。这将我们带到了这篇博客的最后。我建议你浏览我们的区块链教程和区块链技术博客,深入了解区块链,比特币,加密货币,以太坊,和智能合约。

  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

汇智网原创翻译,转载请标明出处。这里是原文