链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 聚币 > 正文

EST:Aptos开发入门教程:创建资源(一)-ODAILY_ICK

作者:

时间:

本文目标:资源、能力、全局存储、单元测试

介绍

Move语言使得在区块链世界中创造数字“事物”,以及拥有和转移它们变得非常容易。Move是一种非常简单的语言——这是有意为之。复杂性总是引入额外风险,漏洞会在意想不到的应用中显现出来。我们看到过利用智能合约导致数十亿美元资产被盗的恐怖故事。因此,我们希望数字资产是安全的。Move语言的简单性,为这种安全提供了一条实现路径。

本篇文章,首先比较理论,因为在深入研究代码之前,对于资源是什么、如何控制资源,有良好正确的感知非常重要。这会包括外行理论与学术理论。

资源:数字事物

Move中的“资源”就是是一种“数字事物”。那东西可以是你想要或想象的任何东西:演唱会门票、NFT、一本书、两个企业之间的合同、社交媒体文章等。你能想到的东西,都可以是一种资源。我们以Alice和Bob去参加一场演唱会,他们需要门票为例。在Move中,我们可以简单地这么创建门票类:

structConcertTickethaskey{seat:vector,ticket_code:vector,}

Move模块中的代码现在使我们能够向Alice和Bob发送门票。有了上面的结构,我们可以简单地创建一张门票:

Aptos早期投资者发起的10亿美元股权纠纷案已得到解决:12月9日消息,Aptos Labs数十亿美元诉讼发起者Shari Glazer表示,其此前针对Aptos提起的数十亿美元诉讼纠纷现已得到解决,之后会将精力投入新的Web3项目和慈善事业中。

此前报道,10月13日,Aptos早期投资者发起的10亿美元股权纠纷诉讼被法院部分驳回,据悉,今年3月Shari Glazer和其公司Swoon Capital对Aptos Labs母公司Matonee提起诉讼,指控其以欺诈手段剥夺了她在合伙企业中的合法份额。Shaik称其拥有的50% Matonee股份被剥夺,Shari在诉讼中要求赔偿高达10亿美元。[2022/12/9 21:33:06]

publicfuncreate_ticket(account:&signer,seat:vector,ticket_code:vector):ConcertTicket{letseat=vector;letticket_code=vector;ConcertTicket{seat,ticket_code}}

在“外行理论”方法中,可以把资源想象成离散的物理对象,而不是像程序员一样去思考。我们的“结构”是配方、建筑图纸、指令列表或任何你想使用的类比。让我们作个分解:

Move生态钱包Martian将同时支持Sui和Aptos网络:11月22日消息,Move生态自托管钱包Martian宣布,将很快上线Sui网络,并同时支持Sui和Aptos网络。此前,Martian一直作为Aptos生态钱包,并曾获得Aptos参投的300万美元pre-seed轮融资,目前其官方推特简介为“Move生态系统自托管钱包”。[2022/11/22 7:54:49]

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}

你可以随意命名资源,但它必须以大写字母A-Z开头。之后,名称可以包含下划线_、字母a-z、字母A-Z或数字0-9。该结构将具有某些“能力”,我们将在稍后介绍。但现在,只要知道这些能力将包括“key”、“store”、“copy”和“drop”中的一种或组合。

在结构中,你可以拥有任意数量的键值对。键名应该用蛇形命名。每个键值对中的值必须是以下类型之一:

Aptos宣布与韩国3A游戏工作室NPIXEL达成合作:11月15日消息,Aptos宣布与韩国3A游戏工作室NPIXEL达成合作,把Web3游戏提升到一个新的水平。[2022/11/16 13:09:35]

boolu8u64u128addresssignervector:vector<{non-referenceMoveTypeId}>struct:{address}::{module_name}::{struct_name}::<{generictypes}>reference:immutable&andmutable&mutreferences

我们在这里给我们的包一个名子和版本号。另一个值得注意的是TicketTutorial="0xe110"行。对于我们上面谈到的结构和函数路径,这是我们设置地址的地方。一旦我们编译项目,我们会将字节码模块发布到Aptos区块链上的一个帐户。我们可以使用离散地址来调用结构和函数,例如:

0x95876b0492fe3912863e55bab6f74703::Module::Struct

但这有点麻烦。Move

这是一个简单的内联单元测试,以确保我们的代码在编译和部署之前在基础层面上工作。第一行是编译器指令,指示下一个函数是一个测试:

