链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 瑞波币 > 正文

HTT:scaffold-eth 挑战:实现锁定机制和资金撤回(Part2)_SOLID

作者:

时间:

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

正如我们之前所说,这个合约的最终目标是实现一个质押dApp,当满足一些条件,用户就可以质押ETH。如果没有达到这些条件,用户可以撤回他们的ETH。

这些条件是:

至少向质押合约质押1个ETH

在deadline(30秒)内达到1个ETH的质押阈值

需要掌握的重要概念

调用外部合约-区块链上的每个合约都像一个公共的RESTAPI。如果合约被声明为public或external,你可以从web3app或直接从另一个合约调用它们。

函数修改器(FunctionModifier)-修改器是可以在函数调用之前和/或之后运行的代码。它们可以用来限制访问,验证输入,或防范重入性攻击。

错误处理-错误处理很重要,因为它可以还原智能合约的状态,并通知用户还原的原因。你可以把这种还原比作数据库的rollback。

Santiment:持有10-1万枚的BTC巨鲸在Grayscale和SEC诉讼结果公布前一天积累了14596枚BTC:金色财经报道,Santiment监测的数据显示,鲸鱼和巨鲸可能对Grayscale和SEC诉讼结果有所了解,在消息发布前一天,持有10-1万枚的BTC钱包积累了14596枚BTC,价值近3.883亿美元。他们因此获得了丰厚的回报,BTC价格跳涨了6%。[2023/8/30 13:06:13]

发送ETH-Solidity有本地方法可以将ETH从一个合约转账到另一个合约/地址。

练习实现

声明一个deadline,它是区块时间延后30秒

创建一个publictimeLeft()函数,用于返回剩余时间,直到时间到deadline为止

创建一个修改器(Modifier),用于检查外部合约是否已经完成

创建一个修改器(Modifier),用于动态检查deadline是否到了

Etherscan即时聊天工具Blockscan Chat新增端到端加密和浏览器通知等功能:10月8日消息,Etherscan即时聊天工具Blockscan Chat完成几项更新,包括端到端加密(E2EE)、合约地址登录以及浏览器通知等功能。[2022/10/8 12:49:42]

只允许用户在时间没到deadline且没有执行外部合约的情况下质押ETH

只有当时间没有到deadline且balances没有达到阀值,用户才可以撤回资金

创建一个execute()方法,将资金从质押合约转移到外部合约并执行另一个合约外部函数

当你在本地测试合约是一定要注意:区块链的状态只有在区块被打包时才会更新。区块编号和区块时间都只有在交易完成后才会更新。这意味着timeLeft()只有在交易完成后才会更新。如果你想模拟真实场景,可以改变Hardhat配置来模拟区块自动挖矿。如果你想了解更多,请看mining-mode文档。

合约代码更新

NFTScan发布Arbitrum网络NFT浏览器:5月31日消息,NFT基础设施NFTScan对外发布了Arbitrum NFTScan(arbitrum.nftscan.com)浏览器,为Arbitrum生态的NFT开发者和用户提供NFT相关数据的搜索查询服务。

据悉,Arbitrum网络是继Ethereum、BSC、Moonbeam、Polygon 之后,NFTScan浏览器支持的第5条区块链网络。[2022/5/31 3:52:12]

//SPDX-License-Identifier:MITpragmasolidity^0

