国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

做金融平臺(tái)網(wǎng)站需要多少錢網(wǎng)站推廣包括

做金融平臺(tái)網(wǎng)站需要多少錢,網(wǎng)站推廣包括,商城網(wǎng)站怎么做的,網(wǎng)站專業(yè)好找工作嗎文章目錄 Solana開發(fā)之Anchor框架一、什么是Anchor二、安裝和使用1. 安裝rust2. 安裝Solana下載預(yù)構(gòu)建的二進(jìn)制文件 3. 使用 Anchor 版本管理器 (avm) 進(jìn)行安裝(推薦) 四、Anchor 核心原理Anchor 程序由三部分組成程序的 ID 從哪里…

文章目錄

  • Solana開發(fā)之Anchor框架
    • 一、什么是Anchor
    • 二、安裝和使用
      • 1. 安裝rust
      • 2. 安裝Solana
        • 下載預(yù)構(gòu)建的二進(jìn)制文件
      • 3. 使用 Anchor 版本管理器 (avm) 進(jìn)行安裝(推薦)
    • 四、Anchor 核心原理
      • Anchor 程序由三部分組成
      • 程序的 ID 從哪里來
    • 五、初始化項(xiàng)目、build項(xiàng)目、運(yùn)行測(cè)試用例
      • 初始化項(xiàng)目
      • build項(xiàng)目
      • 測(cè)試用例編寫
        • 用例demo
      • 運(yùn)行測(cè)試用例
    • 六、本地構(gòu)建和部署
    • 七、使用Anchor與 Solana 區(qū)塊鏈進(jìn)行交互
      • 使用場(chǎng)景
      • Anchor on the front-end
      • 【推薦】如何使用 Kinobi 創(chuàng)建 Anchor 程序客戶端
    • 參考

Solana開發(fā)之Anchor框架

大多數(shù) Rust 開發(fā)使用的是 Anchor 框架。Anchor 文檔指出,開發(fā)人員只需要熟悉 Rust 的基礎(chǔ)知識(shí)(即 Rust Book 的前九章)。

一、什么是Anchor

官網(wǎng):https://www.anchor-lang.com/

Anchor 是一個(gè)功能強(qiáng)大的框架,旨在快速構(gòu)建安全的 Solana 程序。它通過減少諸如賬戶(反)序列化和指令數(shù)據(jù)等領(lǐng)域的樣板文件、進(jìn)行必要的安全檢查、自動(dòng)生成客戶端庫以及提供廣泛的測(cè)試環(huán)境來簡化開發(fā)流程。

Anchor 是 Solana 的 Sealevel 運(yùn)行時(shí)的框架,提供了幾種方便的開發(fā)人員工具來編寫智能合約。

二、安裝和使用

1. 安裝rust

https://www.rust-lang.org/tools/install

在 Rust 開發(fā)環(huán)境中,所有工具都安裝在 ~/.cargo/bin 目錄中,您可以在這里找到包括 rustccargorustup 在內(nèi)的 Rust 工具鏈。

Rust 開發(fā)者通常會(huì)將該目錄加入 PATH 環(huán)境變量中。在安裝過程中,rustup 會(huì)嘗試配置 PATH。 由于不同平臺(tái)、命令行 Shell 之間存在差異,rustup 中也可能存在 Bug,因此在終端重啟或用戶重新登錄之前,rustup 對(duì) PATH 的修改可能不會(huì)生效,甚至完全無效。

如果安裝后在終端嘗試執(zhí)行 rustc --version 失敗,那么,以上內(nèi)容就是最可能的原因。

2. 安裝Solana

https://docs.solanalabs.com/cli/install

linux、macos:

sh -c "$(curl -sSfL https://release.solana.com/v1.18.17/install)"

Windows:

cmd /c "curl https://release.solana.com/v1.18.17/solana-install-init-x86_64-pc-windows-msvc.exe --output C:\solana-install-tmp\solana-install-init.exe --create-dirs"

