Ethereum

Hire the Top 3% of 自由以太坊开发者

Toptal是一个面向顶级以太坊开发者的市场, engineers, programmers, coders, architects, and consultants. 顶级公司和初创公司选择Toptal以太坊自由职业者来完成他们的关键任务软件项目.

无风险试用,满意才付款.

雇佣自由以太坊开发人员和工程师

Belma Gutlic

自由以太坊开发者

CroatiaToptal Member Since April 24, 2019

Belma拥有软件工程硕士学位,自2015年以来一直是全栈开发人员. 作为一个狂热的加密爱好者,她决定完全专注于区块链的开发. 她在创建dapp方面已经有了丰富的经验,其中大多数都是使用以太坊(公共或私有网络)构建的。. Belma是一个优秀的团队成员,花时间理解项目并以最好的方式交付.

Show More

Frédérique Mittelstaedt

自由以太坊开发者

United KingdomToptal Member Since February 22, 2019

他是一名软件工程师和企业家,拥有伦敦帝国理工学院理论物理学硕士学位. 他擅长用网络构建全栈系统, desktop, and mobile apps, microservices, 以及外部集成. fracimazrique与他人共同创立了一家国际营销机构和三家开发工具的初创公司, cybersecurity, and AI. fr rique定期发布TypeScript包,并为其他开源项目做出贡献.

Show More

David Mihal

自由以太坊开发者

United StatesToptal Member Since January 8, 2017

大卫成年后一直在开发网站和网络应用程序. As a software engineer, 他曾在许多不同的软件公司工作过,从早期创业公司到谷歌. David对许多web框架和环境都很有经验, 但他特别喜欢使用Meteor进行开发.js. 他理解高质量代码的重要性,以及满足进度要求的必要性.

Show More

Nikola Tanković

自由以太坊开发者

CroatiaToptal Member Since April 13, 2018

Nikola是一名软件架构师、研究员和软件工程师. 作为一名大学助理教授,拥有博士学位.D. in computer science, 尼古拉对解决问题有很强的分析能力, 哪些会产生实际有效的解决方案. Nikola的沟通和协调技能是在他6年的CTO和顾问生涯中培养起来的,他曾在不同的业务领域从事过各种软件工程项目.

Show More

Fabrice Triboix

自由以太坊开发者

United KingdomToptal Member Since September 6, 2017

Fabrice是一名云架构师, DevOps engineer, 拥有20多年经验的软件开发人员. 他为像Armedia这样的客户工作, Topps, and MyDocSafe, 并专门从事安全设计, highly available, scalable, 以及基于AWS和Kubernetes的经济高效的解决方案. 法布里斯在过去也担任过管理职位,如团队领导和发布经理. 他非常热衷于自动化、IaC和CI/CD,他可以用Python编写代码.

Show More

John R. Kosinski

自由以太坊开发者

ThailandToptal Member Since February 9, 2016

作为一个资深的全栈开发人员, John在加密货币方面的经验非常广泛和深入, IoT, blockchain, and mobile projects. 他的基础是C和c++,有多年的经验 .NET. 直到2009年,他的工作经历都是在纽约和纽约地区. 自2009年以来,他一直在国外生活和远程工作. 约翰在后台有一个个人研究项目, 涉及区块链和深度神经网络.

Show More

卡瓦略

自由以太坊开发者

BrazilToptal Member Since August 2, 2019

Faister是一位经验丰富的开发人员和系统分析师,现在专门从事TypeScript和JavaScript全栈开发. 他熟悉多种语言和平台,最近致力于使用Node开发后端应用程序.js, Express.js和MongoDB,以及使用React的前端应用程序. Faister还拥有区块链技术方面的一些经验,并拥有应用数学硕士学位.

Show More

现在注册以查看更多资料.

Start Hiring

A Hiring Guide

雇佣一个伟大的以太坊开发人员指南

