Blockchain Dev

Blockchain Dev


Build a Blog App with Solana & NextJS

In this tutorial, you'll learn how to build a blog app with Solana & Next.js. 

Build a Blog App with Lance! This is the BEST tutorial to learn the basics of Solana Development

What is Next.js?

Next.js is a flexible React framework that gives you building blocks to create fast web applications.

But what exactly do we mean by this? Let’s spend some time expanding on what React and Next.js are and how they can help.

Building Blocks of a Web Application

There are a few things you need to consider when building modern applications. Such as:

  • User Interface - how users will consume and interact with your application.
  • Routing - how users navigate between different parts of your application.
  • Data Fetching - where your data lives and how to get it.
  • Rendering - when and where you render static or dynamic content.
  • Integrations - what third-party services you use (CMS, auth, payments, etc) and how you connect to them.
  • Infrastructure - where you deploy, store, and run your application code (Serverless, CDN, Edge, etc).
  • Performance - how to optimize your application for end-users.
  • Scalability - how your application adapts as your team, data, and traffic grow.
  • Developer Experience - your team’s experience building and maintaining your application.

What Is Solana (SOL)?

Solana is a blockchain platform designed to host decentralized, scalable applications. Founded in 2017, it is an open-source project currently run by Solana Foundation based in Geneva, while the blockchain was built by San Francisco-based Solana Labs.

Solana is much faster in terms of the number of transactions it can process and has significantly lower transaction fees than rival blockchains like Ethereum. The cryptocurrency that runs on the Solana blockchain—also named Solana (SOLUSD) and using the ticker symbol SOL—soared almost 12,000% in 2021 and at one point had a market capitalization of over $66 billion, making it the fifth-largest cryptocurrency by this measure at the time.

Despite its popularity, SOL did not escape the cryptocurrency bloodbath of 2022. By Sept. 23, 2022, SOL had dropped to about $11.2 billion in market capitalization. It also fell to ninth place in market capitalization.

🔗 GitHub Repo:

#web3 #frontend #blockchain #solana #nextjs 

Build a Blog App with Solana & NextJS
Blockchain Dev

Blockchain Dev


How to Build Smart Contracts with Rust and Solana

Building SmartContracts with Solana and Rust Lang

This tutorial will demonstrate how Smart Contracts in Solana work and the rules around programming them. We will use the Rust language to build Solana Smart Contracts.

Here's the source code on my github 

What Is Solana (SOL)?

Solana is a decentralized blockchain built to enable scalable, user-friendly apps for the world.

Solana is a blockchain platform designed to host decentralized, scalable applications. Founded in 2017, it is an open-source project currently run by Solana Foundation based in Geneva, while the blockchain was built by San Francisco-based Solana Labs.1

Solana is much faster in terms of the number of transactions it can process and has significantly lower transaction fees compared to rival blockchains like Ethereum.

What is the Rust Programming Language?

Rust is a high-performance, statically-typed multi-paradigm programming language. With the main focus on safety and performance. This language helps developers create robust and secure applications. Compared to C/C++, which struggles with memory errors and developing concurrent programs, Rust has already solved these problems.

It was actually created to solve C/C++ problems, but it worked so well that now the Rust language is utilized by many leading organizations, including Dropbox, Firefox, Cloudflare, and many others, both startups and big companies. 

Hundreds of companies around the world choose Rust since it has numerous benefits. It’s fast and memory-efficient. Using no runtime or garbage collector, the language can conduct different performance services, integrate with other languages, and run on embedded devices. 

With a rich type system and ownership model, the Rust language allows getting rid of many bugs at compile time. It also has extensive and useful documentation: an integrated package manager, multi-editor support with type inspections and auto-completion. 

#solana #rust #blockchain 

How to Build Smart Contracts with Rust and Solana
Thomas  Granger

Thomas Granger


How to Build Airbnb with Solana & Next.js

In this tutorial, you'll learn how to build Airbnb with Solana & Next.js

What is Next.js?

Next.js is a flexible React framework that gives you building blocks to create fast web applications.

But what exactly do we mean by this? Let’s spend some time expanding on what React and Next.js are and how they can help.

Building Blocks of a Web Application

There are a few things you need to consider when building modern applications. Such as:

  • User Interface - how users will consume and interact with your application.
  • Routing - how users navigate between different parts of your application.
  • Data Fetching - where your data lives and how to get it.
  • Rendering - when and where you render static or dynamic content.
  • Integrations - what third-party services you use (CMS, auth, payments, etc) and how you connect to them.
  • Infrastructure - where you deploy, store, and run your application code (Serverless, CDN, Edge, etc).
  • Performance - how to optimize your application for end-users.
  • Scalability - how your application adapts as your team, data, and traffic grow.
  • Developer Experience - your team’s experience building and maintaining your application.

What Is Solana (SOL)?

Solana is a blockchain platform designed to host decentralized, scalable applications. Founded in 2017, it is an open-source project currently run by Solana Foundation based in Geneva, while the blockchain was built by San Francisco-based Solana Labs.

Solana is much faster in terms of the number of transactions it can process and has significantly lower transaction fees compared to rival blockchains like Ethereum.

What Is Airbnb?

Airbnb, as in “Air Bed and Breakfast,” is a service that lets property owners rent out their spaces to travelers looking for a place to stay. Travelers can rent a space for multiple people to share, a shared space with private rooms, or the entire property for themselves.

Airbnb was started in 2008 by Brian Chesky and Joe Gebbia, two industrial designers that recently moved to San Francisco. Unable to afford the rent for their loft at the time, the pair decided to make up the money they needed by renting out their apartment to people who couldn’t find hotels to stay at while attending nearby trade shows. They set up air mattresses in the apartment’s living room for their guests to sleep on and cooked homemade breakfast in the morning. Since then, Airbnb has become one of the trailblazers of peer-to-peer property rental.

🔗 GitHub Repo: 

#web3 #blockchain #solana #nextjs

How to Build Airbnb with Solana & Next.js

Build Cardinal UI for Staking NFTs on Solana Using Nextjs

Cardinal Staking UI

This repository hosts the UI inteface that powers for staking NFTs on Solana.

Use this repo to create and deploy stake pools with built-in reward distribution, or build your own custom interface with our underlying staking protocol.

Create a Stake Pool

To create a stake pool, navigate to the admin page located at This page hosts a form to create a stake pool with various configurations.

Note: All configurations in the admin page are optional. Also, filters in the stake pool configuration are union-based, if any one of the conditions is met, then the NFT will be allowed to stake in the pool.

After creating your stake pool, you will receive a Stake Pool Id. View your stake pool at[stakePoolId]

Pools by default will have no metadata. View the section titled "Customizing your Stake Pool" to learn about adding images, colors and custom pool name.

Pool Creation Parameters:

