以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > DOT > Info

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

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

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

這些條件是:

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

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

需要掌握的重要概念

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

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

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

Grayscale CEO:“GBTC轉換為現貨ETF”若獲批,或為投資者帶來“數十億美元”回報:金色財經報道,Grayscale Investments首席執行官Michael Sonnenshein在最近的一次播客采訪中表示“無法想象”為什么美國證券交易委員會(SEC)“不想”保護Grayscale投資者,并將真正的資產價值返還給他們。

2月25日,在接受Peter McCormack主持的播客節目What Bitcoin Did的采訪時,Sonnenshein解釋說,美國SEC在2022年6月拒絕批準將GBTC轉換為現貨比特幣ETF的申請,“違反了行政程序法”。他補充道,批準比特幣期貨ETF,而不批準“GBTC的轉換”,美國SEC的行為是“武斷的”。

Sonnenshein指出,當美國SEC開始批準第一批比特幣ETF時,Grayscale認為這“是一個跡象”,表明美國SEC“實際上正在改變他們對比特幣的態度”。他表示,實際上有“數十億美元”的資金會在一夜之間立即回到投資者的口袋里,因為該基金將“回流”到其資產凈值。

Sonnenshein表示,這是因為GBTC目前的交易價格低于其凈資產價值(NAV),但如果將其轉換為ETF,就“不再”存在折扣或溢價。他重申,Grayscale“現在正在起訴美國SEC”,并可能在“2023年秋季”做出挑戰其拒絕批準的決定。[2023/2/26 12:30:17]

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

Azuki發布PBT標準,支持將現實物品綁定到鏈上實現Scan to Own:10月18日消息,Azuki發布Physical Backed Token (PBT),一種開源的Token標準,支持將現實物品綁定到以太坊區塊鏈上。其特點是去中心化的身份驗證和跟蹤實體物品的所有權沿襲,流程完全在鏈上,不需要中心化服務器。

據悉,第一個PBT應用是BEAN芯片,這是一種物理加密芯片,可以自我生成非對稱密鑰對。

PBT使硬件能夠創造新的體驗,Azuki稱之模式為Scan to Own。即如果物理物品被出售或贈予一個新的所有者,那么后續所有者就可以“Scan to Own”同一物理物品,從而實現PBT從前一個所有者到新所有者的去中心化轉移。[2022/10/18 17:29:44]

練習實現

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

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

Voyager Digital與Nascar車手Landon Cassill延長兩年贊助期:12月9日消息,美國Nascar車手Landon Cassill將于2022年在Xfinity系列賽中為Kaulig Racing車隊效力。加密貨幣經紀商Voyager Digital周四宣布與Landon Cassill延長兩年贊助期,該公司將再次完全以加密貨幣的形式支付其報酬。

據此前6月份報道,美國Nascar車手Landon Cassill在與加密投資應用Voyager簽署贊助協議后,將以加密貨幣全額領取報酬。他的加密報酬將主要由比特幣和萊特幣組成。(ESPN)[2021/12/9 7:28:59]

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

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

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

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

動態 | 截至2月19日Grayscale旗下加密資產管理總額為33億美元:2月20日,Grayscale Investments公布旗下管理加密投資產品凈資產、每股持有量和每股市場價格數據。數據顯示,截止2月19日,旗下加密資產管理總額為33億美元。[2020/2/20]

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

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

合約代碼更新

//SPDX-License-Identifier:MITpragmasolidity^0

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

食品采購調查公司Inscatech:在線分類賬需要人工輸入 區塊鏈數據容易被篡改:據彭博社報道,Inscatech是位于紐約的一家致力于調查食品采購中是否存在欺詐跡象的公司,該公司首席執行官Mitchell Weinberg對區塊鏈是否能解決食品安全問題提出了不同的觀點。Weinberg表示,由于在線分類賬需要人工輸入,這樣就容易出現人為錯誤或故意操縱,最終可能會影響數據鏈。他指出,搞亂數字分類賬并不需要是個技術天才。Weinberg提出了一些問題,包括犯罪分子難道不知道如何欺騙區塊鏈? 區塊鏈將如何幫助解決任何液體或化學性質的問題?這些問題可能很容易被摻假,而區塊鏈永遠不會知道是由誰,如何或者在何時造成的。[2018/4/10]

/***}

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

我認為在這個實例中,變量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反彈迫在眉睫?

Tags:HTTTPSETHDITCHTT價格tps幣行情reward ETHWeSendit

DOT
KART(Dragon Kart Token)_KAR

項目簡介:DragonKart是一款建立在區塊鏈平臺上的3D賽車電競遊戲,遊戲中的人物取材於越南知名藝術家ThangFly的皮卡龍系列.

1900/1/1 0:00:00
基于 Solana 的支付工具 Zebec 完成 600 萬美元融資,Republic Capital 等領投_API

鏈聞消息,基于Solana的支付工具Zebec完成600萬美元融資,RepublicCapital、ShimaCapital和BreyerCapital領投.

1900/1/1 0:00:00
Twitter成立加密團隊「Twitter Crypto」以探索去中心化應用程序_TWI

本文來自英國《金融時報》,原文作者:HannahMurphyOdaily星球日報譯者?|念銀思唐Twitter正在啟動一個專門的加密團隊——其首席執行官JackDorsey正在持續推動擁抱數字資.

1900/1/1 0:00:00
Bitwise撤回比特幣期貨ETF申請,繼續申請現貨比特幣ETF_BIT

11月11日消息,加密貨幣指數基金管理公司Bitwise首席信息官MattHougan發推宣布Bitwise撤回此前向美國證券交易委員會提交的比特幣期貨ETF申請.

1900/1/1 0:00:00
Gate.io NAFT/USDT流動性礦池今日新增額外限時獎勵 295,220 NAFT_GATE

為鼓勵更多用戶積極參與Gate.io流動性挖礦,今日上午11:00,NAFT/USDT流動性礦池獎勵新增額外295.

1900/1/1 0:00:00
Gate.io Daily Copy-Trading Strategy Pool Update: Top Annualized Return of Up to 1085.64%

Gate.ioquantitativetradingcenterhasbeenrenamed"copytrading"andisfullylaunched.

1900/1/1 0:00:00
ads