如何招聘面试区块链以太坊开发人才

image

对优质区块链开发人员的需求很大,这是有充分理由的。区块链和ICO领域在过去几年中爆炸式增长。越来越多的人试图进入并在该领域中扬名立万。但是,为了获得成功,他们拥有一支强大而健全的团队至关重要。区块链开发人员,更准确地说,以太坊开发人员是该团队中最关键的组成部分。

因此,在本指南中,我们将使你的生活更轻松。我们将向你展示如何精确定位和从人群中筛选的优秀的人才。

在我们雇用以太坊开发者之前,重要的是我们要知道我们雇用的是哪类人。

怎么样才算是一个完美NB的以太坊开发者?

在以太坊开发者精湛的技能中,最重要的是要知道将最优秀的与其他人区分开的基本品质是什么?优秀的开发人员必须不仅仅是具有区块链编码技能的开发人员。我们并不是说只熟悉编码就没有价值,但是,如果你需要一个合适的开发人员来创建一个帝国。那么,你正在寻找的一些主要品质是什么?

  • 去中心化的坚定信念:这些人认为去中心化将挽救人类。传统公司不会雇佣这些人,因为他们相信社会,公司和政府等机构不应该去中心化。

  • 掌握密码学:区块链开发人员需要掌握加密经济学。加密经济学,密码学和经济学分为两部分。这就是为什么伟大的以太坊开发人员应该对密码学有一种不懈的好奇心。

  • 掌握经济学:加密经济学的后半部分是“经济学”,因此专业开发人员也应该具备经济和博弈论机制的良好知识。如果你正在创建区块链平台,则代码应确保所有参与者都受到经济激励。

  • 极度好奇:为了拥有如此庞大的知识基础,这些人天生就非常好奇。这些人大多都是直到深夜还通过视频,论坛,维基来了解特定问题。

所以,现在我们知道我们正在寻找的那种人。这就是为什么说从头开始了解一些以太坊基础知识是有道理的。

我们为什么这样做?

因为每个以太坊开发者都应该完全熟悉这些概念。

1

什么是以太坊?

这是以太坊网站定义的方式:

以太坊是一个区中的平台,运行智能合约:完全按照程序方式运行的应用程序,没有任何停机,审查,欺诈或第三方干扰的可能性。这些应用程序运行在定制的区块链上,这是一个非常强大的共享的全局基础架构,可以转移价值并体现财产的所有权。

但简单来说,以太坊计划成为未来的终极软件平台。如果未来是去中心化的,并且dAPP变得司空见惯,那么以太坊必须成为它的前沿和中心。

虽然比特币是区块链技术的第一个应用,但它仍然只是一种货币。以太坊带来了区块链技术可能实现的全部应用范围。

正如以太坊联合创始人Gavin Wood博士所说:

比特币首先是一种货币;这是区块链的一个特殊应用。但是,它远非唯一的应用程序。举一个类似情况的过去例子,电子邮件是互联网的一种特殊用途,并且肯定有助于推广它,但还有很多其他的应用。

2

以太坊采矿如何工作?

截至目前,以太坊正在使用比特币正在使用的相同的工作量证明(Proof-of-Work)。然而,以太坊很快计划转向权益证明(Proof-of-stake),他们将使用Casper协议来实现这一转变。

那么权益证明和工作量证明之间有什么区别?这实际上是你可以问人们你可能会面试的事情。了解工作量证明和权益证明的工作原理绝对至关重要。

**工作量证明:**这是大多数加密货币如以太坊和比特币迄今为止遵循的协议。这意味着矿工通过使用专用硬件通过“挖矿”来挖掘加密货币。

**权益证明:**该协议将使整个挖掘过程成为虚拟的。在这个系统中,我们有验证器而不是矿工。它的工作方式是,作为一个验证器,你首先必须把你的一些以太锁作为赌注。完成后,你将开始验证块,这基本上意味着如果你看到任何你认为可以附加到区块链的块,你可以通过下注来验证它。当块被追加时,你将获得与你投资的比例成比例的奖励。但是,如果你在错误或恶意区块上下注,你投入的股份将被剥夺。

