区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > USDC > 正文

TPS:scaffold-eth 挑战:实现锁定机制和资金撤回(Part2)_tps币行情

作者:

时间:

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

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

这些条件是:

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

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

需要掌握的重要概念

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

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

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

Compound将于今年第二季度上线Aztec旗下隐私Rollup网络zk.money:2月28日消息,去中心化借贷市场 Compound 将于今年第二季度在以太坊Layer2 隐私协议 Aztec 旗下隐私 Rollup 网络 zk.money 主网上线,用户可以通过使用 Aztec Connect 在 Compound 中存款和借款,与主网相比节省 95% 以上的 gas,并且默认情况下具有隐私性。具体而言,用户可以将 ERC20 代币存入 Aztec,并通过 zk.money 发起 Compound 存款或借款请求。Aztec 的 zkrollup 将跨用户批量交易,并通过桥接合约与 Compound 的 L1 合约进行交互。用户将在 Aztec 上收到一个 cToken 或他们借用的任何资产,可以在 Aztec 上的其他 DeFi 协议中使用。目前,Aztec 在compound治理论坛发起提案,申请 10 万美元的赠款来补贴用户在 Compound 的存款和借款相关gas费,以启动此集成的网络效应。

另据 DeFi Liama 数据显示,Compound 目前总锁仓量为 67.2 亿美元,仅支持以太坊主网。[2022/3/1 13:28:32]

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

ZT创新板开放MDOGE/USDT交易对,开盘最高涨幅达400%:据ZT数据行情显示,ZT创新板已经于今日17:00开启MDOGE/USDT交易对。MDOGE开盘价格为0.000000002USDT,最高报价为0.000000008USDT,开盘最高涨幅达400%,当前报价0.00000000621USDT。

MissDoge(代币名称为MDOGE)是在币安智能链平台上开发的一个项目,其目标是通过具体和透明的策略为社区带来价值。[2021/7/15 0:54:50]

练习实现

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

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

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

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

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

公告 | Hyperledger Besu已支持ETC Aztlán升级:据ETC官方推特,已将Aztlán集成到Hyperledger Besu客户端,现在可以在v1.3.9版本中使用。 据悉,Aztlán属于ETC将在10,500,839区块上激活硬分叉之一ECIP 1061。[2020/2/8]

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

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

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

合约代码更新

//SPDX-License-Identifier:MITpragmasolidity^0

ESPN网球分析师Brad Gilbert购买了Grayscale的GBTC,小女儿买了狗狗币:9月3日消息,著名ESPN网球分析师Brad Gilbert(前球员转为教练,也是畅销书作者)与CNBC Squawk盒装秀的主持人分享了他最近首次使用比特币的经历。Brad Gilbert分享说,他在今年2月首次涉足加密货币领域,他购买了Grayscale的GBTC。他承认他的小女儿在他之前就进入了加密领域并购买了狗狗币。(U.Today)[2021/9/3 22:58:22]

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

/***}

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

动态 | Bloqboard 及 LoanScan 团队推出集成银行服务的 Defi 应用 Linen:曾建立基于以太坊的借贷平台 Bloqboard 和借贷数据提供商 LoanScan 的团队正在推出一款集成银行服务的 Defi 应用 Linen。Bloqboard 兼 Linen 创始人 Vitaly Bahachuk 表示,Linen 旨在减少借贷过程对多个 DApp 的需求,精简贷款流程从而降低风险。Linen 将集成传统银行服务,例如存款、储蓄、借记卡功能和汇款,并引入基于以太坊的借贷协议(例如 Compound),目前借贷服务已经支持 USDC,并将计划支持 DAI。Linen 近期完成新一轮未公开的融资,新的投资者包括加密货币支付提供商 Wyre 和 Hashkey,此前 Linen 投资者包括 Polychain Capital 和 Coinbase 等机构。Bahachuk 表示 Hashkey 的投资具有战略意义,Linen 希望向亚洲敞开大门,Hashkey 是该地区的主要投资者之一。[2019/9/21]

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

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

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

回顾一下

函数修改器(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反弹迫在眉睫?

标签:HTTTPSLIDMODCHTT价格tps币行情VSolidusMODA

USDC热门资讯
VENT:基于 Uniswap V3 的「流动性即服务」平台 izumi Finance 完成 210 万美元融资,Mirana Ventures 领投_RES

链闻消息,支持UniswapV3LPNFT流动性激励的跨链聚合交易平台izumiFinance完成210万美元融资,MiranaVentures领投.

RES:ZT創新板即將上線MONS_TUR

親愛的ZT用戶: ZT創新板即將上線MONS,並開啟MONS/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年11月11日17:00; MONS Compound将于今年第二季度.

OSHI:YooShi (YOOSHI)_YOOSHI

一、项目介绍 YooShi从去中心化的meme币发展到YooShi的元宇宙,致力于搭建P2E游戏与玩家之间的桥梁,让游戏不仅好玩.

SDT:欧易OKEx关于ENS、BABYDOGE、KISHU杠杆交易、余币宝及ENSUSDT永续合约正式上线的公告_USD

尊敬的欧易OKEx用户:欧易OKEx将于2021年11月11日18:00(HKT)?在网页端、APP端及API正式上线ENS、BABYDOGE、KISHU的杠杆交易、余币宝及ENSUSDT永续合.

ING:IOSG 8th Old Friends Reunion_Californium

今年的市场在Scaling与多链的的主题下百花齐放,异彩纷呈,关于选择与支持何种扩容路径的讨论与争议此起彼伏,从未停歇.

KSM:Gate.io 支持一键参与KSM插槽拍卖活动火热进行中(目前Genshiro领先)_ksm币有前景吗

第14次波卡插槽拍卖正在火热进行中。目前Genshiro以24,338.1015KSM的质押量排名靠前,截至2021年11月9日14:00,Gate.ioGENS锁仓理财已锁184.003378.