区块链软件是 the 现在的热门话题. 它正在颠覆我们对经济的思考方式, technology, 甚至社会结构也是如此, 机会无处不在. 你怎么知道你什么时候找到了一个适合你b区块链项目的人呢?
As an interviewer, 您可能已经意识到,专业的区块链开发人员需要对可用技术有广泛的了解. 您知道他们应该能够分辨在特定的业务上下文中使用哪些解决方案.
You also know that you’ll need to get more specific than that if you’re going to hire someone who’s right for your project.
但在我们进入b区块链面试问题之前, 并非所有负责招聘区块链开发人员的人都知道自己面临的是什么, 因此,我们将在下一节提供一个温和的介绍. 如果您已经熟悉区块链基础知识,请随意跳过它.
When Did It Start?
自古以来,人们就一直在交易.
但这很复杂. 如果你需要一条面包, 但面包师需要一种新工具,而你却无法提供, what then? 随着经济的增长,这种方法很快变得极其无效.
金钱改变了一切, 使我们能够提取产品的价值并将其放入一种材料中 很难生产,但很容易交换. Now, you can buy a loaf of bread even if you do not have anything that a baker needs—you simply transfer value using currency.
区块链技术和金钱之间有什么联系? 如果你想用钱, you need to agree on the specific type or types of money that are accepted by enough people to run an economy efficiently. 他有足够的权力把一种货币强加给许多人?
Royalty. In the past, 铸币由国王或王后批准, 谁保证你可以在他们统治的土地上使用这种货币——每个人都被迫接受它. 许多地方的君主政体转变为其他政体, 与此同时, banks were born. 尽管如此,这种经典的方法需要一个产生支付手段的中央机构.
In the early 2000s, 中本聪(Satoshi Nakamoto)希望创造一种可以在没有任何中央机构的情况下签署的货币. 要解决的一个问题是如何确定事务是否发生以及它在时间轴上以何种顺序发生. 这个问题,被称为 分布式的共识,并不是在所有情况下都能解决. 但数字货币只是一个特例,中本聪能够解决这个问题.
当我们创造货币的时候, 我们需要有一种方法来知道谁是一枚硬币的当前所有者,以及它的运动历史. 银行历来使用分类帐来记录这些细节. 比特币是一种数字的分布式账本,每个人都可以验证所有的硬币操作.
如果我们想使用这样一个分布式账本, 有一些问题需要解决:谁可以在这本书中做一个条目? Supposing just anyone is allowed, 我们如何防止有人同时使用同一枚硬币进行两种不同的操作来作弊?
后一个问题叫做 double spending 这也是由比特币解决的. 要被网络接受,有一些条件. 每笔交易都需要放到一个区块中, 一个节点需要使用它的计算能力来解决一个相关的数学难题, called its proof of work.
After that, 一个区块可以通过整个区块链网络广播,但这并不意味着它已经被接受了. 当一个块被传输时, 接收它的每个节点都可以决定将该块附加到其最扩展的链上. (这是比特币的默认行为,这保证了我们可以达成共识.),然后节点可以开始挖掘一个新的区块,该区块链接到这个最新添加的区块,作为它的前一个区块. 我们可以说,当特定数量的节点将该块添加到它们的链中时,交易被接受.
采访区块链开发者
现在您已经对区块链技术有了一个概述, 以下是每个区块链应用程序开发人员在面试中应该能够清楚回答的一些问题.
b区块链是什么?
区块链是一种分布式数据结构, in the form of growing list of records—although it can also be represented as a tree—where every node is connected with another by cryptography.
核心概念是块. 它的基本形式包括三个方面:
- 一个时间戳,表示一个块的创建
- 前一个块的散列(散列是固定大小的摘要), 输入的小变化在哪里, 输出有很大的变化)
- 实际的块数据
块数据包含所有尚未包含在其他挖掘块中的操作. 它们必须被矿工接受, 验证交易不违反任何网络条件或规则. 在大多数情况下,单个块中可以包含的数据量有一个上限.
区块链是不可变的:在任何块中进行更改, 您需要重新计算所有后续块的哈希值—这是不可行的.
区块链挖矿是什么?
挖矿是在工作量证明系统中向区块链添加新区块的过程. 添加一个新的块,a miner Node需要执行一些详尽的计算操作,但这些操作很容易验证.
For example, they need to calculate the SHA256 hash of the concatenation of some magic number—which needs to be found by the miner—with the block’s header such that the hash ends up with a specific number of zeros. (这个数字的零被称为证明 difficulty.)
无许可区块链和许可区块链之间的区别是什么?
在无需许可的区块链中,每个人都可以加入并成为共识过程的一部分. 任何受欢迎的公共场所都可以被视为未经许可.
在允许的范围内, 还有一个额外的授权层, which is used to control which nodes have access to which part of the blockchain; e.g.,可能有一组固定的节点,它们是唯一允许创建新块的节点.
有一些解决方案可以被视为混合方法. For example, J.P. 摩根的Quorum是以太坊的一个分支,其中一部分网络是私有的,其余部分是公开的.
什么是创世区块?
创世区块是任何区块链的第一个区块. 它是唯一不包含引用前一个块的散列的块. 在许多实际的解决方案中,这个块本身是硬编码在软件中的.
分布式系统中的共识是什么?
这种共识是分布式系统节点之间关于系统状态的协议. 这是一个没有通解的计算机科学难题, 只解决了特定用例的问题, like bitcoin.
什么是加密货币?
加密货币是一种数字资产,可以用作现有法定货币的替代品. One of the goals of cryptocurrency technology is to eliminate the requirement of having a central authority which approves transactions.
最著名的区块链实现是什么?
第一个广泛实施的是比特币,由中本聪创建并于2009年1月推出. 从那时起,许多不同的申请都得到了宣传.
以太坊提供了一个运行的解决方案 smart contracts 并于2015年7月发射. 这带来了DApps-i的概念.e., distributed apps, 有时被格式化为“ĐApps”——进入主流, 数字代币被分发给许多人.
在过去的两年里,像英特尔、IBM和J.P. 摩根开始(或支持)研究私人网络, which can be run by any company and can be used to implement particular business requirements (like an internal ledger of operations inside the company).
他们的支持催生了像超级账本这样的解决方案, R3 Corda, and Quorum, 以太坊的企业级版本,由J.P. Morgan. 这些解决方案可以处理许多公共网络不支持的用例. For example, 它们有更好的事务吞吐量, 额外的安全层, 以及具体的共识算法.
什么是“工作量证明”??
The proof-of-work system is one in which the sender of a message (or the creator of a kind of transaction) needs to perform hard work to sign the operation. 从经济意义上讲,他们需要承担成本. 但是这个过程 verification 这项工作既容易又快,所以每个人都能在很短的时间内完成.
This approach was first used in the hashcash algorithm—later to be used as bitcoin’s core mining function—to eliminate spammers. To send an email, the sender first needed to calculate the SHA1 hash from specific input data such that it would contain a particular number of zeros.
难度等级的建立使得一台现代计算机大约需要一秒钟才能完成哈希, but for spammers, 谁需要一次发送数千条信息, 这将带来非常高的经济成本, 使垃圾邮件业务无利可图.
出于类似的原因,比特币也采用了这种方法. 一个主要区别在于解决谜题的目标时间. 当你挖一个比特币的时候, it needs to consume enough resources to guarantee that a new block will be not created too fast—it could cause many orphan blocks, 并且必须挖掘更多的区块来确认交易. 与hashcash的原始电子邮件上下文不同, on average, 每十分钟就会有一个新的比特币区块被签署.
如果我们给网络增加更多的力量,这个谜题就会变得更难. 因此,经济成本正在上升. (实际上,难度等级每2016个街区改变一次.)
为什么我们需要在区块链中使用公钥加密?
我们使用密码学来验证特定交易的发送者/创建者. 没有加密, 每个操作都可以很容易地重新分配,然后网络可能会损坏.
交易使用发送方的私钥进行签名,并包含接收方的地址. 例如,在比特币中,公钥就是这样一个地址. 在广播之后, 每个人都可以用他们的公钥来验证发送者, 哪些可以通过网络获得.
什么是智能合约?
智能合约是作为纸质合约的数字替代品而创建的.e., arrangements between two or more parties) where the execution of terms can be realized without any third-party go-between.
最流行的智能合约实现可以在以太坊中找到. 在以太坊的背景下, 智能合约是一个简单的计算机程序, 存在于特定地址的, 每当交易被发送到该地址时,都会执行该操作. The code has to be run on every node of the network: All nodes need to reach consensus about state of the blockchain.
因此,给定相同的输入数据和状态,每个程序都需要返回完全相同的结果. 它可以看作是一个有两个输入的数学函数($S$), the state; and $I$, 输入数据)和恰好一个输出($NS$), the new state):
$F(S, I) \to NS$
顶级bb100开发者应该具备哪些技能?
区块链开发是一个非常广泛的话题, 因此,在雇用100名开发人员之前,确定确切的需求是至关重要的. 这一点尤其正确,因为仍然有100个工作 far outnumber 高质量区块链专家, 尽管许多专业人士将注意力转向区块链职业.
区块链市场由几种相关类型的区块链专家组成:
- 区块链工程师
- 智能合约开发者
- DApp Developers
- 份白皮书的作者
- ICO Consultants
区块链工程师
如果您需要实现一个全新的区块链网络, 然后你需要找一个有扎实的计算机科学背景的人, 网络开发经验, 以及低级的编程技能.
This person should have excellent knowledge about existing blockchain solutions—he/she should be able to go through the source code of existing projects and explain most of the approaches used in them.
请记住,这种项目可能是困难的,需要多个开发人员来处理. 在大多数情况下,使用现有的开源解决方案更安全. 如果在现有项目的上下文中没有选择来实现您的特定业务需求, 这样就更容易定义项目的哪些部分需要重写. 例如,您可以从项目的其余部分中受益,但可以自定义其共识算法.g.、工作量证明、权益证明或权威证明——根据需要.
智能合约开发者
在许多情况下,您不需要从头开始实现一个全新的区块链解决方案. 也就是说,您希望将特定的业务需求融入到现有的区块链中.
智能合约开发人员应该了解特定区块链解决方案的内部结构. 目前,支持智能合约的最流行的解决方案是 Ethereum. 但也有其他的解决方案,比如 超级账本结构和锯齿-当您的业务案例需要在专用网络中支持时,可以使用它.
这个角色在公共网络中非常重要, 如果没有硬分叉就没有办法从网络中删除无效联系人. 有许多已知的安全问题,这些问题有时会导致经济损失. Every developer working on smart contracts should know as much as possible about these problems and should be able to write solutions.
重要的是,它们的解决方案甚至可以在不可变(公共)环境中实现. 模块化的水平应该很高, 智能合约之间的连接应该能够动态变化. For example, 具体合同的地址不应固定, 所以如果出现问题, 开发人员可以通过单个事务将此地址指向新地址.
这些问题在专用网络中有时不那么重要. But still, in some cases, 你不能保证每个节点都是公平的, 开发人员应该能够处理由于网络限制而产生的这种情况.
DApp Developers
In a nutshell, DApp可以看作是想要使用区块链系统的用户的用户界面. 它是一个应用程序(在大多数情况下), (基于web的),提供了与一组允许的业务操作交互的机会. DApp最关键的部分是“链下”(off-chain)之间的集成.e.即在给定区块链之外的所有东西和区块链本身.
Every event coming from the blockchain needs to be correctly handled by a DApp and the DApp should also reflect the current state of the blockchain in real time. Also, 在需要将数据块推入区块链的情况下, DApp开发人员需要知道如何实现这一点.
The role of the developer is to create (or maintain) a communication protocol for transferring data from between the blockchain and the off-chain. A significant thing to remember is the fact that every transaction (especially in public chains) can take some time before users can see the result. 开发者应该熟练地让应用在UI/UX中流畅地反映这一事实, 这样用户就知道他/她需要等待一段时间.
份白皮书的作者
A white paper is a hybrid document that tries to sell technical aspects of a project in a way that can be understood by the average reader.
在区块链的世界里, every project wants to have its own white paper—the quality of a white paper can be used to critique the project itself. 没有优秀的白皮书,就没有成功的ICO.
这个角色很难胜任,因为一个作家需要同时生活在两种环境中, 在商业和技术方面都有专长. He or she needs to create a document where the hard technical aspects are presented in a way that shows off potential business benefits.
ICO Consultants
一些ICO项目经理会在区块链工程师中寻找顾问. 但区块链工程师是知道如何解决低级问题的人. For ICOs, 公司需要一个人谁是能够建立一个网站, 创建智能合约, 并将它们发布到公共网络上. 他们不需要建立一个新的, private network, 或者处理特定区块链网络的源代码. 这就是为什么DApps开发人员通常更适合作为ICO项目的初始顾问.
新技术,新面试标准
区块链技术是最近最热门的话题, 但它还是新鲜的, 而且经验丰富的专家也不多. 了解你的项目需要什么以及什么样的人可以处理它是至关重要的. 我们希望本指南能够帮助您找到最好的区块链开发人员!