復(fù)制并粘貼以下命令,然后按 Enter 鍵安裝最新版本的 Solana。如果您看到系統(tǒng)彈出安全窗口,請(qǐng)選擇允許程序運(yùn)行。

C:\solana-install-tmp\solana-install-init.exe v1.18.17

通過運(yùn)行以下命令確認(rèn) solana 您已安裝所需的版本:

	solana --version

After a successful install, solana-install update may be used to easily update the Solana software to a newer version at any time.
安裝成功后, solana-install update 可用于隨時(shí)輕松地將 Solana 軟件更新到更新版本。

安裝使用穩(wěn)定版本:

sh -c "$(curl -sSfL https://release.solana.com/stable/install)"

使用官方安裝命令安裝 Solana CLI 工具套件:您可以 stable 替換為與所需版本的軟件版本匹配的版本標(biāo)記(即 v1.18.1 ),或使用以下三個(gè)符號(hào)通道名稱之一: stable 、 beta 或 edge 。

報(bào)錯(cuò):# solana-test-validator
Aborted (core dumped)

嘗試運(yùn)行 solana-test-validator --log 以查看此類輸出。您的錯(cuò)誤可能依賴于您沒有的 CPU AVX2 指令。

# solana-test-validator --log
[2024-07-09T15:55:05.254090404Z INFO  solana_test_validator] solana-validator 1.17.25 (src:d0ed878d; feat:3580551090, client:SolanaLabs)
[2024-07-09T15:55:05.254140535Z INFO  solana_test_validator] Starting validator with: ArgsOs {inner: ["solana-test-validator","--log",],}
[2024-07-09T15:55:05.254172296Z WARN  solana_perf] CUDA is disabled
[2024-07-09T15:55:05.254196077Z INFO  solana_perf] AVX detected
[2024-07-09T15:55:05.254203279Z ERROR solana_perf] Incompatible CPU detected: missing AVX2 support. Please build from source on the target
Aborted (core dumped)
下載預(yù)構(gòu)建的二進(jìn)制文件

如果您不想使用 solana-install 來管理安裝,可以手動(dòng)下載并安裝二進(jìn)制文件。

通過導(dǎo)航到 https://github.com/solana-labs/solana/releases/latest 下載二進(jìn)制文件,下載 solana-release-x86_64-unknown-linux-gnu.tar.bz2

tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
cd solana-release/
export PATH=$PWD/bin:$PATH

因?yàn)?code>release.solana.com 不太好訪問,這里我直接git上自己下載,解壓安裝。

3. 使用 Anchor 版本管理器 (avm) 進(jìn)行安裝(推薦)

Anchor 版本管理器是用于使用 anchor-cli 多個(gè)版本的工具。它需要與從源代碼構(gòu)建相同的依賴關(guān)系。如果已安裝 NPM 包,建議您卸載它。

使用 Cargo 安裝 avm 。請(qǐng)注意,如果您安裝了二進(jìn)制文件,這將替換您的 anchor 二進(jìn)制文件。

#sudo apt-get install build-essential
cargo install --git https://github.com/coral-xyz/anchor avm --locked --force

使用 avm 安裝最新版本的 CLI,然后將其設(shè)置為要使用的版本。

avm install latest
avm use latest

驗(yàn)證安裝。

anchor --version

最新的默認(rèn)是0.30.1,我暫時(shí)安裝使用用anchor 0.29.0,

avm install 0.29.0
avm use 0.29.0

添加 你的安裝到bin中

export PATH=/root/.avm/bin:$PATH

四、Anchor 核心原理

Anchor 程序由三部分組成

Anchor 程序由三部分組成: program 模塊、標(biāo)有 #[derive(Accounts)]Accounts 結(jié)構(gòu)和 declare_id 宏。

declare_id! 宏的作用是在 Rust 代碼中聲明 Solana 程序的唯一標(biāo)識(shí)符(ID)。
這個(gè) ID 在 Solana 網(wǎng)絡(luò)中是唯一的,用于標(biāo)識(shí)和定位這個(gè)程序。它類似于在以太坊中合約的地址。

