偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用 Anchor在Solana(索拉納)中創(chuàng)建智能合約

譯文 精選
區(qū)塊鏈
區(qū)塊鏈是一個不可變的公共賬本,可以安全地存儲數(shù)據(jù)或信息,不易受到黑客攻擊或篡改。它是一個去中心化/分布式的數(shù)字交易賬本,沒有中央治理或第三方。它通過在生態(tài)系統(tǒng)中的所有節(jié)點上分發(fā)數(shù)據(jù)來保護數(shù)據(jù)。

譯者 | 張業(yè)貴

審校 | 孫淑娟

區(qū)塊鏈在2008年成為熱點,它最初是一個分散的P2P公共交易數(shù)據(jù)庫,這種最早的區(qū)塊鏈形式被稱為區(qū)塊鏈1.0。開發(fā)人員基于強大的框架和眾多的實用工具,不斷探索區(qū)塊鏈技術(shù)的更多應用,并成功開發(fā)了區(qū)塊鏈的新版本,區(qū)塊鏈2.0。

區(qū)塊鏈2.0集成了最早版本的區(qū)塊鏈,并添加了更多功能,如透明性、改進的安全性和智能合約。區(qū)塊鏈技術(shù)中智能合約的出現(xiàn)讓這些功能都得以實現(xiàn)。

什么是智能合約?

智能合約是包含在計算機代碼中,在滿足指定條件時自動執(zhí)行的數(shù)字協(xié)議條款。它是兩個匿名方之間值得信賴的工具,使他們能夠毫無顧慮地進行交易。它準確、高效、安全和透明。

支持智能合約的區(qū)塊鏈比不支持智能合約的區(qū)塊鏈更具有優(yōu)勢。這是因為智能合約拓寬了區(qū)塊鏈技術(shù)的應用場景。例如,智能合約允許在單個區(qū)塊鏈上開發(fā)多個加密令牌,即單個區(qū)塊鏈可以成為多個令牌的主機,包括此類區(qū)塊鏈的原生加密貨幣。

區(qū)塊鏈技術(shù)中智能合約的另一個案例是非同質(zhì)化代幣——NFT。這些案例以及越來越多的案例,驅(qū)動了基于智能合約的區(qū)塊鏈的發(fā)展,因此不是基于智能合約的區(qū)塊鏈正在尋找將智能合約納入的方法。比如最近比特幣soft-fork采用了 “Taproot”技術(shù)。支持智能合約的區(qū)塊鏈網(wǎng)絡有一種是Solana。

什么是Solana?

Solana是一個公共區(qū)塊鏈,以BFT(拜占庭容錯)算法作為塔共識算法。塔共識利用了歷史證明共識機制。作為最快的區(qū)塊鏈網(wǎng)絡之一,Solana可以達到約710,000 TPS。

Solana由高通前高管Anatoly Yakovenko于2017年創(chuàng)建。它支持智能合約、Dapps、DeFi平臺和NFT市場的創(chuàng)建。Solana網(wǎng)絡的原生加密貨幣是SOL,用于支付網(wǎng)絡上的交易費用,并在加密市場上交易。由于Solana網(wǎng)絡支持智能合約,因此在Solana網(wǎng)絡創(chuàng)建這些應用程序或解決方案都是可能的。

如何使用Anchor軟件在Solana中編寫智能合約

Anchor是Solana的Sealevel運行時框架工具,提供方便的開發(fā)支持。例如:

  • IDL(接口定義語言)規(guī)范
  • Rust 工具箱和eDSL(嵌入式域特定語言)- 用于編寫Solana程序
  • 從IDL生成客戶端的TypeScript包
  • CLI和工作區(qū)管理幫助開發(fā)完整的應用程序。

總地來說,Anchor使得在Solana網(wǎng)絡上創(chuàng)建智能合約容易得令人難以置信。在深入研究這個主題的細節(jié)之前,讓我們熟悉一些術(shù)語:

  1. Rust:Rust是一種卓越的多用途編程語言,將用于開發(fā)這種智能合約。
  2. Solana工具套件:包括命令行界面CLI。

首先,我們需要創(chuàng)建一個新的 Anchor 項目:

anchor init counterapp

您應該會在項目結(jié)構(gòu)中看到以下文件和文件夾:

  • program:智能合約所在的目錄或位置
  • test:Javascript測試代碼
  • migrations:啟動腳本
  • app:前端應用程序構(gòu)建目錄

現(xiàn)在,讓我們從程序目錄中找到lib.rs文件。

declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");

#[program]
pub mod counterapp {
use super::*;
pub fn initialize(ctx: Context<Initialize>) -> ProgramResult {
Ok(())
}
}
#[derive(Accounts)]
pub struct Initialize {}

