本文目標:資源、能力、全局存儲、單元測試
介紹
Move語言使得在區塊鏈世界中創造數字“事物”,以及擁有和轉移它們變得非常容易。Move是一種非常簡單的語言——這是有意為之。復雜性總是引入額外風險,漏洞會在意想不到的應用中顯現出來。我們看到過利用智能合約導致數十億美元資產被盜的恐怖故事。因此,我們希望數字資產是安全的。Move語言的簡單性,為這種安全提供了一條實現路徑。
本篇文章,首先比較理論,因為在深入研究代碼之前,對于資源是什么、如何控制資源,有良好正確的感知非常重要。這會包括外行理論與學術理論。
資源:數字事物
Move中的“資源”就是是一種“數字事物”。那東西可以是你想要或想象的任何東西:演唱會門票、NFT、一本書、兩個企業之間的合同、社交媒體文章等。你能想到的東西,都可以是一種資源。我們以Alice和Bob去參加一場演唱會,他們需要門票為例。在Move中,我們可以簡單地這么創建門票類:
structConcertTickethaskey{seat:vector,ticket_code:vector,}
Move模塊中的代碼現在使我們能夠向Alice和Bob發送門票。有了上面的結構,我們可以簡單地創建一張門票:
Aptos推出大使計劃“Aptos Collective”:2月17日消息,Aptos宣布推出大使計劃Aptos Collective,將向Aptos社區中參與度高的成員開放,以支持Aptos社區的發展。Aptos表示,Aptos Collective的成員將與核心Aptos Foundation和Aptos Labs團隊成員密切合作,為Aptos生態系統做出貢獻。[2023/2/17 12:12:43]
publicfuncreate_ticket(account:&signer,seat:vector,ticket_code:vector):ConcertTicket{letseat=vector;letticket_code=vector;ConcertTicket{seat,ticket_code}}
在“外行理論”方法中,可以把資源想象成離散的物理對象,而不是像程序員一樣去思考。我們的“結構”是配方、建筑圖紙、指令列表或任何你想使用的類比。讓我們作個分解:
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}
Aptos亞太區負責人:約200個Aptos生態項目處于測試階段,已有超500個項目申請Aptos Grant:1月16日消息,Aptos 亞太區負責人 HC 在 Aptos 新年 AMA 活動上發言表示,在過去的一年中 Aptos 生態發展迅猛。截至目前,已有超過 50 個生態項目上線 Aptos,處于測試網和審計階段項目已經達 200 余個,Aptos 生態的 TVL 已突破 5000 萬美元。 此外,在開發者扶持方面,已有超過 500 個項目申請 Aptos Grant。Aptos Grant 是 Aptos 生態早期項目長期資助計劃,旨在資助早期 Aptos 初創團隊與開發者的優質項目,以進一步豐富 Aptos 生態體系。[2023/1/17 11:15:09]
你可以隨意命名資源,但它必須以大寫字母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
Aptos:此前推出的測試網NFT系列代表Longevity測試網的啟動:9月20日消息,公鏈項目Aptos公布激勵測試網3(AIT3)參與和獎勵變更情況,為參與者增加了50%的獎勵,將最多800枚代幣獎勵上調至1200枚,也就是說全額獎勵為1200枚,滿足≥50% Staking獎勵的將獲得800代幣,滿足≥9%的質押獎勵或治理投票為零的人將獲得500枚代幣。關于測試網參與情況,測試網在不到2周的時間內完成了超過8億筆交易,實現超過4000TPS。
此外,Aptos還表示,最近推出的測試網NFT系列APTOS : ZERO標志著其Longevity測試網的啟動,表示其對軟件和部署架構狀態的信心。Longevity測試網NFT會保留很長時間,而非之前的每周清零。Aptos計劃不再對Move、交易和API進行重大更改,將不再有數據清除,因此DApp和其他實體之間可以有效地建立伙伴關系。Aptos將繼續繼續每周向devnet推出更改,并將繼續每周進行清除。[2022/9/20 7:08:54]
我們在這里給我們的包一個名子和版本號。另一個值得注意的是TicketTutorial="0xe110"行。對于我們上面談到的結構和函數路徑,這是我們設置地址的地方。一旦我們編譯項目,我們會將字節碼模塊發布到Aptos區塊鏈上的一個帳戶。我們可以使用離散地址來調用結構和函數,例如:
公鏈項目Aptos激勵測試網3將于8月30日上線:金色財經消息,公鏈項目Aptos激勵測試網3將于今日啟動注冊,開始節點和身份驗證,至8月26日注冊結束,8月27日公布評選結果。激勵測試網3將于8月30日上線,9月9日結束測試。[2022/8/19 12:36:15]
0x95876b0492fe3912863e55bab6f74703::Module::Struct
但這有點麻煩。Move
這是一個簡單的內聯單元測試,以確保我們的代碼在編譯和部署之前在基礎層面上工作。第一行是編譯器指令,指示下一個函數是一個測試:
#
它還為我們提供了創建簽名者的能力,我們可以使用@0x1地址表示法將其傳遞給測試函數。我們調用create_ticket函數來創建并提供簽名者座位號“K24”,票證代碼為“AB43C7F”。b"string"是一個字符串文字運算符,它給我們創建一個向量。通過這個函數調用,我們創建了ConcertTicket并將其存儲在地址0x1的收件人帳戶中。
這是一個測試,所以我們必須確保它有效。我們使用函數Signer::address_of將“recipient”的地址存儲在我們的變量recipient_addr中。然后我們可以使用exists來查看ConcertTicket資源是否實際存儲在該地址。exists指令是另一個具有exists(address):bool接口的全局存儲操作符。傳入我們的類和我們正在檢查的地址,會給我們一個關于該地址是否存在資源的true/false響應。
Solana前市場營銷主管以生態系統總監身份加入新公鏈Aptos:7月19日消息,Solana前市場營銷主管Austin在推特上宣布,自己將于下個月正式加入新公鏈Aptos,擔任生態系統總監一職。
據介紹,Austin在web3的大部分職業生涯都專注于孵化和擴展全球社區和團隊。由Diem原團隊成員成立的公鏈Aptos宣布推出2億美元Aptos生態系統資助計劃,預計在9月底左右推出Aptos主網。[2022/7/19 2:21:49]
最后,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:APTAptosTOSESTapt幣未來價值aptos幣怎么公募aptos幣今日價格GameStop tokenized stock FTX
以太坊合并前夜,歐易OKX&TokenInsight聯合發起了《聊透以太坊合并分叉,普通投資者如何參與?》主題AMA.
1900/1/1 0:00:0012月8日,格林納達常駐世界貿易組織代表、特命全權大使、波場TRON創始人孫宇晨先生閣下將參加CoinDesk網絡研討會,為下一代區塊鏈領導者賦能.
1900/1/1 0:00:00近來,不少投資者和分析師懷疑凜冬將至,熊市周期終究還是到來了。比特幣從歷史上最高的近7萬美元跌至目前的2萬美元.
1900/1/1 0:00:00Qredo團隊很高興地宣布,BNB鏈成為與Qredo網絡最新集成的第1層協議。Qredo用戶現在可以在Qredo網絡上交易、轉移和托管BNB(BEP20)和BUSD(BEP20),具有機構級治理.
1900/1/1 0:00:00可持續性將日益成為區塊鏈行業未來的核心標準。而分析特定區塊鏈的能源效率的方法是,檢查其創建和維護信息塊的過程:該區塊鏈的用戶如何同意記錄和驗證分布式數據庫每個塊中包含的信息,換句話說,如何達成共.
1900/1/1 0:00:008月28日,CryptoDep發布“過去7日訪問次數最多的代幣”榜單,TRX高居第三。 元宇宙平臺Cryptovoxels發布2022年路線圖 土地上限7萬塊:2月21日消息,元宇宙平臺Cryp.
1900/1/1 0:00:00