1 unstable release

0.1.0 Jun 6, 2024

#58 in #anchor

MIT license

120KB
3K SLoC

PitchTalk Solana Contract

This is a PitchTalk contract for Solana blockchain.

Program

Dependencies

To install everything you need to work with this project, you'll need to install dependencies as described in Anchor documentation.

Build contract

The source code of pitchtalk program is in ./programs/pitchtalk-solana. To build the pitchtalk-solana program, you need to execute this command:


anchor build

You'll get the following output:

  • program binaries at ./target/deploy/pitchtalk_solana.so
  • IDL file at ./target/idl/pitchtalk_solana.json
  • Typescript typings at ./target/types/pitchtalk_solana.ts

Deploy

To deploy the program, run this command:


anchor deploy \
    --provider.cluster $ANCHOR_PROVIDER_URL \
    --program-keypair $KEYPAIR \
    --program-name pitchtalk_solana \
    --provider.wallet $ANCHOR_WALLET

Run scripts

Before start setup env file with corresponding variables:

  • ANCHOR_PROVIDER_URL - url of solana rpc
  • ANCHOR_WALLET - path to wallet to sign transactions
  • PITCHTALK_PROGRAM_ID - public key of PitchTalk program
  • KEYPAIR - PitchTalk program account keypair

Available scripts:

  1. To initialize contract state run:
npm run initialize-state <DONATION_FEE> <GRANT_FEE> <INVESTMENT_FEE> <EVENT_FEE>
  1. To update contract state run:
npm run update-state <DONATION_FEE> <GRANT_FEE> <INVESTMENT_FEE> <EVENT_FEE>
  1. To create admin run:
npm run create-admin <ID> <ACCOUNT> <NAME>
  1. To update admin run:
npm run update-admin <ID> <ACCOUNT> <NAME>
  1. To remove admin run:
npm run remove-admin <ID>
  1. To add whitelist token run:
npm run add-whitelist-token <ADMIN_ID> <MINT> <DECIMALS> <AUTHORITY_ADDRESS>

Run tests

To test the pitchtalk-solana program, you need to execute this command:


./tests/test_script.sh

This command starts a local validator, sets up the program on chain and runs a suite of Jest tests against it.


Typescript client

The Javascript/Typescript client for this program.

It's published by this command:

npm publish

Please view the test suite (./tests/**.spec.ts) to see how can this client be used in NodeJS context.

Basic usage example

import { Connection, PublicKey } from "@solana/web3.js";
import { Provider } from "@coral-xyz/anchor";
import { PitchTalkProgram } from "@pitchtalk/pitchtalk-solana-cli";

// Setup web3 Connection
const connection = new Connection("https://api.mainnet-beta.solana.com");

// Use Phantom wallet provider
const wallet = window.solana;

// Setup Anchor provider
const provider = new Provider(connection, wallet as any);

// pitchtalk program ID is a well-known public key
const program = new PitchTalkProgram(
  new web3.PublicKey(PITCH_TALK_ID),
  provider
);

Dependencies

~19–27MB
~478K SLoC