为了实现“权益证明”,以太坊将使用Casper一致性算法。一开始,它将是一个混合风格的系统,其中大多数交易仍将是工作量证明,而每100个交易将成为权益证明。这样做意味着,它将提供真实世界在以太坊平台上来测试验证。但这对于以太坊意味着什么?这个协议的优点是什么?让我们来看看:

image

权益证明的优点

  • 降低整体能源消耗和货币成本:世界范围比特币矿工每小时花费约50,000美元用电。那是每天120万美元,每月3600万美元,每年约4.5亿美元!只是把最重要的放在那些数字和浪费的电量上。通过使用“权益证明”,你将使整个过程完全虚拟化,并切断所有这些成本。

  • 没有ASIC优势:由于整个过程将是虚拟的,因此不依赖于谁拥有更好的设备或ASIC(专用集成电路)。

  • 使51%的攻击更难:51%的攻击发生在一群矿工获得超过世界散射能力的50%时。使用权益证明可以抵消这种攻击。

  • 无恶意验证者:任何将资金锁定在区块链中的验证人都会确保他们不会向链中添加任何错误或恶意的区块,因为这意味着他们投入的全部股权将被剥夺。

  • 块创建:更快地创建更新的块和整个过程。

  • 可伸缩性:通过引入“分片”概念使区块链可扩展(稍后将详细介绍)。

尽管之前有过各种简单的权益证明实施,但Casper与其他方式的区别在于,它激励了诚实的矿工并惩罚了不诚实的矿工。如果你已经将你的赌注置于恶意区块上,那么赌注将被取走。它将惩罚任何不遵守规则的人。

这是Vitalik解释它的方式:

想象一下,100个人坐在圆桌旁。一个人有一堆文件,每个文件都有不同的交易历史。第一个参与者拿起一支笔并签一张,然后将其传递给下一个做出类似选择的人。如果每个参与者签署了大多数参与者最终签署的交易历史记录,则每个参与者只能获得1美元。如果你在一个页面上签名并稍后签署另外不该签的一页,那么你的房子就会被烧毁。然后他补充说,这可能是正确签署的好动力!

3

什么是智能合约?

智能合约是自动化合约。它们是自动执行的,并且在其代码上写入特定指令,这些指令在特定条件下执行。

image

你可以在我们的其他文章中了解有关智能合约的更多信息。

智能合约是以太坊生态系统中的任务完成的方式。当有人想要在以太坊完成特定任务时,他们会与一个或多个人签订智能合约。

智能合约是一系列指令,使用编程语言solidity编写,它基于IFTTT逻辑(即IF-THIS-THEN-THAT逻辑)工作。基本上,如果完成了第一组指令,则执行下一个函数,然后执行下一个函数并继续重复,直到合约结束。

理解这一点的最好方法是想象一台自动售货机。你采取的每个步骤都像下一步执行自身的触发器。它有点像多米诺骨牌效应。那么,让我们来看看在与自动售货机交互时你将采取的步骤:

  • 第1步:你给自动售货机一些钱。

  • 第2步:按下与所需产品对应的按钮。

  • 第3步:该产品出来,你收起它。

现在看看所有这些步骤并考虑一下。如果前一个步骤没有执行,其他任何步骤都还可以工作吗?这些步骤中的每一步都与前一步骤直接相关。还有一个要考虑的因素,它是智能合约的一个组成部分。你可以看到,在与自动售货机的整个交互过程中,你(请求者)仅与机器(提供商)合作。绝对没有第三方参与。

那么,现在,如果它在以太坊网络中发生,那么这笔交易将如何?

假设你刚刚从以太坊网络中的自动售货机购买了一些东西,那么步骤将如何?

  • 第1步:你给自动售货机一些钱,这由以太坊网络中的所有节点记录,并且交易在分类帐中更新。

  • 第2步:按下与你想要的产品对应的按钮,并在以太坊网络和分类帐中更新记录。

  • 第3步:产品出来,你收集它,这将由所有节点和分类帐记录。

你通过智能合约进行的每笔交易都将由网络记录和更新。这样做是因为它让每个参与合约的人都对他们的行为负责。它通过使整个网络可以看到每个动作来消除人类的恶意。