以太坊革命性的分布式应用程序(dapp), 有时“ĐApp”)模式准备在支付方面打破现状, communications, the IoT industry, 甚至社区管理. 基于智能合约技术的“不可阻挡的应用”概念备受瞩目,这使得利用它变得更加有利可图. 而是因为它的复杂性和时代性, 在招聘以太坊开发人员时,很难知道从哪里开始.

Read Hiring Guide
Trustpilot
THE TOPTAL ADVANTAGE

在无风险试用后,98%的Toptal客户选择雇用我们的人才.

Toptal的筛选和匹配过程确保卓越的人才与您的精确需求相匹配.

Start Hiring
Toptal in the press

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对程序员的需求在不断增加,但Toptal对自己近乎常春藤联盟级别的审查感到自豪.

Our clients
为游戏制作应用程序
Conor Kenney
为游戏制作应用程序
构建一个跨平台的应用程序,在全球范围内使用
Thierry Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
引领数字化转型
Elmar Platzer
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
What our clients think
Clients Rate 以太坊开发者总数4.4 / 5.0截至2023年12月22日,平均有186条评论
Testimonials

没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.

Brantley Pace, CEO & Co-Founder

Tripcents

我对我们与Toptal的合作经验非常满意. 和我一起工作的专业人员在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.

Paul Fenley, Director

K Dunn & Associates

与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.

Ryan Rockefeller, CEO

Radeeus

Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.

Jason Kulik,联合创始人

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.

斯图尔特·波克尼校长

现场专用软件解决方案

我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

Photo Kharma

Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.

André Fischer, CTO

POSTIFY

我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.

Derek Minor, Web开发高级副总裁

Networld Media Group

Toptal的开发人员和架构师都非常专业,也很容易共事. 他们提供的解决方案价格合理,质量上乘,缩短了我们的发行时间. Thanks again, Toptal.

Jeremy Wessels, CEO

Kognosi

我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. 我们强烈推荐Toptal,因为它可以快速无缝地找到高素质的人才.

Ryan Morrissey, CTO

应用商业技术有限责任公司

我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.

Pietro Casoar, CEO

Ronin Play Pty Ltd

与Toptal合作是一次很棒的经历. Prior to using them, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!

George Cheng, CEO

Bulavard, Inc.

作为一名Toptal合格的前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, Toptal是我唯一愿意推荐的地方. Toptal的所有候选人都是精英中的精英. Toptal是我在近5年的专业在线工作中发现的性价比最高的网站.

Ethan Brooks, CTO

Langlotz Patent & Trademark Works, Inc.

In Higgle's early days, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

Toptal将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比Toptal更好的了.

Laurent Alis, Founder

Livepress

Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

Jeff Kelly, Co-Founder

Concerted Solutions

我们需要一些Scala的短期工作,Toptal在24小时内为我们找到了一位优秀的开发人员. 这在其他平台上是不可能实现的.

Franco Arda,联合创始人

WhatAdsWork.com

Toptal为快速发展和规模化的企业提供不妥协的解决方案. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.

Greg Kimball,联合创始人

nifti.com

如何通过Toptal雇佣以太坊开发者

1

与我们的行业专家交谈

Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
2

与精心挑选的人才一起工作

几天之内,我们将为您的项目介绍合适的以太坊开发人员. 平均匹配时间在24小时以下.
3

绝对合适

与您的新以太坊开发人员一起试用一段时间(只在满意的情况下付款), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

在我们的人才网络中访问大量熟练的开发人员,并在48小时内雇用最优秀的3%.

FAQs

  • total以太坊开发者有何不同?

    At Toptal, 我们对以太坊开发人员进行了彻底的筛选,以确保我们只为您匹配最优秀的人才. Of the more than 200,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.

  • 我可以在48小时内通过Toptal雇佣以太坊开发人员吗?

    取决于可用性和进度, 您可以在注册后48小时内开始与以太坊开发人员合作.

  • total以太坊开发者的无风险试用期是什么?

    我们确保您和您的以太坊开发人员之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.

Share
Ethereum

如何聘请优秀的以太坊开发人员

