当前位置: 首页 > 科技观察

Solana中如何使用Anchor创建智能合约

时间:2023-03-12 00:03:35 科技观察

www.ydisp.cn/oss/202207/13/845d9eb315e5761ac624798c95fb06552fbdd5.jpg"style="width:600px;能见度:可见;height:400px;"data-type="inline">Blockchain2.0集成了最早的区块链版本,并增加了更多的特性,例如透明性、改进的安全性和智能合约。区块链技术中智能合约的出现使得这些功能得以实现。什么是智能合约吗?智能合约是包含在计算机代码中的数字协议,在满足指定条件时自动执行。它是两个匿名方之间的可信工具,使他们能够准确、高效、安全和透明。支持智能合约的区块链比不支持智能合约的区块链更有优势,这是因为智能合约拓宽了区块链技术的应用场景。单个区块链可以托管多个令牌,包括此类区块链的原生加密货币。区块链技术中的rt合约一个案例是不可替代的代币——NFT。这些案例,以及越来越多的案例,推动了基于智能合约的区块链的发展,因此不基于智能合约的区块链正在寻找结合智能合约的方法。例如,比特币软分叉最近采用了“Taproot”技术。支持智能合约的区块链网络之一是Solana。什么是索拉纳?Solana是采用BFT(拜占庭容错)算法作为塔式共识算法的公链。Tower共识利用历史证明共识机制。作为最快的区块链网络之一,Solana可以达到约710,000TPS。Solana由前高通高管AnatolyYakovenko于2017年创建。它支持智能合约、Dapps、DeFi平台和NFT市场的创建。Solana网络的原生加密货币是SOL,用于支付网络上的交易费用和在加密市场上进行交易。由于Solana网络支持智能合约,因此这些应用程序或解决方案在Solana网络上创建的解决方案都是可能的。如何在Solana中使用Anchor软件编写智能合约Anchor是Solana的Sealevel运行时框架工具,提供便捷的开发支持。例如:IDL(接口定义语言)规范Rust工具包和eDSL(嵌入式领域特定语言)-用于编写Solana程序的TypeScript包从IDLCLI和工作区管理生成客户端有助于开发完整的应用程序。总的来说,Anchor使得在Solana网络上创建智能合约变得异常容易。在深入探讨该主题的细节之前,让我们熟悉一些术语:Rust:Rust是一种优秀的多用途编程语言,将用于开发此类智能合约。Solana工具套件:包括命令行界面CLI。首先,我们需要创建一个新的Anchor项目:anchorinitcounterapp你应该在项目结构中看到以下文件和文件夹:program:智能合约所在的目录或位置test:Javascript测试代码migrations:启动脚本app:frontend应用程序构建目录现在,让我们从应用程序目录中找到lib.rs文件。declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");#[program]pubmodcounterapp{使用super::*;pubfninitialize(ctx:Context)->ProgramResult{Ok(())}}#[derive(Accounts)]pubstructInitialize{}这是最简单的CLI程序。它有一个初始化函数,在调用应用程序时成功执行。“初始化”结构定义了“初始化”函数的上下文。设置项目后,下一步是创建我们的柜台应用程序。为了实现这一点,我们首先要建立一个账户来保存数据。帐户用于在SolanaSealevel中存储和检索数据。回想一下,我们已经定义了两个结构:CounterAccount结构是我们的帐户信息,它包含将存储计数的变量。#[derive(Accounts)]pubstructCreate<'info>{#[account(init,payer=user,space=16+16)]pubcounter_account:Account<'info,CounterAccount>,#[account(mut)]复制代码pubuser:Signer<'info>,pubsystem_program:Program<'info,System>,}#[account]pubstructCounterAccount{pubcount:u64,}Create结构是定义账户创建上下文的指令结构。#[account(…)]定义了Anchor在构建上下文时预处理的指令和约束。接下来创建我们的函数:pubfncreate(ctx:Context)->ProgramResult{letcounter_account=&mutctx.accounts.counter_account;counter_account.count=0;ok(())}create函数是RPC请求处理程序,context是Create结构体。现在功能实现已经完成,让我们编写测试函数并启动我们的智能合约。从'@project-serum/anchor'导入*作为锚点;从'@project-serum/anchor'导入{Program};从'../target/types/counterapp'导入{Counterapp};描述('counterapp',()=>{constprovider=anchor.Provider.env()anchor.setProvider(provider);constprogram=anchor.workspace.CounterappasProgram;constcounterAccount=anchor.web3.Keypair.generate();它('已初始化!',async()=>{awaitprogram.rpc.create({accounts:{counterAccount:counterAccount.publicKey,user:provider.wallet.publicKey,systemProgram:anchor.web3.SystemProgram.programId,},signers:[counterAccount]}asany)});it("Incrementcounter",async()=>{awaitprogram.rpc.increment({accounts:{counterAccount:counterAccount.publicKey}}asany)})it(“获取帐户”,异步()=>{constaccount:any=awaitprogram.account.counterAccount.fetch(counterAccount.publicKey)console.log(account.count)})});现在,在运行测试锚测试测试通过后,我们可以部署并启动程序。确保solana-test-validator正在运行。主播部署译者介绍社区编辑张业贵,从事企业信息化建设多年。致力于信息集成、数据治理和人工智能应用。主要关注服务标准化和软件流程改进,帮助中小企业提升效率和价值创新。原标题:HowtoCreateSmartContractsinSolanaUsingAnchor,作者:AbubakarMaruf