奇米超碰,男男激情网站,少妇无码免费专区,九色视频老

  • 元宇宙:本站分享元宇宙相關(guān)資訊,資訊僅代表作者觀點(diǎn)與平臺(tái)立場(chǎng)無(wú)關(guān),僅供參考.

Bitcoin擴(kuò)展概念驗(yàn)證:在支持 OP_CAT 的Bitcoin上實(shí)現(xiàn)橋契約

  • 2024年12月04日 17:00

來(lái)源:Starknet中文社區(qū)精選速覽

深入探討在Bitcoin上構(gòu)建demo橋契約,為Starknet的生產(chǎn)級(jí)橋奠定基礎(chǔ)

實(shí)施存取款聚合器、橋和取款擴(kuò)展器四種智能合約

利用遞歸契約和默克爾樹(shù)有效地批量處理存款和取款請(qǐng)求,同時(shí)保持用戶賬戶的完整性和安全性引言

本文,我們深入探討了sCrypt如何在Bitcoin上構(gòu)建一個(gè)demo橋契約。該概念驗(yàn)證實(shí)現(xiàn)旨在為Starknet二層(L2)網(wǎng)絡(luò)的生產(chǎn)級(jí)橋奠定基礎(chǔ)。該橋的設(shè)計(jì)允許將多個(gè)存款或取款請(qǐng)求交易合并為一個(gè)根交易,并將其并入主橋契約中,更新其狀態(tài),該狀態(tài)由一組以默克爾樹(shù)組織的賬戶組成。

由于橋契約腳本非常復(fù)雜,我們?cè)趕Crypt利用了sCrypt專屬領(lǐng)域語(yǔ)言(DSL)來(lái)編寫(xiě)其實(shí)現(xiàn)方式。概覽

該橋由一個(gè)遞歸契約Bitcoin腳本構(gòu)成。在這里,「契約」意味著鎖定腳本能夠?qū)χС鼋灰资┘訔l件,而「遞歸」則意味著上述規(guī)則足夠強(qiáng)大,可以在鏈上實(shí)現(xiàn)持久的邏輯和狀態(tài)(這是任何鏈上智能合約的基本要求)。

該腳本存在于一系列交易中,每筆交易都對(duì)后續(xù)交易結(jié)構(gòu)施加約束,而后續(xù)交易解鎖當(dāng)前交易的輸出。每當(dāng)一筆新交易添加到這條鏈中時(shí),就代表了橋狀態(tài)的更新。因此,這條鏈的末端保存著當(dāng)前的橋狀態(tài)。

該默克爾樹(shù)保存了一組固定賬戶槽的數(shù)據(jù)。葉節(jié)點(diǎn)包含各自賬戶數(shù)據(jù)的哈希值,其中包括地址和余額。為了表示空的賬戶槽,這些槽被標(biāo)記為零字節(jié)。

每次橋的更新都會(huì)導(dǎo)致賬戶樹(shù)發(fā)生變化。為了方便這種更新,我們依賴于默克爾證明,其驗(yàn)證在Bitcoin腳本中非常高效。更新主要包含兩個(gè)步驟。首先,我們驗(yàn)證一個(gè)默克爾證明,以證明證明默克爾樹(shù)包含了特定賬戶的當(dāng)前狀態(tài)。然后,在計(jì)算該賬戶的新?tīng)顟B(tài)后,我們使用前述默克爾證明中的相同輔助節(jié)點(diǎn)來(lái)推導(dǎo)出新的根哈希值。

更新可以是存款,也可以是取款。橋可在單筆交易中執(zhí)行這些更新的批量操作。存款

我們的目標(biāo)是讓用戶能夠獨(dú)立提交存款或取款請(qǐng)求。為此,用戶分別創(chuàng)建交易,分別支付給存款或取款聚合契約。該契約將這些請(qǐng)求匯總成一棵默克爾樹(shù)。該樹(shù)的根哈希值可以合并到主橋契約中,主橋契約隨后處理每筆存款或取款。

在存款交易中,除了對(duì)存款數(shù)據(jù)進(jìn)行哈希并構(gòu)建默克爾樹(shù)之外,契約還確保鎖定在契約輸出中的存款satoshis按正確的方式累積至樹(shù)的根節(jié)點(diǎn)。聚合契約確保只有正確的鏈上智能合約才能使用這些資金。(當(dāng)然,在生產(chǎn)環(huán)境中,我們也會(huì)允許用戶取消其存款交易)。

這種樹(shù)形結(jié)構(gòu)的設(shè)計(jì)源于契約腳本構(gòu)建的限制,即不允許包含過(guò)多輸入和輸出的交易。樹(shù)形結(jié)構(gòu)使我們能夠擴(kuò)展到潛在的任意吞吐量。取款請(qǐng)求