啟動(dòng)新的 Anchor 項(xiàng)目時(shí),你將看到以下內(nèi)容:

// use this import to gain access to common anchor features
use anchor_lang::prelude::*;// declare an id for your program
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");// write your business logic here
#[program]
mod hello_anchor {use super::*;pub fn initialize(_ctx: Context<Initialize>) -> Result<()> {Ok(())}
}// validate incoming accounts here
#[derive(Accounts)]
pub struct Initialize {}
  • use anchor_lang::prelude:😗;
    這個(gè)導(dǎo)入語句引入了 Anchor 框架中常用的特性和類型,例如 Context、Accounts 等。

  • declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
    這個(gè)宏聲明了當(dāng)前 Solana 程序的唯一標(biāo)識(shí)符(ID)。
    這個(gè) ID 在 Solana 網(wǎng)絡(luò)中是唯一的,用于標(biāo)識(shí)和定位這個(gè)程序。

  • #[program]
    這個(gè)屬性宏標(biāo)記了一個(gè) Rust 模塊作為 Solana 程序的入口點(diǎn)。

  • mod hello_anchor { … }
    這個(gè)模塊包含了程序的業(yè)務(wù)邏輯實(shí)現(xiàn)。

  • #[derive(Accounts)]
    這個(gè)屬性宏自動(dòng)為 Initialize 結(jié)構(gòu)體生成一些樣板代碼,用于驗(yàn)證賬戶。

這段代碼定義了一個(gè)基本的 Solana 程序,包含了程序 ID 的聲明和一個(gè)簡單的初始化函數(shù)。Anchor 框架通過提供各種宏和結(jié)構(gòu)體,大大簡化了 Solana 程序的開發(fā)過程,使開發(fā)者能夠更專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。

程序的 ID 從哪里來

declare_id! 宏的作用是在 Rust 代碼中聲明 Solana 程序的唯一標(biāo)識(shí)符(ID)。

這個(gè) ID 在 Solana 網(wǎng)絡(luò)中是唯一的,用于標(biāo)識(shí)和定位這個(gè)程序。它類似于在以太坊中合約的地址。

那么這個(gè) ID 是從哪里來的呢?有幾種方式可以獲得程序的 ID:

  1. 手動(dòng)生成:

你可以手動(dòng)生成一個(gè) 32 字節(jié)的隨機(jī) Pubkey 作為程序的 ID。這種方式適用于開發(fā)和測(cè)試階段。
在示例代碼中,“Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS” 就是一個(gè)手動(dòng)生成的 Pubkey 字符串。

  1. 使用 Anchor 的 CLI 工具生成:
    Anchor 提供了一個(gè)命令行工具,可以幫助你在部署程序時(shí)自動(dòng)生成程序 ID。
    當(dāng)你運(yùn)行 anchor build 命令時(shí),Anchor 會(huì)為你的程序生成一個(gè)唯一的 ID,并將其寫入到 Anchor 項(xiàng)目的配置文件中。

  2. 從 Anchor 項(xiàng)目的配置文件讀取:
    如果你的 Solana 程序是使用 Anchor 框架開發(fā)的,那么在項(xiàng)目的配置文件(如 Cargo.toml 或 anchor.toml)中會(huì)有程序 ID 的定義。
    你可以直接從這個(gè)配置文件中讀取程序 ID,并在代碼中使用 declare_id! 宏進(jìn)行聲明。

程序 ID 的作用都是為了在 Solana 網(wǎng)絡(luò)中唯一標(biāo)識(shí)你的 Solana 程序。在部署和調(diào)用程序時(shí),需要使用這個(gè) ID 來定位和執(zhí)行程序。

declare_id!宏設(shè)置了程序的公鑰。對(duì)于本地開發(fā),使用anchor init命令設(shè)置程序?qū)⒃?code>target/deploy目錄中生成一個(gè)密鑰對(duì),并填充此宏。

五、初始化項(xiàng)目、build項(xiàng)目、運(yùn)行測(cè)試用例

初始化項(xiàng)目

