譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
正如我們之前所說,這個合約的最終目標是實現一個質押dApp,當滿足一些條件,用戶就可以質押ETH。如果沒有達到這些條件,用戶可以撤回他們的ETH。
這些條件是:
至少向質押合約質押1個ETH
在deadline(30秒)內達到1個ETH的質押閾值
需要掌握的重要概念
調用外部合約-區塊鏈上的每個合約都像一個公共的RESTAPI。如果合約被聲明為public或external,你可以從web3app或直接從另一個合約調用它們。
函數修改器(FunctionModifier)-修改器是可以在函數調用之前和/或之后運行的代碼。它們可以用來限制訪問,驗證輸入,或防范重入性攻擊。
錯誤處理-錯誤處理很重要,因為它可以還原智能合約的狀態,并通知用戶還原的原因。你可以把這種還原比作數據庫的rollback。
Everscale獲得Venom Ventures Fund的500萬美元戰略投資:1月31日消息,總部位于阿布扎比的 Venom Ventures Fund 正在對第 1 層區塊鏈 Everscale 進行 500 萬美元的戰略投資。投資將根據進展和合作分階段進行。新資金將用于擴大其開發團隊和項目。
本月早些時候報道,位于阿布扎比的Venom Foundation和Iceberg Capital合作推出十億美元的Web3基金,其任務是幫助促進阿拉伯聯合酋長國 (UAE) web3 市場的發展。[2023/1/31 11:39:10]
發送ETH-Solidity有本地方法可以將ETH從一個合約轉賬到另一個合約/地址。
練習實現
聲明一個deadline,它是區塊時間延后30秒
創建一個publictimeLeft()函數,用于返回剩余時間,直到時間到deadline為止
創建一個修改器(Modifier),用于檢查外部合約是否已經完成
Polygon與Etherscan推出Polygon區塊鏈瀏覽器Polygonscan:據EthHub聯合創始人Anthony Sassano消息,以太坊擴容方案Polygon已與以太坊區塊鏈瀏覽器Etherscan聯手推出Polygon區塊鏈瀏覽器Polygonscan。[2021/6/9 23:24:08]
創建一個修改器(Modifier),用于動態檢查deadline是否到了
只允許用戶在時間沒到deadline且沒有執行外部合約的情況下質押ETH
只有當時間沒有到deadline且balances沒有達到閥值,用戶才可以撤回資金
創建一個execute()方法,將資金從質押合約轉移到外部合約并執行另一個合約外部函數
當你在本地測試合約是一定要注意:區塊鏈的狀態只有在區塊被打包時才會更新。區塊編號和區塊時間都只有在交易完成后才會更新。這意味著timeLeft()只有在交易完成后才會更新。如果你想模擬真實場景,可以改變Hardhat配置來模擬區塊自動挖礦。如果你想了解更多,請看mining-mode文檔。
Seascape COO Nicky Li:NFT 映射的是傳統世界的非同質化資產:2021年03月15日晚,由Gate.io主辦的直播專訪節目《酒局幣赴》邀請到Seascape Co-Founder&COO Nicky Li直播分享近期最新發展。直播期間Nicky Li與Gate.io合伙人酒兒就NFT的發展前景及游戲化DeFi等相關話題進行了探討與交流。
Nicky Li 表示,Seascape是一個圍繞游戲化DeFi協議和NFT數字資產的去中心化游戲生態系統,同時也是一個建立在Substrate上的可擴展的游戲平臺,旨在為全球游戲玩家和NFT投資者構建一站式解決方案。Nicky還指出,以傳統世界的資產類比,目前加密資產還集中在同質化資產上(金錢、股票等),而 NFT 映射的是傳統世界的非同質化資產(藝術品、房產等)。NFT很有可能發展為區塊鏈中除了金融的第二大的應用場景。Seascape 在 NFT 領域布局很深,野心很大,未來還有極大的增長空間。而Play to Earn(邊玩邊賺)更是一個顛覆性玩法,通過和 DeFi 融合,將極大激勵玩家參與到游戲中來,讓他們在游戲中不但能收獲樂趣,更能獲得收益。游戲+DeFi+NFT的模式將為Seascape吸引來活躍的用戶和優秀的開發者,從而實現自身創建一個激勵性的游戲生態系統,讓玩家、開發者和投資者可以共同創造一個新的去中心化數字經濟體系的終極目標,進而推動區塊鏈的發展。[2021/3/16 18:47:13]
合約代碼更新
明年起Polkascan不再為Kulupu提供服務:11月23日消息,Polkascan基金會決定從明年1月1日起將不再為Kulupu提供服務。Kulupu是在Substrate上構建的工作量證明PoW區塊鏈,Kulupu資助Polkascan社會合約的有效期到2020年12月31日為止。[2020/11/23 21:45:18]
//SPDX-License-Identifier:MITpragmasolidity^0
else{require(timeRemaining>0,"Deadlineisalreadyreached");}_;}/***functionexecute()publicstakeNotCompleteddeadlineReached(false){uint256contractBalance=address(this)
/***}
為什么與練習1中的代碼不同?
我認為在這個實例中,變量openForWithdraw是不必要的。可以根據質押合約和外部合約的狀態直接判定是否可以撤回資金。
Cascadia推出法幣與加密貨幣交易的新支付系統:金色財經報道,溫哥華Cascadia區塊鏈集團公司宣布已經開發了一種新的支付系統,該系統將允許加密貨幣與法幣之間的交易。據悉,該公司最近已在加拿大證券交易所(CK.CN)上市。[2020/5/7]
簡單起見,本例中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反彈迫在眉睫?
尊敬的中幣用戶: ???"ZB合約API公測交易大賽,瓜分50萬ZB獎勵"活動已于2021年11月11日00:00圓滿結束,感謝ZB的新老用戶踴躍參與API公測交易大賽活動.
1900/1/1 0:00:00尊敬的用戶:?????????????BKEXGlobal即將上線GEIST,詳情如下:上線交易對:GEIST/USDT幣種類型:FTM充值功能開放時間:已開放交易功能開放時間:2021年11月.
1900/1/1 0:00:00如何通過Forex交易賺錢 什么是Forex交易? Forex交易是如何進行的?在Forex市場,你購買或是賣出貨幣。在Forex市場進行交易是很簡單的,其中的原理和在其他金融市場進行交易類似.
1900/1/1 0:00:00作者|JackyLHH出品|白話區塊鏈你或許也知道,限制目前區塊鏈技術大規模落地應用的一個很重要因素就是性能,這也是為什么很多傳統互聯網從業者不太看好區塊鏈技術的一個原因.
1900/1/1 0:00:00尊敬的用戶: ?? BKEXGlobal舉辦的"DSG交易大賽"活動已于2021年10月22日15:00圓滿結束,感謝用戶的大力支持!活動獎勵將于5個工作日內發放,請留意賬戶余額變動.
1900/1/1 0:00:00經過數月的期冀、失望、最后一刻的推遲和極大的懷疑,eNaira發行成為了全球最新的CBDC,世界各地的尼日利亞人已經開始使用這一數字貨幣,并給予一些反饋.
1900/1/1 0:00:00