取款請(qǐng)求的聚合與存款類似,但有幾處不同。首先,我們需要一種認(rèn)證方法,以便用戶可以從自己的賬戶取款。這與存款不同,存款是任何人可以向任何賬戶存款,這與Bitcoin地址的使用方式類似。認(rèn)證在聚合樹(shù)的葉節(jié)點(diǎn)層完成。取款請(qǐng)求聚合契約會(huì)檢查提款地址是否與葉交易中第一個(gè)輸入的P2WPKH地址匹配。

這確保了地址的所有者批準(zhǔn)取款,因?yàn)樗麄円呀?jīng)簽署了請(qǐng)求取款的交易。與存款聚合相比,另一個(gè)細(xì)微的不同之處在于,我們還會(huì)將中間的累計(jì)金額進(jìn)行哈希,向上傳遞到樹(shù)結(jié)構(gòu)中。這是因?yàn)樵跀U(kuò)展取款時(shí),我們需要這些數(shù)據(jù),稍后會(huì)詳細(xì)說(shuō)明。

敏銳的讀者可能會(huì)注意到這種取款請(qǐng)求認(rèn)證模型的潛在問(wèn)題。假如操作員決定作弊,創(chuàng)建一個(gè)聚合樹(shù)的根交易,而聚合樹(shù)的數(shù)據(jù)是通過(guò)未經(jīng)認(rèn)證的虛假取款請(qǐng)求在本地偽造的,那該怎么辦?我們需要一種有效的方法來(lái)驗(yàn)證根交易是否來(lái)自有效的葉交易。

為了解決這個(gè)問(wèn)題,我們執(zhí)行了所謂的「創(chuàng)世檢查(genesischeck)」。本質(zhì)上,我們讓聚合契約檢查其前一筆交易以及前兩筆交易,即其「祖先交易」。契約驗(yàn)證這些交易是否包含相同的契約腳本,并執(zhí)行相同的檢查。通過(guò)這種方式,我們實(shí)現(xiàn)了一個(gè)歸納式的交易歷史檢查。由于前兩筆交易與當(dāng)前契約一樣,執(zhí)行了相同的檢查,我們可以確認(rèn)這些交易的「祖先」也執(zhí)行了相同的檢查,一直追溯到葉節(jié)點(diǎn)(即創(chuàng)世交易)。

當(dāng)然,我們對(duì)樹(shù)的兩個(gè)分支都執(zhí)行了驗(yàn)證。因此,每個(gè)聚合節(jié)點(diǎn)交易總共檢查最多六筆交易。取款擴(kuò)展

現(xiàn)在讓我們進(jìn)入解決方案的最后部分:取款擴(kuò)展。在處理一批取款請(qǐng)求后,主橋契約會(huì)強(qiáng)制執(zhí)行一個(gè)輸出,將總?cè)】罱痤~支付給擴(kuò)展契約。我們可以將這個(gè)契約視為執(zhí)行取款請(qǐng)求聚合契約所做操作的逆向過(guò)程。其從取款樹(shù)的根節(jié)點(diǎn)開(kāi)始,將其擴(kuò)展為兩個(gè)分支,每個(gè)分支包含應(yīng)支付到該分支的相應(yīng)取款金額。這個(gè)過(guò)程一直延續(xù)到取款樹(shù)的葉節(jié)點(diǎn)。葉交易強(qiáng)制執(zhí)行一個(gè)簡(jiǎn)單的支付輸出,向賬戶所有者的地址支付他們要求提取的金額。

實(shí)現(xiàn)方式

為了實(shí)現(xiàn)我們的橋契約,我們開(kāi)發(fā)了四個(gè)sCrypt智能合約,分別處理系統(tǒng)的不同方面。本節(jié),我們將簡(jiǎn)要概述每個(gè)合約的功能。

存款聚合器合約

存款聚合器(DepositAggregator)合約將單個(gè)存款聚合成一棵默克爾樹(shù),然后將其合并到主橋契約中。這種聚合可實(shí)現(xiàn)批量存款處理,減少需要由橋單獨(dú)處理的交易數(shù)量。此外,它還允許用戶獨(dú)立提交存款,稍后由操作員進(jìn)行處理。

合約構(gòu)建函數(shù)有兩個(gè)參數(shù):

operator:橋操作員的公鑰,該操作員有權(quán)聚合存款。

bridgeSPK:主橋契約的腳本公鑰(SPK),確保聚合存款正確合并。

存款聚合器的核心功能封裝在「聚合(aggregate)」方法中。該方法執(zhí)行以下步驟:

驗(yàn)證Sighash原像和操作員簽名:確保交易經(jīng)過(guò)橋操作員授權(quán),并且sighash原像格式正確且屬于正在執(zhí)行的交易。通過(guò)這篇文章了解關(guān)于sighash原像驗(yàn)證的更多信息。

rEnq9qEO4cCSkK9cEmetlRSO3iIRrHBZiFHMKjrz.jpeg

默克爾樹(shù)聚合:驗(yàn)證作為見(jiàn)證哈希值傳遞的存款數(shù)據(jù)是否與前置交易中存儲(chǔ)的狀態(tài)匹配。

金額驗(yàn)證:確認(rèn)前置輸出中的金額與指定的存款金額匹配,確保資金在聚合中正確計(jì)算。

狀態(tài)更新:通過(guò)連接前置交易的哈希值計(jì)算新的哈希值,并更新OP_RETURN輸出中的狀態(tài)。

重入攻擊防范:強(qiáng)制執(zhí)行嚴(yán)格的輸出腳本和金額,以防止未經(jīng)授權(quán)的修改或雙花。

一旦存款被聚合,它們必須合并到主橋契約中。這一過(guò)程由「最終確認(rèn)(finalize)」方法處理,其步驟包括:

驗(yàn)證前置交易:與「聚合(aggregate)」方法類似,驗(yàn)證前置交易,以確保合并數(shù)據(jù)的完整性。

與橋契約的集成:通過(guò)引用橋的交易ID和腳本公鑰,檢查聚合后的存款是否正確地合并至主橋契約中。

存款聚合合約的完整源代碼可查看GitHub。

取款聚合器合約

取款聚合器(WithdrawalAggregator)合約旨在將單個(gè)取款請(qǐng)求聚合成一棵默克爾樹(shù),與存款聚合器處理存款的方式類似。不過(guò),取款操作需要額外的認(rèn)證,以確保只有合法的賬戶所有者才能從其賬戶中提取資金。

取款聚合器的核心功能封裝在「聚合(aggregate)」方法中,該方法執(zhí)行以下步驟:

構(gòu)建和驗(yàn)證前置交易ID:該過(guò)程驗(yàn)證已聚合的前置交易是否有效并正確引用。

所有權(quán)證明驗(yàn)證:驗(yàn)證所有權(quán)證明交易確保只有合法的所有者才能從賬戶中提取資金。

所有權(quán)證明交易:一種證明控制取款地址的交易。合約檢查取款請(qǐng)求中的地址是否與所有權(quán)證明交易中的地址匹配。

ECUfdrM2BVM7XXXvF6v2hqlOIEWuRvsfQDBaR1YQ.jpeg

金額驗(yàn)證和總金額計(jì)算:該方法通過(guò)將取款請(qǐng)求或之前的聚合進(jìn)行金額相加,計(jì)算出要提取的總金額。

狀態(tài)更新:計(jì)算一個(gè)新的哈希值,其中包含前置交易的哈希值和取款金額的總和。這個(gè)哈希值存儲(chǔ)在OP_RETURN輸出中,以更新?tīng)顟B(tài)。

重入攻擊防范和輸出強(qiáng)制:確保嚴(yán)格定義輸出,以防止未經(jīng)授權(quán)的修改或重入攻擊。

取款聚合合約的完整源代碼可查看GitHub。

橋合約

橋(Bridge)合約是我們系統(tǒng)的核心組件,是維護(hù)橋狀態(tài)的主要契約,包括以默克爾樹(shù)組織的賬戶及其余額。其通過(guò)與我們之前討論的聚合器合約集成,處理存款和取款操作。

合約構(gòu)建函數(shù)有兩個(gè)參數(shù):

operator:橋操作員的公鑰,該操作員有權(quán)更新橋狀態(tài)。

expanderSPK:取款擴(kuò)展器(WithdrawalExpander)合約的腳本公鑰(SPK),在取款過(guò)程中使用。

存款方法負(fù)責(zé)處理聚合的存款交易,并相應(yīng)更新賬戶余額。

KQWileQ0AFapniJoIRFe2yjCJetPLlzxpnxKhGDo.jpeg

存款方法執(zhí)行的步驟包括:

處理存款并更新賬戶:

遍歷存款,并使用「應(yīng)用存款(applyDeposit)」方法將每筆存款應(yīng)用到相應(yīng)的賬戶。

更新橋狀態(tài)和輸出:

處理存款后,計(jì)算新的賬戶默克爾根。

創(chuàng)建新的狀態(tài)哈希值,表示更新后的橋狀態(tài)。

構(gòu)建合約輸出,將總存款金額添加至橋余額中。

保證輸出符合預(yù)期格式,以維護(hù)數(shù)據(jù)完整性。

取款方法處理聚合的取款交易,更新賬戶余額,并通過(guò)取款擴(kuò)展器準(zhǔn)備分配的資金。