好的,直到现在我们已经涵盖了以太坊是什么,什么是采矿,什么是智能合约。如果你的候选人不能令人满意地回答这些问题,那就让他们在那一瞬间离开。已经不值得你再花时间。

4

掌握智能合约代码

显然,这应该是所有伟大的开发人员的菜。你可以肯定地了解开发人员的专业知识的一种方法是让他们解释特定合约的工作原理。在这里,我们将向你展示两个solidity代码。你可以通过他们运行此代码并要求他们将其分解并向你解释每个步骤中发生的情况。

代码示例1

代码和解释来自toptal。

pragma solidity 0.4.18;import "./Vehicle.sol";

contract VehicleOwner {
   address public owner;
   mapping(bytes32 => address) public vehicles;    event NewVehicleAdded(address indexed newVehicle, uint256 timestamp);    function VehicleOwner() public {
       owner = msg.sender;
   }    /**
   * @dev Throws if called by any account other than the owner.
   */
   modifier onlyOwner() {
       require(msg.sender == owner);
       _;
   }    function createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
       address newVehicle = new Vehicle(model, make, vin);
       vehicles[vin] = newVehicle;
       NewVehicleAdded(newVehicle, now);
   }
}

让我们一行一行地了解这些代码都干了些什么。

代码:pragma solidity 0.4.18;

分析:指定使用的编译器的版本。在这儿是0.4.18

代码:import“./Vehicle.sol”;*

分析:导入用于代表新车辆的智能合约。

代码:contract VehicleOwner {

分析:声明车主合约。

代码:

address public owner;
mapping(bytes32 => address) public vehicles;

分析:这是我们充实合约的地方。第一个变量调用所有者owner并表示创建VehicleOwner合约的任何给定实例的以太坊。

第二个称为vehicles车辆,将用于存储车主拥有的车辆清单,通过将其合约地址分配给提供的车辆识别号码。

代码:

function VehicleOwner() public {
owner = msg.sender;
}

分析:看看该函数与合约的名称是什么?这是因为这个特定的函数是一个构造函数。它唯一的功能是将调用该函数的地址指定为合约所有者。

代码:

modifier onlyOwner() {require(msg.sender == owner);_;
}

分析:使用此函数修饰符确保只有合约所有者才能访问合约。

看到_?这产生了稍后应用修改器modifier的函数体。

代码:

function createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
address newVehicle = new Vehicle(model, make, vin);
vehicles[vin] = newVehicle;
NewVehicleAdded(newVehicle, now);
}

分析:这在区块链上创建了一个新合约,这是一种新车辆的代表。车辆合约的构造函数接收三个属性:model,make和vin,后者可用于识别特定车辆。

创建新合约将返回其新分配的地址。在函数中,使用车辆的映射,我们将给定的vin绑定到该地址。最后,该函数广播一个新事件,传入地址和当前时间戳。

代码示例2

contract BasicIterator
{
address creator; // reserve one "address"-type spotuint8[10] integers; // reserve a chunk of storage for 10 8-bit unsigned integers in an arrayfunction BasicIterator(){
creator = msg.sender;
uint8 x = 0;//Section 1: Assigning valueswhile(x < integers.length) {
integers[x] = x;  
x++;
} }function getSum() constant returns (uint) {
uint8 sum = 0;
uint8 x = 0;//Section 2: Adding the integers in an array.while(x < integers.length) {
sum = sum + integers[x];
x++;
}return sum;
}// Section 3: Killing the contractfunction kill(){if (msg.sender == creator)
{
suicide(creator);
}
}

}

那么,让我们来分析吧。

第1节:赋值

在第一步中,我们赋值一个名为“integers”的数组,该数组接收10个8位无符号整数。我们这样做的方式是通过while循环。让我们来看看while循环中发生了什么。

while(x < integers.length) {integers[x] = x;x++;
}

请记住,我们已经为整数x赋值“0”。while循环从0变为integers.length。Integers.length是一个返回数组最大容量的函数。因此,如果我们确定一个数组将有10个整数,arrayname.length将返回一个值10。在上面的循环中,x的值从0到9(<10)并将其自身的值赋给整数数组也是如此。因此,在循环结束时,“integers”将具有以下值:

