sandbox to play around numerous functionalities on Solana

Overview

Solana Sandbox

This sandbox is for verifying smart contracts(programs) implemented on Solana for a self-study purpose.

Programs

Currently implemented under rust directory

Creating metadata

  • The code is mostly referenced from metaplex

Simulate Escrow

  • Idea is from paulx's blog but following a real-world usecase
    • Use wallets to manage Accounts
    • Use Associated Token Account to transfer tokens

Client

Mint & add metadata on NFT

  • Solana has built-in API for minting(@solana/spl-token) and transfering transaction(@solana/web3.js). This code also showcases how we use them.

Prerequisite

  • rust environment
  • node version v14+
  • solana tookkit
  • solana account that holds decent SOL to operate(mint, etc)

How to start

  • Install dependencies
$ cargo install
$ yarn install
  • Set up local network for Solana
$ solana config set --url localhost // point to local or else it will be deployed to other clusters that you set
  • Start local validator
$ solana-test-validator
  • Build & deploy program
$ cargo build-bpf // compile program
$ solana program deploy /{your directory}/rust/solana-program/dist/program/solanaprogram.so

// You should receive the program id as a result
Program Id: zvM2...

The command above will generate solanaprogram-keypair.json which will be used in the client code

Test Escrow

$ yarn start:escrow

Escrow Native Mint(Wrapped SOL)

$ yarn start:escrow-native-mint

Test Metadata