要初始化一個(gè)新項(xiàng)目,只需運(yùn)行:

anchor init <new-workspace-name>

這將創(chuàng)建一個(gè)新的Anchor工作區(qū),以下是文件夾中的一些重要文件:

  • .anchor 文件夾:它包括最新的程序日志和用于測(cè)試的本地賬本
  • 文件夾 app :一個(gè)空文件夾,則可用于保存前端
  • programs 文件夾:此文件夾包含您的程序。它可以包含多個(gè),但最初只包含與 同名的程序。該程序已包含一個(gè) lib.rs 包含一些示例代碼的文件。
    programs 文件夾下,你將看到一個(gè)src目錄。它包含lib.rs。
  • 文件夾 tests :包含 E2E 測(cè)試的文件夾。它已經(jīng)包含一個(gè)文件,用于測(cè)試 中的示例代碼。 programs/
  • migrations 文件夾:在此文件夾中,可以保存程序的部署和遷移腳本。
  • 文件 Anchor.toml :此文件為程序配置工作區(qū)范圍的設(shè)置。
    • 您的程序在 localnet 上的地址 ( [programs.localnet] )
    • 一個(gè)注冊(cè)表,你的程序可以被推送到 ( [registry] )
    • 可用于測(cè)試的提供程序 ( [provider] )
    • Anchor 執(zhí)行腳本 ( [scripts] )。 test 腳本在運(yùn)行 anchor test 時(shí)運(yùn)行。您可以使用 anchor run <script_name> 運(yùn)行自己的腳本。

build項(xiàng)目

要編譯這個(gè)程序,我們可以運(yùn)行 Anchor build 命令:

anchor build

生成完成后,您應(yīng)該會(huì)看到一個(gè)名為 target 的新文件夾。

IDL 位于 target/idl/xxx.json , IDL 與 Solidity 中的 ABI(或 GraphQL 中的查詢定義)非常相似,我們將在 JavaScript 測(cè)試和前端以類似的方式使用它們,通過 RPC 與我們的 Solana 程序進(jìn)行通信。

測(cè)試用例編寫

使用 Anchor 調(diào)用 Solana 程序, 我們通常需要兩件主要事情:

  1. Provider - 是 Provider 與 Solana 網(wǎng)絡(luò)連接的抽象,通常由 Connection, Wallet, and a preflight commitment組成。

在測(cè)試中,Anchor 框架將基于環(huán)境 ( anchor.Provider.env() ) 為我們創(chuàng)建提供者,但在客戶端上,我們需要使用用戶的 Solana 錢包自己構(gòu)建提供者。

  1. program - 這是一個(gè) program 抽象,它結(jié)合了 Provider 、 idl 和 ( programID 在構(gòu)建程序時(shí)生成),并允許我們針對(duì)我們的程序調(diào)用 RPC 方法。

同樣,與 Provider 一樣,Anchor 提供了一種方便的訪問方式 program ,但是在構(gòu)建前端時(shí),我們需要自己構(gòu)建它 provider 。

一旦我們有了這兩樣?xùn)|西,我們就可以開始在程序中調(diào)用函數(shù)了。例如,在我們的程序中,我們有一個(gè) initialize 函數(shù)。在我們的測(cè)試中,您將看到我們可以直接使用以下方法 program.rpc.functionName 調(diào)用該函數(shù):

const tx = await program.rpc.initialize();

這是一種非常常見的模式,您在使用 Anchor 時(shí)會(huì)經(jīng)常使用,一旦您掌握了了解其工作原理的竅門,就可以非常輕松地連接到 Solana 程序并與之交互。

用例demo

測(cè)試用例:

  • 定義了一個(gè)名為 “Test mint” 的測(cè)試用例。
  • 為一個(gè)新的 wallet 賬戶進(jìn)行空投,獲得 1 SOL。
  • 創(chuàng)建一個(gè)新的 asset 賬戶。
  • 調(diào)用 MyNFT 合約的 mint 指令,傳入相關(guān)的賬戶信息。
  • 使用 fetchAssetV1fetchCollectionV1 獲取剛剛創(chuàng)建的資產(chǎn)和集合信息,并打印出來。