以太坊开发的新范式带来了许多可移动的部分. Smart contracts, 分布式应用程序(dapps), 有时格式化为" ĐApps "), “以太”加密货币, 一个全球范围的虚拟机,其中的工作是用“气体”来衡量的——所有这些都是对基本的底层区块链技术的补充.

对大多数人来说,驾驭这一切根本不是第二天性, 甚至从用户的角度来看. 也就是说,一个非专业人士怎么能对一个潜力做出合理的评估呢 Ethereum developer candidate?

首先,让我们了解一些基本的以太坊背景. After that, 我们将进入以太坊相关职位面试中可能出现的问题和答案.

Who’s Driving Ethereum?

2013年Vitalik Buterin发明了以太坊,2014年它获得了ICO的支持,2015年它上线了. 这项技术还很年轻,但以太坊的发展是一个令人兴奋的前沿. At the time of writing, 总的来说,区块链工程师并不多, 以太坊开发人员就更少了.

以太坊专家之间的互动推动了这项技术的发展.

在以太坊历史的早期,在某些情况下期望它似乎是不合理的 be 能够雇佣真正的专家:那些组织过聚会的人, 作为顾问帮助创业公司, 成功完成ICO, etc.

That being the case, 重要的是,当代以太坊开发人员致力于成为真正的专家. 最好以有意义的方式将他们与当前的以太坊专家联系起来. 了解当地区块链社区的工程师, 或者参加聚会或会议, 或者在在线以太坊社区有良好声誉的人——他们可能对这个主题有合适的热情,并且有足够的外部支持来有效地为你的项目开发以太坊区块链技术.

Key Ethereum Concepts

像以太坊这样的新技术, 人们倾向于用它来解决一系列错误的问题. 最好深入咨询有经验的以太坊开发人员来解决这个问题, 在决定是否雇佣整个团队之前. 毕竟,目前以太坊开发人员的工作比以太坊开发人员更丰富.

但要记住几个关键概念, 你会发现,就以太坊在哪里以及如何在你的项目中使用以及它最终可能不适合的地方进行明智的讨论要容易得多.

以太坊区块链

就像比特币和许多其他加密货币一样, 以太坊项目是区块链技术的实现.

区块链是一个分布式数据库. 它由数据集组成, called blocks, 每个块包含对前一个块的引用, 除了它的实际数据负载和时间戳之外. 对前一个块的引用将这些块连接在一起,形成链. 区块的真正组成部分因实现而异:以太坊的区块并不遵循与比特币完全相同的格式, for example.

关键是通过设计, 区块链是不可改变的:每个新区块都链接到前一个区块的永久状态, 它的历史可以一直追溯到第一个街区. 此外,每个账户的余额都是公开可见的.

增加交易意味着网络中将暂时存在多个区块链副本. 同步这些副本的效果是, in the end, 一条最长的链出现了, 大家达成了共识. 基于这些属性与民主机制达成共识, 区块链可以保证其资产的完整性.

对于所有以太坊开发人员来说,没有必要彻底了解每个区块的内容,也没有必要了解以太币加密货币背后的密码学. 但是,当您希望实现新协议或为其他开发人员创建工具时, 聘请具有密码学背景和/或对底层分布式账本技术非常熟悉的以太坊开发人员将是非常有意义的.

In the end, 如果您正在寻找去中心化的解决方案,而不是工作但集中的解决方案, 然后你的最终产品应该与你所利用的技术相一致. 你需要雇佣一个以太坊开发人员,他可以向你解释, with clarity, 甚至是以太坊架构中最复杂的方面.

Proof of Consensus?

因为区块链网络上的每个真实节点都有区块链的副本, 新的交易块需要在节点之间同步, a few problems arise:

  • 如何防止攻击者用无效块淹没网络
  • 如何维护一个完整的交易历史,使网络中的节点将其视为事实来源
  • 如何将重复消费的风险降至最低

任何值得雇佣的以太坊开发人员都可以对上述问题发表评论,以及在以太坊模型中如何处理这些问题.

