譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
正如我們之前所說,這個合約的最終目標是實現一個質押dApp,當滿足一些條件,用戶就可以質押ETH。如果沒有達到這些條件,用戶可以撤回他們的ETH。
這些條件是:
至少向質押合約質押1個ETH
在deadline(30秒)內達到1個ETH的質押閾值
需要掌握的重要概念
調用外部合約-區塊鏈上的每個合約都像一個公共的RESTAPI。如果合約被聲明為public或external,你可以從web3app或直接從另一個合約調用它們。
函數修改器(FunctionModifier)-修改器是可以在函數調用之前和/或之后運行的代碼。它們可以用來限制訪問,驗證輸入,或防范重入性攻擊。
錯誤處理-錯誤處理很重要,因為它可以還原智能合約的狀態,并通知用戶還原的原因。你可以把這種還原比作數據庫的rollback。
Grayscale CEO:比特幣不再是曇花一現的時尚:金色財經報道,Grayscale首席執行官Michael Sonnenshein表示,貝萊德和富達等大型投資公司加入推出現貨比特幣ETF基金的競賽,說明比特幣在很大程度上不再是曇花一現。最近有關比特幣新進入者的消息凸顯了這一資產類別在更廣泛的范圍內的持久力,許多投資者認為這是千載難逢的投資機會。[2023/7/7 22:22:44]
發送ETH-Solidity有本地方法可以將ETH從一個合約轉賬到另一個合約/地址。
練習實現
聲明一個deadline,它是區塊時間延后30秒
創建一個publictimeLeft()函數,用于返回剩余時間,直到時間到deadline為止
創建一個修改器(Modifier),用于檢查外部合約是否已經完成
創建一個修改器(Modifier),用于動態檢查deadline是否到了
只允許用戶在時間沒到deadline且沒有執行外部合約的情況下質押ETH
Mintscan推出智能合約驗證功能,已上線Cosm Wasm和Juno Network:金色財經消息,驗證節點基礎設施Cosmostation宣布基于Cosmos-SDK網絡的區塊瀏覽器Mintscan推出智能合約驗證新功能,現已上線Cosmos生態智能合約平臺鏈Cosm Wasm和Juno Network。
Cosmostation表示,智能合約驗證并不審計代碼,驗證后不代表代碼是安全的,僅表示校驗一致。下一步,Mintscan將把智能合約可視化拓展到其他鏈,將在第二季度和IBCwallet合作推出系列新功能。[2022/4/1 14:31:45]
只有當時間沒有到deadline且balances沒有達到閥值,用戶才可以撤回資金
創建一個execute()方法,將資金從質押合約轉移到外部合約并執行另一個合約外部函數
當你在本地測試合約是一定要注意:區塊鏈的狀態只有在區塊被打包時才會更新。區塊編號和區塊時間都只有在交易完成后才會更新。這意味著timeLeft()只有在交易完成后才會更新。如果你想模擬真實場景,可以改變Hardhat配置來模擬區塊自動挖礦。如果你想了解更多,請看mining-mode文檔。
Bitpanda任命Irina Nicoleta Scarlat為首席增長官:歐洲數字投資平臺Bitpanda宣布任命IrinaNicoletaScarlat為首席增長官,這是該公司新設立的職位。Irina將以統一的戰略引領多個領域,以在不同領域取得成果,并實施新的商業模式,讓Bitpanda保持并提高其快速增長速度。Irina從Revolut加入Bitpanda,在那里她領導全球增長部門,在此之前,她負責Uber在羅馬尼亞的營銷策略。(美通社)[2021/7/6 0:30:18]
合約代碼更新
//SPDX-License-Identifier:MITpragmasolidity^0
else{require(timeRemaining>0,"Deadlineisalreadyreached");}_;}/***functionexecute()publicstakeNotCompleteddeadlineReached(false){uint256contractBalance=address(this)
動態 | Scatter 11 最新版本將很快公布:據 IMEOS 報道,Crypto Tim 最近發布一個新視頻介紹 Scatter 新版本。Scatter 11 是其最新版本,很快將會公布。目前版本已經在測試階段,已經提交到 GitHub 上。在視頻中,Tim 介紹了 Scatter 新版本的一些新功能,如:1.新錢包用戶界面。2.代幣交易功能。3.市場:買賣和轉移 NFTs。4.社交賬號登錄:Twitter,Google 或者 Facebook。5.用戶聲望和身份管理層(RIDL),保護用戶免受欺騙行為攻擊。[2019/5/20]
/***}
為什么與練習1中的代碼不同?
我認為在這個實例中,變量openForWithdraw是不必要的。可以根據質押合約和外部合約的狀態直接判定是否可以撤回資金。
簡單起見,本例中withdraw函數不接受外部地址作為參數,只有質押者本人可以撤回資金。
我們已經將Solidity更新到0.8.4版本,Hardhat更新到2.6.1版本。有些scaffold-eth可能仍然依賴于舊版本的Solidity,我認為出于安全、優化和功能完整的考慮,使用最新的版本是很重要的。
IMEOS 與獨立社區 Scatter 達成共識 投票門戶網站即將上線: 據金色財經合作伙伴 IMEOS 報道, IMEOS 與獨立社區 Scatter 達成共識。為了讓 EOS 持有者擁有更便利的投票環境,由獨立社區 Scatter 建立的節點投票門戶網站即將上線。近日內就將在https://get-scatter.com提供測試版。
Scatter 會將把已提交的主網賬戶名作為可認領帳戶名,植入 Scatter 的 RIDL 系統中,以便各候選人將來在 Scatter 的節點投票門戶中認領自己的候選人身份。你不需要把你的密鑰存入Scatter。如果在本投票門戶中沒有配對ID的BP候選人,即沒有將提及的信息提交給 Scatter郵箱的候選人(所要信息在本條快訊最下),將無法編輯你的可選元數據(公司名,團隊logo等)。但無論提交與否,Scatter提供給投票者的候選人名單都將是完整的。
請所有未提交的節點候選者生成一條新的EOS鑰對,并把公鑰發至 scatter.bps@gmail.com,隨附一個你準備在主網中使用的帳戶名。[2018/5/24]
回顧一下
函數修改器(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反彈迫在眉睫?
鏈聞消息,波卡生態DeFi基礎協議Bifrost的插槽流動性釋放協議SALP上線Polkadot插槽競拍衍生品vsDOT,24小時內vsDOT鑄造量已突破2000萬美元.
1900/1/1 0:00:00作者|五火球教主出品|白話區塊鏈8月底以來,公鏈市場持續火熱,引起不少關注。另外,多鏈這邊Cosmos生態取得持續進展,波卡插槽拍賣也已經開始了.
1900/1/1 0:00:001DragonKART(KART)TokenSaleResultTheGate.ioStartupDragonKART(KART)saleresultisasfollows:KARTStartu.
1900/1/1 0:00:00尊敬的用戶:?AOFEX現已恢複DOGE的充值和提現功能。暫停期間給您帶來的不便,敬請諒解!?幣種更多介紹:DOGE 風險提示: 數字資產是創新投資產品,具有價格波動較大、24小時不停歇交易等性.
1900/1/1 0:00:002021年11月7-10日,Solana在葡萄牙里斯本舉辦了一場薈聚全球加密行業領導者、建設者和創新者的Breakpoint大會.
1900/1/1 0:00:00親愛的用戶: ????本期ZTEx-plusFLOKI項目申購如下:????項目名稱:FLOKI ????項目介紹: ????FlokiInu的股票代碼為FLOKI,是幾個月前推出的一個代幣.
1900/1/1 0:00:00