$ yarn start:metadata
Comments
  • Demo freeze account

    Demo freeze account

    Showcase how freezing account works

    Scenario

    • payer mints token with token_program_id
      • payer is the freeze_authority
    • payer freeze token account
    TokenAccount 6c9rgDdYqeNUjyrkfDvndtRuz8XB8HwLwtAUQog6ThBb 
          owner: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
          tokenAmount: 1
          state: frozen
    
    $spl-token accounts -v                                                                                                                                     
    Token                                         Account                                       Balance
    ----------------------------------------------------------------------------------------------------------
    DBGpSFrcTPYJjcyrMHxP99gboPNEP18eFXJvPF6zRX1Q  tP3H8CT9qZ9EBqREamHQEQMiHddQvkNuKZDmNSTGUkn   1 ⚠️  Frozen
    
    • Attempting to transfer this token => fails
    spl-token transfer --fund-recipient --allow-unfunded-recipient DBGpSFrcTPYJjcyrMHxP99gboPNEP18eFXJvPF6zRX1Q  1 4NxQmMd9Z2yCUzrA3JCyrb3vWGnFYLNNX2Qnsq2SbW2e
    Transfer 1 tokens
      Sender: tP3H8CT9qZ9EBqREamHQEQMiHddQvkNuKZDmNSTGUkn
      Recipient: 4NxQmMd9Z2yCUzrA3JCyrb3vWGnFYLNNX2Qnsq2SbW2e
      Recipient associated token account: D5BH71Z4Uu6knyztZUqWh3qkUQMoAUdhjseMhUGWP7bZ
      Funding recipient: D5BH71Z4Uu6knyztZUqWh3qkUQMoAUdhjseMhUGWP7bZ (0.00203928 SOL)
    RPC response error -32002: Transaction simulation failed: Error processing Instruction 1: custom program error: 0x11 [22 log messages]
    
    opened by tomoima525 1
  • cancel escrow

    cancel escrow

    log

    $ yarn start:escrow-cancel
    yarn run v1.22.5
    $ ts-node -r dotenv/config client/escrow_cancel.ts
    extend borsh functionality to support serializing Pubkey
    Alice Wallet path: /Users/tomoima525/.config/solana/id.json
    Bob Wallet path: /Users/tomoima525/workspace/temp/solana-test-wallet/id.json
    Start...
    Success { url: 'http://localhost:8899' }
    Connection to cluster established: http://localhost:8899 { 'feature-set': 660526986, 'solana-core': '1.7.10' }
    Program HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru is executable
    Prepare Initializer
    Created Initializer Mint So11111111111111111111111111111111111111112
    Prepare taker wallet
    Created taker Mint Bg2E6EEPwYc1adNNMPDtT9FX5MB3faYL51b4mzxbmZhB
    
    
    ============ starting escrow ===========
    
    Initializer: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
      sends 1500000000 lamports through wrapped token
    Taker      : E4FAhLbJAnwsjN1Y1wGtsqu8TcDNPKrmuzHbbKsCw7LB
      sends 1 mint token
    Created Associated Token Account for Taker 14PebC766nXtXrj2eX1CfM5xhsoA4FnEBnt7Lvs4PjQb
    Created Associated Token Account for Initializer Hc5nvJQyzouoGz5bA31x2aXrwXyJ8yveuDFTFt61aMHQ
    Create temp Account
    Create escrowToken
    Initialize Escrow
    Transaction confirmed. Signature 5uq2tu5LzmxuVizVTHvZEHcVCo3d7gLLomdEzmJR4fomXQzjc3iZsAGMJc377e6BXiU3def56nE7TZ4TNZxBu9Ui
    Account tempTokenAccount
     lamports:1502039280
     owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
    Account EscrowAccount
     lamports:1621680
     owner: HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru
    escrowAccountPubkey: 48F86Gerp9k5vgxC9n2y8fAHD3EThSRuUrToVEJJNUhn
        isInitialized: true
        initializerAccountPubkey: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
        XTokenTempAccountPubkey: bJVnzqfTszempmHdroZhnckw3MC5eoTErp5m7ThkCfw 
        initializerYTokenAccount: Hc5nvJQyzouoGz5bA31x2aXrwXyJ8yveuDFTFt61aMHQ 
        expectedAmount: 1
    Cancelling Escrow
    Get Program Derived AccessToken: CqLScBF4tVZ58hppoZ5LeQvwkAz7YC5vSdaXLxY35NyN
    Cancel Escrow
    Transaction confirmed. Signature 2QugvJ8B6yPTy798gEUJ3QyUcJvYwHmuzdzQNmjijM1h7U2eCk87JUHHVsYj9mFSR3DDmvrTDTCNJan6nS8Gj5DY
    Account EscrowAccount
     lamports:0
     owner: 
    

    Confirmed balance has not changed after escrow is canceled

    opened by tomoima525 0
  • Simulate escrow native mint

    Simulate escrow native mint

    Simulate escrow wrapped token

    $ yarn start:escrow-native-mint
    yarn run v1.22.5
    $ ts-node -r dotenv/config client/escrow_native_mint.ts
    extend borsh functionality to support serializing Pubkey
    Alice Wallet path: /Users/tomoima525/.config/solana/id.json
    Bob Wallet path: /Users/tomoima525/workspace/temp/solana-test-wallet/id.json
    Start...
    Success { url: 'http://localhost:8899' }
    Connection to cluster established: http://localhost:8899 { 'feature-set': 660526986, 'solana-core': '1.7.10' }
    Program HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru is executable
    Prepare Initializer
    Created Initializer Mint So11111111111111111111111111111111111111112
    Prepare taker wallet
    Created taker Mint AXUYbQsRDj7kNw7UGqENfFT7shHnGkocUUeCNQkR1qLM
    
    
    ============ starting escrow ===========
    
    Initializer: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
      sends 1500000000 lamports through wrapped token
    Taker      : E4FAhLbJAnwsjN1Y1wGtsqu8TcDNPKrmuzHbbKsCw7LB
      sends 1 mint token
    Created Associated Token Account for Taker 14PebC766nXtXrj2eX1CfM5xhsoA4FnEBnt7Lvs4PjQb
    Created Associated Token Account for Initializer 4w1jWgUbFWS5PXi5PUAr9Lt6KELX1Sz4WM8LakUc4prE
    Create temp Account
    Create escrowToken
    Initialize Escrow
    Transaction confirmed. Signature 34wyTtKRXdWnxqkgENdX4uAvwTriZvWxoCi5JPKwiarUUPmJoHZJpF3ghVqFq2SdMtfakGNjvNJw8sQUFpV9ry4J
    Account tempTokenAccount
     lamports:1502039280
     owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
    Account EscrowAccount
     lamports:1621680
     owner: HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru
    escrowAccountPubkey: 397m4YLJi8Q1W4BmdwU55339Ei5faov5NeV8GAXKA7dZ
        isInitialized: true
        initializerAccountPubkey: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
        XTokenTempAccountPubkey: 7T2yTo5cFMAzq7tGLwTnnCAU4WBgxRq7CcaPECxJi8ot 
        initializerYTokenAccount: 4w1jWgUbFWS5PXi5PUAr9Lt6KELX1Sz4WM8LakUc4prE 
        expectedAmount: 1
    Create Taker Receive MintToken Account So11111111111111111111111111111111111111112
    Get Program Derived AccessToken: CqLScBF4tVZ58hppoZ5LeQvwkAz7YC5vSdaXLxY35NyN
    Exchange Escrow
    Transaction confirmed. Signature E2B3cR12t1Lt5Hcc46MrbzQdpRUnFxwiai5yhfuRx3No1459xXZ6CCsz2gCGyke6WKiws4jLbPgsxCVt1bJT76t
    Account EscrowAccount
     lamports:0
     owner: 
    ✨  Done in 4.28s.
    

    Initializer

    $ spl-token accounts -v
    Token                                         Account                                       Balance
    ----------------------------------------------------------------------------------------------------------
    AXUYbQsRDj7kNw7UGqENfFT7shHnGkocUUeCNQkR1qLM  4w1jWgUbFWS5PXi5PUAr9Lt6KELX1Sz4WM8LakUc4prE  1
    So11111111111111111111111111111111111111112   4ZD3UGJ6GhifxwRCLz5EfrdbXha3eg1iCio8Dm7DkEHd  3.997960719
    So11111111111111111111111111111111111111112   5NN2pR347NqWEubvKkM9rSXvte9VAaynavXzB1tuUpFA  0            (Aux-1*)
    

    Taker

    $ spl-token accounts -v --owner E4FAhLbJAnwsjN1Y1wGtsqu8TcDNPKrmuzHbbKsCw7LB
    Token                                         Account                                       Balance
    ----------------------------------------------------------------------------------------------------------
    AXUYbQsRDj7kNw7UGqENfFT7shHnGkocUUeCNQkR1qLM  HN1TQz5oFhTwDPqcYV44gvJsNqC6o4PqwxMnL5fpTX7i  3
    So11111111111111111111111111111111111111112   14PebC766nXtXrj2eX1CfM5xhsoA4FnEBnt7Lvs4PjQb  1.5000015
    
    $ spl-token accounts -v --owner E4FAhLbJAnwsjN1Y1wGtsqu8TcDNPKrmuzHbbKsCw7LB
    Token                                         Account                                       Balance
    ----------------------------------------------------------------------------------------------------------
    AXUYbQsRDj7kNw7UGqENfFT7shHnGkocUUeCNQkR1qLM  HN1TQz5oFhTwDPqcYV44gvJsNqC6o4PqwxMnL5fpTX7i  2
    So11111111111111111111111111111111111111112   14PebC766nXtXrj2eX1CfM5xhsoA4FnEBnt7Lvs4PjQb  3.0000015
    
    opened by tomoima525 0
  • add escrow section

    add escrow section

    Log for escrow

    $ yarn start:escrow
    yarn run v1.22.5
    $ ts-node -r dotenv/config client/escrow.ts
    extend borsh functionality to support serializing Pubkey
    Wallet path: /Users/tomoima525/.config/solana/id.json
    Start...
    Success { url: 'http://localhost:8899' }
    Connection to cluster established: http://localhost:8899 { 'feature-set': 660526986, 'solana-core': '1.7.10' }
    Program HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru is executable
    Prepare Initializer
    Created Initializer Mint 2fxKRdPCru3WAgDye7syAuiF9hVAeGSFaJ3vSwv5VHGj
    Prepare taker and airdrop some balance
    Created taker Mint 3egMMoe1Y5UCSgw3WXzH1GfznKfXYwn1Qy7G6FK6mAmh
    
    
    ============ starting escrow ===========
    
    Initializer: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
      sends 1 mint token
    Taker      : DT5KZmr5kux6bgw74atU1D7AnMvhgdfqtHFqX3RryHCb
      sends 3 mint token
    Created Associated Token Account for Taker DRT9ASUfg5oTJVmJ6VoUv8vGgshAK6AGWC3f8psWrQw1
    Created Associated Token Account for Initializer 69pKNuK1hHQ26ze9nQGVTUzXQii9gERv9iCHcmVTRrjm
    Create temp Account
    Create escrowToken
    Initialize Escrow
    Transaction confirmed. Signature 32hWMNLxhRDw2sbSDXFoXRcQH6EkmBe11gJFLaG1ofDxaRkmGs9teTyToEBbonmdaz44kEuPpaVQxDPqQtvBCmcj
    Account tempTokenAccount
     lamports:2039280
     owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
    Account EscrowAccount
     lamports:1621680
     owner: HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru
    escrowAccountPubkey: 6fAk3dDs23ecYmUPCDwEZcJ1tKHnhW6KJX7fQ5SDdHgc
        isInitialized: true
        initializerAccountPubkey: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
        XTokenTempAccountPubkey: 2DE8QT2rHeowb6mJY9nAnatUhJsJKJat4Wfr2FDS2b2h 
        initializerYTokenAccount: 69pKNuK1hHQ26ze9nQGVTUzXQii9gERv9iCHcmVTRrjm 
        expectedAmount: 3
    Create Taker Receive MintToken Account 2fxKRdPCru3WAgDye7syAuiF9hVAeGSFaJ3vSwv5VHGj
    Get Program Derived AccessToken: CqLScBF4tVZ58hppoZ5LeQvwkAz7YC5vSdaXLxY35NyN
    Exchange Escrow
    Transaction confirmed. Signature 46iYAjGS4DQmbkQvfjUsHjTsMUvUisSmm6RzqLNnetszJm3gqweJDNTYZ3t1iAHYrxnQ29s4XJWERCS3QgDHP2as
    Account EscrowAccount
     lamports:0
     owner: 
    ✨  Done in 7.81s.
    
    

    Checking result

    $ spl-token accounts -v  --owner EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv | grep 3egMMoe1Y5UCSgw3WXzH1GfznKfXYwn1Qy7G6FK6mAmh
    3egMMoe1Y5UCSgw3WXzH1GfznKfXYwn1Qy7G6FK6mAmh  69pKNuK1hHQ26ze9nQGVTUzXQii9gERv9iCHcmVTRrjm  3  
    $ spl-token accounts -v --owner DT5KZmr5kux6bgw74atU1D7AnMvhgdfqtHFqX3RryHCb | grep 2fxKRdPCru3WAgDye7syAuiF9hVAeGSFaJ3vSwv5VHGj
    2fxKRdPCru3WAgDye7syAuiF9hVAeGSFaJ3vSwv5VHGj  DRT9ASUfg5oTJVmJ6VoUv8vGgshAK6AGWC3f8psWrQw1  1
    
    opened by tomoima525 0
  • simulate init escrow

    simulate init escrow

    Simulate an initialization process of escrow

    $ yarn start
    yarn run v1.22.5
    $ ts-node -r dotenv/config client/main.ts
    extend borsh functionality to support serializing Pubkey
    Wallet path: /Users/tomoima525/.config/solana/id.json
    Start...
    Success { url: 'http://localhost:8899' }
    Connection to cluster established: http://localhost:8899 { 'feature-set': 660526986, 'solana-core': '1.7.10' }
    Program HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru is executable
    Retrieve Wallet
    payer EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
    Created taker and airdrop some balance 3000000000
    Create Mint Token Account
    Create Receiver MintToken Account
    Create temp Account
    Create escrowToken
    Initialize Escrow
    Transaction confirmed. Signature 3AjEKXGznSqv1dUAfpdgFbCJqexJqoZfhNnyuUUvktJFEfbkhMASTSAaHrKWEGEPkCF55U1JzxHAhYyTW96r9dTX
    Account tempTokenAccount
     lamports:2039280
     owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
    Account MintTokenAccount
     lamports:2039280
     owner: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
    Account EscrowAccount
     lamports:1621680
     owner: HiUeHUfAvcZJvwCAYPvWG7my2r3ZXGtvXUXrc8t7gBru
    Mint:BUBsgqvgTroDiZzymZw91mcADUZee1FSZDqkejHva1GR
     authority:EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
     amount:1
     isInitialized:true
    escrowAccountPubkey: 9HCbqCjL2QssrtCYomHGXTpF78UZrLF6hha2z1UrFBsh
        isInitialized: true
        initializerAccountPubkey: EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
        XTokenTempAccountPubkey: VgcLZYehQiMRQcXtLy3EnZQBkiBUdFrR8kqPFXawByu
        initializerYTokenAccount: 9bgWmw322wZVfEAMfLs8XCvkWdXnpZ33aCshSYK68JRX
        expectedAmount: 1
    ✨  Done in 5.96s.
    
    opened by tomoima525 0
  • view metadata from TypeScript

    view metadata from TypeScript

    Result

    $ yarn start
    yarn run v1.22.5
    $ ts-node client/main.ts
    ===extend
    Start...
    Success { url: 'http://localhost:8899' }
    Connection to cluster established: http://localhost:8899 { 'feature-set': 660526986, 'solana-core': '1.7.10' }
    Program jfPULhaqj5XC9nmjaUGY8Tjiso6pnjT61V7vkxHnB8L is executable
    Retrieve Wallet
    payer EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
    Start minting
    Minted. key: 6PVK3oXMJ7HH7CrtVuN48AHLoHDL2yYZsinBFPoYL2fj
     Authority EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv
    Data Data {
      name: 'TOMO',
      symbol: 'TEST',
      uri: '                                                                ',
      sellerFeeBasisPoints: 0,
      creators: null
    }
    Transaction confirmed. Signature 5RY12BWcR18ve4TCguFDNiS4ZNtwgDsT43QDfheYFDBx8rw3r3i9S7LfsEvqgNuTWe7rVAzFP8zi12M4vbJepbui
    ==== 8Fmk2ujPthtUEzrzBAx6N9HXtLExUf6xuknyLPPdf3HE
    This is MetadataV1
    Metadata Metadata {
      key: 4,
      updateAuthority: 'EHYPBLotx6i87L97patUvscUZSMjmxGWuec9XMkrtyGv',
      mint: '6PVK3oXMJ7HH7CrtVuN48AHLoHDL2yYZsinBFPoYL2fj',
      data: Data {
        name: 'TOMO',
        symbol: 'TEST',
        uri: '                                                                ',
        sellerFeeBasisPoints: 0,
        creators: undefined
      },
      primarySaleHappened: 0,
      isMutable: 1,
      editionNonce: undefined
    }
    ✨  Done in 3.99s.
    
    opened by tomoima525 0
  • add metadata creation from program

    add metadata creation from program

    Execution log on localnet

    Transaction executed in slot 91455:
      Signature: 3wBwWxraXdYWAhaY66mhyt2WN1a56peiTpAR9Nh4GDJ4n5R7w6QPzUbfmHgAPUrYoLeLT9ug731M9q3MNvujJ2nk
      Status: Ok
      Log Messages:
        Program 11111111111111111111111111111111 invoke [1]
        Program 11111111111111111111111111111111 success
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]
        Program log: Instruction: InitializeMint
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2279 of 200000 compute units
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success
    Transaction executed in slot 91456:
      Signature: 4RSy6yPPjV7xRS3XaLrcnmDEu7gft6ge9H2683WWri5FfqeH9WRykiaJ8vbJ7dcYJPVdpZjRqL2nXDvLGrBfZEY
      Status: Ok
      Log Messages:
        Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]
        Program log: Transfer 2039280 lamports to the associated token account
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program log: Allocate space for the associated token account
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program log: Assign the associated token account to the SPL Token program
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program log: Initialize the associated token account
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]
        Program log: Instruction: InitializeAccount
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 3412 of 182974 compute units
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success
        Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 21098 of 200000 compute units
        Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success
    Transaction executed in slot 91457:
      Signature: 3fZ9AWkSFKqRn82RxnFc3kjfkxBXc2bxwQv3pGNqj6xwbxo1iWjJJJS3zAVJh89jRoFrq15RqKmtoD5ndXUjgnxh
      Status: Ok
      Log Messages:
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]
        Program log: Instruction: MintTo
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2776 of 200000 compute units
        Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success
    Transaction executed in slot 91458:
      Signature: 4ephgHBBLmaLfUruS7qnwrX5BtyYb5ExCMbJGHy6bf787brMxKauSQz9ZZXWC9WWGcwgccCTWi1M7rFrFWwvbuPb
      Status: Ok
      Log Messages:
        Program zvM2Tuezszh9dJeHaBC6g1Ptjb3da3fB9DK4gLSd6Vf invoke [1]
        Program log: Instruction: Create Metadata Accounts
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program 11111111111111111111111111111111 invoke [2]
        Program 11111111111111111111111111111111 success
        Program zvM2Tuezszh9dJeHaBC6g1Ptjb3da3fB9DK4gLSd6Vf consumed 30661 of 200000 compute units
        Program zvM2Tuezszh9dJeHaBC6g1Ptjb3da3fB9DK4gLSd6Vf success
    
    
    opened by tomoima525 0
