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

TER:DAOrayaki:Aptos & Move實操講解_CERES

Author:

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

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??{??}

一個簡單的圖書館例子:

Hector Network提議建立公司結構、公司章程和DAO章程,相關提案正在投票:5月19日消息,DeFi項目Hector Network于周四早些時候在Discord召開會議討論一個提案。參會者包括項目領導層、一名律師和數十名HEC代幣持有者,其中許多人對這個計劃持懷疑態度,他們擔心這個計劃會削弱他們對Hector運營方式的影響力。

HIP 40由自稱科技律師事務所Sparring律師的Dali起草。在一個多小時的時間里,參會的成員們向Dali提出有關HIP 40的問題。HIP 40是一項將Hector Network納入一個包括董事、監事和管理委員會在內的離岸公司結構的提案。

HIP 40提議建立公司結構、公司章程、DAO章程。該提案目前在Snapshot進行投票,目前反對率達75.33%,投票將于5月21日結束。[2023/5/19 15:12:15]

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可以安全的表示數字資產,它不能被復制,也不能被丟棄或重新使用,但是它卻可以被安全地存儲和轉移。

Aave取消BUSD穩定幣借貸提案得到DAO成員支持:金色財經報道,Aave去中心化自治組織 (DAO) 成員以壓倒性優勢支持取消Binance的BUSD穩定幣的借貸。該提案旨在大幅提高借入 BUSD 的成本,同時減少其貸方應計收入。這些行動旨在抑制對BUSD的使用。投票之際,越來越多的市場參與者在監管不確定性的情況下放棄了BUSD。該提案作者Zeller在提案中寫道,BUSD 的流通供應量將“隨著時間的推移趨向于零”,因此有必要將其下架。

截至發稿時,Aave 從借貸方那里持有近 1100 萬美元的 BUSD 流動性,并借出了 760 萬美元的穩定幣。[2023/3/10 12:53:07]

Resource的定義

Resource是一種用?key?和?store?ability限制了的結構體:

module?M?{????struct?T?has?key,?store?{????????field:?u8????}}Resource的限制

在代碼中,Resource類型有幾個主要限制:

Resource存儲在帳戶下。因此,只有在分配帳戶后才會存在,并且只能通過該帳戶訪問。

一個帳戶同一時刻只能容納一個某類型的Resource。

Resource不能被復制;與它對應的是一種特殊的kind:resource,它與copyable不同,這一點在泛型章節中已經介紹。

Resource必需被使用,這意味著必須將新創建的Resource?move到某個帳戶下,從帳戶移出的Resource必須被解構或存儲在另一個帳戶下。

SafeDAO開放SAFE Token可交易性的提案將于11月10日結束投票:11月3日消息,數字資產管理平臺Safe(原GnosisSafe)官方社區SafeDAO關于開放Safe Token可交易性的提案SEP#2將于北京時間11月3日20:14開啟,并于北京時間11月10日20:14結束。[2022/11/3 12:12:38]

剛才的案例

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

public?entry?fun?init_counter(account:?signer){????Self::init(&account。public?entry?fun?incr_counter(account:?signer)??acquires?Counter?{????Self::incr(&account。

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]

定義格式則是:

public?fun?函數名(參數:參數類型){?}

move函數默認是私有函數,只能在定義它們的模塊中訪問。關鍵字public將更改函數的默認可見性并使其公開,即可以從外部訪問。

init方法參數是一個&signer,意味著該方法必須是一個賬戶合法簽名過后才可以調用,move_to則是move的一個原語,作用是發布、添加Counter資源到signer的地址下。Move的賬戶模型,code和data是存儲在一個賬戶地址下的。

下面是列舉的常用原語

move_to<T>(&signer,T):發布、添加類型為T的?Resource?到signer的地址下。

move_from<T>(addr:address):T-從地址下刪除類型為T的?Resource?并返回這個資源。

borrow_global<T>(addr:address):&T-返回地址下類型為T的?Resource?的不可變引用。

DAO解決方案提供商Aragon正式發布Aragon鏈測試網:DAO解決方案提供商Aragon(ANT)正式發布Aragon鏈測試網。Aragon鏈是一個權益證明并且與以太坊兼容的區塊鏈,主要用于運行DAO,將完全由Aragon社區控制,為DAO快速而高效的運行提供即時確定性和低成本的交易費。同時,Aragon表示,Aragon鏈將把現有的Aragon智能合約集成到Ethermint。Ethermint是CosmosSDK模塊,具有與以太坊相同的功能。[2020/9/3]

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

Tags:COUUNTRESTERBit.CountryBHUNT價格CERESInternet Money

以太坊價格今日行情
COI:PA日報 | CoinFLEX公布重組提案;Messari完成3500萬美元B輪融資_NFT

今日要聞提示:1.外媒:歐盟加密法案MiCA草案預計于2024年生效,對穩定幣限制有所放寬2.OpenSea計劃支持更多網絡和語言,拓展全球化NFT生態系統3.CoinFLEX公布重組提案.

1900/1/1 0:00:00
AME:一文讀懂MAU破百萬的P2E平臺Gameta_GDO

原文來源:B鏈物語 2022年Web3在加密領域掀起了新的風潮,成為了目前最為炙手可熱的創業和投資選項.

1900/1/1 0:00:00
COIN:CoinW幣贏觀察 | ETH合并完成 ETHW是否曇花一現_ETHW

歷經了八年的準備與等待,以太坊(ETH)終于在9月15日14時順利完成“合并”。此次合并可以說是史詩級的,合并后的以太坊最重要的轉變就是共識機制從PoW(Proof-of-work,工作量證明).

1900/1/1 0:00:00
BAL:Enjoy Up to 12% APY on EVMOS with Huobi Earn_Mobius

DearHuobiGlobalUsers,HuobiGlobalwillbelaunchingdepositeventsforEVMOS.Makeyourdepositstoearnhigh-y.

1900/1/1 0:00:00
COI:關于LUNC6S交易優化的公告_COIN

尊敬的CoinW用戶: 由于LUNC6S交易優化,交易功能將延遲開啟,預計開放時間2022/9/2117:00.

1900/1/1 0:00:00
OIN:資深加密投資者:風險資本家正在回避代幣_More Coin

金色財經報道,CoinShare的首席戰略官MeltemDemirors和AglaéVentures管理合伙人VanessaGrellet揭示了自去年牛市以來加密風險投資領域的變化.

1900/1/1 0:00:00
ads