欢迎访问比特币_区块链-币链视界!

币链视界

如何成为一名区块链开发者二

发布时间:2021-02-23区块链开发评论
导读:随着区块链成为国家战略,央行也推出数字货币,业界对区块链行业从业人员的需求越来越大;另外最近比特币价格又创新高,去中心化金融DeFi应用也非常火热,程序员业余也有

导读:随着区块链成为国家战略,央行也推出数字货币,业界对区块链行业从业人员的需求越来越大;另外最近比特币价格又创新高,去中心化金融DeFi应用也非常火热,程序员业余也有开发了解区块链的需求。高可用架构翻译blockgeeks的系列文章,帮助大家更好学习及了解区块链开发。本文为第二篇。对区块链基础及公链开发感兴趣的读者请参阅?如何成为一名区块链开发者(一)成为区块链开发者-里程碑4:学习智能合约开发如何定义智能合约?根据维基百科,智能合约是"一种旨在促进、验证或执行合约的协商或执行的计算机协议"。虽然它是由美国密码学家NickSzabo在1996年首次提出,但Ethereum(以太坊)通常被认为是普及这一概念并使其成为主流的原因。可以在我们的深度指南中了解更多关于智能合约的信息。

在智能合约中,我们想要的理想属性是什么?任何在区块链上运行的东西都需要是不可变的,必须有能力在不影响其完整性的情况下通过多个节点运行。因此,智能合约的功能需要具备三个要素:确定性(Deterministic)

可终止的(Terminable)

隔离性(Isolated)特点1:确定性如果一个程序每次给定的输入都有相同的输出,那么它就是确定性的。例如:如果3+1=4,那么3+1将永远是4(假设基础相同)。所以当一个程序在不同的计算机中对同一组输入给出相同的输出时,这个程序就被称为确定性程序。有各种情况,程序可以以非确定性方式运行。调用非确定性的系统函数。当在程序中调用一个不确定的函数时。

访问不确定的数据资源。如果一个程序在运行时获取数据,而这个数据源是不确定的,那么这个程序就会变成不确定的。比如一个程序获取一个特定查询的前10名Google搜索。这个列表可能会不断变化。

动态调用。当一个程序调用第二个程序时,就叫做动态调用。由于调用目标只在执行过程中确定,所以它的性质是不确定的。特征2:可终止在数理逻辑中有一个错误叫做“停顿问题”。基本上,它表示无法知道一个给定的程序是否能在限定的时间内执行其功能。1936年,AlanTuring利用Cantor'sDiagonalProblem推断出,无法知道一个给定的程序是否能在限定时间内完成。这对于智能合约来说,这显然是一个问题,因为合约的定义,必须能够在给定的时间限制内终止。我们采取了一些措施来确保有办法从外部“杀死”合约,不进入一个无尽的循环,从而消耗资源。图灵非完备性一个图灵非完备的区块链的功能是有限的,代码不能进行跳转及循环。当然也不能进入无尽循环。

步数和计费。一个程序可以简单地跟踪它所走的"步数",也就是它所执行的指令数量,然后在某一特定步数被执行后终止。另一种方法是计费。在这里,合约的执行需要预先支付一定的费用。每一条指令的执行都需要一定的费用。如果花费的费用超过了预付费用,那么合约就会终止。

定时器:这里有一个预先设定的定时器。如果合约的执行超过了时间限制,那么合约就会被外部中止。特征#3:隔离性在区块链中,任何人都可以上传智能合约。然而正因如此,这些合约可能会在有意和无意中包含病毒和bug。如果合约没有被隔离,这可能会影响整个系统。因此将合约隔离在沙盒中,使整个生态系统免受任何负面影响是至关重要的。现在我们已经看到了这些功能,重要的是要知道它们是如何执行的。通常,智能合约使用下面两个系统中的一个运行。虚拟机:Ethereum使用的是虚拟机

Docker:Fabric使用让我们比较一下这两者,并确定哪一个生态更好。为了简单起见,我们将比较Ethereum(虚拟机)和Fabric(Docker)。如果你对Ethereum开发特别感兴趣,那么你需要同时学习solidity编程语言。对于任何想要学习如何开发DAPP(去中心化应用)的人来说,学习Solidity是绝对必须的。我们已经有一份详细的指南,你可以在这里阅读(1)。在这里我们给出一个基本的概述。Solidity由GavinWood、ChristianReitwiessner、AlexBeregszaszi、YoichiHirai和几位前Ethereum核心贡献者开发,以实现在Ethereum等区块链平台上编写智能合约。(1)?是一种特意精简的松散型语言,语法与ECMAScript(Javascript)非常相似。在Ethereum设计原理文档中,有一些关键点需要记住,即我们是在堆栈和内存模型上工作,指令字大小为32字节,EVM(Ethereum虚拟机)给我们提供了访问程序"堆栈"的机会,它就像一个寄存器空间,我们也可以在这里使用内存地址,程序计数器循环/跳转(用于顺序程序控制)。一个可扩展的临时"内存"和一个更永久的"存储",而这个存储实际上是写入永久区块链的,最重要的是,EVM要求智能合约内的完全确定性。如果你有兴趣学习Solidity,那么你可以在这里查看我们的深度课程。

这一节的行动计划包括:了解智能合约的工作原理

(Ethereum开发者可选)学习Solidity成为一名区块链开发者?-?里程碑5:进入区块链公司。作为一名新晋开发者,最重要的事情之一就是融入其中。访问Reddit论坛、Github页面和StackExchange,与其他开发者交流,并时刻关注有关该技术的任何消息。除此之外,了解人们对区块链开发者的要求,对你也会有帮助。公司在招聘时有什么要求?你可以在这里了解这些信息。

这些信息对于强化你的技能以吸引这些公司非常有用。成为区块链开发者?-?结论本文整理了成为区块链开发工程师的大致路线图。当然,仅有这些是不够的,你需要展现更多主动性,并始终处于其中。如果你正在寻找关于区块链开发的信息资源,那么请点击这里。

祝你在学习区块链途中一切顺利!英文全文:参考阅读:如何成为一名区块链开发者(一)

为什么我们不用数据库生成ID?

C++服务编译耗时优化原理及实践

基于Consul服务注册中心:一次故障分析及优化

使用Go语言从零编写PoS区块链

使用Go语言编写区块链P2P网络本文由高可用架构翻译,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。高可用架构改变互联网的构建方式

广告位

热心评论

评论列表