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
说说本周的议息会议。21-22号美联储FOMC会议召开,周四凌晨两点公布本次利率决议,估计又是个万众瞩目的时刻.
1900/1/1 0:00:00加密货币和股票市场继续纠正,但这并不意味着所有的投资机会都消失了。由于交易员等待美联储主席杰罗姆鲍威尔关于下次加息幅度的声明,整个市场的价格仍然疲软。目前,市场共识是加息0.75个基点,一小部分分析师预计加息1%.
1900/1/1 0:00:00以太坊的原生加密货币以两位数的百分比抛售,导致今天的大规模抛售。24小时平仓总价值再次上升,达到4亿美元。这是因为整个加密货币市场已经变红,ETH在每日暴跌10%之后一路领先.
1900/1/1 0:00:00MPLX项目解析 1、研究院短评 Metaplex是一个独立NFT市场平台,它大大降低了铸造和交易费用。通过组合链上协议,开源应用程序框架可以完全定制、自托管和扩展,而无需通过中心化的授权.
1900/1/1 0:00:00??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