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

30个以太坊开发示例

> *2018年已过了大半,币圈跌跌荡荡,而链圈的人在等待凤凰涅槃,熊市专心做技术,牛市才能一展身手、冲破云霄!* > > *本文主要告诉你,如何成为一名优秀的以太坊开发者!* > > *如果你是以太坊开发者中的“老司机”,请直接看最后一部分:30个为你量身定做的挑战示例!* > > *如果你是以太坊初学者,请认真读完,相信你终会受益匪浅。* *图较多,不想看图,文末有代码!* 我曾经 **买过加密货币,曾试图使用一些丑陋矿机挖矿,看过一些稀稀拉拉的Solidity教程** 。但不得不承认, **在当时,我更****偏爱前者** ,我切身体会到了加密货币的狂热,急切需要一种平衡,急切停止这种狂热行为,我最终选择了离开,大概四五个月的时间吧。 是的,我又回来了, **这次我选择了后者** ,要做一名区块链开发者!选择了以太坊,选择了Solidity。 之前看过的教程不再是最新的,课程、文章、博客数不胜数,但是仍然很难找到正确的学习方式。 **探索了一段时间,终于找到了** ,在这里分享出来,希望对你们有所帮助。 小编认为,对于初学Solidity的区块链爱好者来说, [https://cryptozombies.io](https://cryptozombies.io) 网站就是一个很不错的选择。 每次一打开它的主界面,植物大战僵尸的场景就立马浮现在我的脑海中,就会想要不要开发一款 **区块链版植物大战僵尸** ,激发了我浓厚的学习兴趣! ![](https://img.learnblockchain.cn/2020/02/01_/599393347.jpeg) **编游戏的同时,也学习了以太坊智能合约,何乐而不为呢?** 这个网站一共有6个教程,每个教程大约需要1-2小时。小编建议你用一周的时间,每天一节。记住, **一定要做一些必要的笔记和备忘单** 。 ![](https://img.learnblockchain.cn/2020/02/01_/30559274.jpeg) 推荐使用 **Google Docs** ,当然,你可以使用符合自身偏好的工具,比如 Gist、EverNote 等,以下为来自 Google Docs 的备忘单截图。 ![](https://img.learnblockchain.cn/2020/02/01_/977112889.jpeg) 做备忘单的目的就是在学习新知识时不丢弃之前学到的东西 **(切记不要学狗熊掰棒子)!** 学完这6个教程,你就掌握了以太坊开发的基础知识。 但这样就可以了吗?现在就能使用Solidity码代码,成为优秀的以太坊开发者? Not yet! 在完成 CryptoZombies并确保你记录了完整的备忘单之后,就可以进入第二阶段了。 在学习CryptoZombies 6个互动课程的过程中,你已了解如何编写智能合约和创建DApp,这个过程很有趣。CryptoZombies网站之外,你需要一个编译器。 关于编译器,我使用的是 Visual Studio Code(你可以根据个人偏好自由选择),它可以运行在Windows、 Mac 和 Linux环境中。 首先,我们需要安装Visual Studio code。以Windows操作系统为例,在 [https://chocolatey.org/](https://chocolatey.org/) 中使用以下命令: choco install VisualstudioCode – choco installVisualstudioCode –y 安装完成,操作界面是这样的,是不是很简洁?! ![](https://img.learnblockchain.cn/2020/02/01_/758235137.jpeg) 那么,如何安装Solidity?点击extensions,安装Solidity和Material Icon Theme,如下图: ![](https://img.learnblockchain.cn/2020/02/01_/963172250.jpeg) 是不是很简单?小编想要操作界面看起来更“性感”?需要依次点击 File –> Preferences –> File Icon Theme ![](https://img.learnblockchain.cn/2020/02/01_/273916096.jpeg) **看下图!是不是很性感?!** ![](https://img.learnblockchain.cn/2020/02/01_/403035665.jpeg) 完成基本配置后,开始创建一个简单的合约:File -> New File ![](https://img.learnblockchain.cn/2020/02/01_/978532858.jpeg) **注意,左下角出现了一个warning(感叹号!)** ![](https://img.learnblockchain.cn/2020/02/01_/722055790.jpeg) **Code contains empty block!** 这是在提示你写一些有效的代码! ![](https://img.learnblockchain.cn/2020/02/01_/129386463.jpeg) **No problems have been…** 没有报错! ![](https://img.learnblockchain.cn/2020/02/01_/671481526.jpeg) **一定要利用好Solidity官方文档!** 细细品读 [Solidity 文档](https://learnblockchain.cn/docs/solidity/),比如文档中关于智能合约的介绍Introduction to Smart Contracts ,还是要提醒你,在整个学习过程中,一定要做笔记,做笔记! ![](https://img.learnblockchain.cn/2020/02/01_/619180310.jpeg) 除此之外,你还需要了解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小组, 比如international** , **polish** **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** * 将文本文件添加到Swarm public gateway ( [https://swarm-gateways.net](https://swarm-gateways.net) ) * 通过Oraclize API读取合约中的文件 **27_dapp_pet_shop** * 创建DApp( [https://truffleframework.com/tutorials/pet-shop](https://truffleframework.com/tutorials/pet-shop) ) * 允许所有者取消收养 * 编写取消收养的测试(TDD) * 在SMART合约中添加取消功能 **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网络 以下为各个示例的全部(或部分)代码,图较多,不愿看图,文末有代码链接! ![](https://img.learnblockchain.cn/2020/02/01_/865336241.jpeg) *01_say_hello* ![](https://img.learnblockchain.cn/2020/02/01_/478105102.jpeg) *02_balance_address_checker* ![](https://img.learnblockchain.cn/2020/02/01_/344288557.jpeg) *03_basic_random* ![](https://img.learnblockchain.cn/2020/02/01_/576424749.jpeg) *04_lottery_10_users* ![](https://img.learnblockchain.cn/2020/02/01_/514543092.jpeg) *04_lottery_10_users_adamskrodzki* *03_basic_random* ![](https://img.learnblockchain.cn/2020/02/01_/313279106.jpeg) *04_lottery_10_users* ![](https://img.learnblockchain.cn/2020/02/01_/411023303.jpeg) *04_lottery_10_users_adamskrodzki* ![](https://img.learnblockchain.cn/2020/02/01_/970718768.jpeg) *05_lottery_no_limit* ![](https://img.learnblockchain.cn/2020/02/01_/359697903.jpeg) *06_lottery_multiple_winners* ![](https://img.learnblockchain.cn/2020/02/01_/410685001.jpeg) *07_fundraising* ![](https://img.learnblockchain.cn/2020/02/01_/563734840.jpeg) *08_basic_token* ![](https://img.learnblockchain.cn/2020/02/01_/312122863.jpeg) *09_erc_20_token* ![](https://img.learnblockchain.cn/2020/02/01_/942137171.jpeg) *10_PiotrexToken* ![](https://img.learnblockchain.cn/2020/02/01_/141263007.jpeg) *11_DirtyToken* ![](https://img.learnblockchain.cn/2020/02/01_/864286395.jpeg) *12_StringConverter* ![](https://img.learnblockchain.cn/2020/02/01_/160074301.jpeg) *13_RouteManager* ![](https://img.learnblockchain.cn/2020/02/01_/297700486.jpeg) *14_RouteManagerTest* ![](https://img.learnblockchain.cn/2020/02/01_/504956002.jpeg) *15_SharedWallet* ![](https://img.learnblockchain.cn/2020/02/01_/399396874.jpeg) *16_MultiSigWallet* ![](https://img.learnblockchain.cn/2020/02/01_/916800141.jpeg) *17_BuseoCoin* ![](https://img.learnblockchain.cn/2020/02/01_/763605476.jpeg) *17_BuseoCrowdsale* ![](https://img.learnblockchain.cn/2020/02/01_/886490960.jpeg) *18_Roles* ![](https://img.learnblockchain.cn/2020/02/01_/86287111.jpeg) *19_Attacker* ![](https://img.learnblockchain.cn/2020/02/01_/914510570.jpeg) *19_MiniDAO* ![](https://img.learnblockchain.cn/2020/02/01_/365814661.jpeg) *20_LpgPrice* ![](https://img.learnblockchain.cn/2020/02/01_/720259383.jpeg) *21_ RandomOraclize* ![](https://img.learnblockchain.cn/2020/02/01_/468627535.jpeg) *22_ Raffle* ![](https://img.learnblockchain.cn/2020/02/01_/584815864.jpeg) *23_ IpfsOraclize* ![](https://img.learnblockchain.cn/2020/02/01_/322447909.jpeg) *24_Election* ![](https://img.learnblockchain.cn/2020/02/01_/378736030.jpeg) *25_Faucet* ![](https://img.learnblockchain.cn/2020/02/01_/811140647.jpeg) *26_SwarmOraclize* ![](https://img.learnblockchain.cn/2020/02/01_/861739800.jpeg) *27_Adoption* ![](https://img.learnblockchain.cn/2020/02/01_/309378767.jpeg) *28_truffle* ![](https://img.learnblockchain.cn/2020/02/01_/827601227.jpeg) *29_TicTacToe* ![](https://img.learnblockchain.cn/2020/02/01_/30759869.jpeg) *30_web3-deploy-example-master* > *挑战成功了吗? Warriors!* *务必点赞、留言+转发!* 链接: [https://pan.baidu.com/s/1UVhLAsG167WC74jp5g9CRg](https://pan.baidu.com/s/1UVhLAsG167WC74jp5g9CRg) 密码:i6td > *其他资源* > > *[https://github.com/juanfranblanco/vscode-solidity/](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/](https://michalzalecki.com/)* 作者 | Piotr Brudny 编译 | kou、韩依依 *本文转载自 [《敢挑战吗?这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!》](https://mp.weixin.qq.com/s/Vd6R8IuethG_HA9eR59M_Q) ,版权属于原作者*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

学完这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

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

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

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

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

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

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

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

No problems have been… 没有报错!

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

除此之外,你还需要了解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

  • 将文本文件添加到Swarm public gateway ( https://swarm-gateways.net )

  • 通过Oraclize API读取合约中的文件

27_dapp_pet_shop

  • 创建DApp( https://truffleframework.com/tutorials/pet-shop )

  • 允许所有者取消收养

  • 编写取消收养的测试(TDD)

  • 在SMART合约中添加取消功能

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网络

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

01_say_hello

02_balance_address_checker

03_basic_random

04_lottery_10_users

04_lottery_10_users_adamskrodzki

03_basic_random

04_lottery_10_users

04_lottery_10_users_adamskrodzki

05_lottery_no_limit

06_lottery_multiple_winners

07_fundraising

08_basic_token

09_erc_20_token

10_PiotrexToken

11_DirtyToken

12_StringConverter

13_RouteManager

14_RouteManagerTest

15_SharedWallet

16_MultiSigWallet

17_BuseoCoin

17_BuseoCrowdsale

18_Roles

19_Attacker

19_MiniDAO

20_LpgPrice

21_ RandomOraclize

22_ Raffle

23_ IpfsOraclize

24_Election

25_Faucet

26_SwarmOraclize

27_Adoption

28_truffle

29_TicTacToe

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/

作者 | Piotr Brudny

编译 | kou、韩依依

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

  • 发表于 2018-09-25 09:06
  • 阅读 ( 2236 )
  • 学分 ( 5 )
  • 分类:以太坊

评论