實(shí)戰(zhàn)demo:

import * as anchor from "@coral-xyz/anchor";
import { Program } from "@coral-xyz/anchor";
import { Mynft } from "../target/types/mynft";
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
import {defaultPublicKey,generateSigner,signerIdentity,sol,publicKey,
} from "@metaplex-foundation/umi";
import { toWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
import {createCollectionV1,fetchAssetV1,fetchCollectionV1,MPL_CORE_PROGRAM_ID,
} from "@metaplex-foundation/mpl-core";const beneficiary = publicKey("4k7LBNMW3J6gMvEZMy77vZar8h3h3a9Moc8F4xxxxx");describe("mynft", () => {// Configure the client to use the local cluster.anchor.setProvider(anchor.AnchorProvider.env());const program = anchor.workspace.Mynft as Program<Mynft>;const umi = createUmi(anchor.AnchorProvider.env().connection);const payer = generateSigner(umi);umi.use(signerIdentity(payer));const collection = generateSigner(umi);const authority = generateSigner(umi);before(async () => {await umi.rpc.airdrop(payer.publicKey, sol(1));createCollectionV1(umi, {collection,name: "Mynft",uri: "http://mynft.org",updateAuthority: authority.publicKey,}).sendAndConfirm(umi);});it("Test mint", async () => {const wallet = generateSigner(umi);await umi.rpc.airdrop(wallet.publicKey, sol(1.0));const asset = generateSigner(umi);const tx = await program.methods.mint().accounts({coreAsset: asset.publicKey,coreCollection: collection.publicKey,authoriy: authority.publicKey,wallet: wallet.publicKey,beneficiary,mplCore: MPL_CORE_PROGRAM_ID,systemProgram: defaultPublicKey(),}).signers([toWeb3JsKeypair(wallet),toWeb3JsKeypair(asset),toWeb3JsKeypair(authority),]).rpc();const assetInfo = await fetchAssetV1(umi, asset.publicKey);console.log(assetInfo);const collectionInfo = await fetchCollectionV1(umi, collection.publicKey);console.log(collectionInfo);});
});

其中: …/target/types/mynft 為anchor build時(shí)候根據(jù)idl自動(dòng)為你生成的typescript文件方便您調(diào)用合約方法。

在項(xiàng)目根目錄下,運(yùn)行 anchor test 命令。這會(huì)執(zhí)行 tests 目錄下所有的測(cè)試用例,包括這個(gè) “Test mint” 用例。
如果你只想運(yùn)行這個(gè)特定的測(cè)試用例,可以在 anchor test 命令后添加 -f "Test mint" 參數(shù),這樣只會(huì)運(yùn)行名為 “Test mint” 的測(cè)試用例。

運(yùn)行測(cè)試用例

現(xiàn)在,我們可以通過運(yùn)行 test 來測(cè)試程序:

anchor test

六、本地構(gòu)建和部署

官方文檔:https://solana.com/developers/guides/getstarted/setup-local-development
參考URL: https://guides.quicknode.com/guides/solana-development/getting-started/start-a-solana-local-validator
參考URL: https://dev.to/edge-and-node/the-complete-guide-to-full-stack-solana-development-with-react-anchor-rust-and-phantom-3291

本地開發(fā)環(huán)境可以為開發(fā)人員提供更受控和高效的開發(fā)環(huán)境。

首先,我們要確保 Solana 工具套件正確配置為本地開發(fā)(Local development)。
運(yùn)行solana config set --url localhost命令,確保所有配置指向本地主機(jī) URL。

還要確保你有一個(gè)本地密鑰對(duì)(key pair)以與 Solana 進(jìn)行交互。你必須擁有一個(gè)帶有 SOL 余額的 Solana 錢包才能使用 Solana CLI 部署程序。

運(yùn)行solana address命令檢查是否已經(jīng)有本地密鑰對(duì)。

如果遇到錯(cuò)誤,請(qǐng)運(yùn)行命令:

solana-keygen new -o /root/.config/solana/id.json
solana config set --keypair /root/.config/solana/id.json
solana config get

將在默認(rèn)情況下在~/.config/solana/id.json路徑創(chuàng)建一個(gè)新的文件系統(tǒng)錢包。它還會(huì)提供一個(gè)可用于恢復(fù)公鑰和私鑰的恢復(fù)短語。建議保存此密鑰對(duì),即使它是在本地使用。

還要注意,如果你已經(jīng)在默認(rèn)位置保存了文件系統(tǒng)錢包,solana-keygen new命令將不覆蓋它,除非使用**–force**命令指定。

接下來,我們要確保我們的 Anchor.toml 文件正確指向本地主機(jī)。

...
[programs.localnet]
hello-world = "EJTW6qsbfya86xeLRQpKLM8qhn11cJXmU35QbJwE11R8"
...
[provider]
cluster = "Localnet"
wallet = '~config/solana/id.json'

配置項(xiàng)目的程序id,如這里的"EJTW6qsbfya86xeLRQpKLM8qhn11cJXmU35QbJwE11R8"
程序 ID 是公開的。但它的密鑰對(duì)存儲(chǔ)在 target/deploy 文件夾中。它遵循基于程序名稱的特定命名約定。例如,如果程序名為 hello_world,Anchor 將在 target/deploy/hello-world-keypair.json 中尋找密鑰對(duì)。

如果在部署過程中找不到該文件,Anchor 將生成一個(gè)新的密鑰對(duì),這將生成新的程序 ID。

因此,在第一次部署后更新程序 ID 至關(guān)重要。hello-world-keypair.json 文件用作程序所有權(quán)的證明。如果密鑰對(duì)泄露,惡意行為者可以對(duì)程序進(jìn)行未經(jīng)授權(quán)的更改。

通過 [provider],我們告訴 Anchor 使用 本地主機(jī) 和指定的錢包來支付存儲(chǔ)和交易費(fèi)用。

確保 [provider] 部分的 cluster 參數(shù)設(shè)置為 “Localnet”。這表示你是在本地運(yùn)行 Solana 節(jié)點(diǎn)進(jìn)行部署和測(cè)試。

Solana CLI 自帶一個(gè)測(cè)試驗(yàn)證器 。運(yùn)行 solana-test-validator 命令 將在你的工作站上啟動(dòng)一個(gè)功能齊全的單節(jié)點(diǎn)集群。這對(duì)許多原因都很有益,例如沒有 RPC 速率限制、沒有空投限制、直接在鏈上部署程序、從文件加載賬戶以及從公共集群克隆賬戶。測(cè)試驗(yàn)證器必須在單獨(dú)的打開的終端窗口中運(yùn)行,并保持運(yùn)行,以使本地主機(jī)集群保持在線并可供交互。

在啟動(dòng) solana-test-validator 時(shí),你可以使用參數(shù)來指定 RPC 服務(wù)監(jiān)聽的 IP 地址。
例如,如果你想讓 RPC 服務(wù)監(jiān)聽在 0.0.0.0 上,而不是默認(rèn)的 127.0.0.1,可以使用以下命令:

solana-test-validator --bind-address 0.0.0.0 --rpc-port 8899

現(xiàn)在,我們可以成功運(yùn)行 anchor deploy 來將程序部署到我們的本地ledger。傳輸?shù)奖镜?ledger 的任何數(shù)據(jù)都將保存在當(dāng)前工作目錄中生成的 test-ledger 文件夾中。建議將此文件夾添加到你的 .gitignore 文件中,以避免將此文件夾提交到你的存儲(chǔ)庫中。此外,退出本地 ledger(即在終端中按下 Ctrl + C)不會(huì)刪除發(fā)送到集群的任何數(shù)據(jù)。您可以