但这并不是唯一的问题. 以太坊目前使用a proof-of-work Dagger-Hashimoto算法来达成共识. 但为什么这是个问题呢?

事实证明,区块链技术中的工作量证明算法存在一个重大缺陷:它们非常昂贵,对环境有很强的影响. As of February 2018, 以太坊功耗 was closing in on 多米尼加共和国 超过了其他约150个国家. 事实上,自2017年6月以来,它已经增长了约200%,达到近15太瓦时.

尽管这个数字看起来很大,但还不到比特币使用量的一半. To be precise, 以太坊使用了比特币目前年能耗的34%, 目前是51太瓦时. 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吨以上,汽车行驶公里.
Lester Coleman, 比特币价格飙升导致电力消耗飙升:博客质疑环境影响, November 2017

使用工作量证明来达成共识的区块链的大量能源使用是将以太坊转向另一种算法的计划的动机之一: proof-of-stake. 虽然这个决议是 光明为世界生态该算法计划用于以太坊v1的正式发布.0,称为Ethash,是静止的 其原始工作量证明算法的扩展. 另一方面,权益证明计划用于以太坊v1.1.

在权益证明方法中达成共识, 下一个开采区块的节点是基于随机性和矿工权益的大小来选择的. In effect, 下一个矿工可以是系统中的任何节点, 但持有更多硬币的人更有可能获胜.

这个基本算法有一些修改,比如在硬币的年龄中称重. 但它被批评为对网络的完整性不太安全, 因为节点缺乏诚实行事的动机.

为了回答这个问题,Buterin(以太坊的发明者,你会记得) 建议一个惩罚性的版本 被称为Slasher的权益证明算法. 如果这样做,任何不诚实的节点实际上都会损失硬币.


以太坊问答

请记住,招聘既是艺术也是科学: 开发者没有必要完美地回答每一个问题. 重要的是一个特定的问题在多大程度上适用于手头的具体工作或项目.

Now, 为本招聘指南的目的, 我们将提供一个智能合约的简短示例, 概述了以太坊应用程序中使用的一些常见结构. 该示例基于中使用的草图 区块链-物联网开源项目.

以太坊专注于智能合约,这是ĐApps的基础. 智能合约通常用Solidity语言编写.

所引用的智能合约被写入 Solidity这是智能合约中最流行的语言. 它编译成以太坊虚拟机(EVM)字节码. 要编译该契约,需要一个编译器 Solc-js-请参阅本文末尾以获得其他此类工具和资源.

对于下面的合约,解释每一行Solidity代码的作用:

pragma solidity 0.4.18;

import "./Vehicle.sol";