else{require(timeRemaining>0,"Deadlineisalreadyreached");}_;}/***functionexecute()publicstakeNotCompleteddeadlineReached(false){uint256contractBalance=address(this)

Grayscale与纽约巨人队建立独家合作关系,成为NFL第一个加密货币赞助商:周三,灰度(Grayscale)宣布与纽约巨人队建立独家合作关系,成为了有史以来第一个赞助NFL球队的加密货币公司。

目前,Grayscale已是纽约巨人队的 \"官方数字货币资产管理合作伙伴\"。据悉,作为合作的一部分,灰度还将成为巨人队基金会高尔夫球赛的主赞助商、主场比赛的主赞助商以及巨人队训练营的支持赞助商。

此外,Grayscale还计划每年为巨人队人员举办关于加密货币的教育研讨会。(Insider)[2021/5/6 21:27:54]

/***}

为什么与练习1中的代码不同?

我认为在这个实例中,变量openForWithdraw是不必要的。可以根据质押合约和外部合约的状态直接判定是否可以撤回资金。

简单起见,本例中withdraw函数不接受外部地址作为参数,只有质押者本人可以撤回资金。

我们已经将Solidity更新到0.8.4版本,Hardhat更新到2.6.1版本。有些scaffold-eth可能仍然依赖于旧版本的Solidity,我认为出于安全、优化和功能完整的考虑,使用最新的版本是很重要的。

声音 | Scarlett Zhang:短期内dApp的繁荣未必能带动整个二级市场的繁荣:针对dApp的繁荣是否能带动整个二级市场繁荣的问题,Bizkey联合创始人Scarlett Zhang表示:短期内dApp的繁荣未必能带动整个二级市场的繁荣,毕竟dApp不同的通证设计机制是否能改进原本的商业协作方式进而产生价值需要时间验证。随着时间的发展可能会有人发现其实有些项目的通证唯一用途类似于预付卡,没有持有意义,这短期内对二级市场会造成负面影响。但人们总是高估技术变革带来的第一个5年价值,低估第二个5年价值,长远来看被市场验证过的dApp所带来的价值肯定会流向二级市场,并带动二级市场的繁荣。(火星财经)[2019/1/12]

回顾一下

函数修改器(FunctionModifiers):首先,你可以看到我们已经创建了两个修改器。正如你已经从Solidity的例子中学到的,函数修改器是可以在一个函数调用之前或之后运行的代码。在上面的例子中,我们添加了带参数的函数修改器!

当你定义了一个函数修改器(FunctionModifiers)后,你可以在函数名称后附加上修改器的名称。如果修改器回退了,函数会在运行之前就回退!

stake()函数:与练习1相同。

timeLeft()函数:使用block.timestamp的值来计算剩余秒数。

withdraw()函数:在修改器通过后,检查用户是否有余额,如果没有余额就返回。为了防止重入性攻击,你应该在任何调用之前先修改合约的状态。这就是为什么我们要把用户的余额保存在一个变量中,并把用户的余额更新为0。

execute()函数:在修改器通过后,调用外部合约complete()函数,并检查一切是否成功。

现在用yarndeploy部署更新后的合约,并在本地进行测试,检查一下:

在你进行交易的时候timeLeft是否在变化?

你能在时间到deadline之后质押ETH吗?

如果合约被执行,能在deadline前或后撤回资金吗?

即使质押金额没有达到阀值,也可以执行合约吗?

可以多次执行合约吗?

https://www.youtube.com/watch?v=193ZeR17dtk

本翻译由CellETF赞助支持。

来源:https://stermi.medium.com/how-to-write-your-first-decentralized-app-scaffold-eth-challenge-1-staking-dapp-b0b6a6f4d242

参考资料

登链翻译计划:https://github.com/lbc-team/Pioneer

翻译小组:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

调用外部合约:https://solidity-by-example.org/calling-contract/

函数修改器(FunctionModifier):https://solidity-by-example.org/function-modifier/

重入性攻击:https://solidity-by-example.org/hacks/re-entrancy/

错误处理:https://solidity-by-example.org/error/

发送ETH:https://solidity-by-example.org/sending-ether/

mining-mode文档:https://hardhat.org/hardhat-network/reference/#mining-modes

重入性攻击:https://solidity-by-example.org/hacks/re-entrancy/

CellETF:https://celletf.io/?utm_souce=learnblockchain

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/10481471.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

比特币进入牛市交叉点,BTC反弹迫在眉睫?

标签:HTTTPSETHSOLIDCHTTtps币行情eth排名MOSOLID

瑞波币热门资讯
COI:迈阿密将利用MiamiCoin质押收益,向部分居民免费发放比特币_Filecoin Standard Hashrate Token

本文来自Decrypt,原文作者:LiamJ.KellyOdaily星球日报译者|念银思唐迈阿密市长FrancisSuarez“再放大招”,力证其试图使该市成为美国加密货币中心的决心.

COI:一文讲述多链场景的三种模型:未来会是应用链当道吗?_OP Coin

作者|五火球教主出品|白话区块链8月底以来,公链市场持续火热,引起不少关注。另外,多链这边Cosmos生态取得持续进展,波卡插槽拍卖也已经开始了.

okex:欧易OKEx上线gm (GM)的公告_KEX

尊敬的欧易OKEx用户:欧易OKEx上线gm?(GM),具体时间如下:1.GM充值:11月12日12:00(HKT)2.GM/USDT的市场交易:11月12日14:00(HKT)3.GM提现:1.

ETH:一文探讨「拉地毯」局SquidGame爆火背后的原因_QUID

货币投资者中获得了很高的人气。该项目开发商承诺在11月推出一项在线锦标赛,与该系列的游戏类似,共6轮。据推测,需要支付SQUID代币才能参加比赛.

WIT:“NEAR 交易嘉年華”、“幣安萬聖節”、“SAND知識挑戰”、“學習FUN知識” 和 “BTCST 交易挑戰賽”活動結束公告_PTER价格

親愛的用戶:“NEAR交易嘉年華”、“幣安萬聖節”、“SAND知識挑戰”、“學習FUN知識”和“BTCST交易挑戰賽”活動已結束,卡券獎勵已分發完成,請在我的-卡券中心查看並領取.

BTC:关于BitMart下架和隐藏部分交易对的公告_MAR

亲爱的BitMart用户:根据BitMart“交易对的暂停交易、隐藏及下线规则”,通过对相关交易对的持续跟踪观察,以及为了给用户带来较好的交易深度与使用体验.