0,1,2,3,4,5,6,7,8,9。

第2节:添加数组内容

在getSum()函数内部,我们将添加数组本身的内容。它的方式是通过重复上面相同的while循环并使用变量“sum”来添加数组的内容。

第3节:终止合约

此功能终止合约并将合约中的剩余资金发回给合约创建者。

因此,这应该可以让你更好地了解solidity合约看起来是什么样子的以及你应该从那里获得什么样的代码细分类型。

5 以太和gas有什么区别?

这是你的开发人员应该熟悉的另一个核心概念。

以太是生态系统中的主要标记。这是激励玩家完成智能合约的动力。

gas是满足特定合约所需的燃料量。

当有人提交智能合约时,它具有预先确定的gas价值。合约执行时,合约的每一步都需要一定量的气体来执行。

这可能导致两种情况:

  • 所需的gas超过设定的极限。如果是这种情况,则合约状态将恢复到原始状态,并且所有气体都用完了。

  • 所需gas小于设定的极限。如果是这种情况,那么合约就完成了,剩余的gas将交给合约制定者。

以下是显示Wei的平均gas价格的图表。

image

gas是以太坊的生命线。

以太坊的所有交易均由矿工验证。基本上,他们必须手动将每个交易放入他们为了验证交易而挖掘的块中。为了换取他们的服务,他们收取了一定的交易费用。

通常,优先考虑高gas费的智能合约,因为矿工有机会在那里收取更高的费用。与比特币相比,收取的费用只是象征性的。

此图表比较了比特币与以太坊的交易费用。

image

实际上,正如你所看到的,在0.01以太的此次交易中,仅收取0.00000000000002以太的gas作为交易费用<$0.000001。

image

所以,正如你所看到的,以太坊的矿工只收取非常象征性的交易费用。显然收取交易费是矿工的次要角色,他们的主要工作是…好吧…挖矿!

6

问题和解答

提炼所有这些知识,让我们对你可以提出的一些具体问题。

1.问题:合约构造函数是如何定义的?
解答:构造函数被定义为一个函数,其名称与合约完全相同。

2.问题:在以太坊中记录的事件在哪里?它们的目的是什么?
解答:日志是合约发出的事件。这些是其交易收据的一部分以及在以太坊虚拟机(EVM)上执行的LOG opcodes操作码的结果。这些事件主要用于与前端通信或作为廉价的数据存储。因为交易的返回值只是交易的hash,区块链需要一些时间来达成共识并验证交易,通过将它们挖掘到新块中。通过发出事件并使前端收听(观察)这些事件,实现了有效的通信。

3.问题:mappings映射是什么?
解答:映射等同于其他编程语言中的字典或映射。它就是键值存储。

4.问题:修饰语purpose of modifiers的目的是什么?
解答:顾名思义,他们修改使用它们的功能。但是,在执行函数之前必须满足修饰符的条件。如果不是,那么修饰符会抛出错误。

5.问题:以太坊库libraries是什么?
解答:以太坊库有助于隔离整体逻辑。它们是一组使用以太坊虚拟机(EVM)在区块链上使用的软件包。所有库都可以在智能合约中部署和链接。它们可以通过DELEGATECALL调用。

6.问题:为什么在智能合约上调用方法需要花钱?
解答:当调用方法时,它们会改变区块链的状态。由于操作需要gas,因此需要花钱。

哪里可以找到优秀的开发人员?

在像LinkedIn和谷歌这样的“传统地方”很难找到优秀的开发者。但是,Reddit,GitHub等是寻找这些开发人员的好地方。

另外,还有一件事。由于这是一个利基人才市场,你应该对他们可能在你的城市甚至你自己的国家的事实持开放态度。应该为远程工作做好准备,特别是如果你正在寻找优秀开发者。

这可能是一种痛苦,但这是“质量超过数量”的必须面对的情况之一。

7

结论