solana-test-validator --reset

這將清空本地?cái)?shù)據(jù)目錄并重新初始化節(jié)點(diǎn)。

Solana Explorer
開發(fā)者還可以將 Solana Explorer 配置為他們的本地ledger。轉(zhuǎn)到 Solana Explorer。在導(dǎo)航欄中,單擊當(dāng)前集群狀態(tài)的綠色按鈕:

這將打開一個(gè)側(cè)邊欄,允許你選擇一個(gè)集群。單擊 Custom RPC URL。這應(yīng)該自動(dòng)填充為 http://localhost:8899 。如果沒有,請(qǐng)?zhí)顚?#xff0c;以便將區(qū)塊瀏覽器指向你的機(jī)器的 8899 端口:

配置本地區(qū)塊鏈瀏覽器有幾個(gè)非常重要原因:

  • 它允許開發(fā)者實(shí)時(shí)檢查本地ledger上的交易,就像他們通常在分析 devnet 或 mainnet 的區(qū)塊瀏覽器上所具有的功能
  • 更容易可視化賬戶、代幣和程序的狀態(tài),就像它們?cè)趯?shí)時(shí)集群上運(yùn)行一樣
  • 它提供了有關(guān)錯(cuò)誤和交易失敗的詳細(xì)信息
  • 它提供了一致的開發(fā)體驗(yàn),因?yàn)樗且粋€(gè)熟悉的界面
