火星链 火星链
Ctrl+D收藏火星链
首页 > AVAX > 正文

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

作者:

时间:1900/1/1 0:00:00

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

介绍

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

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

资源:数字事物

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

structConcertTickethaskey{seat:vector,ticket_code:vector,}

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

微软与Aptos达成合作,将探索数字支付和代币化:8月9日消息,Aptos Labs宣布与科技巨头微软建立新的合作伙伴关系。除了双方探索与资产代币化、数字支付和央行数字货币相关的“创新解决方案”外,Aptos还将利用微软的Azure OpenAI服务。

两家公司在一份声明中表示,在一开始,双方的合作似乎主要集中在利用微软的人工智能能力来简化用户登录Web3的过程,并帮助“开发人员构建智能合约和去中心化应用程序”。[2023/8/9 21:34:42]

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

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

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}

Aptos与社交媒体应用Chingari整合后新用户增长达900%:金色财经报道,Aptos 区块链与Chingari(之前由Solana提供支持的印度社交媒体平台)整合后,活动激增。链上数据显示,新增用户数环比增长900%,每日链上注册用户数接近9万。 Chingari于7月6日开始迁移到 Aptos,寻求在 2022 年 Solana 网络中断后增强用户体验。截至7月14日,Chingari 占 Aptos 区块链上所有日活跃用户的80%,占网络上支付的所有Gas费的50%,环比增长超过500%。交易量也增长了150%,达到每天近200 万笔。[2023/7/21 11:08:07]

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

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

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

Aptos基金会提出完全可重现的性能测试基准:4月28日消息,Aptos 基金会提出完全可重现的性能测试基准,并提出了交易和峰值性能等术语的定义,以便正确衡量性能。为了实现此评估的端到端、真实世界设置,Aptos 基金会建立了一个完整的节点网络,并在其上运行了完整的节点堆栈。为了使其尽可能接近真实世界的设置,Aptos 基金会将其建模为接近主网网络。[2023/4/28 14:32:20]

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

0x95876b0492fe3912863e55bab6f74703::Module::Struct

但这有点麻烦。Move

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

#

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

数据:APT、APE、DYDX、LOOKS和GLMR将于四月份合计解锁超7500万美元的代币:4月2日消息,据DeFiLlama数据显示,四月将有APT、APE、DYDX、LOOKS和GLMR五个代币启动解锁,总价值超7500万美元,包括:4月10日1250万枚LOOKS(价值约合1,825,538美元)、4月11日378,788枚DYDX(价值约合935,606美元)、4月12日3,210,145枚APT(价值约合3981万美元)、4月16日7,343,750枚APE(价值约合3202万美元)、以及4月18日1,479,167枚GLMR(价值约合557,102美元)。[2023/4/2 13:40:37]

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

最后,Assert!是一个类似于宏的操作,可以让我们测试一个条件,条件不满足时将退出并返回错误代码。如果我敲了接近4,000字对你们这些超级大脑来说还不够,更多细节在这里:

声音 | Adaptive Capital创始合伙人:比特币的价格和采用将在未来爆发:最近在波罗的海Honeybadger会议上,Adaptive Capital创始合伙人、前高盛分析师Murad Mahmudov解释比特币价格和采用将在足够长时间内爆发的50多个原因,其中包括:

1. 对银行和传统机构的信任正在下降。大概是由于两极分化的加剧和2008年的大衰退,公众开始越来越不信任主流媒体和银行。这种潜在的不信任和动荡为比特币等新的去信任体系的实施奠定了基础。

2. 全球债务正在膨胀,可能有人需要比特币或者黄金这样的“B计划(Plan B)”;

3. 负收益率债券创下历史新高,已达15万亿美元。比特币可能会吸引那些开始意识到世界经济状况的投资者。

4. 宏观投资者转向比特币。宏观对冲基金经理和投资者已经开始转向比特币,这只会突显其潜力。例如,高盛前高管Raoul Pal已开始转向比特币,称其是关于金融未来的一种选择,是目前千禧一代的最佳资产,从长期来看,目前比特币的价值被大幅低估。(Ethereum World News)[2019/9/30]

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

标签:ESTTESTICKTICNESTA价格TEST币SideKick TokenSTICKY

AVAX热门资讯
TRO:2022波场TRON硬核身份之亿级用户的守护者-ODAILY

2022年,波场TRON参与了行业每一个重要叙事,站在不同的角度,每一次叙事都展现了波场全新的身份。2022波场TRON展示的硬核身份有哪些,我们将通过系列海报来一一揭晓.

1900/1/1 0:00:00
ING:LinkedIn成为2022波场黑客松大赛第三季合作伙伴-ODAILY

据官方消息,LinkedIn已成为2022波场黑客松大赛第三季合作伙伴。与此同时,LinkedIn高级工程经理KarthikShanmugasundaram将担任本季评委.

1900/1/1 0:00:00
TRX:孙宇晨:波场TRON将扩展AI战略-ODAILY

1月30日,格林纳达常驻世界贸易组织代表、特命全权大使、波场TRON创始人孙宇晨先生阁下在社交媒体表示:“波场TRON将建立人工智能研究团队并展开与AI行业的合作,以扩展波场AI战略.

1900/1/1 0:00:00
FIN:Bitfinex一周简报(1107-1113)-ODAILY

BitfinexAlpha|关于通货膨胀的辩论席卷市场,加密游戏继续增长美联储的发言一直是一门艺术.

1900/1/1 0:00:00
GON:Polygon巨大的NFT市场发生了什么变化?-ODAILY

October,2022,DanielDataSource:OpenSeaEthereum-Polygon-Solana一年前的这个时候,Polygon是NFT用户数量的第二大公链.

1900/1/1 0:00:00
NFT:WGGDAO瓜田社区非典型链游经济模型黑客松(第一场)-ODAILY

瓜哥参加完第一场的感受:平时经常接触到一些瓜友和项目方在模型设计上有自己的想法,虽然不成熟,但有亮点,我们就组织了三场非典型经济模型黑客松比赛.

1900/1/1 0:00:00