如何成为区块链开发者(二)

如何成为区块链开发者(二)

导读:随着区块链成为国家战略央行也推出了数字货币区块行业对从业人员需求越来越大;另外,最近比特币价格创新高,去中心化的金融DeFi应用也很火。程序也有在业余时间开发和理解区块链的需求。翻译高可用架构blockgeeks的一系列文章,帮助你更好地学习和了解区块链发展。本文为第二篇。

对区块链基金会公链开发感兴趣的读者请参考《如何成为区块链开发者(上)》

成为区块链开发者——里程碑4:学习智能合约开发

如何定义智能合约?

根据维基百科,智能合同是“旨在促进、验证或执行合同谈判或执行的计算机协议”。虽然1996年由美国密码学家Nick Szabo首先提出,但以太坊(Ethereum)被普遍认为是普及这一概念并使之成为主流的原因

您可以在我们的深度指南中了解更多关于智能合约的信息

https://blockgeeks.com/guides/smart-contracts/

智能合约中我们想要的理想属性是什么?

在区块链上运行的任何东西都需要是不可变的,并且必须能够在不影响其完整性的情况下运行多个节点。因此,智能合约的功能需要具备三个要素

确定性的(决定性的)

可终止的

孤立(孤立)

1.特征:确定性

如果一个程序对于每个给定的输入都有相同的输出,那么它就是确定性的。比如:如果3 ^ 1=4,那么3 ^ 1永远是4(假设基础相同)。所以当一个程序在不同的计算机中对同一组输入给出相同的输出时,这个程序就叫做确定性程序。

程序可能以不确定的方式运行的情况有很多种。

调用不确定的系统函数。当程序中调用一个不确定函数时。

访问不确定的数据资源。如果一个程序在运行时获取数据,而数据源是不确定的,那么程序就会变得不确定。举例来说,一个程序为一个特定的查询获得前10个谷歌搜索。这个列表可能会不断变化。

动态呼叫。当一个程序调用第二个程序时,称为动态调用。因为调用目标是在执行过程中确定的,其性质是不确定的。

2:可终止

数理逻辑有一个错误叫做“停顿问题”。基本上,它意味着不可能知道一个给定的程序是否能在有限的时间内执行它的功能。1936年,艾伦图灵利用康托对角问题推导出不可能知道一个给定的程序是否能在有限的时间内完成。

这显然是智能合约的问题,因为合约的定义必须能够在给定的时限内终止。我们采取了一些措施,确保有办法从外部“杀死”合同,不进入无休止的循环,从而消耗资源。

图灵不完全性图灵不完全区块链的功能是有限的,代码不能跳转和循环。当然,它不能进入一个无止境的循环。

步骤和计费。一个程序可以简单地跟踪它执行的‘步数’,也就是它执行的指令数,然后在执行了一定数量的步后终止。另一种方法是计费。在这里,合同的执行需要预先支付一定的费用。每条指令的执行都需要一定的成本。如果费用超过预付费用,合同将被终止。

定时器:这里有一个预设的定时器。合同执行超过期限,对外终止合同。

特征3:隔离

在区块链,任何人都可以上传智能合同。然而,正因为如此,这些合同可能会有意或无意地包含病毒和bug。如果合同不是孤立的,它可能会影响整个系统。因此,有必要将契约隔离在沙盒中,以保护整个生态系统免受任何负面影响。

既然我们已经看到了这些函数,那么了解它们是如何执行的就很重要了。通常,智能合约使用以下两种系统之一运行。

虚拟机:以太坊使用虚拟机。

Docker:织物用途

让我们比较两者,确定哪一个在生态上更好。为简单起见,我们将以太坊(虚拟机)与Fabric(Docker)进行比较。

如果你对以太坊开发特别感兴趣,那么你需要同时学习solidity编程语言

对于任何想学习如何开发DAPP(去中心化应用)的人来说,学习Solidity是绝对必要的。我们已经有了详细的指南,您可以在这里阅读(1)。这里我们给出一个基本的概述。Solidity是由Gavin Wood、Christian Reitwiessner、Alex Beregszaszi、Yoichi Hirai和以太坊的几位前核心贡献者开发的,目的是在以太坊等区块链平台上编写智能合约。

(1)https://blockgeeks.com/guides/how-to-learn-solidity/

Solidity是一种被刻意简化的松散语言,它的语法非常类似于ECMAScript(Javascript)。在以太坊设计原理文档中,有一些关键点需要牢记,那就是我们正在进行堆栈和内存模型工作,指令字大小为32字节。EVM(以太坊虚拟机)为我们提供了访问程序“堆栈”的机会,这就像一个寄存器空间,在这里我们还可以使用内存地址和程序计数器循环/跳转(用于顺序程序控制)。一个可扩展的临时“内存”和一个更永久的“存储”,而这个存储实际上是写入永久区块链的。最重要的是,EVM要求智能合同具有完全的确定性。

如果你对学习Solidity感兴趣,那么你可以在这里查看我们的深度课程

https://courses.blockgeeks.com/

该部分的行动计划包括:

了解智能合同的工作原理。

(以太坊开发者可选)学习Solidity。

成为区块链开发者——里程碑5:进入区块链公司

作为一个新的开发者,最重要的事情之一就是融入。

访问Reddit论坛、Github页面和StackExchange,与其他开发人员交流,关注有关该技术的任何新闻

此外,了解人们对区块链开发商的要求也会你有所帮助。公司招聘时有什么要求?你可以在这里了解这些信息。

https://block geeks . com/how-to-hire-a-good-区块链开发者/

这些信息对于加强你吸引这些公司的技能非常有用。

成为区块链开发者-结论

本文梳理了成为区块链开发工程师的一般路线图。当然,光有这些是不够的。你需要表现出更多的主动性,并始终保持主动。

如果您正在寻找有关区块链发展的信息资源,请点击这里。

https://courses.blockgeeks.com/

你在学习区块链的过程中一切顺利!

全文:https://blockgeeks.com/guides/blockchain-developer/

本文由高可用架构翻译,技术原创,架构实用。投稿请通过微信官方账号菜单联系我们。

可用性架构

改变互联网的构建方式。

版权声明:区块链浏览器 发表于 2022-07-05 9:20:35。
转载请注明:如何成为区块链开发者(二) | 零零洞洞

暂无评论

暂无评论...