当你面试以太坊开发人员时,你必须记住一件事。他们没有必要彻底回答所有问题。重要的是他们的热情以及他们是否能够专门回答与他们的工作和角色有关的问题。

无论如何,本指南应该帮助你了解特别的区块链开发人员。最后一句忠告,请不要和开发人员的质量妥协。请记住,质量永远胜过数量。

内容来源:公众号-区块链兄弟

原文发布于:博客园

作者: malii2

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国密即国家密码局认定的国产密码算法,即商用密码。国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法。具体包括SM1,SM2,SM3等,其中:SM2为国家密码管理局公布的公钥算法,其加密强度为256位。其它几个重要的商用密码算法包括:SM1,对称加密算法,加密强度为128位,采用硬件实现;SM3,密码杂凑算法,杂凑值长度为32字节,和SM2算法同期公布,参见《国家密码管理局公告(第 22 号)》;SMS4,对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如:商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。例如:在门禁应用中,采用SM1算法进行身份鉴别和数据加密通讯,实现卡片合法性的验证,保证身份识别的真实性。 安全是关系国家、城市信息、行业用户、百姓利益的关键问题。国家密码管理局针对现有重要门禁系统建设和升级改造应用也提出指导意见,加强芯片、卡片、系统的标准化建设。截止目前,国密门禁系统的升级的案例也逐渐增多,基于自主国产知识产权的CPU卡、CPU卡读写设备及密钥管理系统广泛受到关注。一些厂商如同方锐安在2009年推出CPU卡安全门禁系列产品,在2010年北京安博会上,该公司再次向业界展示出“御”系列CPU卡门禁系统、TF-DF6000系列安全门禁读卡器以及基于CPU卡技术的一卡通系统等主流产品和系统。这些厂商是全国推广的国密门禁产品的先驱者,使“御”系列CPU卡门禁系统广泛应用于政府、监狱、司法、军工企业和大型公共智能建筑等高安全领域。以太坊是互联网新时代的基础:内建货币与支付。用户拥有个人数据主权,且不会被各类应用监听或窃取数据。人人都有权使用开放金融系统。基于中立且开源的基础架构,不受任何组织或个人控制。以太坊主网于 2015 年上线,是世界头部的可编程区块链。和其它区块链一样,以太坊也拥有原生加密货币,叫作 ether (ETH)。 ETH 是一种数字货币, 和比特币有许多相同的功能。 它是一种纯数字货币,可以即时发送给世界上任何地方的任何人。 ETH 的供应不受任何政府或组织控制,它是去中心化且具稀缺性的。 全世界的人们都在使用 ETH 进行支付,或将其作为价值存储和抵押品。但与其它区块链不同的是,以太坊可以做更多的工作。 以太坊是可编程的,开发者可以用它来构建不同于以往的应用程序。这些去中心化的应用程序(或称“dapps”)基于加密货币与区块链技术, 因而值得信任,也就是说 dapps 一旦被“上传”到以太坊,它们将始终按照编好的程序运行。 这些应用程序可以控制数字资产,以便创造新的金融应用; 同时还是去中心化的,这意味着没有任何单一实体或个人可以控制它们。目前,全世界有成千上万名开发者正在以太坊上构建应用程序、发明新的应用程序,其中有许多现在已经可以使用:加密货币钱包:让你可以使用 ETH 或其他数字资产进行低成本的即时支付金融应用程序:让你可以借贷、投资数字资产去中心化市场:让你可以交易数字资产,甚至就现实世界事件的“预测”进行交易游戏:你可以拥有游戏内的资产,甚至可以由此获得现实收益以及更多,更多。以太坊社区是世界上最大最活跃的区块链社区。它包括核心协议开发者、加密经济研究员、密码朋克、挖矿组织、ETH 持有者、应用开发者、普通用户、无政府主义者、财富 500 强公司,以及现在的你。没有公司或中心化的组织能够控制以太坊。 一直以来,以太坊由多元化的全球性社区贡献者来协同进行维护和改善,社区成员耕耘于以太坊的方方面面,从核心协议到应用程序。 这个网站,就像以太坊的其他部分一样,是由一群人共同构建的,并将持续构建下去。本课程定制符合国家标准的以太坊

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值