United KingdomToptal Member Since February 22, 2019
他是一名软件工程师和企业家,拥有伦敦帝国理工学院理论物理学硕士学位. 他擅长用网络构建全栈系统, desktop, and mobile apps, microservices, and external integrations. fracimazrique与他人共同创立了一家国际营销机构和三家开发工具的初创公司, cybersecurity, and AI. fr rique定期发布TypeScript包,并为其他开源项目做出贡献.
United KingdomToptal Member Since September 6, 2017
Fabrice is a cloud architect, DevOps engineer, 拥有20多年经验的软件开发人员. 他为像Armedia这样的客户工作, Topps, and MyDocSafe, and specializes in designing secure, highly available, scalable, 以及基于AWS和Kubernetes的经济高效的解决方案. 法布里斯在过去也担任过管理职位,如团队领导和发布经理. 他非常热衷于自动化、IaC和CI/CD,他可以用Python编写代码.
As a veteran full-stack developer, John在加密货币方面的经验非常广泛和深入, IoT, blockchain, and mobile projects. 他的基础是C和c++,有多年的经验 .NET. 直到2009年,他的工作经历都是在纽约和纽约地区. 自2009年以来,他一直在国外生活和远程工作. 约翰在后台有一个个人研究项目, 涉及bb0和深度神经网络.
以太坊革命性的分布式应用程序(dapp), 有时“ĐApp”)模式准备在支付方面打破现状, communications, the IoT industry, and even community governance. 基于智能合约技术的“不可阻挡的应用”概念备受瞩目,这使得利用它变得更加有利可图. But with its complexity and recency, 在招聘以太坊开发人员时,很难知道从哪里开始.
没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. We will continue to use Toptal. 作为一家初创公司,它们是我们的秘密武器.
与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.
Ryan Rockefeller, CEO
Radeeus
Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, immersed himself in our industry, blended seamlessly with our team, understood our vision, and produced top-notch results. Toptal使与高级开发人员和程序员的联系变得非常容易.
Toptal让寻找合格的工程师变得轻而易举. We needed an experienced ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.
At Toptal, 我们对以太坊开发人员进行了彻底的筛选,以确保我们只为您匹配最优秀的人才. Of the more than 200,每年有5000人申请加入Toptal网络, fewer than 3% make the cut. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
我可以在48小时内通过Toptal雇佣以太坊开发人员吗?
取决于可用性和进度, 您可以在注册后48小时内开始与以太坊开发人员合作.
total以太坊开发者的无风险试用期是什么?
我们确保您和您的以太坊开发人员之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.
Share
如何聘请优秀的以太坊开发人员
以太坊开发的新范式带来了许多可移动的部分. Smart contracts, distributed applications (or “dapps”, sometimes stylized “ĐApps”), the “ether” cryptocurrency, 一个世界范围的虚拟机,其中的工作是用“气体”来衡量的——所有这些都是对基本的底层区块链技术的补充.
对大多数人来说,驾驭这一切根本不是第二天性, even from a user standpoint. 也就是说,一个非专业人士怎么能对一个潜力做出合理的评估呢 Ethereum developer candidate?
首先,让我们了解一些基本的以太坊背景. After that, 我们将进入以太坊相关职位面试中可能出现的问题和答案.
Who’s Driving Ethereum?
2013年Vitalik Buterin发明了以太坊,2014年它获得了ICO的支持,2015年它上线了. 这项技术还很年轻,但以太坊的发展是一个令人兴奋的前沿. At the time of writing, 一般来说,区块链工程师并不多, 以太坊开发人员就更少了.
以太坊专家之间的互动推动了这项技术的发展.
在以太坊历史的早期,在某些情况下期望它似乎是不合理的 be 能够雇佣真正的专家:那些组织过聚会的人, helped startups as advisors, successfully completed an ICO, etc.
That being the case, 重要的是,当代以太坊开发人员致力于成为真正的专家. 最好以有意义的方式将他们与当前的以太坊专家联系起来. 认识当地bbb社区的人的工程师, or attends meetups or conferences, 或者在在线以太坊社区有良好声誉的人——他们可能对这个主题有合适的热情,并且有足够的外部支持来有效地为你的项目开发以太坊区块链技术.
But with a few key concepts in mind, 你会发现,就以太坊在哪里以及如何在你的项目中使用以及它最终可能不适合的地方进行明智的讨论要容易得多.
The Ethereum Blockchain
就像比特币和许多其他加密货币一样, 以太坊项目是区块链技术的实现.
区块链是一个分布式数据库. It consists of sets of data, called blocks, 每个块包含对前一个块的引用, 除了它的实际数据负载和时间戳之外. 对前一个块的引用将这些块连接在一起,形成链. 区块的真正组成部分因实现而异:以太坊的区块并不遵循与比特币完全相同的格式, for example.
The key points are that by design, 区块链是不可改变的:每个新区块都链接到前一个区块的永久状态, 它的历史可以一直追溯到第一个街区. 此外,每个账户的余额都是公开可见的.
添加事务意味着网络中将暂时存在区块链的多个副本. 同步这些副本的效果是, in the end, one longest chain emerges, and consensus is reached. 基于这些属性与民主机制达成共识, 区块链可以保证其资产的完整性.
尽管这个数字看起来很大,但还不到比特币使用量的一半. To be precise, 以太坊使用了比特币目前年能耗的34%, which currently is 51 TWh. Those numbers are already comparable; meanwhile, side-effects like this are already a reality:
蒙古一家煤炭驱动的比特币矿场的现有数据显示,该矿场要为8亿美元的比特币负责,000 to 13,每枚比特币可排放1万公斤二氧化碳, and 24,000 to 40,000 kg per hour. 推特用户Matthias Bartosik指出了类似的估计:欧洲汽车的平均排放量为0.每行驶一公里产生1191公斤二氧化碳. For every hour, 比特币矿场排放的二氧化碳至少相当于203吨以上,000 car kilometers traveled.
Lester Coleman, 比特币价格飙升导致电力消耗飙升:博客质疑环境影响, November 2017
使用工作量证明来达成共识的区块链的大量能源使用是将以太坊转向另一种算法的计划的动机之一: proof-of-stake. While that resolution would be bright for the world’s ecology该算法计划用于以太坊v1的正式发布.0, called Ethash, is still 其原始工作量证明算法的扩展. 另一方面,权益证明计划用于以太坊v1.1.
在权益证明方法中达成共识, 下一个开采区块的节点是基于随机性和矿工权益的大小来选择的. In effect, 下一个矿工可以是系统中的任何节点, 但持有更多硬币的人更有可能获胜.
address public owner;
mapping(bytes32 => address) public vehicles;
在这里,我们定义了公共变量,或者契约的属性. The first one, called owner,表示创建任何给定实例的以太坊地址 VehicleOwner contract. The second one, called vehicles,将用于存储该公司拥有的车辆列表 owner,将合约地址分配给所提供的车辆识别号码.
function VehicleOwner() public {
owner = msg.sender;
}
注意这个函数的特殊命名. It’s the contract constructor, named exactly like the contract, written in upper camel case, or Pascal case—i.e.在美国,每个复合词都以大写字母开头. 这个构造函数所做的唯一事情就是分配调用函数i的地址.e. 创建合同的人——作为合同的所有者.
它们可以用作与前端通信的手段,也可以用作廉价的数据存储. Basically, 事务的返回值只是散列的事务, 因为区块链需要一点时间来达成共识并验证交易, by mining them into new blocks. 通过发出事件并让前端监听(观察)这些事件, efficient communication is achieved.
This question is particularly tricky. 问题是,对合约的任何更新都会产生一个具有新地址的新智能合约. The old address and contract persist. 到目前为止,还没有单一的最佳实践来处理这个问题. However, there are many approaches.
One rather elegant solution was described by Aigang. They issued a contract register, 把所有地址存储在他们的合同里, but returned only the latest one. 然后再给他们的合同打电话, 他们将从登记处获得最近的地址.
不过,还有一个问题:数据是与合约一起存储的. 解决方案是将数据保存在一个单独的合同中. 显然,这种方法有其局限性, but it seems manageable, 尤其是在发育的早期阶段之后.
But there’s a simpler approach. 这里的主要思想是简单地使用新的契约. 显然又有数据存储的问题. 最后的方法应该适合项目的实际需要.
Explain Ethereum libraries.
库用于在智能合约中分离关注点. 特别是,它们隔离了逻辑的完整部分. 库没有实例化,也不能存储数据. Their code is called using DELEGATECALL 在调用契约的上下文中.
就好像库中的代码是调用它的智能合约的一部分. 主要区别在于,它实际上不是合约的一部分,并且可以被其他合约重用. 使用库还有助于降低合约复杂性和gas成本. It pays off!
以太坊智能合约如何与外界通信?
智能合约不能与外部世界通信, by definition, 因为所有节点都需要能够访问所有处理过的数据(或派生值),以验证区块链的完整性. 外部世界的数据不是不可变的,当然也不是那样可预测的.
Since by convention, 我们倾向于用以太币进行交易, 这种情况相当于以太有18个小数点. That magic number, 18, 可能会变成以太坊代币的十进制标准. 大多数客户机寻找公共变量 decimals 在以太中表示持有的整数值. 虽然不是强制性的,但ERC20令牌经常实现它:
uint8 public constant decimals = 18;
What are wei, szabo, finney?
这些是以密码朋克命名的以太币, researchers, and developers of cryptocurrencies. “魏”是以太的最低单位,也被称为以太的基本单位. 事实上,以太被表示为1e18(1的五分之一)wei,即1000,000,000,000,000,000 wei.
萨博和芬尼的面额相似,但更高:1e12(1万亿)和1e15(1千万亿)威, respectively. Note that there are also other denominations, named similarly, e.g.在美国,一香等于1e9(十亿)卫,但你也可以看到它被称为 Gwei (giga-wei).
When sending out a transaction, in addition to the value in ether, 发送方指定交易中使用的最大gas量, as well as the gas price. 最终成本由简单公式计算 transaction cost = gas × gas price. 交易费用用以太币支付给矿工.
What’s Your Ethereum Stack?
关于雇用以太坊开发人员的简明指南已经接近尾声了. You, 招聘人员——以及合适的候选人——应该清楚地了解以太坊区块链的机制. Most importantly, 您应该意识到为传统软件设计软件之间的区别, 中心化系统vs去中心化区块链.
想想比特币和以太坊是如何设计成允许直接交易的, 网络参与者之间的无信任交易. Due to leveraging proof-of-work, among other algorithms, for reaching consensus, 这些平台努力避免依赖可信的第三方.
这对打算在b区块链上发布的应用程序的设计有很大的影响. Thinking of Ethereum application architecture, 请记住,区块链接管了传统的许多责任, centralized servers, but it also brings changes. 如果您计划通过b区块链提供的服务或产品以某种方式与您的公司绑定, 然后你仍然在制作集中的应用程序.
This presents two challenges. 第一个是制定一个计划,允许用户从您提供的智能合约中受益, 而不必提及贵公司. 智能合约应该允许双方进行某种形式的交易, involving cryptocurrency, stocks, bartering, etc. 第二个挑战是找到业务“in”i.e. how to make money with your products!
A success story for this is EtherDelta,一个真正去中心化的交易平台. 他们的服务与典型的交易所形成鲜明对比, 哪些处理加密货币,但实际上是中心化的平台,交易发生在链下. 在EtherDelta上下单不需要以太坊交易, but trading does, 这样它实际上利用了区块链,使用起来更安全.
另一方面,对于一些企业来说,把所有东西都放在bbb上是没有意义的. In particular, 在许多情况下,敏感数据应该安全存储并保密, this is even a legal requirement.
同样重要的是要注意,以太坊上的每笔交易都相当昂贵和缓慢. 即使交易得到验证,最好还是等待几个区块被挖掘出来. 原因是最近的块可能会被识别为不是规范区块链的一部分, 然后,已经挖掘的交易被还原. That process is called chain reorganization, and it happens quite often.
此外,区块链上的代码不能单独与外部服务通信. For those reasons, 对大多数企业来说,让所有的业务运营保持在一个b区块链上可能太难了. 虽然智能合约的独立性和开放性至关重要, 将您的SaaS和以太坊ĐApps作为相关合同的最佳接口并没有错! 这似乎没有问题,只要可以构建其他接口而不必依赖于您的业务.
聪明地对待智能合约开发人员
智能合约,包括作为示例的智能合约,在区块链上是公开的. 商业动机驱动新软件的创建, 但合适的以太坊工程师将设计智能合约,使其与公众保持一致, transparent nature of blockchains, 以免他们无法将集中式逻辑转换为区块链. There are also the limitations of smart contracts to be taken into account. In some cases, even, 现在完全采用区块链还为时过早,因为更多的变化正在进行中.
In the end, 你会想要雇佣一个以太坊区块链开发人员,他也有很好的商业头脑,因为他们会编程. 以太坊应用程序开发的世界是一个疯狂的世界,所以更有理由雇佣你能找到的最可靠和最专业的开发人员.
Further Ethereum Resources to Explore
我们推荐以下优质公共资源, 详细研究各种以太坊相关主题, and experiment with different tools:
Open Zeppelin library, a collection of secure, tested, and community-audited smart contracts, for use as building blocks, integrated with the Truffle framework