橋接復雜鏈上協議與鏈下世界,賦予開發者構建生態之自由
Ergo無頭dApp框架是開發Ergo無頭dApp的首選Rust框架。ErgoHDF給開發者提供了首個可移植、基于UTXO的無頭dApp開發框架,此框架可應用于任何區塊鏈。
什么是無頭dApp?
無頭dApp是用于開發dApp的全新技術和商業模型,它剛開始在更廣泛的區塊鏈領域中占據一席之地。簡而言之,無頭dApp是讀取和參與鏈上智能合約協議的純粹可移植自包含邏輯。
換句話說,無頭dApp是一款可讓復雜鏈上協議接觸鏈下世界的軟件,它精簡的接口使任何人都可以在其上進行構建。此處的關鍵是,顧名思義,無頭dApp沒有構建于其上的前端。
無頭dApp提供的是在其上構建整個去中心化生態系統的自由。由于在默認情況下,無頭dApp是純粹的,可移植的,因此可以將它們編譯為任何桌面設備操作系統、移動設備操作系統或者瀏覽器。因為它們具有精簡的接口,所以可以輕松將其集成到腳本和機器人中;因為它們具有可組合性,所以可以在應用程序中一起使用,從而可以輕松地在不同協議之間套利,或者可以形成全新的用戶體驗,而無需了解每個受支持的無頭dApp的核心工作方式。
新入行的開發者對于開發智能合約協議的經驗有限,而無頭dApp在未來可以使他們仍然對dApp領域產生真正的影響。這種關注點分離的設計允許開發者在無頭dApp的基礎上進行構建,而無需花費大量時間來了解開發dApp的繁冗細節。
此外,無頭dApp開啟了全新商業模式的生態系統。無頭dApp并沒有讓智能合約協議的創建者從成功的協議中攫取所有潛在的利潤/價值,反而為前端開發者揭示了截至目前尚未利用的收入來源。通過僅將協議創建者的潛在收益分散到現在包含已開發的每個前端,我們可以從當今具有單個前端的流行dApp所產生的中心化效果上退一步。相反,我們可以激勵由各種開發者/公司構建的,由眾多獨立前端組成的穩健生態系統,所有人都可以因改善整個生態系統而獲利。
幣安閃兌交易平臺上線QUICK新資產:金色財經報道,幣安發布公告表示,幣安閃兌交易平臺已上線QUICK新資產,用戶現可零費用通過QUICK與BTC、USDT和閃兌交易平臺支持的其他代幣進行交易。[2023/8/3 16:16:16]
無頭dApp實現了這所有功能,并且同時進一步改善了開發者的體驗。
方案目標
1.讓開發者使用無頭dApp框架寫出自己的鏈下邏輯,從而創建他們自己面向所有平臺的無頭dApp。
2.為開發者提供從ErgodApp規范到無頭dApp的輕松體驗,并提供更強大的保證和簡單直接的實現途徑。
3.將dApp的鏈下邏輯與任何前端邏輯分開,從而無論什么應用或前端在集成無頭dApp時都保證了重用性。
4.為前端實現者提供易于使用的方法,以便輕松訪問dApp協議的當前狀態,而無需了解其工作原理。
5.通過使用新穎的設計模式為所需的輸入UTXO指定BoxSpec,將為無頭dApp定義和獲取輸入UTXO的概念進行了抽象化。
6.使腳本、機器人和其他軟件輕松地構建在使用無頭dApp框架構建的多個無頭dApp之上,從而提供了標準化的接口和一定程度的可組合性。
理解Ergo無頭dApp框架
在使用無頭dApp框架之前,有許多重要的術語和概念需要理解。無頭dApp框架的總體設計基于EIP-6:Ergo智能合約協議規范格式。
這意味著在最高層級上,dApp被定義為智能合約協議。如果dApp只有一個階段,則將其定義為“單階段智能合約協議”;如果dApp有多個階段,則它是“多階段智能合約協議”。HDF支持構建單階段和多階段協議dApp。
每個階段都可以被視為協議中的一個狀態,其中帶有ERG、代幣和數據的UTXO位于給定的時間點處。這可能有在整個協議中從一個階段移動到下一個階段的單個盒子、可能并行地通過所有階段的多個盒子或者是異步地在某些階段子集中移動的各種盒子。
數據:美SEC起訴幣安后,FBG Capital將此前提現的4400萬枚USDT再度存入幣安:6月6日消息,Lookonchain監測顯示,在美國證券交易委員會(SEC)起訴幣安的消息傳出之前,FBG Capital從幣安撤回了3500萬枚USDT,從OKX撤回了900萬枚USDT,而在美SEC起訴幣安的消息傳出之后,FBG Capital將4400萬枚USDT全部存入幣安。[2023/6/6 21:18:46]
無論給定智能合約協議的特定設計/復雜性如何,這些階段中的每個階段都需要“操作”。這些操作指的是狀態轉換,它允許:
1.ERG/代幣/數據進入協議”)
2.ERG/代幣/數據從協議中的一個階段轉到另一個階段
3.ERG/代幣/數據離開協議
在無頭dApp的背景下,這些操作中每個都由兩個關鍵部分組成:
1.獲取輸入
2.使用狀態轉換的結果來創建UTXO輸出
綜上所述,dApp可以是單階段或多階段的智能合約協議。dApp協議中的每個階段都可以執行一個或多個操作。然后,開發者可以通過指定給定操作所需的必需輸入并編碼所需的狀態轉換邏輯來定義這些操作,以創建嵌入在新創建的UnsignedTx中的UTXO輸出。
無頭dApp框架提供了指定這些構件的必需工具,以便從頭開始構建無頭dApp。在以下各節中,我們將詳細介紹無頭dApp框架的構建方式以及如何馬上開始使用它。
Ergo無頭dApp框架模塊
BoxSpec
本模塊展示了BoxSpec結構體,它可以用來創建UTXO的規范。根據協議中操作的要求,這被用來定義相關的盒子。
///用來制定`ErgoBox`參數的規范.
///本規范用作“真理之源”,來驗證和尋找和規范匹配的`ErgoBox`
///這經常被用于定義多階段智能合約協議中的階段
///但也可用于定義操作的輸入盒子
Gnosis聯創發表“關于Layer 2局限性”演說, 討論關于L2技術限制、中立性等問題:3月6日消息,以太坊基礎設施公司Gnosis聯合創始人Martin K?ppelmann在社交媒體上分享了以太坊丹佛大會ETH Denver中深入探討 \"關于Layer 2局限性(The Limits of L2)\" 的內容,討論了關于技術限制、中立性問題、缺少L1僵化帶來的挑戰、本地資產的安全性,以及針對“以太坊間協議”提出的解決方案。
其中,Martin指出長期來看, 即使被完美實現,L2仍會有一些根本問題: 1. L2只適合狀態不會膨脹的應用,比如交易所(只需要交易結果,不需要交易歷史),但對于狀態膨脹的應用,沒辦法進行擴容的;2. 在交易成本方面,L2峰值的gas費有時會到1美元以上,即使EIP4844落實(gas能降低90% ),但對于需要gas在1美分以下(sbu-cent)的場景依舊不適用,此外,需求增加后,gas依舊會升高;3. L2在資產退出的問題,如果退出成本超過了用戶在L2上的資產價值,小額資產用戶可能無法支付退出的gas費,即使所有用戶都能負擔,但由于寬帶限制也會被卡住;4. 部分應用無法被roll up,例如 CirclesUBI、POAP狀態太大,無法導出到L1,不可能壓縮這個數據并把它放在L1上,所以L2對他們沒用。
他還補充道,L2的sequencer非常中心化,中心化的sequencer非常有可能被審查,甚至強制 KYC (只接受來自KYC地址的交易);L2之所以安全是基于L1,L1本身還在發展中, 往后5到10年還會做許多修改,這就給L2帶來許多挑戰。
此外,Martin提出一個很有趣解決方案,類似于Cosmos的IBC模型,可以做另一個鏈,跟以太坊運行一樣的東西,然后通過無信任的ZK-bridge來連接,組成一個以太坊宇宙(Ethereumverse)。[2023/3/6 12:44:14]
///所有字段都被包進`Option`,可以不必指定字段
#
#
pubstructBoxSpec{
///盒子地址
EmpiresX首席交易員承認涉嫌證券欺詐指控:9月9日消息,根據美國司法部發布的文件,加密貨幣平臺EmpiresX首席交易員Joshua David Nicholas對針對其的證券欺詐陰謀指控表示認罪,該計劃從投資者那里獲得約1億美元。
Nicholas承認,他和其他幾人通過就所謂的自營交易機器人和欺詐性的保證回報承諾,給公司的投資者和潛在投資者做出大量虛假陳述,以欺詐性方式宣傳EmpiresX。此外,EmpiresX從未注冊,也未采取措施注冊。Joshua David Nicholas最高將面臨五年監禁,目前尚未確定宣判日期。[2022/9/9 13:18:45]
address:Option<ErgoAddressString>,
???///nanoErgs被允許的范圍
???value_range:Option<Range<NanoErg>>,
???///排序的`Constant`列表,定義了`ErgoBox`寄存器
???///第一個元素當作R4,第二個當作R5,以此類推.
???registers:Vec<Option<Constant>>,
???///排序的`TokenSpec`列表定義了`ErgoBox`代幣
???tokens:Vec<Option<TokenSpec>>,
???///可選謂詞,允許定義在驗證盒子時處理的自定義規范邏輯
???predicate:Option<fn(&ErgoBox)->bool>,
}
構造出BoxSpec以后,有許多基本方法來簡化為dApp編寫鏈下代碼的體驗。
例如,verify_box允許測試作為輸入提供的ErgoBox是否與使用BoxSpec創建的規范匹配。
pub?fn?verify_box(&self,?ergo_box:?&ErgoBox)?->?Result<()>?{
新加坡金融管理局探索 DeFi 潛力,嘗試證券代幣化:金色財經報道,新加坡中央銀行正在利用摩根大通幫助領導一個新的區塊鏈試點,探索 DeFi 的潛力。即將進行的測試是新加坡金融管理局 (MAS) Project Guardian 計劃的一部分,該計劃于周二啟動。Project Guardian 旨在評估在包括以太坊在內的公共區塊鏈上運行的 DeFi應用程序是否可以在不引入額外的不當風險的情況下改善批發借貸流程。第一步:將債券和存款代幣化,智能合約為交易執行提供動力。?MAS 還邀請了新加坡跨國銀行星展銀行與當地數字資產發行初創公司 Marketnode 共同領導該計劃。
該項目打算專注于數字證券,或由傳統金融工具支持的區塊鏈代幣。新加坡中央銀行兼任國家金融監管機構,將利用試點結果為其加密貨幣政策制定提供信息。[2022/6/1 3:54:11]
BoxTraits
本模塊包含三種Trait:
1.WrappedBox
2.SpecifiedBox
3.ExplorerFindable
所有的ExplorerFindable結構體也是SpecifiedBox,兩者同時都是WrappedBox。在鏈下代碼中,將為操作定義所有UTXO輸入作為實現SpecifiedBox的結構體,同時不需額外工作便可自動派生WrappedBox和ExplorerFindable。
WrappedBox提供了簡化的接口來和ErgoBox交互。另一方面,SpecifiedBox指定WrappedBox也通過box_spec()方法實現了BoxSpec。最后,ExplorerFindable在SpecifiedBoxtrait的頂部提供了一個接口,用于從ErgoExplorerAPI實例中查找與BoxSpec匹配的盒子。
SpecifiedBoxes
此模塊展示了實現“SpecifiedBox/WrappedBox/ExplorerFindable”trait的通用“SpecifiedBox”結構。這些盒子可用作鏈下協議代碼中操作的輸入,同時還使前端開發者能夠輕松訪問鏈上數據。
目前已實現的指定盒子有如下幾種:
1.ErgsBox
2.ErgUsdOraclePoolBox
3.AdaUsdOraclePoolBox
ErgBox用于獲取將Erg保留在其中的輸入,這些輸入可在智能合約協議操作中使用。
ErgUsdOraclePoolBox和AdaUsdOraclePoolBox為無頭dApp開發者和前端實現者提供了極其簡化的接口,以利用來自兩個當前運行的預言機池的數據。這兩個指定的盒子甚至可以用于需要從預言機池盒子讀取當前匯率的錢包/任何鏈下應用程序中。
下面的代碼塊顯示了如何在4行中從開發者自選的ErgoExplorerAPI實例中讀取當前的ERG-USD預言機池匯率:
let?url?=?ErgUsdOraclePoolBox::explorer_endpoint("https://api.ergoplatform.com/api").unwrap();let?response?=?get(&url).unwrap().text().unwrap();let?oracle_pool_box?=????ErgUsdOraclePoolBox::process_explorer_response(&response).unwrap().clone();println!(????"Erg-USD?Oracle?Pool:?{}?nanoErgs?per?USD",????oracle_pool_box.datapoint());
OutputBuilders輸出構建器
此模塊給出了一些結構體,它們提供了在操作中創建通用UTXO輸出的基本接口。這些通常用于創建保存用戶更改或支付交易手續費的輸出。
一些輸出構建器的例子包括:
1.ChangeBox
2.TokensChangeBox
3.TxFeeBox
TxCreation創建交易
該模塊提供了一些基本的函數,這讓開發者更加容易地在操作中創建UnsignedTransaction。
Encoding編碼
該模塊提供了許多有用的函數,這些函數與把值從一種形式轉換為另一種形式的編碼/解碼/包裝/展開有關。
示例:
pub?fn?erg_to_nano_erg(erg_amount:?f64)?->?u64;pub?fn?nano_erg_to_erg(nanoerg_amount:?u64)?->?f64;pub?fn?unwrap_long(c:?&Constant)?->?Result<i64>;pub?fn?serialize_p2s_from_ergo_tree(ergo_tree:?ErgoTree)?->?P2SAddressString;
ProceduralMacros過程宏
此模塊提供了三個過程宏,以使開發者的工作變得更加簡單:
1.WrapBox
2.SpecBox
3.WASMBox
WrapBox只是實現了WrappedBoxtrait;SpecBox實現了使用BoxSpec的自定義new()方法,并且實現了ExplorerFindabletrait;WASMBox實現了兩種基本方法來讓結構體啟用WASM支持。
開始入門
MathBountyHeadlessdApp教程系列已創建,可以指導初學者使用Ergo無頭dApp框架。從項目創建到實現基于命令行的界面,您將得到精確到每一步的指導來逐步開發自己的無頭dApp。
目前可用的部分:
1.數學懸賞無頭dApp-現在開始編寫你的第一個操作(譯注:鏈接地址
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/1-math-bounty-dApp-getting-started.md)
2.數學懸賞無頭dApp-完成無頭dApp(譯注:鏈接地址?
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/2-math-bounty-dApp-finishing-the-headless-dapp.md)
3.數學懸賞無頭dApp-為創建賞金編寫CLI前端(譯注:鏈接地址
https://github.com/Emurgo/ergo-headless-dapp-framework/blob/main/tutorials/Math_Bounty/3-math-bounty-dApp-writing-a-cli-frontend-that-allows-creating-bounties.md)
文檔
運行以下命令來閱讀無頭dApp框架的文檔:
cargo?doc?--open
Ergo平臺簡介
Ergo平臺/ErgoPlatform是一個從頭搭建的安全、適應力強、開放、無需許可、真正去中心化的DeFi應用底層公鏈,主要專注于提供一種高效、安全、簡便的方式去實現金融合約。它基于全新PoW共識機制Autolykos且永守PoW,采用UTXO升級版EUTXO模型構建,沿襲比特幣傳統但又新增許多功能,實現復雜金融合約的能力遠超對手。其原生代幣ERG總供應量為97,739,925枚,永不增發,永不銷毀。Ergo于2017年開始開發,主網于2019年7月1日上線。由Github上大名鼎鼎的kushti帶領擁有10年區塊鏈理論研究和實戰經驗的頂尖技術團隊傾力打造。團隊成員曾參與開發NXT、Scorex、Cardano和Waves等。kushti是Ergo的聯合創始人兼核心開發者,曾是NXT的核心開發者、smartcontract.com的聯合創始人,帶領團隊開發有行業領先的預言機池。詳情請登錄https://www.jinse.com/blockchain/979572.html。
作者簡介
RobertKornacki是頂級區塊鏈解決方案公司、Cardano創始單位之一EMURGO的研發負責人和智能合約開發者,也是Ergo基金會成員。
DenysZadorozhnyi是Ergo公鏈平臺Rust軟件工程師、Scala軟件工程師,也是Ergo開發者之一。
作者:RobertKornacki;DenysZadorozhnyi
譯者:Ergo公鏈御用翻譯之一,留美計算機博士兼區塊鏈愛好者Pie。
聲明:本文著作權歸原作者所有,所寫內容僅代表原作者觀點,不做投資理財建議。
昨早我們在文章末尾插播了一下UniswapV3的官宣消息。由于大家對V3期盼已久,所以昨天媒體也紛紛跟進,一通報道.
1900/1/1 0:00:00條條道路皆不暢的時候,美圖打量起幣圈,分別于3月7日和17日分兩批購買了4000萬美元和5000萬美元的虛擬加密數字貨幣.
1900/1/1 0:00:001.金色硬核|?比特幣、貨幣與國家貨幣和國家分離是有史以來人類社會最重大的變化。為什么?讓我們回到歷史,找出答案.
1900/1/1 0:00:00輕量區塊鏈協議Mina是什么?Mina協議由舊金山區塊鏈創業公司O(1)Labs開發的一個旨在實現恒定大小的新型Layer1區塊鏈,并且它可做到快速驗證區塊鏈狀態.
1900/1/1 0:00:00基于跨鏈的DEX是去中心化交易所發展的必然。3月9日,金色財經從IRISnet開發團隊獲悉,基于IRISnet主網AMM模塊的去中心化交易應用Coinswap將在3月底左右開啟流動性挖礦等活動.
1900/1/1 0:00:00核財經APP深核報道?Coinbase的上市是2021年加密資產領域的大事件之一。3月18日,Coinbase上市前選擇Reddit進行為期3天的“路演”,其直接上市計劃將在4月完成.
1900/1/1 0:00:00