Owner
Tomoaki Imai
Mobile App Engineer (Android, ReactNative, iOS)
Tomoaki Imai
Demonstrates Solana data account versioning used in supporting the Solana Cookbook article: Account Data Versioning

versioning-solana This repo demonstrates ONE rudimentary way to upgrade/migrate account data changes with solana program changes. What is data version

Frank V. Castellucci 6 Sep 30, 2022
My attempt at learning Solana program (smart contract) development through RareSkill's Solana course.

60-days-of-solana My attempt at learning Solana program (smart contract) development through RareSkill's Solana course. Originally, I was trying to cr

Jasper 3 Feb 25, 2024
De-chained Ready-to-play ink! playground

DRink! Dechained Ready-to-play ink! playground drink.mp4 What is DRink? DRink! aims providing support for ink! developers. It comes in two parts: drin

Cardinal 9 Jun 23, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 8, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 9, 2023
Flashcards: A spaced repetition app designed around org files.

Flashcards Since it's easy to create notes in org-mode and difficult to create flashcards, this app tries to ease the process of making cards! For you

Shailesh Mishra 5 Jun 10, 2022
Ingraind - a security monitoring agent built around RedBPF for complex containerized environments and endpoints.

ingraind is a security monitoring agent built around RedBPF for complex containerized environments and endpoints. The ingraind agent uses eBPF probes to provide safe and performant instrumentation for any Linux-based environment.

