DAOrayakiDAO研究獎金池:
資助地址:?DAOrayaki
Struct&Abilities
struct?Counter?has?key,?store?{????value:u64,}
使用struct定義了一個叫做Counter的結構體,同時被key,store兩種限制符修飾。
Move的類型系統靈活,每種類型都可以定義四種能力。
它們定義了類型的值是否可以被復制、丟棄和存儲。
這四種abilities限制符分別是:Copy,Drop,Store和Key。
它們的功能分別是:
Copy?-值可以被復制。
Drop?-在作用域結束時值可以被丟棄。
Key?-值可以作為鍵值被「全局存儲操作」進行訪問。
Store?-值可以被?存儲?到全局狀態。
這里用key、store修飾,則表示它不能被復制,也不能被丟棄或重新使用,但是它卻可以被安全地存儲和轉移。
Abilities的語法
基本類型和內建類型的abilities是預先定義好的并且不可改變:integers,vector,addresses和boolean類型的值先天具有copy、drop和storeability。
然而,結構體的ability可以按照下面的語法進行添加:
struct?NAME?has?ABILITY??{??}
一個簡單的圖書館例子:
Stargate發起社區投票,擬將STG/USDC LP頭寸分散到Yearn和StakeDAO中:7月9日消息,基于LayerZero的跨鏈橋Stargate發起“多元化STG/USDC LP 頭寸”的社區投票,計劃將該LP頭寸分散到Yearn和StakeDAO中,使其在Curve中擁有更少的LP,以提升回報獎勵。
其中Yearn頭寸將把獎勵出售給LP,從而產生直接的購買力;而StakeDAO頭寸將產生CRV + SDT,然后可以將SDT鎖定到veSDT中,以捕獲穩定幣并將更多獎勵定向到Curve。該投票已于7月9日3:00開始,將于7月12日3:00結束。[2022/7/9 2:02:06]
module?Library?{????//?each?ability?has?matching?keyword????//?multiple?abilities?are?listed?with?comma????struct?Book?has?store,?copy,?drop?{????????year:?u64????}????//?single?ability?is?also?possible????struct?Storage?has?key?{????????books:?vector????}????//?this?one?has?no?abilities????struct?Empty?{}}
什么是Resource
Move白皮書中詳細描述了Resource這個概念。最初,它是作為一種名為resource的結構體類型被實現,自從引入ability以后,它被實現成擁有?Key和?Store兩種ability的結構體。Resource可以安全的表示數字資產,它不能被復制,也不能被丟棄或重新使用,但是它卻可以被安全地存儲和轉移。
Web3初創公司DAOLens完成500萬美元融資,Nexus Venture Partners等領投:6月15日消息,Web3初創公司DAOLens宣布完成500萬美元融資,Nexus Venture Partners、Better Ventures和iSeed II領投,Coinbase董事會成員Gokul Rajaram、Polygon聯合創始人Sandeep Nailwal、Solana聯合創始人Raj Gokal、Animoca Brands副總裁Simon Doherty和Tribe Capital聯合創始人Arjun Sethi等參投。籌集資金將用于產品開發、人才引進,并推動其工具堆棧的后續推出。
據悉,DAOLens由Vikram Aditya和Apoorv Nandan于2022年1月創立,旨在幫助企業進行入職、貢獻管理等工作來簡化DAO的運營流程。[2022/6/15 4:29:12]
Resource的定義
Resource是一種用?key?和?store?ability限制了的結構體:
module?M?{????struct?T?has?key,?store?{????????field:?u8????}}Resource的限制
在代碼中,Resource類型有幾個主要限制:
Resource存儲在帳戶下。因此,只有在分配帳戶后才會存在,并且只能通過該帳戶訪問。
一個帳戶同一時刻只能容納一個某類型的Resource。
Resource不能被復制;與它對應的是一種特殊的kind:resource,它與copyable不同,這一點在泛型章節中已經介紹。
風險提示:Mirror上出現偽SeeDAO教育類項目:4月26日消息,Mirror上出現一個名為“THE XDAO”的教育類眾籌集資項目。該項目白皮書大量復制粘貼了SeeDAO 文檔內容,且該匿名項目發起人聲稱自己是SeeDAO重要參與者,但經求證為不實信息。此外,經查證目前SeeDAO的重要成員在重點參與的教育項目為”DeSchool”和“Web3大學”。“Web3大學“已對外推出約30節課程,目前并未對外收費,也沒有發起眾籌,投資者需注意風險。(PANews)[2022/4/26 5:13:06]
Resource必需被使用,這意味著必須將新創建的Resource?move到某個帳戶下,從帳戶移出的Resource必須被解構或存儲在另一個帳戶下。
剛才的案例
struct?Counter?has?key,?store?{????value:u64,}
所以這里就有一個和solidity的區別了,在eth上如果需要發行一個新資產,比如usdc。那這個資產是記錄在合約里的某個map中。而move就不同了,資產是作為resource存在用戶地址下的。
定義函數
public?fun?init(account:?&signer){????move_to(account,?Counter{value:0});}public?fun?incr(account:?&signer)?acquires?Counter?{????let?counter?=?borrow_global_mut(signer::address_of(account));????counter
去中心化自治組織Group DAO正式終止GDO空投,此前需在1月31日前領取:官方消息,去中心化自治組織Group DAO表示,根據快照投票結果,正式終止GDO空投。持有GDO的用戶可以參與未來的DAO治理流程。由于部分用戶已經事先獲得授權,他們仍然可以申請空投,空投預計將在24小時左右的時間內完全終止。
此前消息,去中心化自治組織Group DAO向Twitter用戶發放GDO空投,旨在獎勵在Twitter上做出單方面貢獻的用戶。空投最重要的參考因素是擁有的粉絲數量,其次是帳戶發布的狀態數量,同時也參考了注冊時間。用戶需在2022年1月31日之前領取,之后所有剩余的Token將被永久鎖定。[2022/1/9 8:36:40]
public?entry?fun?init_counter(account:?signer){????Self::init(&account。public?entry?fun?incr_counter(account:?signer)??acquires?Counter?{????Self::incr(&account。
定義格式則是:
public?fun?函數名(參數:參數類型){?}
move函數默認是私有函數,只能在定義它們的模塊中訪問。關鍵字public將更改函數的默認可見性并使其公開,即可以從外部訪問。
init方法參數是一個&signer,意味著該方法必須是一個賬戶合法簽名過后才可以調用,move_to則是move的一個原語,作用是發布、添加Counter資源到signer的地址下。Move的賬戶模型,code和data是存儲在一個賬戶地址下的。
V神盤點以太坊2020年進步,包括PoS測試網及MakerDAO等:V神在推文中列出以太坊在2017年沒有、但是在2020年擁有的東西: Uniswap;http://Tornado.cash;Status;MakerDAO;ZK Rollups(如Loopring),吞吐量超過2000 TPS;PoS測試網;叔塊率< 10%,區塊Gas上限為1000萬;Gitcoin贈款。[2020/3/28]
下面是列舉的常用原語
move_to<T>(&signer,T):發布、添加類型為T的?Resource?到signer的地址下。
move_from<T>(addr:address):T-從地址下刪除類型為T的?Resource?并返回這個資源。
borrow_global<T>(addr:address):&T-返回地址下類型為T的?Resource?的不可變引用。
borrow_global_mut<T>(addr:address):&mutT-返回地址下類型為T的?Resource?的可變引用。
exists<T>(address):bool:判斷地址下是否有類型為T的?Resource。
incr方法參數也是一個&signer,意味著該方法必須是一個賬戶合法簽名過后才可以調用,
關鍵字?acquires,放在函數返回值之后,用來顯式定義此函數獲取的所有Resource。
Signer::address_of(account)從簽名者中拿到address
borrow_global_mut上面有介紹到,可變借用到address下的resourceCounter,然后將Counter結構體下的value進行1操作。
這下面的兩個方法則是script方法,它與上面兩個函數有什么區別呢?
publicfun:方法可以在任何模塊中被調用。
public(script)fun/publicentryfun:scriptfunction是模塊中的入口方法,表示該方法可以通過控制臺發起一個交易來調用,就像本地執行腳本一樣
下個版本的Move會用publicentryfun替代public(script)fun
Self則是代表自身module。
使用AptosCli編譯、部署、調用合約
#?創建新的測試環境aptos?init?--profile?devtest?--rest-url??--faucet-url?#?編譯move合約aptos?move?compile?--package-dir?my-counter#?部署合約#?例如:aptos?move?publish?--package-dir?my-counter?--named-addresses?basecoin=0x8e00bd9827faf171996ef37f006dd622bb5c3e43ec52298a8f37fd38cd59664?--profile?devtestaptos?move?publish?--package-dir?my-counter?--named-addresses?basecoin=?--profile?devtest#?調用合約#?例如:#?aptos?move?run?--function-id?0x8e00bd9827faf171996ef37f006dd622bb5c3e43ec52298a8f37fd38cd59664::MyCounter::init_counter?--profile?devtest#?aptos?move?run?--function-id?0x8e00bd9827faf171996ef37f006dd622bb5c3e43ec52298a8f37fd38cd59664::MyCounter::incr_counter?--profile?devtestaptos?move?run?--function-id?::::?--profile?devtest#?列出指定賬戶的modules/resources信息aptos?account?list?--query?modules?--account?0xa1285adb4b8abedf5faf7a46d260c5844f1f64d59dd9b8869db1543cf5bbadf4?--profile?devtestaptos?account?list?--query?resources?--account?0x4200c2b801870f20a709abba80b6edb90a45ecd9b8acce9842b93d597602edcf?--profile?devtest
AptosSDK調用Move合約
編譯好合約之后,我們可以通過sdk調用我們的合約。
我們可以選擇通過sdk部署合約,也可以通過sdk調用move合約。
通過sdk部署合約
當我們編譯完成之后,會在move合約文件夾下生成?build/?文件夾
我們需要把?my-counter/build/Examples/bytecode_modules/MyCounter
通過SDK發送交易
這里,我們以my-counter合約中的init_counter?和?incr_counter?為例。
構造兩個方法用于調用這兩個方法,從而實現客戶端調用?init?和?incr?的功能。
async?function?initCounter(contractAddress:?string,?accountFrom:?AptosAccount):?Promise?{??const?scriptFunctionPayload?=?new?TxnBuilderTypes
async?function?incrCounter(contractAddress:?string,?accountFrom:?AptosAccount):?Promise?{??const?scriptFunctionPayload?=?new?TxnBuilderTypes
通過?SDK?獲取賬戶里的資源信息。
resource是存放在所屬的賬戶地址下的,我們可以根據account地址,查詢相關的resource信息。
getCounter()方法其實就是獲取?my-counter?下的**Counter**資源。
async?function?getCounter(contractAddress:?string,?accountAddress:?MaybeHexString):?Promise?{??try?{????const?resource?=?await?client
執行效果
執行成功,在這里通過SDK,給一個隨機生成的賬戶init了Counter資源,然后incr了三次,所以最后Counter的Value為?3。
image-20220831200516865
my-counter相關代碼:https://github.com/99Kies/Aptos-Move-Dapp
參考資料
UsingCLItoRunaLocalTestnet|AptosDocs:?https://aptos.dev/nodes/local-testnet/using-cli-to-run-a-local-testnet
源碼:?https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/framework/move-stdlib/sources/signer.move
?調查顯示,隨著比特幣價格升至19,000美元,美聯儲可能會加息75個基點。比特幣在9月21日經歷了疲軟反彈,隨著投資者等待今天聯邦公開市場委員會的利率決定,美元躍升至年度新高.
1900/1/1 0:00:00TheBlock援引美國某保守派團體委托進行的民Y調查報道,53%的美國選民表示他們反對美聯儲的數字貨幣,而11%的人表示他們支持它,超過三分之一的選民表示他們不確定.
1900/1/1 0:00:00合約交易市場是機構、風險對沖者和投機者的戰場。在2021年的牛市中,隨著新資金以過高的杠桿率涌入市場,合約交易成為歷史新高的主要催化劑之一.
1900/1/1 0:00:00來源|NFT.KRED ?編譯|白澤研究院 互聯網、電子商務和社交媒體的興起各自改變了品牌和企業營銷其產品、開展業務和培養用戶的方式.
1900/1/1 0:00:00本文來自Messari,作者:TomDunleavy&KunalGoelOdaily星球日報譯者|Moni以太坊協議于2022年9月15日從工作量證明過渡到權益證明.
1900/1/1 0:00:00加密市場周四小幅回升,總市值在前24小時內上漲近1%。比特幣在周三晚些時候出現大幅拋售//加威信JQSH996//在周四小幅回升之前跌至18,300美元,目前比特幣交易價格超過19,000美元.
1900/1/1 0:00:00