合同车主{
    address public owner;
    mapping(bytes32 => address) public vehicles;

    事件newvehicleded(地址索引newVehicle, uint256 timestamp);

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

    /**
    如果被所有者以外的任何帐户调用,则抛出@dev.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    函数createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
        地址newVehicle =新车辆(型号,品牌,vin);
        车辆[vin] = newVehicle;
        NewVehicleAdded (newVehicle现在);
    }
}

让我们逐行浏览代码.

pragma solidity 0.4.18;

这一行只指定了编译器的版本,在本例中, 0.4.18.

import "./Vehicle.sol";

通过这一行,我们导入了一个用于表示新车的智能合约.

合同车主{

That line opens the VehicleOwner 合同定义,在最后一行结束.

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

在这里,我们定义了公共变量,或者契约的属性. The first one, called owner,表示创建任何给定实例的以太坊地址 VehicleOwner contract. The second one, called vehicles,将用于存储该公司拥有的车辆列表 owner,将合约地址分配给所提供的车辆识别号码.

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

注意这个函数的特殊命名. 它是契约构造函数, 名字和合同一模一样, 用骆驼大写写, or Pascal case—i.e.在美国,每个复合词都以大写字母开头. 这个构造函数所做的唯一事情就是分配调用函数i的地址.e. 创建合同的人——作为合同的所有者.

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

这个特定的函数修饰符用于限制只有契约的所有者才能访问. 下划线表示稍后将对其应用修饰符的函数体. If the require 条件通过,则执行函数调用.

    函数createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
        地址newVehicle =新车辆(型号,品牌,vin);
        车辆[vin] = newVehicle;
        NewVehicleAdded (newVehicle现在);
    }

合同的公共功能, 修改人只能访问合同所有人的地址, 在区块链上创建一个新的合约——一个车辆的代表. 车辆契约的构造函数接收三个属性: model, make, and vin,后者可用于识别该特定车辆.

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

现在您已经对上面的脚本有了一个概述, 在雇用以太坊开发人员之前,您可以更好地询问以下关于在Solidity中编程的问题:

契约构造函数是如何定义的?

构造函数定义为一个函数,命名与契约完全相同.

以太坊中记录的事件在哪里?

由契约发出的事件 are the logs. 根据上下文,这些术语可以互换使用. 它们是交易收入的一部分,是交易的结果 LOG EVM上执行的操作码. 出于优化的原因, 它们与区块链一起记录, 但它们并不存储在区块链本身.

使用事件的目的是什么?

它们可以用作与前端通信的手段,也可以用作廉价的数据存储. Basically, 事务的返回值只是散列的事务, 因为区块链需要一些时间来达成共识并验证交易, 将它们开采成新的区块. 通过发出事件并让前端监听(观察)这些事件, 实现了高效的沟通.

修饰语的目的是什么?

修饰符类似于修饰符:它们修改使用它们的函数体, 在执行原始函数体之前,必须满足修饰符的条件. 如果不满足,则修饰符抛出错误.

What are mappings?

映射是以太坊中的数据类型,类似于 hash tables. Mappings are 不过和哈希表不完全一样:它们的值不存储在它们内部.

在对象中存储数据需要定义 struct 类型(架构、接口). 就交易成本而言,存储过程是最昂贵的操作之一.

为什么更小的智能合约更受青睐?

紧凑代码结构的原因在软件工程中很常见. 简单,结构良好的代码 cyclomatic complexity 是否更容易理解、重用、测试和维护.

Creating large, 单一契约不是最好的主意, 因为区块和交易都有gas限制. 基本上,块只能存储有限数量的数据. 这个限制可能只是阻止你的合约迁移到区块链.

在以太坊上创建合约基本上是向一个空地址进行交易, 以合同的EVM代码为数据. 对于每笔交易,发送方指定分配的gas数量和gas单价. 在部署智能合约时,每个代码结构都有gas成本.

用于进行交易和部署合约的客户端软件应该能够防止迁移任何超出限制的合约. 然而,预测与一笔交易相关的确切最终成本并不容易. 如果供气量不足以支付费用, 计算停止,用过的气体不返回.

(The Ethereum yellow paper 有收费清单供你参考吗.)

如何更新智能合约?

这个问题特别棘手. 问题是,对合约的任何更新都会产生一个具有新地址的新智能合约. 旧的地址和合同仍然有效. 到目前为止,还没有单一的最佳实践来处理这个问题. 然而,有许多方法.

一个相当优雅的解决方案是 described by Aigang. 他们签发了一份合同登记簿, 把所有地址存储在他们的合同里, 但只返回了最新的一个. 然后再给他们的合同打电话, 他们将从登记处获得最近的地址.

不过,还有一个问题:数据是与合约一起存储的. 解决方案是将数据保存在一个单独的合同中. 显然,这种方法有其局限性, 但这似乎是可控的, 尤其是在发育的早期阶段之后.

But there’s a simpler approach. 这里的主要思想是简单地使用新的契约. 显然又有数据存储的问题. 最后的方法应该适合项目的实际需要.

解释以太坊库.

库用于在智能合约中分离关注点. 特别是,它们隔离了逻辑的完整部分. 库没有实例化,也不能存储数据. 他们的代码叫做使用 DELEGATECALL 在调用契约的上下文中.

就好像库中的代码是调用它的智能合约的一部分. 主要区别在于,它实际上不是合约的一部分,并且可以被其他合约重用. 使用库还有助于降低合约复杂性和gas成本. It pays off!

以太坊智能合约如何与外界通信?

智能合约不能与外部世界通信, by definition, 因为所有节点都需要能够访问所有处理过的数据(或派生值),以验证区块链的完整性. 外部世界的数据不是不可变的,当然也不是那样可预测的.

这种限制的解决方法是由oracle提供的. oracle有时是一个软件 embedded-监听特定的区块链事件,并通过将外部世界的数据发送到区块链上的智能合约来进行响应.

问题仍然是,为了让区块链验证这样的交易, 必须信任神谕. A more elegant solution, 就像区块链本身一样:单个预言机是不可信的, 但是一群预言者促进了对处理过的数据的共识.

提供oracle服务的两家著名公司是 smartcontract.com and Oraclize.

什么是整数除法,为什么它对智能合约开发很重要?

整数除法是从两个操作数中得到整数商的算术运算. 结果的分数被丢弃,结果本身被“截断到零”,即.e. 与浮点除法的结果进行比较,舍入到最接近的整数. For example:

10 / 3 = 3

考虑一下它在现实世界中的应用:

uint totalShares = 99;
uint stakeholders = 5;
uint sharesPerStakeholder = totalShares / stakeholders; // 19
uint totalSharesLeveled = sharesPerStakeholder * stakeholders; // 95
uint remainder = totalShares - totalSharesLeveled; // 4

Solidity中的算术运算是在以太币的最低面额上完成的,称为 wei.

1 ether = 1 wei * 10**18 //或1e18 wei

Since by convention, 我们倾向于用以太币进行交易, 这种情况相当于以太有18个小数点. That magic number, 18, 可能会变成以太坊代币的十进制标准. 大多数客户机寻找公共变量 decimals 在以太中表示持有的整数值. 虽然不是强制性的,但ERC20令牌经常实现它:

Uint8 public constant decimal = 18;

魏,萨博,芬尼是什么?

这些是以密码朋克命名的以太币, researchers, 以及加密货币的开发者. “魏”是以太的最低单位,也被称为以太的基本单位. 事实上,以太被表示为1e18(1的五分之一)wei,即1000,000,000,000,000,000 wei.

萨博和芬尼的面额相似,但更高:1e12(1万亿)和1e15(1千万亿)威, respectively. 注意,还有 other denominations, named similarly, e.g.在美国,一香等于1e9(十亿)卫,但你也可以看到它被称为 Gwei (giga-wei).

三种主要面额背后的特殊琐事:

  • 戴伟是b-money的发明者,这是比特币的灵感来源之一.
  • Hal Finney是第一个比特币用户(除了作者)和第一个比特币交易的接收者.
  • Nick Szabo is a 智能合约研究员.

乙醚和气体的关系是什么?

Gas是以太坊资源利用的成本,即.e.即在EVM上执行交易的成本. Obviously, 简单的转账将比将智能合约迁移到区块链的成本更低, 但这两种交易的处理成本都是以天然气为单位表示的.

在以太坊区块链上执行交易的价格将随着时间的推移保持不变. 一个gas单位的价格不与以太币的价值绑定,而是用以太币表示. 换句话说,交易成本不应该和以太币一起上涨.

发送交易时, 除了以太币的价值之外, 发送方指定交易中使用的最大gas量, 还有油价. 最终成本由简单公式计算 交易成本=天然气×天然气价格. 交易费用用以太币支付给矿工.


你的以太坊栈是什么?

关于雇用以太坊开发人员的简明指南已经接近尾声了. You, 招聘人员——以及合适的候选人——应该清楚地了解以太坊区块链的机制. Most importantly, 您应该意识到为传统软件设计软件之间的区别, 中心化系统vs去中心化区块链.

想想比特币和以太坊是如何设计成允许直接交易的, 网络参与者之间的无信任交易. 由于利用工作量证明, among other algorithms, for reaching consensus, 这些平台努力避免依赖可信的第三方.

这对打算在区块链上发布的应用程序的设计有很大的影响. Thinking of 以太坊应用架构, 请记住,区块链接管了传统的许多责任, centralized servers, 但它也带来了变化. 如果您计划通过区块链提供的服务或产品以某种方式与您的公司绑定, 然后你仍然在制作集中的应用程序.

这带来了两个挑战. 第一个是制定一个计划,允许用户从您提供的智能合约中受益, 而不必提及贵公司. 智能合约应该允许双方进行某种形式的交易, 涉及cryptocurrency, stocks, bartering, etc. 第二个挑战是找到业务“in”i.e. 如何用你的产品赚钱!

这方面的一个成功案例是 EtherDelta,一个真正去中心化的交易平台. 他们的服务与典型的交易所形成鲜明对比, 哪些处理加密货币,但实际上是中心化的平台,交易发生在链下. 在EtherDelta上下单不需要以太坊交易, but trading does, 这样它实际上利用了区块链,使用起来更安全.

它也是透明的 新类型的硬币通过GitHub拉请求添加. EtherDelta charges a 0.3%提款费(提款). 因此,公共的、开放的、去中心化的应用程序绝对有可能盈利.

另一方面,对于一些企业来说,把所有东西都放在区块链上是没有意义的. In particular, 在许多情况下,敏感数据应该安全存储并保密, 这甚至是一项法律要求.

同样重要的是要注意,以太坊上的每笔交易都相当昂贵和缓慢. 即使交易得到验证,最好还是等待几个区块被挖掘出来. 原因是最近的区块可能会被识别为不属于规范区块链的一部分, 然后,已经挖掘的交易被还原. That process is called chain reorganization, and it happens quite often.

此外,区块链上的代码不能单独与外部服务通信. For those reasons, 对大多数企业来说,将所有业务操作都放在区块链上可能太难了. 虽然智能合约的独立性和开放性至关重要, 将您的SaaS和以太坊ĐApps作为相关合同的最佳接口并没有错! 这似乎没有问题,只要可以构建其他接口而不必依赖于您的业务.

聪明地对待智能合约开发人员

智能合约,包括作为示例的智能合约,在区块链上是公开的. 商业动机驱动新软件的创建, 但合适的以太坊工程师将设计智能合约,使其与公众保持一致, 区块链的透明性, 以免他们无法将集中式逻辑转换为区块链. There are also the 智能合约的局限性 被考虑在内. In some cases, even, 完全采用区块链还为时过早,因为更多的变化正在进行中.

In the end, 你会想要雇佣一个以太坊区块链开发人员,他对商业的头脑和对编程的头脑一样好. 以太坊应用程序开发的世界是一个疯狂的世界,所以更有理由雇佣你能找到的最可靠和最专业的开发人员.

进一步的以太坊资源探索

我们推荐以下优质公共资源, 详细研究各种以太坊相关主题, 尝试不同的工具:

  • Truffle最流行的使用Solidity和JavaScript的框架
  • Truffle boxes入门工具包,包括一些基于React的工具包
  • Embark是另一个流行的JavaScript框架,它的集成超越了以太坊EVM
  • Exonum, a framework in Rust
  • PopulusPython的智能合约开发框架
  • Open Zeppelin library, a collection of secure, tested, 以及社区审计的智能合约, 用作构建模块, 与松露框架集成

Basic Tools

  • Web3.js,以太坊JavaScript API
  • Solium, a linter for Solidity

Advanced Tools

  • Metamask,允许通过浏览器与ĐApps进行全功能交互
  • Vyper一种用于编写智能合约的实验性编程语言,正在积极开发
  • Whisper,用于ĐApp-to-ĐApp通信的消息传递协议

Learning Materials:

区块链物联网开源项目

最后,我们邀请您向2017年Toptal开源资助奖得主学习 Blockchain IoT 项目,当它被构建时.

顶级以太坊开发人员需求量很大.

Start Hiring