KingoOo 5 Apr 6, 2022
⚓ Solana Sealevel Framework

Anchor ⚓ Anchor is a framework for Solana's Sealevel runtime providing several convenient developer tools. Rust eDSL for writing Solana programs IDL s

Project Serum 2.6k Jan 2, 2023
Metaplex is a protocol built on top of Solana that allows: Creating/Minting non-fungible tokens;

Metaplex is a protocol built on top of Solana that allows: Creating/Minting non-fungible tokens; Starting a variety of auctions for primary/secondary

Metaplex Foundation 3.2k Jan 4, 2023
⛏ An open protocol for launching liquidity mining programs on Solana.

⛏ Quarry An open protocol for launching liquidity mining programs on Solana. Background Quarry was built with the intention of helping more Solana pro

Quarry Protocol 207 Dec 19, 2022
A framework for creating PoC's for Solana Smart Contracts in a painless and intuitive way

Solana PoC Framework DISCLAIMER: any illegal usage of this framework is heavily discouraged. Most projects on Solana offer a more than generous bug bo

Neodyme 165 Dec 18, 2022
Generate Nice Solana Address By Template

Yes, I know about GPU generators. https://smith-mcf.medium.com/solana-vanity-address-using-gpus-5a68ad94d1d4 ./solana-nice-address --help solana-nice-