solana balance
solana address
solana airdrop 100

從你提供的 solana config get 輸出結(jié)果來看,你的 Solana 客戶端配置指向的是 Solana 主網(wǎng),而不是本地測(cè)試網(wǎng)。

使用 solana config set --url http://localhost:8899 命令將 RPC URL 設(shè)置為本地測(cè)試節(jié)點(diǎn)的地址。

使用 solana config get 命令再次檢查配置,確認(rèn) RPC URL 已經(jīng)正確設(shè)置。

netstat -an |findstr 8899
TCP 127.0.0.1:54115 127.0.0.1:8899 TIME_WAIT

七、使用Anchor與 Solana 區(qū)塊鏈進(jìn)行交互

使用場(chǎng)景

在 Node.js 環(huán)境下使用 Anchor 來與 Solana 區(qū)塊鏈進(jìn)行交互是非常常見的場(chǎng)景。

  • 測(cè)試環(huán)境
    在開發(fā)和測(cè)試階段,你可以使用 anchor.setProvider(anchor.AnchorProvider.env()) 來連接到本地的 Solana 開發(fā)集群。這樣可以快速進(jìn)行開發(fā)和測(cè)試。

  • 生產(chǎn)環(huán)境
    當(dāng)你準(zhǔn)備將應(yīng)用部署到生產(chǎn)環(huán)境時(shí),你可以配置 Anchor 客戶端連接到 Solana 主網(wǎng)。

如果你的項(xiàng)目中涉及到通過 IDL 和合約進(jìn)行交互,我建議你優(yōu)先考慮使用 Anchor,它可以為你提供更加完整和高效的開發(fā)體驗(yàn)。

Anchor on the front-end

官方ts文檔:https://coral-xyz.github.io/anchor/ts/index.html
參考原文鏈接:https://creatorsdao.github.io/solana-co-learn/Solana-Co-Learn/module5/anchor-on-the-front-end/anchor-into-typescript/

Program 對(duì)象提供了一個(gè)自定義的 API,通過結(jié)合程序 IDL 和 Provider 來與特定程序進(jìn)行交互。

創(chuàng)建 Program 對(duì)象,我們需要以下內(nèi)容:

  • Connection - 集群連接
  • Wallet - 用于支付和簽署交易的默認(rèn)密鑰對(duì)
  • Provider - 將 Connection 和 Wallet 封裝到一個(gè) Solana 集群中
  • IDL - 表示程序結(jié)構(gòu)的文件

Provider 對(duì)象代表了兩個(gè)主要部分的結(jié)合:

  • Connection - 連接到 Solana 集群(例如 localhost、devnet、mainnet)
  • Wallet - 用于支付和簽署交易的指定地址
    Provider 就能夠代表 Wallet 向 Solana 區(qū)塊鏈發(fā)送交易,并在發(fā)送的交易中加入錢包的簽名。

