区块链开发七分钟快速入门
作为2017-2018年最具争议性和战略性的技术之一,区块链正在远离喧嚣和泡沫,进入落地和普及阶段,各行各业都在尝试开发部署能够提升企业竞争力的区块链应用,而这也意味着未来几年对区块链开发人才的需求,将持续增长,而区块链的人才荒,也将愈演愈烈。但是,对于大多开发者来说,区块链开发虽然陌生甚至神秘,但实际上对于有经验的开发者或团队来说,入门完全没有想象中可怕。为了方便广大开发者和企业技术决策者快速了解区块链开发技术,我们编译了Applicature在Medium发布的文章“区块链开发七分钟快速入门”,内容如下:
区块链工作原则
区块链架构以其耐用性,容错性和抗攻击性吸引了许多开发人员。区块链几乎可以用任何编程语言实现,但我们强烈推荐简单性和灵活性出色的语言:Python,JavaScript和GoLang,人们用这些语言编写了很多区块链实现,特别是在Python和GoLang上。顺便说一下,Golang被以太坊选为其核心。
由于区块链仍然是非常年轻的技术,因此在Android或IOS平台上开发的区块链开发人员并不多。这导致开发人员缺乏经验交流,同时,每个区块链开发人员都是新兴领域的技术先驱。
准备迎接挑战了吗?
在我们开始深入研究区块链代码之前,让我们弄清楚创建和维护区块链的一些挑战:
1.安全
区块链技术将安全作为其最大优势之一。每个区块链(以太坊,比特币,EOS和Cardano)的代码都是开源的,这意味着任何开发人员都可以看到它,检查错误,进行改进,制作分支,并将其作为自己的新技术展示。
2.高速演进
区块链技术相对年轻,需要开发和扩展,相关技术演进和部署都在以几何级数增长。如果您想开发区块链,您应该密切关注不断涌现的新技术和相关新闻资讯。
3.可扩展性
区块链本质上是分散的,因此它不需要第三方来验证交易。相反,在执行事务之前,每个节点都必须证明它并保存其副本。这使得验证过程耗时。
4.选择哪种共识?
当出现交易时,网络参与者必须对其进行验证。确认所需的验证数量由区块链决定,可能会有所不同。在所有参与者做出共同决定之前,交易不会被标记为成功。这就是共识类型所代表的含义。有工作证明(PoW)和权益证明(PoS)可供选择,每个都有自己的优点和缺点。
工作证明(PoW)是一种共识协议,通过矿工解决数学问题来验证交易,一旦验证成功,奖励就会以比特币或代币的形式发放到矿工的钱包中。PoW的最大优势是:
- 它是稳定的(但是,这个优势使得确认过程比PoS慢)。
- 破解是困难和昂贵的。
PoW需要考虑的缺点:
- 实施起来非常昂贵(由于需要大量节点来防止网络受到危害)。
- 它需要极其强大的计算力。
与PoW相比,权益证明(PoS)共识的逻辑完全不同。当事务进入区块链的内存池时,节点会对其进行验证。但他们这样做的顺序是由权益的共识来定义的。权益通常是节点的钱包余额。例如,节点A有10个加密币,节点B有20个,那么节点B最有可能被选择来首先验证交易。
PoS共识的好处是:
- 不需要大量的计算能力。
这意味着您甚至可以使用手机确认交易。
PoS类型共识的最大缺点是“富人”更有可能变得更加富裕。
为区块链选择一种共识是相当困难的,但有一点可以达成共识的是,分布式应用程序是我们的未来 – 原因很多。
知识必不可少
在开始编写自己的区块链之前,您需要了解编写代码时将要面对的一些基本要素。
块
区块链是一种公共分类账,可以将数据存储在所谓的区块中。一个块后跟另一个块创建了一系列块。每个块都有一个特定的哈希值。
下表显示了一个块的结构:
为了保持简洁的链,后一个块中会记录前一个块的哈希值,然后该块才能上传到区块链。要做到这一点,开发人员必须解决NP级的数学计算任务,此过程称为挖矿。
交易
区块链也有奖励的概念。这意味着找到适合该块的数学解决方案的矿工将获得加密币奖励。
用户可以按照自己的意愿管理资金,包括将资金转移给其他矿工(账户)。每笔汇款都会被记录在区块链上,任何人都可以看到任何已经进行过的交易,因为(大多数)区块链并不对交易记录加密。这也是为什么说区块链是一个公共分布式账,能够为许多领域带来透明度的原因。
哈希
基本上,哈希是一堆数字,类似于下图所示:
实际上,它是一些数据的指纹。如果您键入您的名称,代码将生成某个哈希值,但如果您添加姓氏,则哈希值将更改。每当您再次输入您的名字时,您将获得同一个哈希值。因此,哈希值是任何信息的唯一密钥。
编程语言
要快速简单地开发区块链,请从以下语言中选择:Python,Java,JavaScript,C ++ GoLang。
Python被认为是相当简单的。它是一种解释性的面向对象的编程语言。在阅读Python代码时,它看起来像是在阅读英语,这意味着这种编程语言易于学习和使用。
Java也是一种面向对象和解释的编程语言,学习起来相对简单。
Java的一个特点是它是强类型的,这意味着它能够进行密集的错误检查。任何具有Java虚拟机实现的系统都可以读取用Java编写的任何应用程序。
尽管名称相似,但Java和JavaScript的特性和用法并不相似。JavaScript是一种基于对象和区分大小写的脚本语言。JavaScript的一个关键特性是您可以使用function命令创建新函数。
C ++与前面提到的编程语言之间的主要区别在于C ++主要用于大型项目,因为它扩展了数据类型,函数,控件和决策语句。
您可能已经知道GoLang的第一个特征。对!它是一种面向对象的编程语言。但是,与C ++区别的是,它更快。因此,用GoLang编写的庞大程序可以在几秒钟内编译。
来自内部的区块链
区块链技术在金融或供应链等领域的应用前景令人着迷,但你不知道它从内部看起来如何?区块链上的交易记录是什么样的?
幸运的是,我们将向您介绍全貌。
现在您已经完成了理论材料的准备,我们已准备好向您展示如何在Python上从头开始编码区块链。我们之所以选择它是因为它的简单性和程序库的可用性。
打开IDE,创建一个新的Python文件,然后按照说明操作:
添加所有需要的库
要创建自己的区块链,您需要HTTP,哈希,时间和JSON的库。只需复制/粘贴以下’导入’:
创建一个类块
现在是时候进行一些OOP编码了。如前所述,“引擎盖下”的区块链由一系列区块组成,并且是分布式的。因此,我们需要通过在具有“current_transactions”(事务池),“链”(块的存储)和“节点”(节点存储)等属性的类中对其进行框架来定义名为“Blockchain”的主要实体:
添加节点
然后我们需要为安装节点添加功能。在参数地址中,我们分配节点的HTTP地址(例如’http://192.168.0.5:5000’):
验证
下一步将确定区块链节点内链的功能和有效性:
检查块证明是否有效:
添加你的第一个块
现在我们来到最有趣的一点:创建块。首先,我们调用new_block函数。对于参数’previous_hap ‘,我们分配前一个块的哈希值。如果是第一个块,则前一个哈希为零。该证明参数需要一个块的存在证明。
添加交易
如果您是加密货币资产的所有者,您可能希望将它们转移给某人。顺便说一句,交易是区块链产生的最小结构单位。让我们定义创建事务的功能。
添加需要几个参数:发件人地址,收件人地址,您要发送的令牌数,以及将保存有关此事务的数据的块的索引。
当您向区块链添加所需数量的块时,它将如下所示:
恭喜!你已经创建了第一个区块链。您还可以从Applicature的专家那里获得额外的支持。
第一时间获取面向IT决策者的独家深度资讯,敬请关注IT经理网微信号:ctociocom
除非注明,本站文章均为原创或编译,未经许可严禁转载。
相关文章: