買以太坊 買以太坊
Ctrl+D 買以太坊
ads

KET:Aptos開發入門教程:創建資源(一)-ODAILY_BitNautic Token

Author:

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

本文目標:資源、能力、全局存儲、單元測試

介紹

Move語言使得在區塊鏈世界中創造數字“事物”,以及擁有和轉移它們變得非常容易。Move是一種非常簡單的語言——這是有意為之。復雜性總是引入額外風險,漏洞會在意想不到的應用中顯現出來。我們看到過利用智能合約導致數十億美元資產被盜的恐怖故事。因此,我們希望數字資產是安全的。Move語言的簡單性,為這種安全提供了一條實現路徑。

本篇文章,首先比較理論,因為在深入研究代碼之前,對于資源是什么、如何控制資源,有良好正確的感知非常重要。這會包括外行理論與學術理論。

資源:數字事物

Move中的“資源”就是是一種“數字事物”。那東西可以是你想要或想象的任何東西:演唱會門票、NFT、一本書、兩個企業之間的合同、社交媒體文章等。你能想到的東西,都可以是一種資源。我們以Alice和Bob去參加一場演唱會,他們需要門票為例。在Move中,我們可以簡單地這么創建門票類:

structConcertTickethaskey{seat:vector,ticket_code:vector,}

Move模塊中的代碼現在使我們能夠向Alice和Bob發送門票。有了上面的結構,我們可以簡單地創建一張門票:

數據:價值約1545萬美元的dYdX、4212萬美元的APT將在本周解鎖:5月8日消息,據Token Unlocks數據顯示,本周有7個加密項目將進行代幣解鎖,總計釋放價值超6000萬美元。

Nym(NYM)將于5月8日8時解鎖5,000,000枚代幣,價值約103萬美元,占總供應量的0.5%。

dYdX(DYDX)將于5月9日23時解鎖6,520,128枚代幣,價值約1545萬美元,占總供應量的0.652%。

Euler(EUL)將于5月10日19:55:47解鎖132,579枚代幣,價值約28.9萬美元,占總供應量的0.488%。

Moonbeam(GLMR)將于5月11日8時解鎖12,724,545.74枚代幣,價值約411萬美元,占總供應量的1.272%。

1inch(1INCH)將于5月11日16時解鎖36,429枚代幣,價值約1.6萬美元,占總供應量的0.002%。

Aptos(APT)將于5月12日8時解鎖4,543,478.03枚代幣,價值約4212萬美元,占總供應量的0.454%。

Sweatcoin(Sweat Economy)將于5月13日8時解鎖129,348,776枚代幣,價值約105萬美元,占總供應量的0.575%。[2023/5/8 14:49:01]

publicfuncreate_ticket(account:&signer,seat:vector,ticket_code:vector):ConcertTicket{letseat=vector;letticket_code=vector;ConcertTicket{seat,ticket_code}}

Aptos生態DeFi協議Econia Labs完成650萬美元種子輪融資:金色財經報道,Aptos 生態 DeFi 基礎設施協議 Econia Labs 完成 650 萬美元種子輪融資,Dragonfly 領投,Lightspeed Faction、Wintermute Ventures、Hudson River Trading、Aptos Labs 和 Flow Traders 等參投。

Econia Labs 旨在開發一個提供訂單簿交易的后端協議,并支持與提供一系列交易選項的 DeFi 應用集成,例如現貨交易或杠桿衍生品。該協議由 Econia Labs 與 Aptos 團隊合作開發。[2023/3/30 13:33:57]

在“外行理論”方法中,可以把資源想象成離散的物理對象,而不是像程序員一樣去思考。我們的“結構”是配方、建筑圖紙、指令列表或任何你想使用的類比。讓我們作個分解:

structWhatYouWantToCallIthasAbilities{any_name_i_want:one_of_a_few_type_choices,any_other_name_i_want:one_of_a_few_type_choices,this_is_the_last_one_i_need:one_of_a_few_type_choices}

Etherscan上線Aptos區塊瀏覽器“AptoScan”的測試版本:金色財經報道,以太坊瀏覽器Etherscan上線了基于Aptos的區塊瀏覽器“AptoScan”的測試版本。AptoScan支持用戶查看Aptos區塊鏈交易和鏈上分析數據,并提供開發者API資源。

據此前消息,公鏈項目Aptos正式啟動主網Aptos Autumn。據悉,Aptos是Facebook穩定幣項目Diem前團隊成員發起的公鏈項目,目標是建立一個更具可擴展性的區塊鏈,使用Move編程語言以及BFT共識協議,為數十億用戶提供服務。[2022/10/19 17:31:33]

你可以隨意命名資源,但它必須以大寫字母A-Z開頭。之后,名稱可以包含下劃線_、字母a-z、字母A-Z或數字0-9。該結構將具有某些“能力”,我們將在稍后介紹。但現在,只要知道這些能力將包括“key”、“store”、“copy”和“drop”中的一種或組合。

在結構中,你可以擁有任意數量的鍵值對。鍵名應該用蛇形命名。每個鍵值對中的值必須是以下類型之一:

boolu8u64u128addresssignervector:vector<{non-referenceMoveTypeId}>struct:{address}::{module_name}::{struct_name}::<{generictypes}>reference:immutable&andmutable&mutreferences

Ankr成為Aptos Blockchain首批RPC提供商之一:金色財經報道,據Ankr在社交媒體透露,該Web3基礎設施開發公司已作為遠程過程調用(RPC)提供商加入Layer 1區塊鏈Aptos,旨在將位于世界各地的區塊鏈節點聚集在一起提供低延遲且穩定的連接,促進鏈間多應用通信,并為Aptos區塊鏈上創建安全、可擴展和可升級的dApp提供支持。截至目前,Ankr已為19個區塊鏈提供PRC服務,包括Ethereum、BNB Chain、Solana、Polygon和Avalanche等。[2022/10/18 17:30:02]

我們在這里給我們的包一個名子和版本號。另一個值得注意的是TicketTutorial="0xe110"行。對于我們上面談到的結構和函數路徑,這是我們設置地址的地方。一旦我們編譯項目,我們會將字節碼模塊發布到Aptos區塊鏈上的一個帳戶。我們可以使用離散地址來調用結構和函數,例如:

0x95876b0492fe3912863e55bab6f74703::Module::Struct

但這有點麻煩。Move

這是一個簡單的內聯單元測試,以確保我們的代碼在編譯和部署之前在基礎層面上工作。第一行是編譯器指令,指示下一個函數是一個測試:

Aptos生態穩定幣協議Thala Labs將推出超額抵押穩定幣MOD:10月10日消息,Aptos生態去中心化穩定幣協議Thala Labs將推出超額抵押穩定幣Move Dollar(MOD),同時開發其他產品,以推動MOD在Aptos區塊鏈上的應用。其中包括一個AMM,為集成MOD的礦池提供優惠費用和功能,以及一個Launchpad以激勵所有Aptos項目將其金庫資產多樣化為MOD,接下來也將公布協議文檔以披露更多詳細信息。[2022/10/10 12:51:57]

#

它還為我們提供了創建簽名者的能力,我們可以使用@0x1地址表示法將其傳遞給測試函數。我們調用create_ticket函數來創建并提供簽名者座位號“K24”,票證代碼為“AB43C7F”。b"string"是一個字符串文字運算符,它給我們創建一個向量。通過這個函數調用,我們創建了ConcertTicket并將其存儲在地址0x1的收件人帳戶中。

這是一個測試,所以我們必須確保它有效。我們使用函數Signer::address_of將“recipient”的地址存儲在我們的變量recipient_addr中。然后我們可以使用exists來查看ConcertTicket資源是否實際存儲在該地址。exists指令是另一個具有exists(address):bool接口的全局存儲操作符。傳入我們的類和我們正在檢查的地址,會給我們一個關于該地址是否存在資源的true/false響應。

最后,Assert!是一個類似于宏的操作,可以讓我們測試一個條件,條件不滿足時將退出并返回錯誤代碼。如果我敲了接近4,000字對你們這些超級大腦來說還不夠,更多細節在這里:

AbortandAssert

在我們的測試中,我們使用exists函數來判斷資源是否存在,表示測試成功。讓我們運行那個測試。

在項目目錄中打開一個終端并運行:

cargotest

如果一切正常,你將得到以下輸出:

Finishedtesttarget(s)in0.50sRunningunittests(target/debug/deps/tutorial-6df2116825e4520d)running1testCACHEDMoveStdlibCACHEDCoreFrameworkCACHEDAptosFrameworkBUILDINGtutorialsRunningMoveunittests0xe110::Tickets::sender_can_create_ticketTestresult:OK.Totaltests:1;passed:1;failed:0testmove_unit_tests::move_unit_tests...oktestresult:ok.1passed;0failed;0ignored;0measured;0filteredout;finishedin0.41sRunningunittests(target/debug/deps/tutorial-b1774daddf2e13d8)running0teststestresult:ok.0passed;0failed;0ignored;0measured;0filteredout;finishedin0.00sDoc-teststutorialrunning0teststestresult:ok.0passed;0failed;0ignored;0measured;0filteredout;finishedin0.00s

我們的測試設置正在多個地方嘗試測試,但我們現在只專注于第一個測試并且它通過了!為了確保這一點,讓我們把測試中的函數調用注釋去掉

//create_ticket(&recipient,b"A24",b"AB43C7F");

并再次運行,得到這個輸出:

RunningMoveunittests0xe110::Tickets::sender_can_create_ticketTestfailures:Failuresin0xe110::Tickets:┌──sender_can_create_ticket──────│error:testfailure│┌─/Users/culbrethw/Development/Tutorials/Tickets/sources/TicketTutorial.move:42:3│││36│public(script)funsender_can_create_ticket(recipient:signer){││------------------------Inthisfunctionin0xe110::Tickets│·│42│assert!(exists(recipient_addr),1);││^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Testwasnotexpectedtoabortbutitabortedwith1here││└──────────────────Testresult:FAILED.Totaltests:1;passed:0;failed:1

這里顯示失敗!我們在錯誤消息中看到,Test不應該中止,但它在此處以1中止,其中with1是我們在Assert!失敗時發出的錯誤代碼。當然,有時我們希望測試在某些條件下失敗,但我們的大腦需要看到全綠,以便我們知道一切都按計劃進行。我們可以使用另一個編譯器指令構建我們的測試,通過將我們的測試修改為:

##public(script)funsender_can_create_ticket(recipient:signer){

其中abort_code是我們預期的錯誤。再次運行cargo測試,我們又回到了全綠:

RunningMoveunittests0xe110::Tickets::sender_can_create_ticketTestresult:OK.Totaltests:1;passed:1;failed:0testmove_unit_tests::move_unit_tests...ok

你可以在這里深入了解單元測試:UnitTestsdiem.github.io

本章節談了很多理論,但這至關重要。在下一章節中,我們將深入研究代碼,讓Alice和Bob能夠購買門票,甚至可以交易或出售這些門票,并確保每個人都能在演唱會上獲得他們想要的座位。敬請關注!

Tags:ESTTESTTICKETWESTTesta FinanceBitNautic TokenBANKETH

幣安app官方下載最新版
ARCH:什么是MEV,如何實現交易利益最大化?-ODAILY_ARCHIVE

最大可提取價值(MaximalextractablevalueMEV)是指驗證者通過添加、刪除并更改區塊中的交易順序,在超過標準區塊獎勵和gas費用的區塊生產中所能提取的最大價值.

1900/1/1 0:00:00
ALA:FTX崩潰將如何開啟規范化進程-ODAILY_ENERGY Vault (NFTX)

隨著FTX的瀕臨破產,加密行業近期又迎來新一輪地震。市場不乏各類觀點,本文將重點探索中心化交易所容易暴雷的本質原因,以及未來加密行業應如何建設更加規范及安全的交易環境.

1900/1/1 0:00:00
RC20:TRC20-USDD持有者已超過13萬-ODAILY_erc20幣是什么意思

據官方數據,TRC20-USDD持有者已超過13萬。 BitMart交易所已支持TRC20-USDC:據最新消息,BitMart交易所已正式支持TRC20-USDC.

1900/1/1 0:00:00
FTS:非實用性NFT將卷土重來嗎?-ODAILY_NFTS

Sept.2022,DanielDataSource:FootprintAnalytics-Non-UtilityNFTProjects實用性NFT是一種提供某種實用性或功能的代幣.

1900/1/1 0:00:00
PTI:Optimism VS ZK,以太坊擴容技術一覽-ODAILY_optimus幣總量

在展開對OptimismRollup和ZKRollup的對比分析之前,我們需要先了解Rollup的誕生背景.

1900/1/1 0:00:00
ETH:?DAOrayaki:基于哈希的后量子數字簽名是如何工作的?(一)-ODAILY_bitpie錢包app官網

基于哈希的數字簽名方案是后量子數字簽名的一個類別。與目前用于驗證區塊鏈交易的數字簽名方案不同,哈希函數為量子計算機提供的可利用結構要少得多,而且廣泛認為它是量子安全的.

1900/1/1 0:00:00
ads