Aptos:测试网空投超2007.6万枚APT将分发给超11万社区参与者:10月19日消息,Aptos基金会官方宣布,将通过airdrop@aptosfoundation.org向110,235位测试网参与者发布共计20,076,150枚APT Token空投的通知,这是其第一次根据现有社区数据进行空投。

据悉,完成了APTOS激励测试网或铸造“APTOS:ZERO testnet NFT”的用户有资格申领APT Token(铸造NFT的原始用户有资格申领,而非NFT的当前所有者)。有资格申领APT Token的用户将在接下来的几个小时内收到电子邮件通知。[2022/10/19 17:31:56]

#

它还为我们提供了创建签名者的能力,我们可以使用@0x1地址表示法将其传递给测试函数。我们调用create_ticket函数来创建并提供签名者座位号“K24”,票证代码为“AB43C7F”。b"string"是一个字符串文字运算符,它给我们创建一个向量。通过这个函数调用,我们创建了ConcertTicket并将其存储在地址0x1的收件人帐户中。

这是一个测试,所以我们必须确保它有效。我们使用函数Signer::address_of将“recipient”的地址存储在我们的变量recipient_addr中。然后我们可以使用exists来查看ConcertTicket资源是否实际存储在该地址。exists指令是另一个具有exists(address):bool接口的全局存储操作符。传入我们的类和我们正在检查的地址,会给我们一个关于该地址是否存在资源的true/false响应。

Continue Captical创始人匹马:SushiSwap大概10天后进行LP迁移:近期新协议SushiSwap发展态势迅猛,截止发稿时其锁仓量已突破10亿美元,占 Uniswap14亿锁仓量的70%。

而面对这一情况,加密投资机构Continue Captical的创始人匹马表示,Uniswap V3版本开发一直在推进,据传闻表示V3面世时会同步推出代。而SushiSwap会在大概10天后进行流动性提供者(LP)迁移(注:即 SushiSwap 迁移出 Uniswap 协议,将其界面中的流动资金转移到原生的AMM中)。

如果Uniswap V3版本提前发布,推出流动性挖矿,用户是否会选择跟随SushiSwap迁移或成为一个问题。如果不迁移,流动性提供者可以获得的代币就是Uniswap自身的代币。

匹马点评到:现在看来,不仅DEX竞争大赛缓缓拉开,在开源的状态下,其他赛道的竞争也将陆续展开各个项目的护城河到底是什么,如何面对强大的Fork和治理改进,在助力项目设计Token模型的时候真的需要深入的思考。[2020/9/1]

最后,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能够购买门票,甚至可以交易或出售这些门票,并确保每个人都能在演唱会上获得他们想要的座位。敬请关注!

标签:ESTTESTICKKETInvestDexTESTA币pickle币为什么一直跌MARKETING

聚币热门资讯
SDT:?Tether将在巴西的24000多台ATM机中支持USDT-ODAILY_TET

数字货币将通过与加密服务提供商SmartPay的合作来寻求扩大其在南美国家的业务。 Tether是世界上最大的市值稳定币USDT的发行人,巴西的24000多台ATM机将支持其代币.

加密货币:打破边界的加密货币女性创新者-ODAILY_SHIN

尽管加密货币诞生之时,正处于一个各行各业都鼓励平等和多样性的时代,但也不能仅仅基于这一背景,就否认加密货币领域在性别包容性上存在一些问题.

稳定币:漫谈日本稳定币,告别动荡的2022-ODAILY_MAT

本文由PlatONCTOJamesQU于2022年12月31日写于东京2022年是加密货币行业跌宕起伏的一年,在这一年即将结束之际,我想谈谈日本的稳定币.

EST:DAOrayaki:Aptos & Move实操讲解-ODAILY_TEST价格

DAOrayakiDAO研究奖金池:资助地址:DAOrayaki从现在开始,我们就可以通过添加--profilelocal命令以在本地测试网上运行它们.

WELL:SignalPlus每日晨报(20221103)-ODAILY_Welltrado

各位朋友,欢迎来到SignalPlus每日晨报。SignalPlus晨报每天为各位更新宏观市场信息,并分享我们对宏观趋势的观察和看法。欢迎追踪订阅,与我们一起关注最新的市场动态.

TPS:Daoswap攻击事件分析:卡Bug给自己「开工资」-ODAILY_CHTT

北京时间2022年9月5日,CertiK审计团队监测到Daoswap由于挖矿奖励大于交换过程中收取的费用以及缺乏验证,允许用户将邀请者地址设置为自己,在一次攻击中损失了58万USDT.