宇宙链 宇宙链
Ctrl+D收藏宇宙链

DAOrayaki:Aptos & Move实操讲解

作者:

时间: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修饰,则表示它不能被复制,也不能被丢弃或重新使用,但是它却可以被安全地存储和转移。

HooSwap新增DAOCASH流动池:据虎符官方消息,HooSwap于12月23日新增DAOCASH流动池,用户可以通过创建市场DAOCASH对其他币种的交易对提供流动性。

HooSwap 是虎符推出的创新产品,是业内中心化平台基于自动化做市商(AMM)打造的Swap。截至目前,在HooSwap上线的项目数量超过156个,项目方在HooSwap 申请快速上币时,只需支付小额测试费用即可添加交易对,使用 HOO 支付可享八折。[2021/12/23 7:59:34]

Abilities的语法

基本类型和内建类型的abilities是预先定义好的并且不可改变:integers,vector,addresses和boolean类型的值先天具有copy、drop和storeability。

然而,结构体的ability可以按照下面的语法进行添加:

struct?NAME?has?ABILITY??{??}

一个简单的图书馆例子:

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可以安全的表示数字资产,它不能被复制,也不能被丢弃或重新使用,但是它却可以被安全地存储和转移。

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必须被解构或存储在另一个帐户下。

刚才的案例

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。

BoringDAO将于今晚21时在Discord发起社区会议:据官方公告,BoringDAO社区会议Boring Weekly首期“The Grand Tour of BoringDAO”将于8月2日21时整在BoringDAO官方Discord社区The Ballroom举办。BoringDAO联合创始人Dr

通过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

标签:COUUNTRESTERCouponBayPhunTokenceres币价格趋势Adappter Token

以太坊最新价格热门资讯
以太合并结束,本周的加息会议哪些是最大风险点?

说说本周的议息会议。21-22号美联储FOMC会议召开,周四凌晨两点公布本次利率决议,估计又是个万众瞩目的时刻.

1900/1/1 0:00:00
加密货币和股票在美联储加息前走软

加密货币和股票市场继续纠正,但这并不意味着所有的投资机会都消失了。由于交易员等待美联储主席杰罗姆鲍威尔关于下次加息幅度的声明,整个市场的价格仍然疲软。目前,市场共识是加息0.75个基点,一小部分分析师预计加息1%.

1900/1/1 0:00:00
以太坊 (ETH) 跌至 2 个月低点,清算 4 亿美元

以太坊的原生加密货币以两位数的百分比抛售,导致今天的大规模抛售。24小时平仓总价值再次上升,达到4亿美元。这是因为整个加密货币市场已经变红,ETH在每日暴跌10%之后一路领先.

1900/1/1 0:00:00
MPLX(Metaplex)项目解析——币赢研究院

MPLX项目解析 1、研究院短评 Metaplex是一个独立NFT市场平台,它大大降低了铸造和交易费用。通过组合链上协议,开源应用程序框架可以完全定制、自托管和扩展,而无需通过中心化的授权.

1900/1/1 0:00:00
币圈大佬赵东今日刑满释放,身价已超50亿!

??1.2020年,赵d,RRBIT创始人,2020年因涉嫌洗黑被抓。当时传赵东可能会面临15年刑期,当时消息出来后吓跑了不少OTC大佬。赵东等人涉嫌帮信罪,及多人涉嫌非法经营案庭审结束.

1900/1/1 0:00:00
美联储加息遥无止境、降息之路茫茫?加息何时了?

投资者正在为更“疯狂”的加息做准备。周一,10年期美国国债收益率跃升至3.5%以上,创2011年以来最高水平,美联储将在9月20日至21日开启为期两天的会议,市场普遍预计官员们将在美东时间周三下午2:00讨论后连续第三次将基准利率提高.

1900/1/1 0:00:00