[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10619":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":35,"discoverSource":36},10619,"program-examples","solana-developers\u002Fprogram-examples","solana-developers","A repository of Solana program examples","",null,"TypeScript",1414,521,18,5,0,2,12,21.15,false,"main",true,[24,25,26,27,28,29,30,31],"anchor","anchor-lang","blockchain","hacktoberfest","native-solana","solana","solana-programs","web3","2026-06-12 02:02:24","# Program Examples\n\n## Onchain program examples for ⚓ Anchor, 🦀 Native Rust, and 🤥 Pinocchio.\n\n[![Anchor](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fanchor.yml\u002Fbadge.svg?event=schedule)](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fanchor.yml) [![Native](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fsolana-native.yml\u002Fbadge.svg?event=schedule)](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fsolana-native.yml) [![Pinocchio](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fsolana-pinocchio.yml\u002Fbadge.svg?event=schedule)](https:\u002F\u002Fgithub.com\u002Fsolana-developers\u002Fprogram-examples\u002Factions\u002Fworkflows\u002Fsolana-pinocchio.yml)\n\nThis repo contains Solana onchain programs (referred to as 'Smart Contracts' in other blockchains).\n\n> [!NOTE]\n> If you're new to Solana, you don't need to create your own programs to perform basic things like making accounts, creating tokens, sending tokens, or minting NFTs. These common tasks are handled with existing programs, for example the System Program (for making account or transferring SOL) or the token program (for creating tokens and NFTs). See the [Solana Developer site](https:\u002F\u002Fsolana.com\u002Fdevelopers) to learn more.\n\n> ⚠️ This repository uses **pnpm** as the default package manager.  \n> Ensure pnpm is installed before running any examples.\n\n\nEach folder includes examples for one or more of the following:\n\n- `anchor` - Written using [Anchor](https:\u002F\u002Fwww.anchor-lang.com\u002F), the most popular framework for Solana development, which uses Rust.\n  Use `anchor build` and `anchor deploy` to build and deploy the program.\n  Tests should be executed using `pnpm test` as defined in the `Anchor.toml` scripts section.\n\n- `native` - Written using Solana's native Rust crates and vanilla Rust.\n  Build and test commands are defined via pnpm scripts and use `litesvm` for testing.\n  Run `pnpm test` to execute tests.\n\n- `pinocchio` - Written using [Pinocchio](https:\u002F\u002Fgithub.com\u002Ffebo\u002Fpinocchio), a zero-copy, zero-allocation library for Solana programs.\n  Build and test commands are the same as native examples.\n  Run `pnpm test` to execute tests.\n\n\n**If a given example is missing, please send us a PR to add it!** Our aim is to have every example available in every option. We'd also love to see more programs involving staking, wrapped tokens, oracles, compression and VRF. Follow the [contributing guidelines](.\u002FCONTRIBUTING.md) to keep things consistent.\n\n## The example programs\n\n\u003Cdetails>\n  \u003Csummary>Basics\u003C\u002Fsummary>\n\n### Hello world\n\n[Hello World on Solana! A minimal program that logs a greeting.](.\u002Fbasics\u002Fhello-solana\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fhello-solana\u002Fanchor) [native](.\u002Fbasics\u002Fhello-solana\u002Fnative) [pinocchio](.\u002Fbasics\u002Fhello-solana\u002Fpinocchio)\n\n### Account-data\n\nStore and retrieve data using Solana accounts.\n\n[anchor](.\u002Fbasics\u002Faccount-data\u002Fanchor) [native](.\u002Fbasics\u002Faccount-data\u002Fnative) [pinocchio](.\u002Fbasics\u002Faccount-data\u002Fpinocchio)\n\n### Storing global state - Counter\n\n[Use a PDA to store global state, making a counter that increments when called.](.\u002Fbasics\u002Fcounter\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fcounter\u002Fanchor) [native](.\u002Fbasics\u002Fcounter\u002Fnative) [pinocchio](.\u002Fbasics\u002Fcounter\u002Fpinocchio)\n\n### Saving per-user state - Favorites\n\nSave and update per-user state on the blockchain, ensuring users can only update their own information.\n\n[anchor](.\u002Fbasics\u002Ffavorites\u002Fanchor) [native](.\u002Fbasics\u002Ffavorites\u002Fnative) [pinocchio](.\u002Fbasics\u002Ffavorites\u002Fpinocchio)\n\n### Checking Instruction Accounts\n\n[Check that the accounts provided in incoming instructions meet particular criteria.](.\u002Fbasics\u002Fchecking-accounts\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fchecking-accounts\u002Fanchor) [native](.\u002Fbasics\u002Fchecking-accounts\u002Fnative) [pinocchio](.\u002Fbasics\u002Fchecking-accounts\u002Fpinocchio)\n\n### Closing Accounts\n\nClose an account and get the Lamports back.\n\n[anchor](.\u002Fbasics\u002Fclose-account\u002Fanchor) [native](.\u002Fbasics\u002Fclose-account\u002Fnative) [pinocchio](.\u002Fbasics\u002Fclose-account\u002Fpinocchio)\n\n### Creating Accounts\n\n[Make new accounts on the blockchain.](.\u002Fbasics\u002Fcreate-account\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fcreate-account\u002Fanchor) [native](.\u002Fbasics\u002Fcreate-account\u002Fnative) [pinocchio](.\u002Fbasics\u002Fcreate-account\u002Fpinocchio)\n\n### Cross program invocations\n\n[Invoke an instruction handler from one onchain program in another onchain program.](.\u002Fbasics\u002Fcross-program-invocation\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fcross-program-invocation\u002Fanchor) [native](.\u002Fbasics\u002Fcross-program-invocation\u002Fnative)\n\n### PDA rent-payer\n\n[Use a PDA to pay the rent for the creation of a new account.](.\u002Fbasics\u002Fpda-rent-payer\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fpda-rent-payer\u002Fanchor) [native](.\u002Fbasics\u002Fpda-rent-payer\u002Fnative) [pinocchio](.\u002Fbasics\u002Fpda-rent-payer\u002Fpinocchio)\n\n### Processing instructions\n\n[Add parameters to an instruction handler and use them.](.\u002Fbasics\u002Fprocessing-instructions\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Fprocessing-instructions\u002Fanchor) [native](.\u002Fbasics\u002Fprocessing-instructions\u002Fnative) [pinocchio](.\u002Fbasics\u002Fprocessing-instructions\u002Fpinocchio)\n\n### Storing date in program derived addresses\n\nStore and retrieve state in Solana.\n\n[anchor](.\u002Fbasics\u002Fprogram-derived-addresses\u002Fanchor) [native](.\u002Fbasics\u002Fprogram-derived-addresses\u002Fnative) [pinocchio](.\u002Fbasics\u002Fprogram-derived-addresses\u002Fpinocchio)\n\n### Handling accounts that expand in size\n\nHow to store state that changes size in Solana.\n\n[anchor](.\u002Fbasics\u002Frealloc\u002Fanchor) [native](.\u002Fbasics\u002Frealloc\u002Fnative) [pinocchio](.\u002Fbasics\u002Frealloc\u002Fpinocchio)\n\n### Calculating account size to determine rent\n\n[Determine the necessary minimum rent by calculating an account's size.](.\u002Fbasics\u002Frent\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Frent\u002Fanchor) [native](.\u002Fbasics\u002Frent\u002Fnative) [pinocchio](.\u002Fbasics\u002Frent\u002Fpinocchio)\n\n### Laying out larger programs\n\n[Layout larger Solana onchain programs.](.\u002Fbasics\u002Frepository-layout\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Frepository-layout\u002Fanchor) [native](.\u002Fbasics\u002Frepository-layout\u002Fnative)\n\n### Transferring SOL\n\n[Send SOL between two accounts.](.\u002Fbasics\u002Ftransfer-sol\u002FREADME.md)\n\n[anchor](.\u002Fbasics\u002Ftransfer-sol\u002Fanchor) [native](.\u002Fbasics\u002Ftransfer-sol\u002Fnative) [pinocchio](.\u002Fbasics\u002Ftransfer-sol\u002Fpinocchio)\n\n\u003C\u002Fdetails>\n\u003Cdetails>\n  \u003Csummary>Tokens\u003C\u002Fsummary>\n\n### Creating tokens\n\n[Create a token on Solana with a token symbol and icon.](.\u002Ftokens\u002Fcreate-token\u002FREADME.md)\n\n[anchor](.\u002Ftokens\u002Fcreate-token\u002Fanchor) [native](.\u002Ftokens\u002Fcreate-token\u002Fnative)\n\n### Minting NFTS\n\n[Mint an NFT from inside your own onchain program using the Token and Metaplex Token Metadata programs.](.\u002Ftokens\u002Fnft-minter\u002FREADME.md) Reminder: you don't need your own program just to mint an NFT, see the note at the top of this README.\n\n[anchor](.\u002Ftokens\u002Fnft-minter\u002Fanchor) [native](.\u002Ftokens\u002Fnft-minter\u002Fnative)\n\n### Minting a token from inside a program\n\n[Mint a Token from inside your own onchain program using the Token program.](.\u002Ftokens\u002Fspl-token-minter\u002FREADME.md) Reminder: you don't need your own program just to mint an NFT, see the note at the top of this README.\n\n[anchor](.\u002Ftokens\u002Fspl-token-minter\u002Fanchor) [native](.\u002Ftokens\u002Fspl-token-minter\u002Fnative)\n\n### Transferring Tokens\n\n[Transfer tokens between accounts](.\u002Ftokens\u002Ftransfer-tokens\u002FREADME.md)\n\n[anchor](.\u002Ftokens\u002Ftransfer-tokens\u002Fanchor) [native](.\u002Ftokens\u002Ftransfer-tokens\u002Fnative)\n\n### Allowing users to swap digital assets - Escrow\n\nAllow two users to swap digital assets with each other, each getting 100% of what the other has offered due to the power of decentralization!\n\n[anchor](.\u002Ftokens\u002Fescrow\u002Fanchor) [native](.\u002Ftokens\u002Fescrow\u002Fnative)\n\n### Minting a token from inside a program with a PDA as the mint authority\n\n[Mint a Token from inside your own onchain program using the Token program.](.\u002Ftokens\u002Fpda-mint-authority\u002FREADME.md) Reminder: you don't need your own program just to mint an NFT, see the note at the top of this README.\n\n[anchor](.\u002Ftokens\u002Fpda-mint-authority\u002Fanchor) [native](.\u002Ftokens\u002Fpda-mint-authority\u002Fnative)\n\n### Creating an Automated Market Maker\n\n[Create liquidity pools to allow trading of new digital assets and allows users that provide liquidity to be rewarded by creating an Automated Market Maker.](.\u002Ftokens\u002Ftoken-swap\u002FREADME.md)\n\n[anchor](.\u002Ftokens\u002Ftoken-swap\u002Fanchor)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\n  \u003Csummary>Token Extensions\u003C\u002Fsummary>\n\n### Basics - create token mints, mint tokens, and transfer tokens with Token Extensions\n\nCreate token mints, mint tokens, and transfer tokens using Token Extensions.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fbasics\u002Fanchor)\n\n### Preventing CPIs with CPI guard\n\nEnable CPI guard to prevents certain token action from occurring within CPI (Cross-Program Invocation).\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fcpi-guard\u002Fanchor)\n\n### Using default account state\n\nCreate new token accounts that are frozen by default.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fdefault-account-state\u002Fanchor) [native](.\u002Ftokens\u002Ftoken-2022\u002Fdefault-account-state\u002Fnative)\n\n### Grouping tokens\n\nCreate tokens that belong to larger groups of tokens using the Group Pointer extension.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fgroup\u002Fanchor)\n\n### Creating token accounts whose owner cannot be changed\n\nCreate tokens whose owning program cannot be changed.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fimmutable-owner\u002Fanchor)\n\n### Interest bearing tokens\n\nCreate tokens that show an 'interest' calculation.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Finterest-bearing\u002Fanchor)\n\n### Requiring transactions to include descriptive memos\n\nCreate tokens where transfers must have a memo describing the transaction attached.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fmemo-transfer\u002Fanchor)\n\n### Adding on-chain metadata to the token mint\n\nCreate tokens that store their onchain metadata inside the token mint, without needing to use or pay for additional programs.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fmetadata\u002Fanchor)\n\n### Allow a designated account to close a mint\n\nAllow a designated account to close a Mint.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fmint-close-authority\u002Fanchor) [native](.\u002Ftokens\u002Ftoken-2022\u002Fmint-close-authority\u002Fnative)\n\n### Using multiple token extensions\n\nUse multiple Token Extensions at once.\n\n[native](.\u002Ftokens\u002Ftoken-2022\u002Fmultiple-extensions\u002Fnative)\n\n### Non-transferrable - create tokens that can't be transferred.\n\nCreate tokens that cannot be transferred.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fnon-transferable\u002Fanchor) [native](.\u002Ftokens\u002Ftoken-2022\u002Fnon-transferable\u002Fnative)\n\n### Permanent Delegate - Create tokens permanently under the control of a particular account\n\nCreate tokens that remain under the control of an account, even when transferred elsewhere.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Fpermanent-delegate\u002Fanchor)\n\n### Create tokens with a transfer-fee.\n\nCreate tokens with an inbuilt transfer fee.\n\n[anchor](.\u002Ftokens\u002Ftoken-2022\u002Ftransfer-fee\u002Fanchor) [native](.\u002Ftokens\u002Ftoken-2022\u002Ftransfer-fee\u002Fnative)\n\n\u003C\u002Fdetails>\n\u003Cdetails>\n\n\u003Csummary>Compression\u003C\u002Fsummary>\n\n### Cnft-burn\n\nBurn compressed NFTs.\n\n[anchor](.\u002Fcompression\u002Fcnft-burn\u002Fanchor)\n\n### Cnft-vault\n\nStore Metaplex compressed NFTs inside a PDA.\n\n[anchor](.\u002Fcompression\u002Fcnft-vault\u002Fanchor)\n\n### Cutils\n\nWork with Metaplex compressed NFTs.\n\n[anchor](.\u002Fcompression\u002Fcutils\u002Fanchor)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\n\u003Csummary>Oracles\u003C\u002Fsummary>\n\n### pyth\n\nUse a data source for offchain data (called an Oracle) to perform activities onchain.\n\n[anchor](.\u002Foracles\u002Fpyth\u002Fanchor)\n\n\u003C\u002Fdetails>\n\n---\n","该项目是一个Solana链上程序示例库，提供了使用Anchor、原生Rust和Pinocchio编写的智能合约示例。核心功能包括基本的“Hello World”示例、账户数据存储与读取等，并支持通过pnpm进行构建和测试。这些示例特别适合于想要学习如何在Solana区块链上开发智能合约的新手开发者以及希望探索不同框架和技术特性的经验丰富的开发者。项目覆盖了从简单的日志输出到更复杂的账户操作等多个场景，是进入Solana生态系统的良好起点。","2026-06-11 03:29:23","top_topic"]