美文网首页区块链入门区块链 | Distributed Ledger TechnologyLeap BlockChain
这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!

这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!

作者: 笔名辉哥 | 来源:发表于2018-09-25 09:06 被阅读511次
    image

    作者 | Piotr Brudny

    编译 | kou、韩依依

    2018年已过了大半,币圈跌跌荡荡,而链圈的人在等待凤凰涅槃,熊市专心做技术,牛市才能一展身手、冲破云霄!

    本文主要告诉你,如何成为一名优秀的以太坊开发者!

    如果你是以太坊开发者中的“老司机”,请直接看最后一部分:30个为你量身定做的挑战示例!

    如果你是以太坊初学者,请认真读完,相信你终会受益匪浅。

    图较多,不想看图,文末有代码!

    我曾经买过加密货币,曾试图使用一些丑陋矿机挖矿,看过一些稀稀拉拉的Solidity教程。但不得不承认,在当时,我更****偏爱前者,我切身体会到了加密货币的狂热,急切需要一种平衡,急切停止这种狂热行为,我最终选择了离开,大概四五个月的时间吧。

    是的,我又回来了,这次我选择了后者,要做一名区块链开发者!选择了以太坊,选择了Solidity。

    之前看过的教程不再是最新的,课程、文章、博客数不胜数,但是仍然很难找到正确的学习方式。

    探索了一段时间,终于找到了,在这里分享出来,希望对你们有所帮助。

    小编认为,对于初学Solidity的区块链爱好者来说, https://cryptozombies.io网站就是一个很不错的选择。

    每次一打开它的主界面,植物大战僵尸的场景就立马浮现在我的脑海中,就会想要不要开发一款区块链版植物大战僵尸,激发了我浓厚的学习兴趣!

    image

    编游戏的同时,也学习了以太坊智能合约,何乐而不为呢?

    这个网站一共有6个教程,每个教程大约需要1-2小时。小编建议你用一周的时间,每天一节。记住,一定要做一些必要的笔记和备忘单

    image

    推荐使用 Google Docs,当然,你可以使用符合自身偏好的工具,比如 Gist、EverNote 等,以下为来自 Google Docs 的备忘单截图。

    image

    做备忘单的目的就是在学习新知识时不丢弃之前学到的东西(切记不要学狗熊掰棒子)!

    学完这6个教程,你就掌握了以太坊开发的基础知识。

    但这样就可以了吗?现在就能使用Solidity码代码,成为优秀的以太坊开发者?

    Not yet! 在完成 CryptoZombies并确保你记录了完整的备忘单之后,就可以进入第二阶段了。

    在学习CryptoZombies 6个互动课程的过程中,你已了解如何编写智能合约和创建DApp,这个过程很有趣。CryptoZombies网站之外,你需要一个编译器。

    关于编译器,我使用的是 Visual Studio Code(你可以根据个人偏好自由选择),它可以运行在Windows、 Mac 和 Linux环境中。

    首先,我们需要安装Visual Studio code。以Windows操作系统为例,在 https://chocolatey.org/中使用以下命令:

    choco install VisualstudioCode –

    choco installVisualstudioCode –y

    安装完成,操作界面是这样的,是不是很简洁?!

    image.gif

    那么,如何安装Solidity?点击extensions,安装Solidity和Material Icon Theme,如下图:

    image

    是不是很简单?小编想要操作界面看起来更“性感”?需要依次点击 File –> Preferences –> File Icon Theme

    image

    看下图!是不是很性感?!

    image

    完成基本配置后,开始创建一个简单的合约:File -> New File

    image

    注意,左下角出现了一个warning(感叹号!)

    image

    Code contains empty block!这是在提示你写一些有效的代码!

    image

    No problems have been…没有报错!

    image

    一定要利用好Solidity官方文档!细细品读 Solidity documentation ,比如文档中关于智能合约的介绍Introduction to Smart Contracts ,还是要提醒你,在整个学习过程中,一定要做笔记,做笔记!

    image.gif

    除此之外,你还需要了解Solidity官方文档中的 Style Guide. 还要做笔记!做笔记!

    当然,这仅仅是一些参考,你可以有自己的专属Style!

    要想学好以太坊开发,有一个不得不提的方法,就是积极参与社区讨论。如果你想更加快速地学习Solidity,学习以太坊,学习区块链,你确实需要成为社区中的一员,这是十分有效且有趣的学习方式。

    在社区中积极发言,提出问题,分享建议,甚至与 V神互动,可以支持他,也可以怼他(切记要有理有据)!Do whatever you want,it must be amazing!!!

    那么,你需要做什么?又如何去做呢?

    你需要注册账户、选择社区频道、加入Facebook小组,关注技术大V或者与其他技术爱好者交流、讨论,抓住一切机会,尽可能多地参加线下Meetups。

    a)注册Ethereum Stack Exchange账户

    b)加入Solidity Gitter channel

    c)加入以太坊相关的Facebook小组, 比如internationalpolish

    d)关注大V博客

    e)参加以太坊Meetups

    这是第二阶段,这是一个长期的学习过程。在这期间,你会不断积累Solidity开发经验,你会与来自五湖四海的以太坊技术开发者分享、交流任何与技术有关的话题,是不是很cool?

    在掌握Solidity编程基础,并安装好 Visual Studio Code 编译器后,write your code!

    首先,打开电脑;

    随后,打开编译器;

    然后,敲一敲代码,找找指尖的感觉;

    最后,往下看!

    都说成功在于实践,学了那么多知识,就需要真刀真枪地操练一番!

    小编为你准备了30个编程挑战案例,涉及简单智能合约、测试和去中心化应用等。

    主要包含以下主题:

    1)Solidity智能合约: lottery(彩票),ICO(首次代币发行),DAO(去中心化自制组织)

    2)Tokens: ERC20, ERC721

    3)测试 :Solidity 测试,JavaScript 测试

    4)安全: Re-entry attack(重入攻击)

    5)DAPPs & deployment:Truffle(以太坊Solidity编程语言开发框架),Web3

    6)外部服务:Oraclize(以太坊预言机),Infura(一个托管的以太坊节点集群)

    7)存储:IPFS(星际文件系统),Swarm(以太坊去中心化存储网络)

    1、阅读要求

    了解要求,获取材料

    2、Write your code

    对于没有测试覆盖和前端部分的挑战,可以使用在线编译器 Remix,由于它有自动调试器/编译器,便于使用并捕获错误。当然,也可以用Visual Studio Code了。

    3、对比解决方案

    完成之后,与提供的解决方案作对比。

    切记,一定要自己动手做一遍!动手做一遍!做一遍!

    Now,挑战开始!

    以下为30个挑战示例(代码在文末,图片/文本格式均有

    01_say_hello

    • 在创建时设置问候语并允许所有者(合约创建者)进行更改

    • 向每个调用sayHello方法的人返回问候语

    • 将Hello Daddy返回给创建者

    02_balance_address_checker

    • 返回合约地址

    • 返回合约创建者的地址

    • 返回发送人的地址

    • 返回合约的余额

    • 返回合约制定者的余额(仅在你为该合约所有者的前提下)

    • 返回发送人的余额

    03_basic_random

    • 返回0-99之间的随机数

    • 计算中的“财务重要性”小于矿工挖掘单一区块得到的

    • 如何将BLOCKHASH安全地用于随机数?

    04_lottery_10_users

    • 限制为10个用户

    • 用户必须支付0.1ETH才能加入以太坊彩票

    • 同一用户只能加入一次

    • 合约创建者可以加入以太坊彩票

    • 第10个用户进入后,选择获胜者

    • 赢家收走所有的钱

    • 选出获胜者之后,开始下一轮

    05_lottery_no_limit

    • 用户支付0.1以太即可加入lottery

    • 不限用户数量

    • 同一用户可以多次加入

    • 合约所有人亦可以加入

    • 合约所有人决定何时选出赢家

    • 赢家将得到所有奖金

    • 选出赢家即可开始新一轮lottery

    06_lottery_multiple_winners

    • 对用户无限制

    • 用户须支付0.1 ETH和并从1-100中挑选一个数字

    • 合约所有者决定何时生成随机数(1-100)

    • 选择生成数字的用户获胜

    • 所有奖励将分配给所有赢家

    07_fundraising

    • 有筹款目标的(创立时设定数额)

    • 筹资有时间限制(创立时设定时间)

    • 任何人都可以增加任何金额,直到时间结束或目标达到为止。

    • 时间到了,但目标尚未完成,用户可以撤回他们的资金。

    • 当目标达到时,所有者可以取出所有钱

    08_basic_token

    • 创造时设定代币的初始供应量

    • 合约创建者获得初始Token

    • Token可以转移到任何帐户

    • 有保护措施以防止溢出

    • 任何人可检查余额

    09_ERC_2****0_token

    • 基于EIP规范实现ERC 20 token

    10_ERC20_usage

    • 使用OpenZeppelin创建你自己的ERC 20令牌

    • 继承“标准token”

    • 添加自定义名称、符号、小数和初始供应

    11_ERC_721_usage

    • 使用OpenZeppelin创建自己的ERC 721令牌

    • 继承“ERC 721 Token”

    • 添加自定义名称和符号

    12_string_converter

    • 创建函数,将字符串转换为bytz 32

    • 为该函数添加可靠性测试

    13_route_manager

    • 合约内必须存储公交车站的列表。

    • 每个公共汽车站都有id、名称和坐标(例如:czn 1、PKS Cieszyn、10.123222, 33.212345)

    • 所有者能够添加新的站点

    • 合约必须有测试范围

    14_testing_route_manager

    • 增加Solidity试验

    • 添加JavaScript测试

    15_shared_wallet

    • 合约有且只有一位所有者

    • 所有者可以添加和删除管理员

    • 管理员可以提取所有资金

    • 合约具有接收转帐的应付款回退功能

    16_multisig_wallet

    • 创建一个多签名钱包

    • 进行转移须有3名管理员签署交易

    17_crowdsale

    • 制造可铸造硬币(使用Open Zeppelin)

    • 创建简单的众包销售(使用Open Zeppelin)

    • 设定开启和关闭时间

    • 固定费率和钱包地址

    18_roles_management

    • 创建继承自己的合约(Open Zeppelin)

    • 合约须有管理员名单

    • 所有者可以添加/更新/删除管理员

    • 合约所有者也是管理员

    • 仅管理员可添加修饰符

    19_the_dao_attack

    • 增加非常简化的DAO合约(押金,提款)

    • 添加攻击者合约

    20_lpg_price

    • 利用Oraclize API获取LPG价格

    21_random_oraclize

    • 使用Oraclize API获取随机数

    22_raffle_oraclize

    • 用户可以参与一次抽奖

    • 所有者不能参与

    • 使用Oraclize的RNG选出赢家

    23_ipfs_oraclize

    • 向IPF中添加一个简单的json文件

    • 使用Oraclize读取该文件

    • 将一个json属性的结果存储在字符串变量中

    24_election

    • 每一次选举创建一个合约,为每个候选人提供一个简短的名字和地址

    • 合约创建者有权对每个地址单独投票

    • 每个投票参与者可以投票一次

    • 投票参与者不能为自己投票

    25_faucet

    • 添加回退函数以接受付款

    • 增加退出功能,每人最多能得到1ETH

    • 使用事件记录两个金额(已支付、转移)

    26_swarm_oraclize

    27_dapp_pet_shop

    28_infura_deployment

    • 使用Infura添加Ropsten部署设置

    29_tic_tac_toe

    • 为2名玩家添加基本的tic tac toe

    • 3x3 board

    • 无需人工智能

    30_web3_DAO_deploy

    • 从 ethereum.org/dao复制DAO代码

    • 将其更新为Solity0.4.24并编译

    • 使用 web3 和ethereumjs-tx发送已签名的交易

    • 使用 Infura将编译好的合同部署到Ropsten网络

    以下为各个示例的全部(或部分)代码,图较多,不愿看图,文末有代码链接!

    image 01_say_hello image 02_balance_address_checker image 03_basic_random image 04_lottery_10_users image 04_lottery_10_users_adamskrodzki

    03_basic_random

    image 04_lottery_10_users image 04_lottery_10_users_adamskrodzki image 05_lottery_no_limit image 06_lottery_multiple_winners image 07_fundraising image 08_basic_token image 09_erc_20_token image 10_PiotrexToken image 11_DirtyToken image 12_StringConverter image 13_RouteManager image 14_RouteManagerTest image 15_SharedWallet image

    16_MultiSigWallet

    image 17_BuseoCoin image 17_BuseoCrowdsale image 18_Roles image 19_Attacker image 19_MiniDAO image 20_LpgPrice image 21_ RandomOraclize image 22_ Raffle image 23_ IpfsOraclize image 24_Election image 25_Faucet image 26_SwarmOraclize image 27_Adoption image 28_truffle image 29_TicTacToe image

    30_web3-deploy-example-master

    挑战成功了吗? Warriors!务必点赞、留言+转发!

    链接:https://pan.baidu.com/s/1UVhLAsG167WC74jp5g9CRg

    密码:i6td

    其他资源

    https://github.com/juanfranblanco/vscode-solidity/

    Official sites: Truffle, Ethereum, Solidity

    Repositories: solidity-by-example, solidity-baby-steps

    Channels: Dapp University

    Blogs: https://michalzalecki.com/

    本文转载自《敢挑战吗?这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!》,版权属于原作者

    相关文章

      网友评论

      • a4e323ecd01b:pragma solidity ^0.4.24;首标题总是报这个错误怎么解决。linebreak-style: Inconsistent line-break style
        a4e323ecd01b:@笔名辉哥 在remix编译是通过的,vs code报错格式上的错误。
        笔名辉哥:@尔东金城山 你有编译通过的程序 copy一个过来呗。不是提示回车键的问题么

      本文标题:这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!

      本文链接:https://www.haomeiwen.com/subject/orjkoftx.html