創(chuàng)建一個(gè) Program 對(duì)象,代表了以下兩個(gè)事物的組合:

  • IDL:展示了程序的結(jié)構(gòu)。
  • Provider:負(fù)責(zé)與集群建立連接并簽署 Wallet 的 Connection。

你需要導(dǎo)入程序的 IDL,并明確指定programId,這個(gè)programId通常會(huì)包含在IDL中,當(dāng)然也可以單獨(dú)聲明。

【推薦】如何使用 Kinobi 創(chuàng)建 Anchor 程序客戶端

原文鏈接: https://learnblockchain.cn/article/8639

為測(cè)試驗(yàn)證,暫時(shí)不需要。

參考

[推薦]指南:用 Anchor 構(gòu)建 Solana 程序
參考URL: https://learnblockchain.cn/article/7386

http://aloenet.com.cn/news/35173.html

相關(guān)文章:

  • oa網(wǎng)站建設(shè)企業(yè)網(wǎng)站建設(shè)專業(yè)服務(wù)
  • 網(wǎng)站服務(wù)器租賃費(fèi)用網(wǎng)站制作建設(shè)
  • 公積金網(wǎng)站 如何做減員百度投訴電話人工客服24小時(shí)
  • 網(wǎng)站建設(shè)發(fā)言臨沂seo排名外包
  • 做pvc卡片的交流網(wǎng)站合肥百度seo代理
  • 做俄羅斯網(wǎng)站作品推廣
  • 哪些網(wǎng)站做的比較好看的自己可以做網(wǎng)站嗎
  • 網(wǎng)站分析 實(shí)例2022最新新聞素材摘抄
  • 建立學(xué)校網(wǎng)站需要多少錢?福州百度推廣排名優(yōu)化
  • 網(wǎng)站見建設(shè)seo高端培訓(xùn)
  • 平面設(shè)計(jì)包括哪些方面的設(shè)計(jì)北京網(wǎng)站seowyhseo
  • 個(gè)人網(wǎng)站制作模板圖片什么網(wǎng)站可以免費(fèi)推廣
  • 網(wǎng)站架構(gòu)和網(wǎng)絡(luò)seo優(yōu)化公司哪家好
  • 網(wǎng)站wordpress主題遼寧網(wǎng)站建設(shè)
  • 株洲網(wǎng)站設(shè)計(jì)公司百度競價(jià)排名是什么意思
  • 建網(wǎng)站是什么技術(shù)怎么樣才能引流客人進(jìn)店
  • 成都有哪些做網(wǎng)站的優(yōu)化一個(gè)網(wǎng)站需要多少錢
  • 做網(wǎng)站如何購買服務(wù)器百度收錄入口
  • 成都營銷型網(wǎng)站設(shè)計(jì)東莞seo管理
  • 有實(shí)力營銷型網(wǎng)站建設(shè)湖北seo關(guān)鍵詞排名優(yōu)化軟件
  • 深圳哪里有做網(wǎng)站的優(yōu)化推廣網(wǎng)站推薦
  • 做哪個(gè)視頻網(wǎng)站賺錢今日油價(jià)92汽油價(jià)格調(diào)整最新消息
  • 網(wǎng)站開發(fā)前期調(diào)研黃山網(wǎng)站建設(shè)
  • 電子商務(wù)網(wǎng)站開發(fā)系統(tǒng)平臺(tái)百度營銷登錄
  • 優(yōu)化工具箱中國優(yōu)化網(wǎng)
  • 電子商務(wù)網(wǎng)站建設(shè)與維護(hù)讀書報(bào)告百度怎么做關(guān)鍵詞優(yōu)化
  • 網(wǎng)站做商標(biāo)在那類怎么制作網(wǎng)頁頁面
  • 合肥品牌型網(wǎng)站建設(shè)地址上海短視頻seo優(yōu)化網(wǎng)站
  • 成都集團(tuán)網(wǎng)站建設(shè)核酸檢測(cè)最新消息
  • 信息造價(jià)網(wǎng)seo是啥