這是最簡單的CLI程序。它有一個初始化函數(shù),當調(diào)用應用程序時,該函數(shù)會成功執(zhí)行?!癐nitialize”結(jié)構(gòu)體定義了“initialize”函數(shù)的上下文。

完成項目設置后,下一步是創(chuàng)建我們的計數(shù)器應用程序。為了實現(xiàn)這一目標,我們必須先建立一個帳戶來保存數(shù)據(jù)。帳戶用于在Solana Sealevel存儲和檢索數(shù)據(jù)。

回想一下,我們已經(jīng)定義了兩個結(jié)構(gòu):CounterAccount結(jié)構(gòu)體是我們的帳戶信息,它包含將存儲計數(shù)的變量。

#[derive(Accounts)]
pub struct Create<'info> {

#[account(init, payer=user, space = 16+16)]
pub counter_account: Account<'info, CounterAccount>,

#[account(mut)]
pub user: Signer<'info>,

pub system_program: Program<'info, System>,
}
#[account]
pub struct CounterAccount {
pub count: u64,
}

Create結(jié)構(gòu)是定義創(chuàng)建帳戶上下文的指令結(jié)構(gòu)。

# [account (…) ] 定義在構(gòu)建上下文時Anchor 預處理的指令和約束。

接下來創(chuàng)建我們的函數(shù):

pub fn create(ctx: Context<Create>) -> ProgramResult {
let counter_account = &mut ctx.accounts.counter_account;
counter_account.count = 0;
Ok(())
}

create函數(shù)是RPC請求處理程序,上下文是Create 結(jié)構(gòu)體。

現(xiàn)在已經(jīng)完成了功能實現(xiàn),讓我們編寫測試函數(shù)并啟動我們的智能合約。

import * as anchor from '@project-serum/anchor';
import { Program } from '@project-serum/anchor';
import { Counterapp } from '../target/types/counterapp';
describe('counterapp', () => {
const provider = anchor.Provider.env()
anchor.setProvider(provider);
const program = anchor.workspace.Counterapp as Program<Counterapp>;
const counterAccount = anchor.web3.Keypair.generate();
it('Is initialized!', async () => {
await program.rpc.create({
accounts: {
counterAccount: counterAccount.publicKey,
user: provider.wallet.publicKey,
systemProgram: anchor.web3.SystemProgram.programId,
},
signers: [counterAccount]
} as any)
});
it("Increment counter", async () => {
await program.rpc.increment({
accounts: {
counterAccount: counterAccount.publicKey
}
} as any)
})
it("Fetch account", async () => {
const account: any = await
program.account.counterAccount.fetch(counterAccount.publicKey)
console.log(account.count)
})
});

現(xiàn)在,運行測試。

anchor test

測試通過后,我們可以部署并啟動程序。確保 solana-test-validator  正在運行。

anchor deploy

譯者介紹

張業(yè)貴,51CTO社區(qū)編輯,從事企業(yè)信息化建設多年,致力于信息集成、數(shù)據(jù)治理和人工智能應用等,主要關(guān)注服務標準化、軟件過程改進,助力中小企業(yè)進行效率提升和價值創(chuàng)新。

原文標題:??How to Create Smart Contracts in Solana Using Anchor??,作者:Abubakar Maruf

責任編輯:華軒 來源: 51CTO
相關(guān)推薦

2021-05-06 09:42:24

Truffle部署智能

2020-12-17 08:00:00

區(qū)塊鏈數(shù)據(jù)以太坊

2021-03-25 16:34:10

區(qū)塊鏈加密資產(chǎn)技術(shù)

2021-03-18 23:04:41

Solidity開發(fā)智能

2021-03-11 19:13:04

NFT合約智能

2023-05-12 09:14:34

2022-02-13 23:05:23

加密貨幣比特幣貨幣

2021-04-20 12:53:34

Polkadot部署合約

2022-05-29 10:19:08

區(qū)塊鏈智能合約編程語言

2014-02-09 14:46:33

微軟微軟CEO納德拉

2023-07-04 20:15:00

2023-05-26 16:40:22

臨時表Hive數(shù)據(jù)表存儲

2023-06-20 08:00:00

2018-06-07 16:05:46

2020-04-03 15:18:04

微軟WindowsOffice

2024-01-17 08:44:27

人工智能AIOpenAI

2022-11-03 08:35:35

2023-02-24 08:00:00

2020-04-22 13:23:46

智能合約區(qū)塊鏈比特幣

2021-11-02 10:25:19

區(qū)塊鏈智能合約
點贊
收藏

51CTO技術(shù)棧公眾號