export type StakePoolParams {
    requiresCollections?: PublicKey[];
    requiresCreators?: PublicKey[];
    requiresAuthorization?: boolean;
    overlayText?: string;
    imageUri?: string;
    resetOnStake?: boolean;

Reward Distribution Parameters

export type RewardDistributionParams {
    stakePoolId: PublicKey;
    rewardMintId: PublicKey;
    rewardAmount?: BN;
    rewardDurationSeconds?: BN;
    kind?: RewardDistributorKind;
    maxSupply?: BN;
    supply?: BN;

There are two types of reward distribution (RewardDistributionKind) with Cardinal Staking.

  1. Mint - give mint authority of your reward token to the stake pool so the pool can mint on demand
  2. Treasury - transfer reward tokens from your wallet to the stake pool, top-up the stake pool treasury balance whenever needed.


The program and related UIs are deployed on Solana mainnet-beta and devnet. By default the UI will point to mainnet. You can ovverride this by using ?cluster=devnet in the URL or navigating to All configuration is scoped to that environment, and no data including pools, reward distributors, tokens, NFTs or sol will be carried over from mainnet to devnet and vice-versa.

Customizing your Stake Pool

In order to easily access your stake pool, airdrop NFTs on devnet for your specific collection and get a[projectName] url, you'll need to create a Stake Pool metadata object. NOTE if you specified a verified creator in a devnet pool, airdropped NFTs will not be allowed into that pool because your creator will not be verified.

export type StakePoolMetadata = {
  // Name of this stake pool used as an id. Should be in lower-case kebab-case since it is used in the URL as /{name}
  name: string
  // Display name to be displayed in the header. Often the same as name but with capital letters and spaces
  displayName: string
  // Publickey for this stake pool
  stakePoolAddress: PublicKey
  // Default receipt type. Setting this will remove the option for the user to choose which receipt type to use
  receiptType?: ReceiptType
  // Default empty. Setting this will tell the UI to only show tokens of that standard. Supports fungible or non-fungible
  tokenStandard?: TokenStandard
  // Optional config to hide this pool from the main page
  hidden?: boolean
  // Optional config to disable finding this pool
  notFound?: boolean
  // Optional hostname to remap -- SEE NOTE BELOW
  hostname?: string
  // Optional config to link redirect to page when you click on this pool
  redirect?: string
  // Hide allowed tokens style
  hideAllowedTokens?: boolean
  // styles to apply to the whole stake pool
  styles?: CSSProperties
  // Colors object to style the stake page
  colors?: {
    primary: string
    secondary: string
    accent?: string
    fontColor?: string
    fontColorSecondary?: string
    backgroundSecondary?: string
  // Image url to be used as the icon in the pool selector and the header
  imageUrl?: string
  // Background banner image for pool
  backgroundBannerImageUrl?: string
  // Website url if specified will be navigated to when the image in the header is clicked
  websiteUrl?: string
  // Max staked is used to compute percentage of total staked
  maxStaked?: number
  // Links to show at the top right of the page
  links?: { text: string; value: string }[]
  // On devnet when you click the airdrop button on this page it will clone NFTs with this metadata and airdrop to the user. These will not contain verified creators
  airdrops?: AirdropMetadata[]
  // Analytics to show at the top of stake pool. supports trait based analytics and overall tokens data
  analytics?: Analytic[]

In api/mapping.ts, add your own object to the stakePoolMetadatas array. You'll now be able to access your project at http://localhost:3000/[name].

In order to get a custom Cardinal URL, deploy your pool on mainnet and then make a PR to our api/mapping.ts file in this repo with updates containing your pool's metadata.

Stake Pool Fees

Custom hostname

For a custom hostname...

  1. Add the mapping of your hostname to pool name in next.config.js
  2. Open a PR to this repo with that change
  3. Set the following record on your DNS provider to continue:
CNAME {your subdomain}

Deployment and Beyond

Now that you've made and deployed your Cardinal stake pool, you can either stick with Cardinal's UX for the stake pool experience or build your own.

Simply modify pages/[stakePoolId]/index.tsx with your own react styling, and host the stake pool on your own domain.


To get started, clone the repo and run:

yarn install

Next, run the development server:

yarn run dev

Open http://localhost:3000 with your browser to see the staking interface running locally.

Set your Cluster

To access different clusters in the scaffold, set the cluster query parameter in the URL:

The default cluster set is mainnet. It's recommended to ensure you have ?cluster=devnet while testing out functionality.

Download details:

Author: cardinal-labs
Source code: 
License: Apache-2.0 license

#nextjs #react #solana #nft #staking

Build Cardinal UI for Staking NFTs on Solana Using Nextjs
Awesome  Rust

Awesome Rust


Web3 RS: Rust Implementation Of Web3 Library for Solana

Web3 SDK for blockchain platforms

A pure Rust Web3 implementation for blockchain platforms.

Supported blockchain platforms


  • Branch: main
  • Status: Unstable
  • Progress: Rpc ndpoints are fully implemented

Near Protocol

  • Branch: near
  • Status: Unstable
  • Progress: Rpc ndpoints are partially implemented

Download details:

Author: russellwmy
Source code: 
License: MIT license

#rust #rustlang #web3 #blockchain #solana

Web3 RS: Rust Implementation Of Web3 Library for Solana
Awesome  Rust

Awesome Rust


How to Use Rust To interact with The Solana Blockchain

Solana Scripts

This is a library of Rust scripts for specific purposes:

  • Generate a new wallet
  • Create an SPL token
  • Mint an SPL token
  • Get an associated token balance
  • Get the creation date of an account
  • Get the owner of an NFT
  • List NFTs in wallet
  • Print NFT metadata

The scripts are found in the src/bin folder. They can be configured using environment variables, which are documented below.

New wallet

cargo run --bin new_wallet | Code

Generates a new wallet and prints the pubkey, Base58 private key, and JSON private key.

Create an SPL token

cargo run --bin create_spl | Code

Creates a new SPL token mint account.

Environment VariableNote
SIGNER_KEYPAIRBase58 encoded keypair, to pay for the transaction.
MINT_KEYPAIRBase58 encoded keypair, representing the new mint account.

Mint SPL tokens

cargo run --bin mint_spl | Code

Mints 10,000 SPL tokens from a specified mint to the associated token account of a specified wallet.

Environment VariableNote
SIGNER_KEYPAIRBase58 encoded keypair, which has mint authority.
MINT_ACCOUNT_PUBKEYThe pubkey address of the SPL Token mint account.
RECEIVER_PUBKEYThe pubkey address of the wallet you want to fund with the tokens.

Get token balance

cargo run --bin associated_token_balance | Code

Prints the balance of an associated token account, for a specified wallet and mint.

Environment VariableNote
WALLET_PUBKEYThe pubkey address of the wallet that owns the tokens.
MINT_ACCOUNT_PUBKEYThe pubkey address of the SPL Token mint account.

Get account creation timestamp

cargo run --bin creation_date | Code

Fetches and prints the creation timestamp of a specified account.

Environment VariableNote
ACCOUNT_PUBKEYThe pubkey address of the account you want to introspect.

Get NFT owner

cargo run --bin nft_owner | Code

Prints the wallet address that owns a specified NFT.

Environment VariableNote
MINT_ACCOUNT_PUBKEYThe pubkey address of the SPL Token mint account.

List NFTs in wallet

cargo run --bin list_nfts | Code

Fetches and prints the mint pubkeys of every NFT in the specified wallet.

Environment VariableNote
WALLET_PUBKEYThe pubkey address of the wallet that owns the NFTs.

Print NFT metadata

cargo run --bin print_nft | Code

Fetches, decodes and prints the metadata of the specified NFT.

Environment VariableNote
MINT_ACCOUNT_PUBKEYThe pubkey of the NFT's SPL Token mint account.

Download details:

Author: ronanyeah
Source code: 

#rust #rustlang #web3 #solana #blockchain #nft

How to Use Rust To interact with The Solana Blockchain

Build your own Solana dApp with NextJS and TypeScript

This kit contains everything you need to get started with Solana dApps.

Connect to a wallet, verify its ownership, list stored NFTs and even fetch associated Twitter handle if registered!

What's included:

This starter kit was only possible because of the amazing template, which served as a base for everything else in here.

Getting Started

  1. Run yarn create next-app -e (can also click on the "Use this template" button or just fork this repository)
  2. Run yarn dev to start dev server
  3. Make changes and have fun!


Tailwind CSS or daisyUI are selected tools for rapid style development.

You can quickly change theme changing daisy.themes within ./tailwind.config.js. More info here:


  1. Run yarn build locally to make sure everything is compiling correctly
  2. Link your favourite server provider to your repository (using Vercel for the demo)
  3. Any push to main branch should automatically deploy a new version


🚨 Live demo: 🚨

Download details:

Author: moon-landing-crew
Source code: 
License: MIT license

#nextjs #react #reactjs #web3 #nft #dapp #solana #typescript

Build your own Solana dApp with NextJS and TypeScript

Building Candy Shop Storefront for Solana NFT Using Nextjs

Solana NFT storefront powered by Candy Shop.

Key features:

  • SOL and SPL token marketplace
  • SOL and SPL token auctions
  • Marketplace with modal or single NFT view
  • NFT filtering, sort and search
  • Multi collection marketplace
  • Multi currency marketplace
  • Marketplace activity

One-Click Vercel Deployment

One-click solution to clone this project to your GitHub and deploy the prod package on a Vercel. Your only task will be to customize your GitHub fork of this project and commit updates. Vercel will automatically deploy new prod packages for each new commit.



  • Ensure you have both nodejs and yarn installed. nodejs recommended version is 16.


1. Fork the project & clone it. Example:

git clone

2. Define your environment variables (.env file)

Rename the .env.example file at the root directory to .env and update the following variables in the .env file :


You may get these parameters by creating a shop here.


This identifies the Solana network you want to connect to. Options are devnet, testnet, and mainnet-beta.


This identifies the RPC server your web app will access the Solana network through.

4. Customize your storefront:

4.1 styles/global.css: update 5 main CSS variables with your custom colors :

:root {
  --main-background-color: #343A50;
  --card-background-color: #804980;
  --countdown-background-color: #433765;

If you are using a background image, make sure to update it by overwriting your own background PNG file in src/img folder.

4.2 public folder:

  • Update existing demo cool cats images (cool-cats.gif, logo.png) with your owns images in project public folder. Make sure to name them identically.

That's it! Enjoy your beautiful storefront!

Available Commands Recap:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

Download details:

Author: LIQNFT
Source code:

#nextjs #react #reactjs #javascript #nft #solana

Building Candy Shop Storefront for Solana NFT Using Nextjs
Joseph  Murray

Joseph Murray


Modular TypeScript Wallet Adapters and Components for Solana Apps


Modular TypeScript wallet adapters and components for Solana applications.

Quick Links

  • TypeScript Docs
  • FAQ (Frequently Asked Questions)
    • How can I get support?
    • Can I use this with ___?
    • What does this error mean?
    • How can I sign and verify messages?
  • Quick Setup (using React UI)
    • Install
    • Setup
    • Usage
  • Packages
    • Core
    • Wallets
    • UI Components
    • Starter Projects
    • Community
  • Build from Source

Quick Setup (using React UI)

There are also material-ui and ant-design packages if you use those component frameworks.


Install these dependencies:

yarn add @solana/wallet-adapter-base \
         @solana/wallet-adapter-react \
         @solana/wallet-adapter-react-ui \
         @solana/wallet-adapter-wallets \
         @solana/web3.js \
         @solana-mobile/wallet-adapter-mobile \


import React, { FC, useMemo } from 'react';
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import {
} from '@solana/wallet-adapter-wallets';
import {
} from '@solana/wallet-adapter-react-ui';
import { clusterApiUrl } from '@solana/web3.js';
import { createDefaultAuthorizationResultCache, SolanaMobileWalletAdapter } from '@solana-mobile/wallet-adapter-mobile';

// Default styles that can be overridden by your app

export const Wallet: FC = () => {
    // The network can be set to 'devnet', 'testnet', or 'mainnet-beta'.
    const network = WalletAdapterNetwork.Devnet;

    // You can also provide a custom RPC endpoint.
    const endpoint = useMemo(() => clusterApiUrl(network), [network]);

    const wallets = useMemo(
        () => [
             * Select the wallets you wish to support, by instantiating wallet adapters here.
             * Common adapters can be found in the npm package `@solana/wallet-adapter-wallets`.
             * That package supports tree shaking and lazy loading -- only the wallets you import
             * will be compiled into your application, and only the dependencies of wallets that
             * your users connect to will be loaded.
            new FakeWalletAdapter(),

    return (
        <ConnectionProvider endpoint={endpoint}>
            <WalletProvider wallets={wallets} autoConnect>
                    <WalletMultiButton />
                    <WalletDisconnectButton />
                    { /* Your app's components go here, nested within the context providers. */ }


import { WalletNotConnectedError } from '@solana/wallet-adapter-base';
import { useConnection, useWallet } from '@solana/wallet-adapter-react';
import { Keypair, SystemProgram, Transaction } from '@solana/web3.js';
import React, { FC, useCallback } from 'react';

export const SendOneLamportToRandomAddress: FC = () => {
    const { connection } = useConnection();
    const { publicKey, sendTransaction } = useWallet();

    const onClick = useCallback(async () => {
        if (!publicKey) throw new WalletNotConnectedError();

        const transaction = new Transaction().add(
                fromPubkey: publicKey,
                toPubkey: Keypair.generate().publicKey,
                lamports: 1,

        const signature = await sendTransaction(transaction, connection);

        await connection.confirmTransaction(signature, 'processed');
    }, [publicKey, sendTransaction, connection]);

    return (
        <button onClick={onClick} disabled={!publicKey}>
            Send 1 lamport to a random address!


This library is organized into small packages with few dependencies. To add it to your dApp, you'll need core packages, some wallets, and UI components for your chosen framework.


These packages are what most projects can use to support wallets on Solana.

baseAdapter interfaces, error types, and common utilities@solana/wallet-adapter-base
reactContexts and hooks for React dApps@solana/wallet-adapter-react


These packages provide adapters for each wallet. You can use the wallets package, or add the individual wallet packages you want.

walletsIncludes all the wallets (with tree shaking)@solana/wallet-adapter-wallets
avanaAdapter for Avana@solana/wallet-adapter-avana
backpackAdapter for Backpack@solana/wallet-adapter-backpack
bitkeepAdapter for BitKeep@solana/wallet-adapter-bitkeep
bitpieAdapter for Bitpie@solana/wallet-adapter-bitpie
bloctoAdapter for Blocto@solana/wallet-adapter-blocto
braveAdapter for Brave@solana/wallet-adapter-brave
cloverAdapter for Clover@solana/wallet-adapter-clover
coin98Adapter for Coin98@solana/wallet-adapter-coin98
coinbaseAdapter for Coinbase@solana/wallet-adapter-coinbase
coinhubAdapter for Coinhub@solana/wallet-adapter-coinhub
exodusAdapter for Exodus@solana/wallet-adapter-exodus
glowAdapter for Glow@solana/wallet-adapter-glow
huobiAdapter for HuobiWallet@solana/wallet-adapter-huobi
hyperpayAdapter for HyperPay@solana/wallet-adapter-hyperpay
keystoneAdapter for keystone@solana/wallet-adapter-keystone
ledgerAdapter for Ledger@solana/wallet-adapter-ledger
magicedenAdapter for Magic Eden@solana/wallet-adapter-magiceden
mathwalletAdapter for MathWallet@solana/wallet-adapter-mathwallet
nekoAdapter for Neko@solana/wallet-adapter-neko
nightlyAdapter for Nightly@solana/wallet-adapter-nightly
nufiAdapter for NuFi@solana/wallet-adapter-nufi
phantomAdapter for Phantom@solana/wallet-adapter-phantom
safepalAdapter for SafePal@solana/wallet-adapter-safepal
saifuAdapter for Saifu@solana/wallet-adapter-saifu
salmonAdapter for Salmon@solana/wallet-adapter-salmon
skyAdapter for Sky@solana/wallet-adapter-sky
slopeAdapter for Slope@solana/wallet-adapter-slope
solflareAdapter for Solflare@solana/wallet-adapter-solflare
solletAdapter for Sollet@solana/wallet-adapter-sollet
solongAdapter for Solong@solana/wallet-adapter-solong
strikeAdapter for Strike@solana/wallet-adapter-strike
solongAdapter for Solong@solana/wallet-adapter-solong
tokenaryAdapter for Tokenary@solana/wallet-adapter-tokenary
tokenpocketAdapter for TokenPocket@solana/wallet-adapter-tokenpocket
torusAdapter for Torus@solana/wallet-adapter-torus
trustAdapter for Trust Wallet@solana/wallet-adapter-trust

UI Components

These packages provide components for common UI frameworks.

react-uiComponents for React (no UI framework, just CSS)@solana/wallet-adapter-react-ui
material-uiComponents for Material UI with React@solana/wallet-adapter-material-ui
ant-designComponents for Ant Design with React@solana/wallet-adapter-ant-design
angular-material-uiComponents for Angular Material UI@heavy-duty/wallet-adapter-material

Starter Projects

These packages provide projects that you can use to start building a dApp with built-in wallet support. Alternatively, check out solana-dapp-next for a more complete framework.

exampleDemo of UI components and wallets@solana/wallet-adapter-example
create-react-app-starterCreate React App project using React UI@solana/wallet-adapter-create-react-app-starter
material-ui-starterParcel project using Material UI@solana/wallet-adapter-material-ui-starter
react-ui-starterParcel project using React UI@solana/wallet-adapter-react-ui-starter
nextjs-starterNext.js project using React UI@solana/wallet-adapter-nextjs-starter


Several packages are maintained by the community to support additional frontend frameworks.

Build from Source

  1. Clone the project:
git clone

2.   Install dependencies:

cd wallet-adapter
yarn install

3.   Build all packages:

yarn build

4.   Run locally:

cd packages/starter/react-ui-starter
yarn start

Download details:

Author: solana-labs
Source code:
License: Apache-2.0 license

#svelte #javascript #typescript #blockchain #solana 

Modular TypeScript Wallet Adapters and Components for Solana Apps
Best of Crypto

Best of Crypto


Example Code for using Chainlink on Solana

Chainlink Solana Starter Kit

The Chainlink Solana Starter Kit is an Anchor based program and client that shows developers how to use and interact with Chainlink Price Feeds on Solana. The demo is configured to run on the Devnet cluster, and is comprised of an on-chain program written in Rust, and an off-chain client written in JavaScript. The program takes parameters and account information from the off-chain client, retrieves the latest price data from the specified Chainlink Price Feed on Devnet, then writes the data out to the specified account, which can then be read by the off-chain client.

Running the example on Devnet


Building and Deploying the Consumer Program

First, ensure that you're in the solana-starter-kit directory in this repository

cd ./solana-starter-kit

Next step is to install all of the required dependencies:

npm install

Note for Apple M1 chipsets: You will need to perform an extra step to get the Anchor framework installed manually from source, as the NPM package only support x86_64 chipsets currently, please run the following command to install it manually:

cargo install --git --tag v0.20.1 anchor-cli --locked

Next, generate a new wallet:

solana-keygen new -o id.json

You should see the public key in the terminal output. Alternatively, you can find the public key with the following CLI command:

solana-keygen pubkey id.json

Next, airdrop some SOL tokens into your new account. We will need to call this twice, because the Devnet faucet is limited to 2 SOL, and we need approximately 4 SOL. Be sure to replace both instances of with your wallet's public key from the previous step:

solana airdrop 2 $(solana-keygen pubkey ./id.json) --url && solana airdrop 2 $(solana-keygen pubkey ./id.json) --url

Next, build the program:

anchor build

The build process generates the keypair for your program's account. Before you deploy your program, you must add this public key to the file. To do this, you need to get the keypair from the ./target/deploy/chainlink_solana_demo-keypair.json file that Anchor generated:

solana address -k ./target/deploy/chainlink_solana_demo-keypair.json

The next step is to edit the file and replace the keypair in the declare_id!() definition with the value you obtained from the previous step:


Finally, because you updated the source code with the generated program ID, you need to rebuild the program again, and then it can be deployed to devnet

anchor build
anchor deploy --provider.cluster devnet

Once you have successfully deployed the program, the terminal output will specify the program ID of the program, it should match the value you inserted into the file and the Anchor.toml file. Once again, take note of this Program ID, as it will be required when executing the client:

Deploying workspace:
Upgrade authority: ./id.json
Deploying program "chainlink_solana_demo"...
Program path: ./target/deploy/
Program Id: JC16qi56dgcLoaTVe4BvnCoDL6FhH5NtahA7jmWZFdqm

Running the Client

The first step is to set the Anchor environment variables. These are required by the Anchor framework to determine which provider to use and which wallet to use for interacting with the deployed program:

export ANCHOR_WALLET='./id.json'

Now you are ready to run the JavaScript client. Be sure to pass the program ID obtained from the previous steps by using the --program flag pointing to the JSON file containing the account that owns the program, as well as the Chainlink data feed address that you want to query. This can be taken from the Chainlink Solana Data Feeds page, and the value will be defaulted to the Devnet SOL/USD feed address if you don’t specify a value. In this example, we specified the ETH/USD feed:

node client.js --program $(solana address -k ./target/deploy/chainlink_solana_demo-keypair.json) --feed     2ypeVyYnZaW2TNYXXTaZq9YhYvnqcjCiifW1C6n8b7Go

The client will generate a new account and pass it to the deployed program, which will then populate the account with the current price from the specified price feed. The client will then read the price from the account, and output the value to the console.

Running client...
priceFeedAccount public key: DNQBqwGijKix2EmKhMMaftZgSywcbfnQZSzfDyEMEfLf
user public key: GWKzUMdSF8Y4xQ3JANTChkaJDFE4UdkvAkHCknmJtJUX
Fetching transaction logs...
  'Program BrEqc6zHVR77jrP6U6WZLUV24AZ9UnHrWfDQTDV7VoDY invoke [1]',
  'Program log: Instruction: Execute',
  'Program 11111111111111111111111111111111 invoke [2]',
  'Program 11111111111111111111111111111111 success',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny invoke [2]',
  'Program log: Instruction: Query',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny consumed 2551 of 1360424 compute units',
  'Program return: HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny RZ0GABn5swcAAAAA3ltiYgAVg8dFAAAAAAAAAAAAAAA=',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny success',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny invoke [2]',
  'Program log: Instruction: Query',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny consumed 2245 of 1328033 compute units',
  'Program return: HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny CQAAAEVUSCAvIFVTRA==',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny success',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny invoke [2]',
  'Program log: Instruction: Query',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny consumed 1826 of 1295650 compute units',
  'Program return: HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny CA==',
  'Program HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny success',
  'Program log: ETH / USD price is 2997.00000000',
  'Program BrEqc6zHVR77jrP6U6WZLUV24AZ9UnHrWfDQTDV7VoDY consumed 109699 of 1400000 compute units',
  'Program return: BrEqc6zHVR77jrP6U6WZLUV24AZ9UnHrWfDQTDV7VoDY CA==',
  'Program BrEqc6zHVR77jrP6U6WZLUV24AZ9UnHrWfDQTDV7VoDY success'
Price Is: 2997

Running the Read Only Clients

To facilitate the scenario of purely requiring Chainlink Price Feed data off-chain, we have also included a second read-data client that queries a specified price feed and returns the latest price data. This version of the client does not generate a transaction, and therefore requires no accounts created or transaction fees. To run the read-data client, first you should ensure you have set the required Anchor environment variables. You can skip this step if you already did it earlier before running the normal client:

export ANCHOR_WALLET='./id.json'

Next, you can set the value of the CHAINLINK_FEED_ADDRESS static variable to the value of the Price Feed account address that you wish to query. This example queries the ETH/USD feed on Devnet:

const CHAINLINK_FEED_ADDRESS="2ypeVyYnZaW2TNYXXTaZq9YhYvnqcjCiifW1C6n8b7Go"

Once you save your file, you can then execute the client. There is a Typescript and a JavaScript version:


npm run read-data


node read-data.js

The client will query the specified price feed using the published Chainlink Solana NPM package, and will then continuously just print the latest price to the console.

pappas99@Pappas solana-starter-kit % npm run read-data
> @ read-data /Users/pappas99/GitHub/22-hackathon/solana-starter-kit
> ts-node ./read-data.ts



You can execute the integration test with the following command

anchor test

The integration test checks that the value of the specified price feed account (defaulted to SOL/USD) on Devnet is greater than 0.


Price Is: 105.52
    ✔ Query SOL/USD Price Feed! (4521ms)

  1 passing (5s)

✨  Done in 10.49s.

Download details:

Author: smartcontractkit
Source code:

#smartcontract #blockchain #oracle #chainlink #solana

Example Code for using Chainlink on Solana
Hong  Nhung

Hong Nhung


Khám Phá Chuỗi Khối Solana Và Bằng Chứng Lịch Sử (PoH)

Solana được coi là blockchain nhanh nhất và cạnh tranh với Ethereum về phát triển ứng dụng trên chuỗi, thông lượng cao. Bắt đầu với Solana và kiến ​​trúc blockchain sáng tạo, nhanh chóng của nó.
Khi khái niệm blockchain mở rộng ra ngoài tiền điện tử sang các ứng dụng phần mềm, cải thiện hiệu suất thông lượng giao dịch đã trở thành một lĩnh vực nghiên cứu và phát triển quan trọng. Một trong những cải tiến có tầm nhìn xa hơn trong lĩnh vực này là Proof of History, được giới thiệu bởi blockchain Solana . Bài viết này giới thiệu Solana và khái niệm Proof of History (PoH), bao gồm thảo luận về cách Proof of History cải thiện tốc độ giao dịch và cách nó hoạt động với các cơ chế blockchain khác như Proof of Work và Proof of Stake.

Chuỗi khối Solana là gì?

Theo thuật ngữ Web3 , Solana là một chuỗi lớp 1 , có nghĩa là nó cung cấp cấu trúc nền tảng của một mạng blockchain, mà các mạng (lớp 2) khác có thể xây dựng trên đó. Ví dụ về các mạng lớp 1 khác bao gồm Bitcoin và Ethereum.

Solana tương tự như chuỗi khối Ethereum ở chỗ nó cung cấp cả mã thông báo, Sol và một máy phân tán để thực hiện các hợp đồng thông minh và kết nối các ứng dụng phi tập trung (dApps). Xem xét kỹ hơn, kiến ​​trúc blockchain của Solana giới thiệu một số ý tưởng mới lạ và là đối thủ cạnh tranh với Ethereum .

Đồng tiền của Solana hiện lớn thứ năm theo vốn hóa thị trường, với mức vốn hóa thị trường khiêm tốn 15 tỷ đô la tại thời điểm viết bài này (không phải ngẫu nhiên, là giữa mùa đông tiền điện tử năm 2022). Solana cũng là một trong những blockchain được sử dụng nhiều nhất để phát triển các ứng dụng trên chuỗi.

Cơ chế đồng thuận trong chuỗi khối

Blockchain có thể được hiểu là một kho lưu trữ dữ liệu phân tán, trong đó các nút được xác định bằng các khóa riêng mật mã của chúng. Điều đó có nghĩa là mọi nút đều có một số nhận dạng được coi là duy nhất về mặt toán học và có khả năng chống lại sự khám phá.

Các nút có hai vai trò cơ bản: chúng đưa ra tuyên bố và xác nhận chúng. Khi xác nhận quyền sở hữu, một nút đang hoạt động trong vai trò của một ứng dụng khách. Trong thuật ngữ blockchain, loại nút này được gọi là . Ví lấy khóa cá nhân của nó và thực hiện xác nhận hoặc yêu cầu vào mạng. Ví dụ: một chiếc ví có thể yêu cầu quyền sở hữu một địa chỉ trên blockchain chứa một lượng tiền tệ nhất định. Sau đó, mạng sẽ nhận nhiệm vụ xác thực yêu cầu đó. Các nút được giao nhiệm vụ xác thực là các nút đầy đủ hoặc các nút xác thực.

Quá trình lấy một điểm dữ liệu giống như xác nhận quyền sở hữu của ví và truyền bá nó một cách đáng tin cậy trên một hệ thống phần mềm phân tán là một vấn đề nổi tiếng khó khăn. Blockchain sử dụng cơ chế đồng thuận để gửi yêu cầu thông qua mạng. Cơ chế đồng thuận của mạng là thuật toán nó sử dụng để đạt được phiên bản chia sẻ của sự thật.

Bằng chứng lịch sử của Solana

Cơ chế đồng thuận là một đặc điểm cơ bản và là điểm khác biệt giữa các blockchains. Cơ chế đồng thuận của Solana có một số tính năng mới, đặc biệt là thuật toán Proof of History , cho phép thời gian xử lý nhanh hơn và chi phí giao dịch thấp hơn. 

Cách thức hoạt động của PoH không khó để nắm bắt về mặt khái niệm. Khó hơn một chút để hiểu cách nó cải thiện thời gian xử lý và chi phí giao dịch. Báo cáo chính thức của Solana là phần đi sâu vào các chi tiết triển khai, nhưng có thể dễ dàng bỏ sót rừng cho cây.

Về mặt khái niệm, Bằng chứng lịch sử cung cấp một cách để chứng minh bằng mật mã thời gian trôi qua và vị trí các sự kiện rơi vào dòng thời gian đó. Cơ chế đồng thuận này được sử dụng song song với một thuật toán thông thường khác như Proof of Work (PoW) hoặc Proof of Stake (PoS). Bằng chứng lịch sử làm cho Bằng chứng cổ phần hiệu quả hơn và linh hoạt hơn trong Solana.

Bằng chứng về lịch sử và tính nhất quán cuối cùng

Bạn có thể coi PoH như một đồng hồ mật mã. Nó đánh dấu thời gian các giao dịch bằng một hàm băm đảm bảo thời gian giao dịch xảy ra là hợp lệ. Điều này có nghĩa là toàn bộ mạng có thể quên việc xác minh các yêu cầu tạm thời của các nút và trì hoãn việc điều chỉnh trạng thái hiện tại của chuỗi. 

Chúng ta có thể nói rằng PoH cho phép khả năng chịu lỗi trong mạng bằng cách cung cấp một cơ chế mạnh mẽ cho tính nhất quán cuối cùng , ngay cả khi đối mặt với một phân vùng mạng lớn (hoặc ngã ba). Bởi vì các nút có thể dựa vào cấu trúc của hệ thống để thực thi thứ tự giao dịch, chúng có thể dành nhiều năng lượng hơn để xử lý hiệu quả các khối và đưa các khối hợp lệ vào sổ cái.

Solana cũng là cuộc tấn công duy nhất vào vấn đề chịu lỗi của Byzantine , có thể được tóm tắt là giải quyết sự đồng thuận trong một nhóm mà các thành viên có thể không phải tất cả đều hành động một cách thiện chí. (Đây cũng chính là vấn đề của việc chi tiêu gấp đôi ban đầu đã thúc đẩy sự phát triển của Bitcoin.)

Bằng chứng lịch sử và thuật toán Bằng chứng công việc

Một cách khác để nghĩ về PoH là coi nó là một cải tiến của thuật toán Proof of Work, liên quan đến thứ tự của các khối. Trong quá trình triển khai Bằng chứng công việc của Bitcoin, việc khai thác và xác thực khối được sử dụng để thực thi lệnh. Mạng được điều chỉnh để tạo ra một khối hợp lệ với tốc độ khoảng 10 phút cho mỗi khối. Đây là một nút thắt cổ chai khó khăn — xác thực khối nhanh hơn tạo ra nhiều xung đột khối hơn, dẫn đến lợi nhuận giảm dần. Blockchain cũng phụ thuộc vào công việc của các nút xác thực riêng lẻ để thực thi lệnh.

Bằng chứng Lịch sử cho biết, Điều gì sẽ xảy ra nếu chúng ta có một cơ chế cung cấp một đồng hồ mật mã để ký hiệu các giao dịch khi chúng xuất hiện? Các nút trình xác thực vẫn cần đảm bảo rằng các xác nhận quyền sở hữu đến khi giao dịch là hợp pháp. Nhưng đối với thời gian và cách đặt hàng, họ có thể cho rằng các giao dịch mà họ đang xem là tốt. Điều này loại bỏ nút cổ chai Proof of Work.

Proof of Stake và chức năng trì hoãn có thể xác minh được

Solana vẫn yêu cầu một cơ chế đồng thuận ngoài Proof of History và đối với điều này, nó sử dụng Proof of Stake. Nhưng trình xác thực của nó thực hiện công việc bằng chứng của họ chống lại các khối được ký bởi cái được gọi là hàm trì hoãn có thể xác minh (VDF). Ý tưởng cốt lõi của VDF là chạy một chức năng nhận đầu vào và tạo ra kết quả đầu ra không thể đoán trước được nếu không thực sự chạy chức năng. Sau đó, bạn xâu chuỗi những thứ này lại với nhau — đầu ra của chức năng cuối cùng cung cấp đầu vào cho chức năng tiếp theo. (Quá trình được bắt đầu với một điểm dữ liệu ngẫu nhiên.)

Chuỗi được thực hiện bằng cách sử dụng một hàm băm mật mã. Điều này cung cấp một luồng liên tục các khoảnh khắc có thể xác minh bằng mật mã trong thời gian. Vào các mốc thời gian này, chúng tôi có thể dễ dàng thêm thông tin bằng cách kết hợp thông tin đó vào đầu vào băm. Trong trường hợp chuỗi khối của Solana, chúng tôi sẽ kết hợp các giao dịch đến trong mỗi lần chạy VDF. Tất cả những điều này được thể hiện dưới dạng lý tưởng hóa trong Hình 1.

VDF in Solana blockchain.


Hình 1. Một cái nhìn lý tưởng về các giao dịch đóng dấu thời gian VDF

Một vài lưu ý về Hình 1:

  • Trong quá trình triển khai thực tế, mạng phải điều phối máy chủ VDF ( hay còn gọi là “người dẫn đầu” hoặc trình tạo PoH) với các giao dịch đến, cụm nút trình xác thực và quá trình xử lý các lỗi mạng và chuyển qua các máy chủ VDF.
  • Mọi giao dịch đến và được "đóng dấu" bởi trình tạo PoH, sau đó được chuyển cho nhóm trình xác thực phân tán để có sự đồng thuận. PoH chia lô các giao dịch thành đầu ra băm của nó, do đó, trình xác thực có thể tin vào thứ tự các giao dịch hợp lệ.
  • Sau đó, mạng trình xác nhận sẽ trả lại các phiếu bầu về giao dịch cho trình tạo PoH và các giao dịch được coi là hợp lệ.
  • Một hệ thống quản trị được thực hiện trong đó điều phối việc thúc đẩy người xác nhận mới lên vị trí lãnh đạo trong trường hợp thất bại, cùng với các cơ chế để đánh bại các cuộc tấn công vào mạng.

Điểm mấu chốt là việc sử dụng PoH sẽ làm tăng thời gian xác thực khối tiềm năng — một cách triệt để. Nhưng nó cũng ngụ ý rằng sự phức tạp của kiến ​​trúc tăng lên. Sự phức tạp này có thể là nguyên nhân dẫn đến tỷ lệ mất điện cao hơn mức trung bình của Solana .

Lợi thế về hiệu suất của Solana

Chuỗi khối Solana vẫn được coi là ở trạng thái beta. Ý tưởng về việc vận hành một mạng có tài sản hàng tỷ đô la dưới dạng thử nghiệm có thể khiến một số người ngạc nhiên, nhưng đó là Web3 dành cho bạn. Có vẻ như Solana đang trải qua quá trình loại bỏ lỗi để đạt được mức độ ổn định cao dựa trên khái niệm Proof of History.

Để hiểu được lợi thế về hiệu suất có thể có với cơ chế PoH của Solana, hãy xem xét Bảng 1.

Bitcoin  10 phút
Ethereum 1.0  10 đến 19 giây
Ethereum 2.0  12 đến 14 giây
Solana  800 mili giây

Vì vậy, bạn có thể thấy rằng thông lượng khối của Solana rất ấn tượng — và nó không hề được chú ý. Các nhà đầu tư tổ chức đã rót hơn 100 triệu đô la vào Solana chỉ trong năm nay. 

Solana hấp dẫn về mặt công nghệ và sẽ là một dự án thú vị để xem khi nó tiếp tục phát triển.

Liên kết:

#solana #blockchain

Khám Phá Chuỗi Khối Solana Và Bằng Chứng Lịch Sử (PoH)
Thierry  Perret

Thierry Perret


Explorer La Blockchain De Solana Et La Preuve De L'histoire (PoH)

Solana est considérée comme la blockchain la plus rapide et est en concurrence avec Ethereum pour le développement d'applications en chaîne à haut débit. Commencez avec Solana et son architecture blockchain rapide et innovante.
Alors que le concept de blockchain s'étend au-delà de la crypto-monnaie dans les applications logicielles, l'amélioration des performances de débit des transactions est devenue un domaine critique de recherche et développement. L'une des améliorations les plus visionnaires dans ce domaine est la preuve de l'histoire, introduite par la blockchain Solana . Cet article présente Solana et le concept de preuve d'historique (PoH), y compris une discussion sur la façon dont la preuve d'historique améliore les vitesses de transaction et comment elle fonctionne avec d'autres mécanismes de blockchain tels que la preuve de travail et la preuve de participation.

Qu'est-ce que la blockchain Solana ?

Dans la terminologie Web3 , Solana est une chaîne de couche 1 , ce qui signifie qu'elle fournit la structure fondamentale d'un réseau blockchain, sur lequel d'autres réseaux (couche 2) peuvent s'appuyer. Des exemples d'autres réseaux de couche 1 incluent Bitcoin et Ethereum.

Solana est similaire à la blockchain Ethereum en ce qu'elle offre à la fois un jeton, le Sol, et une machine distribuée pour exécuter des contrats intelligents et connecter des applications décentralisées (dApps). De plus près, l'architecture blockchain de Solana introduit de nouvelles idées et est un concurrent d'Ethereum .

La monnaie de Solana est actuellement la cinquième en importance en termes de capitalisation boursière, avec une modeste capitalisation boursière de 15 milliards de dollars au moment d'écrire ces lignes (ce qui, pas par hasard, est au milieu de l'hiver crypto de 2022). Solana est également l'une des blockchains les plus utilisées pour développer des applications en chaîne.

Mécanismes de consensus de la blockchain

Une blockchain peut être comprise comme un magasin de données distribué dans lequel les nœuds sont identifiés par leurs clés privées cryptographiques. Cela signifie que chaque nœud a un numéro d'identité qui est considéré comme mathématiquement unique et résistant à la découverte.

Les nœuds ont deux rôles fondamentaux : ils font des revendications et ils les valident. Lors d'une réclamation, un nœud joue le rôle d'une application cliente. Dans la terminologie blockchain, ce type de nœud s'appelle un portefeuille . Un portefeuille prend sa clé privée et fait une assertion, ou une réclamation, dans le réseau. Par exemple, un portefeuille peut revendiquer la propriété d'une adresse sur la blockchain qui contient une certaine quantité de devises. Le réseau se charge alors de valider cette affirmation. Les nœuds chargés de la validation sont soit des nœuds complets, soit des nœuds validateurs.

Le processus consistant à prendre un point de données comme la réclamation d'un portefeuille et à le propager de manière fiable dans un système logiciel distribué est un problème notoirement difficile. Blockchain utilise un mécanisme de consensus pour envoyer des réclamations via le réseau. Le mécanisme de consensus d'un réseau est l'algorithme qu'il utilise pour arriver à une version partagée de la vérité.

La preuve de l'histoire de Solana

Le mécanisme de consensus est une caractéristique fondamentale et un différenciateur parmi les blockchains. Le mécanisme de consensus de Solana présente plusieurs fonctionnalités novatrices, en particulier l' algorithme Proof of History , qui permet d'accélérer le temps de traitement et de réduire les coûts de transaction. 

Le fonctionnement de PoH n'est pas difficile à saisir conceptuellement. Il est un peu plus difficile de comprendre comment cela améliore le temps de traitement et les coûts de transaction. Le livre blanc Solana est une plongée profonde dans les détails de mise en œuvre, mais il peut être facile de manquer la forêt pour les arbres.

Conceptuellement, la preuve de l'historique fournit un moyen de prouver de manière cryptographique le passage du temps et où les événements se situent dans cette chronologie. Ce mécanisme de consensus est utilisé en tandem avec un autre algorithme plus classique comme le Proof of Work (PoW) ou le Proof of Stake (PoS). La preuve d'historique rend la preuve d'enjeu plus efficace et résiliente à Solana.

Preuve de l'histoire et de la cohérence éventuelle

Vous pouvez considérer PoH comme une horloge cryptographique. Il horodate les transactions avec un hachage qui garantit que la transaction s'est produite dans le temps comme valide. Cela signifie que l'ensemble du réseau peut oublier de vérifier les revendications temporelles des nœuds et différer la réconciliation de l'état actuel de la chaîne. 

Nous pouvons dire que PoH permet la tolérance aux pannes dans le réseau en fournissant un mécanisme solide pour une cohérence éventuelle , même face à une grande partition réseau (ou fork). Étant donné que les nœuds peuvent s'appuyer sur la structure du système pour appliquer l'ordre des transactions, ils peuvent consacrer plus d'énergie au traitement efficace des blocs et à l'obtention de blocs valides dans le grand livre.

Solana est également une attaque unique sur le problème byzantin de la tolérance aux fautes , qui peut être résumé comme traitant du consensus au sein d'un groupe dont les membres peuvent ne pas tous agir de bonne foi. (C'est le même problème de double dépense qui a initialement stimulé le développement de Bitcoin.)

Preuve d'historique et algorithme de preuve de travail

Une autre façon de penser à PoH est de le considérer comme une amélioration de l'algorithme Proof of Work, en ce qui concerne l'ordre des blocs. Dans l'implémentation de la preuve de travail de Bitcoin, l'exploration de blocs et la validation sont utilisées pour appliquer la commande. Le réseau est réglé pour produire un bloc valide à un rythme d'environ 10 minutes par bloc. Il s'agit en quelque sorte d'un goulot d'étranglement difficile - une validation de bloc plus rapide génère plus de collisions de blocs, ce qui entraîne des rendements décroissants. La blockchain dépend également du travail des nœuds de validation individuels pour appliquer la commande.

La preuve de l'histoire dit : Et si nous avions un mécanisme pour fournir une horloge cryptographique qui signe les transactions au fur et à mesure qu'elles arrivent ? Les nœuds de validation doivent toujours s'assurer que les réclamations entrant en tant que transactions sont légitimes. Mais en ce qui concerne le temps et les commandes, ils peuvent supposer que les transactions qu'ils envisagent sont bonnes. Cela supprime le goulot d'étranglement de la preuve de travail.

Proof of Stake et la fonction de délai vérifiable

Solana a toujours besoin d'un mécanisme de consensus au-delà de la preuve d'historique, et pour cela, il utilise la preuve d'enjeu. Mais ses validateurs font leur travail de preuve par rapport aux blocs qui sont signés par ce qu'on appelle une fonction de retard vérifiable (VDF). L'idée centrale de VDF est d'exécuter une fonction qui prend une entrée et génère une sortie qui ne peut pas être prédite sans exécuter réellement la fonction. Vous les enchaînez ensuite ensemble - la sortie de la dernière fonction fournit l'entrée à la fonction suivante. (Le processus est amorcé avec un point de données aléatoire.)

Le chaînage se fait à l'aide d'une fonction de hachage cryptographique. Cela fournit un flux continu de moments cryptographiquement vérifiables dans le temps. Dans ces moments, nous pouvons facilement ajouter des informations supplémentaires en les incorporant dans l'entrée de hachage. Dans le cas de la blockchain de Solana, nous intégrerons les transactions qui arrivent lors de chaque exécution de VDF. Tout cela est représenté sous une forme idéalisée dans la figure 1.

VDF dans la blockchain Solana.


Figure 1. Une vue idéalisée des transactions d'horodatage VDF

Quelques notes sur la figure 1 :

  • Dans une implémentation réelle, le réseau doit coordonner un serveur VDF ( alias "leader" ou générateur PoH) avec les transactions entrantes, le cluster de nœuds de validation et le processus de gestion des pannes de réseau et de basculement des serveurs VDF.
  • Chaque transaction arrive et est "estampillée" par le générateur PoH, puis transmise au cluster distribué de validateurs pour consensus. Le PoH regroupe les transactions dans sa sortie de hachage, afin que les validateurs puissent compter sur l'ordre des transactions valides.
  • Le réseau de validation renvoie ensuite les votes sur la transaction au générateur PoH et les transactions sont considérées comme valides.
  • Un système de gouvernance est mis en place qui orchestre la promotion de nouveaux validateurs à une position de leader en cas d'échec, ainsi que des mécanismes pour déjouer les attaques contre le réseau.

L'essentiel est que l'utilisation d'un PoH augmente les temps de validation potentiels des blocs, de manière radicale. Mais cela implique aussi une complexité architecturale accrue. Cette complexité est probablement à l'origine du taux de pannes supérieur à la moyenne de Solana .

L'avantage de performance de Solana

La blockchain Solana est toujours considérée comme étant en version bêta. L'idée de gérer un réseau doté de milliards d'actifs à titre d'essai peut soulever quelques sourcils, mais c'est Web3 pour vous. Solana semble passer par le processus d'élimination des bogues pour atteindre un degré élevé de stabilité basé sur le concept de preuve d'historique.

Pour avoir une idée de l'avantage de performance qui est possible avec le mécanisme PoH de Solana, considérez le tableau 1.

Bitcoin  10 minutes
Ethereum 1.0  10 à 19 secondes
Ethereum 2.0  12 à 14 secondes
Solana  800 millisecondes

Ainsi, vous pouvez voir que le débit de blocs de Solana est impressionnant et qu'il n'est pas passé inaperçu. Les investisseurs institutionnels ont investi plus de 100 millions de dollars dans Solana cette année seulement. 

Solana est fascinant sur le plan technologique et devrait être un projet intéressant à surveiller car il continue de mûrir.

Lien :

#solana #blockchain

Explorer La Blockchain De Solana Et La Preuve De L'histoire (PoH)
高橋  陽子

高橋 陽子


探索 Solana 區塊鍊和歷史證明 (PoH)

Solana 被認為是最快的區塊鏈,並與以太坊競爭高吞吐量、鏈上應用程序開發。開始使用 Solana 及其快速、創新的區塊鏈架構。
隨著區塊鏈概念從加密貨幣擴展到軟件應用程序,提高交易吞吐量性能已成為研發的關鍵領域。該領域最具遠見的改進之一是由Solana 區塊鏈引入的歷史證明。本文介紹了 Solana 和歷史證明 (PoH) 概念,包括討論歷史證明如何提高交易速度以及它如何與其他區塊鏈機制(如工作證明和股權證明)協同工作。

什麼是 Solana 區塊鏈?

Web3術語中,Solana 是第 1 層鏈,這意味著它提供了區塊鍊網絡的基礎結構,其他(第 2 層)網絡可以在此基礎上構建。其他第 1 層網絡的示例包括比特幣和以太坊。

Solana 類似於以太坊區塊鏈,因為它提供了一個令牌、Sol 和一個用於執行智能合約和連接去中心化應用程序 (dApp) 的分佈式機器。仔細看,Solana 的區塊鏈架構引入了一些新穎的想法,是以太坊的競爭對手

按市值計算,Solana 的貨幣目前是第五大貨幣,在撰寫本文時市值僅為 150 億美元(並非巧合,這是 2022 年的加密貨幣寒冬)。Solana 也是開發鏈上應用程序最常用的區塊鏈之一。






共識機制是區塊鏈之間的基本特徵和區別。Solana 的共識機制有幾個新穎的特性,特別是歷史證明算法,它可以實現更快的處理時間和更低的交易成本。 

PoH 的工作原理並不難從概念上理解。很難理解它如何改善處理時間和交易成本。Solana 白皮書深入探討了實施細節,但很容易只見樹木不見森林。

從概念上講,歷史證明提供了一種以密碼方式證明時間流逝以及事件在該時間線上的位置的方法。這種共識機制與另一種更傳統的算法結合使用,例如工作量證明 (PoW) 或權益證明 (PoS)。歷史證明使 Solana 中的權益證明更加高效和有彈性。


您可以將 PoH 視為加密時鐘。它使用哈希對交易進行時間戳記,以保證交易發生的時間是有效的。這意味著整個網絡可以忘記驗證節點的時間聲明並推遲協調鏈的當前狀態。 

我們可以說 PoH 通過提供強大的最終一致性機制來允許網絡中的容錯,即使面對大型網絡分區(或分叉)也是如此。因為節點可以依靠系統的結構來執行交易排序,所以它們可以投入更多的精力來有效地處理區塊並將有效區塊放入賬本中。

Solana 也是對拜占庭容錯問題的獨特攻擊,可以概括為處理一個群體內的共識,其成員可能並非都真誠地行事。(這與最初刺激比特幣發展的雙重支出問題相同。)


考慮 PoH 的另一種方式是將其視為對工作量證明算法的改進,涉及塊的排序。在比特幣的工作量證明實現中,區塊挖掘和驗證用於強制排序。網絡經過調整,以每塊約 10 分鐘的速度生成有效塊。這是一個硬瓶頸——更快的區塊驗證會產生更多的區塊衝突,從而導致收益遞減。區塊鏈還依賴於各個驗證節點的工作來強制執行排序。



Solana 仍然需要超越歷史證明的共識機制,為此,它使用了權益證明。但是它的驗證者對由所謂的可驗證延遲函數(VDF) 簽名的塊進行證明工作。VDF 的核心思想是運行一個函數,該函數接受輸入並生成一個在沒有實際運行該函數的情況下無法預測的輸出。然後將它們鏈接在一起——最後一個函數的輸出將輸入提供給下一個函數。(該過程以隨機數據點為種子。)

鏈接是使用加密散列函數完成的。這提供了一個持續的加密可驗證時刻流。在這些時間點中,我們可以通過將其合併到哈希輸入中來輕鬆添加更多信息。對於 Solana 的區塊鏈,我們將合併在每次 VDF 運行期間到達的交易。所有這些都以理想化的形式顯示在圖 1 中。

Solana 區塊鏈中的 VDF。


圖 1. VDF 時間戳事務的理想化視圖

關於圖 1 的幾點說明:

  • 在實際實現中,網絡必須協調 VDF 服務器(也稱為“領導者”或 PoH 生成器)與傳入交易、驗證器節點集群以及處理網絡故障和滾動 VDF 服務器的過程。
  • 每筆交易到達並由 PoH 生成器“標記”,然後傳遞給分佈式驗證器集群以達成共識。PoH 將交易批處理到其哈希輸出中,因此驗證者可以依靠交易的有效順序。
  • 然後驗證者網絡將交易的投票返回給 PoH 生成器,交易被認為是有效的。
  • 實施了一個治理系統,該系統協調在失敗的情況下將新的驗證者提升為領導者職位,以及擊敗針對網絡的攻擊的機制。

最重要的是,使用 PoH 確實會從根本上增加潛在的區塊驗證時間。但這也意味著架構複雜性的增加。這種複雜性可能是 Solana中斷率高於平均水平的原因。

Solana 的性能優勢

Solana 區塊鏈仍被認為處於測試狀態。運行一個擁有數十億資產的網絡作為試驗的想法可能會引起一些人的注意,但 Web3 適合你。Solana 看起來正在經歷基於歷史證明概念的剔除錯誤以達到高度穩定性的過程。

要了解 Solana 的 PoH 機制可能具有的性能優勢,請考慮表 1。

比特幣  10分鐘
以太坊 1.0  10 到 19 秒
以太坊 2.0  12 到 14 秒
索拉納  800 毫秒

因此,您可以看到 Solana 的塊吞吐量令人印象深刻——而且它並沒有被忽視。僅今年一年,機構投資者就向 Solana 投入了超過 1 億美元。 

Solana 在技術上令人著迷,隨著它的不斷成熟,應該是一個值得關注的有趣項目。

鏈接:https ://

#solana #blockchain

探索 Solana 區塊鍊和歷史證明 (PoH)

Изучение блокчейна Solana и доказательство истории (PoH)

Solana считается самым быстрым блокчейном и конкурирует с Ethereum за высокопроизводительную разработку сетевых приложений. Начните работу с Solana и ее быстрой инновационной архитектурой блокчейна.
По мере того, как концепция блокчейна выходит за рамки криптовалюты в программные приложения, повышение производительности транзакций становится важной областью исследований и разработок. Одним из наиболее дальновидных улучшений в этой области является Proof of History, представленный блокчейном Solana . В этой статье представлена ​​Солана и концепция Proof of History (PoH), включая обсуждение того, как Proof of History повышает скорость транзакций и как оно работает с другими механизмами блокчейна, такими как Proof of Work и Proof of Stake.

Что такое блокчейн Solana?

В терминологии Web3 Solana — это цепочка уровня 1 , что означает, что она обеспечивает фундаментальную структуру сети блокчейна, на которой могут строиться другие сети (уровня 2). Примеры других сетей уровня 1 включают Биткойн и Эфириум.

Solana похожа на блокчейн Ethereum тем, что предлагает как токен Sol, так и распределенную машину для выполнения смарт-контрактов и подключения децентрализованных приложений (dApps). При ближайшем рассмотрении архитектура блокчейна Solana представляет некоторые новые идеи и является конкурентом Ethereum .

Валюта Соланы в настоящее время является пятой по величине рыночной капитализацией со скромной рыночной капитализацией в 15 миллиардов долларов на момент написания этой статьи (что не случайно приходится на разгар крипто-зимы 2022 года). Solana также является одним из наиболее часто используемых блокчейнов для разработки сетевых приложений.

Механизмы консенсуса блокчейна

Блокчейн можно понимать как распределенное хранилище данных, в котором узлы идентифицируются своими криптографическими закрытыми ключами. Это означает, что каждый узел имеет идентификационный номер, который считается математически уникальным и устойчивым к обнаружению.

Узлы выполняют две основные роли: они делают заявления и проверяют их. При подаче заявки узел выступает в роли клиентского приложения. В терминологии блокчейна такой узел называется кошельком . Кошелек берет свой закрытый ключ и делает утверждение или требование в сети. Например, кошелек может претендовать на владение адресом в блокчейне, на котором хранится определенное количество валюты. Затем сеть берет на себя задачу проверки этого утверждения. Узлы, которым поручена проверка, являются либо полными узлами, либо узлами-валидаторами.

Процесс получения точки данных, такой как требование кошелька, и ее надежное распространение в распределенной системе программного обеспечения является общеизвестно сложной проблемой. Блокчейн использует механизм консенсуса для отправки заявок через сеть. Механизм консенсуса сети — это алгоритм, который она использует для получения общей версии истины.

Доказательство истории Соланы

Механизм консенсуса является фундаментальной характеристикой и отличительной чертой блокчейнов. Механизм консенсуса Solana имеет несколько новых функций, в частности алгоритм  Proof of History , который позволяет сократить время обработки и снизить транзакционные издержки.

Концептуально понять, как работает PoH, несложно. Немного сложнее понять, как это улучшает время обработки и транзакционные издержки. Технический документ Solana — это глубокое погружение в детали реализации, но может быть легко пропустить лес за деревьями.

Концептуально Proof of History предоставляет способ криптографически доказать течение времени и то, где события попадают на эту временную шкалу. Этот механизм консенсуса используется в сочетании с другим более традиционным алгоритмом, таким как Proof of Work (PoW) или Proof of Stake (PoS). Proof of History делает Proof of Stake более эффективным и устойчивым в Солане.

Доказательство истории и возможной согласованности

Вы можете думать о PoH как о криптографических часах. Он помечает транзакции хэшем, который гарантирует, что транзакция действительно произошла во времени. Это означает, что вся сеть может забыть о проверке временных требований узлов и отложить согласование текущего состояния цепочки. 

Можно сказать, что PoH обеспечивает отказоустойчивость в сети, предоставляя надежный механизм согласованности в конечном итоге даже при наличии большого сетевого раздела (или форка). Поскольку узлы могут полагаться на структуру системы для обеспечения порядка транзакций, они могут тратить больше энергии на эффективную обработку блоков и добавление действительных блоков в реестр.

Солана также является уникальной атакой на проблему византийской отказоустойчивости , которую можно резюмировать как достижение консенсуса внутри группы, члены которой не все могут действовать добросовестно. (Это та же проблема двойных расходов, которая изначально стимулировала разработку Биткойна.)

Proof of History и алгоритм Proof of Work

Другой способ думать о PoH — рассматривать его как улучшение алгоритма Proof of Work в отношении порядка блоков. В реализации Биткойн Proof of Work майнинг и проверка блоков используются для обеспечения упорядоченности. Сеть настроена на создание действительного блока со скоростью около 10 минут на блок. Это своего рода узкое место — более быстрая проверка блоков приводит к большему количеству столкновений блоков, что приводит к уменьшению отдачи. Блокчейн также зависит от работы отдельных узлов валидатора для обеспечения соблюдения порядка.

Proof of History говорит: что, если бы у нас был механизм для предоставления криптографических часов, которые подписывают транзакции по мере их поступления? Узлы валидатора по-прежнему должны гарантировать, что требования, поступающие в качестве транзакций, являются законными. Но что касается времени и порядка, они могут предположить, что транзакции, которые они рассматривают, хороши. Это устраняет узкое место Proof of Work.

Proof of Stake и проверяемая функция задержки

Solana по-прежнему требует механизма консенсуса помимо Proof of History, и для этого он использует Proof of Stake. Но его валидаторы выполняют свою работу по проверке блоков, которые подписаны с помощью так называемой проверяемой функции задержки (VDF). Основная идея VDF состоит в том, чтобы запустить функцию, которая принимает входные данные и генерирует выходные данные, которые невозможно предсказать без фактического запуска функции. Затем вы связываете их вместе — выходные данные последней функции поставляют входные данные для следующей функции. (Процесс заполняется случайной точкой данных.)

Цепочка выполняется с использованием криптографической функции хеширования. Это обеспечивает непрерывный поток криптографически проверяемых моментов времени. В эти моменты времени мы можем легко добавить дополнительную информацию, включив ее в хеш-ввод. В случае с блокчейном Соланы мы будем включать транзакции, поступающие во время каждого запуска VDF. Все это показано в идеализированном виде на рисунке 1.

VDF в блокчейне Solana.


Рисунок 1. Идеализированный вид транзакций с отметками времени VDF

Несколько замечаний по рисунку 1:

  • В реальной реализации сеть должна координировать сервер VDF ( также известный как «лидер» или генератор PoH) с входящими транзакциями, кластером узлов проверки и процессом устранения сетевых сбоев и переноса серверов VDF.
  • Каждая транзакция поступает и «отмечается» генератором PoH, а затем передается распределенному кластеру валидаторов для достижения консенсуса. PoH объединяет транзакции в свой хеш-выход, поэтому валидаторы могут рассчитывать на то, что порядок транзакций является действительным.
  • Затем сеть валидатора возвращает голоса по транзакции генератору PoH, и транзакции считаются действительными.
  • Реализована система управления, которая организует продвижение новых валидаторов на лидирующие позиции в случае сбоев, а также механизмы отражения атак на сеть.

Суть в том, что использование PoH действительно увеличивает потенциальное время проверки блока — радикально. Но это также подразумевает повышенную архитектурную сложность. Эта сложность, вероятно, является причиной более высокого, чем в среднем , количества сбоев в работе Соланы .

Преимущество Соланы в производительности

Блокчейн Solana все еще находится в статусе бета-версии. Идея запустить сеть с миллиардами активов в качестве пробной версии может вызвать недоумение, но это Web3 для вас. Похоже, что Solana проходит процесс устранения ошибок, чтобы достичь высокой степени стабильности на основе концепции Proof of History.

Чтобы получить представление о преимуществах производительности, которые возможны благодаря механизму PoH Solana, рассмотрите Таблицу 1.

Биткойн  10 минут
Эфириум 1.0  от 10 до 19 секунд
Эфириум 2.0  от 12 до 14 секунд
Солана  800 миллисекунд

Итак, вы можете видеть, что пропускная способность блоков Solana впечатляет — и это не осталось незамеченным. Только в этом году институциональные инвесторы вложили в Solana более 100 миллионов долларов. 

Solana технологически увлекательна, и за ней должно быть интересно наблюдать, поскольку она продолжает развиваться.


#solana #blockchain

Изучение блокчейна Solana и доказательство истории (PoH)
Hans  Marvin

Hans Marvin


Exploring Solana Blockchain and The Proof Of History (PoH)

Solana is considered the fastest blockchain and competes with Ethereum for high-throughput, on-chain application development. Get started with Solana and its fast, innovative blockchain architecture.
As the blockchain concept expands beyond cryptocurrency into software applications, improving transaction-throughput performance has become a critical area of research and development. One of the more visionary improvements in this area is the Proof of History, introduced by the Solana blockchain. This article introduces Solana and the Proof of History (PoH) concept, including a discussion of how Proof of History improves transaction speeds and how it works with other blockchain mechanisms such as Proof of Work and Proof of Stake.

See more At:

#solana #blockchain

Exploring Solana Blockchain and The Proof Of History (PoH)