以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > 非小號 > Info

ETH:scaffold-eth 挑戰:實現鎖定機制和資金撤回(Part2)

Author:

Time:1900/1/1 0:00:00

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

正如我們之前所說,這個合約的最終目標是實現一個質押dApp,當滿足一些條件,用戶就可以質押ETH。如果沒有達到這些條件,用戶可以撤回他們的ETH。

這些條件是:

至少向質押合約質押1個ETH

在deadline(30秒)內達到1個ETH的質押閾值

需要掌握的重要概念

調用外部合約-區塊鏈上的每個合約都像一個公共的RESTAPI。如果合約被聲明為public或external,你可以從web3app或直接從另一個合約調用它們。

函數修改器(FunctionModifier)-修改器是可以在函數調用之前和/或之后運行的代碼。它們可以用來限制訪問,驗證輸入,或防范重入性攻擊。

錯誤處理-錯誤處理很重要,因為它可以還原智能合約的狀態,并通知用戶還原的原因。你可以把這種還原比作數據庫的rollback。

被Etherscan標記為“Fake_Phishing76350”的EOA賬戶地址已將資金轉至Tornado Cash:金色財經消息,據CertiK監測,被Etherscan標記為“Fake_Phishing76350”的EOA賬戶地址(0xAe98f)已將資金轉至Tornado Cash。該EOA地址總共向Tornado Cash轉入26.7 枚ETH(約3.94萬美元)。[2023/3/12 12:58:52]

發送ETH-Solidity有本地方法可以將ETH從一個合約轉賬到另一個合約/地址。

練習實現

聲明一個deadline,它是區塊時間延后30秒

創建一個publictimeLeft()函數,用于返回剩余時間,直到時間到deadline為止

創建一個修改器(Modifier),用于檢查外部合約是否已經完成

創建一個修改器(Modifier),用于動態檢查deadline是否到了

消息人士:加密貨幣公司要求政府考慮將IFSCA作為印度的監管機構:8月25日消息,消息人士稱,加密貨幣公司正在要求政府考慮讓古吉拉特邦的國際金融服務中心管理局 (IFSCA) 成為印度所有加密交易的監管機構,因為他們認為,新的法案草案可能會給比特幣和其他加密貨幣賦予商品而并不是貨幣的地位,公司將受到當地KYC合規性的約束。(Economictimes)[2021/8/25 22:36:04]

只允許用戶在時間沒到deadline且沒有執行外部合約的情況下質押ETH

只有當時間沒有到deadline且balances沒有達到閥值,用戶才可以撤回資金

創建一個execute()方法,將資金從質押合約轉移到外部合約并執行另一個合約外部函數

當你在本地測試合約是一定要注意:區塊鏈的狀態只有在區塊被打包時才會更新。區塊編號和區塊時間都只有在交易完成后才會更新。這意味著timeLeft()只有在交易完成后才會更新。如果你想模擬真實場景,可以改變Hardhat配置來模擬區塊自動挖礦。如果你想了解更多,請看mining-mode文檔。

Power Pool:etherscan.io上出現假的YETI合約地址:12月7日,以太坊治理代幣借出協議Power Pool官方發布詐騙警告稱,etherscan.io出現假的YETI合約地址。

注:YETI為Power Pool發起的Yearn生態系統代幣指數(YETI)。該指數包括Yearn生態系統中的代幣:YFI、SUSHI、CREAM、AKRO、COVER、K3PR、CVP和PICKLE。[2020/12/7 14:28:02]

合約代碼更新

//SPDX-License-Identifier:MITpragmasolidity^0

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

Etherscan.io推出ETH 2.0信標鏈瀏覽器BeaconScan:以太坊區塊鏈瀏覽器Etherscan.io日前宣布推出ETH 2.0信標鏈(Beacon Chain)瀏覽器BeaconScan,該瀏覽器擁有郵件提醒、儀表盤分享、多設備登陸等多個功能。

Etherscan.io表示,BeaconScan不僅僅是一個區塊鏈瀏覽器,還是ETH 2.0的第一個獨立監測服務。預計隨著0階段的接近,該瀏覽器會添加更多新的功能。[2020/7/11]

/***}

為什么與練習1中的代碼不同?

我認為在這個實例中,變量openForWithdraw是不必要的。可以根據質押合約和外部合約的狀態直接判定是否可以撤回資金。

簡單起見,本例中withdraw函數不接受外部地址作為參數,只有質押者本人可以撤回資金。

我們已經將Solidity更新到0.8.4版本,Hardhat更新到2.6.1版本。有些scaffold-eth可能仍然依賴于舊版本的Solidity,我認為出于安全、優化和功能完整的考慮,使用最新的版本是很重要的。

動態 | 加拿大公司Cascadia宣布將業務變更為區塊鏈技術企業:據Globenewswire 消息,加拿大上市公司Cascadia宣布他們已獲得加拿大證券交易所(CSE)的批準,將其業務轉變為區塊鏈技術企業和正式將名稱從Cascadia Consumer Electronics Corp更名為Cascadia Blockchain Group Corp。據悉,Cascadia目前處于區塊鏈技術應用發展的早期階段,分為兩個部門:金融科技部門和區塊鏈實驗室部門。對于金融科技部門,公司致力于為選定的數字資產和公用事業令牌開發和商業化交易平臺技術。在區塊鏈實驗室部門,公司計劃開發區塊鏈技術企業解決方案,并為各個行業提供相關服務。[2018/9/8]

回顧一下

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

Tags:ETHHTTTPSSOLeth排名HTT幣tps幣圈solana幣價格

非小號
STR:Structure Finance (STF)

項目名稱:StructureFinance代幣名稱:STF項目介紹Structure.finance是一個集各類結構化金融產品于一體的平臺.

1900/1/1 0:00:00
BAL:BKEX Global 關于Seed Incubator 第十四期項目LQR(Laqira)活動結果的公告

尊敬的用戶: BKEXGlobalSeedIncubator第十四期項目LQR活動已經結束,LQR已發放至有效參與用戶的賬戶.

1900/1/1 0:00:00
EXG:BKEX Global 關于下架 DOGEFATHER/USDT交易對的公告

尊敬的用戶: ?? 本著保護用戶的宗旨,BKEXGlobal為保證交易幣種的高標準,將定期對平臺內的代幣進行綜合性審查;如項目方出現對投資者不利因素,我們將采取對應措施,并下架對應項目.

1900/1/1 0:00:00
TPS:XT關于暫停SPARE提現的公告

尊敬的XT用戶: 因SPARE錢包維護,XT.COM現已暫停SPARE提現業務。給您帶來的不便,請您諒解!感謝您對XT.COM的支持與信任.

1900/1/1 0:00:00
CON:ZT創新板即將上線AVN

親愛的ZT用戶: ZT創新板即將上線AVN,並開啟AVN/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年11月9日16:00; AVN 項目簡介:AVNRich成立於2019年.

1900/1/1 0:00:00
EFI:歐易OKEx上線gm (GM)的公告

尊敬的歐易OKEx用戶:歐易OKEx上線gm?(GM),具體時間如下:1.GM充值:11月12日12:00(HKT)2.GM/USDT的市場交易:11月12日14:00(HKT)3.GM提現:1.

1900/1/1 0:00:00
ads