Kirill Fomichev 18 Jun 18, 2022
The Voting example based on MoonZoon and Solana + Anchor framework.

The Voting example based on MoonZoon and Solana + Anchor framework.

Martin Kavík 6 Aug 13, 2022
The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime.

Solana Program Library The Solana Program Library (SPL) is a collection of on-chain programs targeting the Sealevel parallel runtime. These programs a

null 6 Jun 12, 2022
Solana Escrow Program written by RUST.

Environment Setup Install Rust from https://rustup.rs/ Install Solana from https://docs.solana.com/cli/install-solana-cli-tools#use-solanas-install-to

Blockchain*Lover* 5 Mar 10, 2022
A suite of programs for Solana key management and security.

?? goki Goki is a suite of programs for Solana key management and security. It currently features: Goki Smart Wallet: A wallet loosely based on the Se

Goki Protocol 157 Dec 8, 2022
Testing a smart contract on the Solana blockchain

Environment Setup Install Rust from https://rustup.rs/ Install Solana from https://docs.solana.com/cli/install-solana-cli-tools#use-solanas-install-to

Maurice 1 Oct 25, 2021
Solana NFT generative artwork program

resin Solana NFT generative artwork program Installation Depends on imagemagick for art generation, which can be installed here: https://imagemagick.o

null 4 Jun 24, 2022
Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana (WIP) ⛏👷🚧⚠️

Solana BPF Boilerplate Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana This boilerplate provides the following. Si

ono 6 Jan 30, 2022