vXlGx3uewC8GiI2ID0vW6ds13sVMjxSsnFdQUkvR.jpeg

取款方法執(zhí)行的步驟包括:

處理取款請(qǐng)求并更新賬戶:

遍歷取款請(qǐng)求,并使用「應(yīng)用存款(applyDeposit)」方法將每筆取款應(yīng)用到相應(yīng)的賬戶。

更新橋狀態(tài)和輸出:

處理取款后,計(jì)算新的賬戶默克爾根。

創(chuàng)建新的狀態(tài)哈希值,表示更新后的橋狀態(tài)。

構(gòu)建合約輸出,將總?cè)】罱痤~從橋余額中扣除。

為取款擴(kuò)展器合約創(chuàng)建一個(gè)擴(kuò)展輸出,其中包含總?cè)】罱痤~。

保證輸出符合預(yù)期格式,以維護(hù)數(shù)據(jù)完整性。

完整源代碼可查看GitHub。取款擴(kuò)展器合約

取款擴(kuò)展器(WithdrawalExpander)是我們橋系統(tǒng)的最終組件,負(fù)責(zé)根據(jù)用戶的取款請(qǐng)求將聚合的取款金額分發(fā)回各個(gè)用戶。它逆轉(zhuǎn)了取款聚合器執(zhí)行的聚合過(guò)程,將聚合的取款數(shù)據(jù)擴(kuò)展回單個(gè)用戶的支付。

YqKpamtkBxqmV4fUoOZkWnmA7Bgnq3VORWKfdbRv.jpeg

進(jìn)一步擴(kuò)展:如果該方法尚未達(dá)到葉節(jié)點(diǎn)層,則會(huì)繼續(xù)擴(kuò)展,將聚合數(shù)據(jù)分成兩個(gè)分支,并創(chuàng)建輸出,以供進(jìn)一步擴(kuò)展的交易消費(fèi)。

結(jié)語(yǔ)

在這個(gè)概念驗(yàn)證實(shí)現(xiàn)中,我們使用sCrypt嵌入式領(lǐng)域?qū)僬Z(yǔ)言(DSL)開(kāi)發(fā)了一個(gè)基于OP_CAT支持的Bitcoin的橋契約。該橋利用遞歸契約和默克爾樹(shù)有效地批量處理存款和取款請(qǐng)求,同時(shí)保持用戶賬戶的完整性和安全性。通過(guò)設(shè)計(jì)和實(shí)施存款聚合器(DepositAggregator)、取款聚合器(WithdrawalAggregator)、橋(Bridge)和取款擴(kuò)展器(WithdrawalExpander)這四種智能合約,我們提供了一種在Bitcoin上管理有狀態(tài)交互的方法,促進(jìn)了與像Starknet這樣的二層網(wǎng)絡(luò)的互操作性。這項(xiàng)工作為構(gòu)建生產(chǎn)級(jí)橋提供了技術(shù)基礎(chǔ),可能增強(qiáng)Bitcoin生態(tài)系統(tǒng)中的可擴(kuò)展性和功能性。

所有代碼實(shí)現(xiàn)以及端到端測(cè)試均可在GitHub上獲取。

[全文完]

原文鏈接:https://starkware.co/blog/implementing-a-bridge-covenant-on-op-cat-bitcoin/

Mirror: https://mirror.xyz/starknet-zh.eth/zFbhQB7gfmSTV4CcTv5MRqJBUnKuwMLTNOgZ6jUgDK8

Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM

人妻中文乱码在线网站| 亚洲天堂2020a| 色婷婷亚洲AV无码精品| 亚洲无码人妻视频网站| 精品久久久久久无码中文字幕| 亚洲福利在线无码天天看| 国产精品久久无码电影| 国产精品观看在线亚洲人成网| 在线欧美色区| 精品 日韩 欧美| 91精品国产99久久久久久| 日韩成视频在线精品| 久久超碰精品| 新狼窝色AV性久久久久久| 精品一区久久二区欧美三区| 男人东京热社区勉费视频| 噜噜v| www.中文字幕av| 无码乱日| 少妇精品无码一区二区免费法国| 欧美日韩a| 久久无无码| 99久久精品午夜一区二区紧身裤 | 全黄性性激高免费放视频| 精品国产综合区久久久久久无码| 嫩草精品| 在线国产99| 人人天天夜夜曰曰狠狠狠肉感 | 插插网爽| 久久婷婷香蕉热狠狠综合| 日韩AV综合一区二区三区| 亚洲第一色区| 精精xxxx视频| 色综合无码| 91精品国产福利在线观看你| 熟妇无码一区二区| 免费AV一区二区三区| 亚洲五月婷婷九色| 亚洲а∨男人的天堂| 欧美综合亚洲图片综合区| 亚洲精品无码A级毛片|