Skip to content

Commit

Permalink
feat: init gh page docs
Browse files Browse the repository at this point in the history
  • Loading branch information
yihau committed Feb 28, 2022
1 parent a2edb0c commit 1a94545
Show file tree
Hide file tree
Showing 47 changed files with 6,656 additions and 147 deletions.
47 changes: 47 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: docs

on:
# trigger deployment on every push to main branch
push:
branches: [main]
# trigger deployment manually
workflow_dispatch:

jobs:
docs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
with:
# fetch all commits to get last updated time or other git log info
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v1
with:
# choose node.js version to use
node-version: "16"

# run build script
- name: install dependencies
working-directory: ./docs
run: npm install

# run build script
- name: Build VuePress site
working-directory: ./docs
run: npm run docs:build

# please check out the docs of the workflow for more details
# @see https://github.com/crazy-max/ghaction-github-pages
- name: Deploy to GitHub Pages
uses: crazy-max/ghaction-github-pages@v2
with:
# deploy to gh-pages branch
target_branch: gh-pages
# deploy the default output dir of VuePress
build_dir: docs/src/.vuepress/dist
env:
# @see https://docs.github.com/en/actions/reference/authentication-in-a-workflow#about-the-github_token-secret
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
.temp
.cache
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
55 changes: 55 additions & 0 deletions docs/_examples/program/system/transfer/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package main

import (
"context"
"log"

"github.com/portto/solana-go-sdk/client"
"github.com/portto/solana-go-sdk/common"
"github.com/portto/solana-go-sdk/program/sysprog"
"github.com/portto/solana-go-sdk/rpc"
"github.com/portto/solana-go-sdk/types"
)

// FUarP2p5EnxD66vVDL4PWRoWMzA56ZVHG24hpEDFShEz
var feePayer, _ = types.AccountFromBase58("4TMFNY9ntAn3CHzguSAvDNLPRoQTaK3sWbQQXdDXaE6KWRBLufGL6PJdsD2koiEe3gGmMdRK3aAw7sikGNksHJrN")

// 9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde
var alice, _ = types.AccountFromBase58("4voSPg3tYuWbKzimpQK9EbXHmuyy5fUrtXvpLDMLkmY6TRncaTHAKGD8jUg3maB5Jbrd9CkQg4qjJMyN6sQvnEF2")

func main() {
c := client.NewClient(rpc.DevnetRPCEndpoint)

// to fetch recent blockhash
recentBlockhashResponse, err := c.GetRecentBlockhash(context.Background())
if err != nil {
log.Fatalf("failed to get recent blockhash, err: %v", err)
}

// create a transfer tx
tx, err := types.NewTransaction(types.NewTransactionParam{
Signers: []types.Account{feePayer, alice},
Message: types.NewMessage(types.NewMessageParam{
FeePayer: feePayer.PublicKey,
RecentBlockhash: recentBlockhashResponse.Blockhash,
Instructions: []types.Instruction{
sysprog.Transfer(sysprog.TransferParam{
From: alice.PublicKey,
To: common.PublicKeyFromString("2xNweLHLqrbx4zo1waDvgWJHgsUpPj8Y8icbAFeR4a8i"),
Amount: 1e8, // 0.1 SOL
}),
},
}),
})
if err != nil {
log.Fatalf("failed to new a transaction, err: %v", err)
}

// send tx
txhash, err := c.SendTransaction(context.Background(), tx)
if err != nil {
log.Fatalf("failed to send tx, err: %v", err)
}

log.Println("txhash:", txhash)
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import (
)

func main() {
c := client.NewClient(rpc.LocalnetRPCEndpoint)
c := client.NewClient(rpc.DevnetRPCEndpoint)
balance, err := c.GetBalance(
context.Background(),
"RNfp4xTbBb4C3kcv2KqtAj8mu4YhMHxqm1Skg9uchZ7",
context.TODO(),
"9qeP9DmjXAmKQc4wy133XZrQ3Fo4ejsYteA7X4YFJ3an",
)
if err != nil {
log.Fatalln("get balance error", err)
log.Fatalf("failed to request airdrop, err: %v", err)
}
fmt.Println(balance)
}
23 changes: 23 additions & 0 deletions docs/_examples/rpc/request-airdrop/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package main

import (
"context"
"fmt"
"log"

"github.com/portto/solana-go-sdk/client"
"github.com/portto/solana-go-sdk/rpc"
)

func main() {
c := client.NewClient(rpc.DevnetRPCEndpoint)
sig, err := c.RequestAirdrop(
context.TODO(),
"9qeP9DmjXAmKQc4wy133XZrQ3Fo4ejsYteA7X4YFJ3an", // address
1e9, // lamports (1 SOL = 10^9 lamports)
)
if err != nil {
log.Fatalf("failed to request airdrop, err: %v", err)
}
fmt.Println(sig)
}
77 changes: 77 additions & 0 deletions docs/_examples/tour/create-account/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package main

import (
"fmt"

"github.com/mr-tron/base58"
"github.com/portto/solana-go-sdk/pkg/hdwallet"
"github.com/portto/solana-go-sdk/types"
"github.com/tyler-smith/go-bip39"
)

func main() {
// create a new account
{
account := types.NewAccount()
fmt.Println(account.PublicKey.ToBase58())
fmt.Println(base58.Encode(account.PrivateKey))
}

// from a base58 pirvate key
{
account, _ := types.AccountFromBase58("28WJTTqMuurAfz6yqeTrFMXeFd91uzi9i1AW6F5KyHQDS9siXb8TquAuatvLuCEYdggyeiNKLAUr3w7Czmmf2Rav")
fmt.Println(account.PublicKey.ToBase58())
}

// from a private key bytes
{
account, _ := types.AccountFromBytes([]byte{
56, 125, 59, 118, 230, 173, 152, 169, 197, 34,
168, 187, 217, 160, 119, 204, 124, 69, 52, 136,
214, 49, 207, 234, 79, 70, 83, 224, 1, 224, 36,
247, 131, 83, 164, 85, 139, 215, 183, 148, 79,
198, 74, 93, 156, 157, 208, 99, 221, 127, 51,
156, 43, 196, 101, 144, 104, 252, 221, 108,
245, 104, 13, 151,
})
fmt.Println(account.PublicKey.ToBase58())
}

// from bip 39 (solana cli tool)
{
mnemonic := "pill tomorrow foster begin walnut borrow virtual kick shift mutual shoe scatter"
seed := bip39.NewSeed(mnemonic, "") // (mnemonic, password)
account, _ := types.AccountFromSeed(seed[:32])
fmt.Println(account.PublicKey.ToBase58())
}

// from bip 44 (phantom)
{
mnemonic := "neither lonely flavor argue grass remind eye tag avocado spot unusual intact"
seed := bip39.NewSeed(mnemonic, "") // (mnemonic, password)
path := `m/44'/501'/0'/0'`
derivedKey, _ := hdwallet.Derived(path, seed)
account, _ := types.AccountFromSeed(derivedKey.PrivateKey)
fmt.Printf("%v => %v\n", path, account.PublicKey.ToBase58())

// others
for i := 1; i < 10; i++ {
path := fmt.Sprintf(`m/44'/501'/%d'/0'`, i)
derivedKey, _ := hdwallet.Derived(path, seed)
account, _ := types.AccountFromSeed(derivedKey.PrivateKey)
fmt.Printf("%v => %v\n", path, account.PublicKey.ToBase58())
}
/*
m/44'/501'/0'/0' => 5vftMkHL72JaJG6ExQfGAsT2uGVHpRR7oTNUPMs68Y2N
m/44'/501'/1'/0' => GcXbfQ5yY3uxCyBNDPBbR5FjumHf89E7YHXuULfGDBBv
m/44'/501'/2'/0' => 7QPgyQwNLqnoSwHEuK8wKy2Y3Ani6EHoZRihTuWkwxbc
m/44'/501'/3'/0' => 5aE8UprEEWtpVskhxo3f8ETco2kVKiZT9SS3D5Lcg8s2
m/44'/501'/4'/0' => 5n6afo6LZmzH1J4R38ZCaNSwaztLjd48nWwToLQkCHxp
m/44'/501'/5'/0' => 2Gr1hWnbaqGXMghicSTHncqV7GVLLddNFJDC7YJoso8M
m/44'/501'/6'/0' => BNMDY3tCyYbayMzBjZm8RW59unpDWcQRfVmWXCJhLb7D
m/44'/501'/7'/0' => 9CySTpi4iC85gMW6G4BMoYbNBsdyJrfseHoGmViLha63
m/44'/501'/8'/0' => ApteF7PmUWS8Lzm6tJPkWgrxSFW5LwYGWCUJ2ByAec91
m/44'/501'/9'/0' => 6frdqXQAgJMyKwmZxkLYbdGjnYTvUceh6LNhkQt2siQp
*/
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,16 @@ import (
"github.com/portto/solana-go-sdk/types"
)

var feePayer, _ = types.AccountFromBytes([]byte{178, 244, 76, 4, 247, 41, 113, 40, 111, 103, 12, 76, 195, 4, 100, 123, 88, 226, 37, 56, 209, 180, 92, 77, 39, 85, 78, 202, 121, 162, 88, 29, 125, 155, 223, 107, 139, 223, 229, 82, 89, 209, 27, 43, 108, 205, 144, 2, 74, 159, 215, 57, 198, 4, 193, 36, 161, 50, 160, 119, 89, 240, 102, 184})
// FUarP2p5EnxD66vVDL4PWRoWMzA56ZVHG24hpEDFShEz
var feePayer, _ = types.AccountFromBase58("4TMFNY9ntAn3CHzguSAvDNLPRoQTaK3sWbQQXdDXaE6KWRBLufGL6PJdsD2koiEe3gGmMdRK3aAw7sikGNksHJrN")

var alice, _ = types.AccountFromBytes([]byte{196, 114, 86, 165, 59, 177, 63, 87, 43, 10, 176, 101, 225, 42, 129, 158, 167, 43, 81, 214, 254, 28, 196, 158, 159, 64, 55, 123, 48, 211, 78, 166, 127, 96, 107, 250, 152, 133, 208, 224, 73, 251, 113, 151, 128, 139, 86, 80, 101, 70, 138, 50, 141, 153, 218, 110, 56, 39, 122, 181, 120, 55, 86, 185})
// 9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde
var alice, _ = types.AccountFromBase58("4voSPg3tYuWbKzimpQK9EbXHmuyy5fUrtXvpLDMLkmY6TRncaTHAKGD8jUg3maB5Jbrd9CkQg4qjJMyN6sQvnEF2")

var mintPubkey = common.PublicKeyFromString("29oPCpWj6QiXEipwtmXPrDJAR2P29Z6wHKpHRxEsbnSr")
var mintPubkey = common.PublicKeyFromString("F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo")

func main() {
c := client.NewClient(rpc.LocalnetRPCEndpoint)
c := client.NewClient(rpc.DevnetRPCEndpoint)

ata, _, err := common.FindAssociatedTokenAddress(alice.PublicKey, mintPubkey)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,20 @@ import (
"github.com/portto/solana-go-sdk/types"
)

var feePayer, _ = types.AccountFromBytes([]byte{178, 244, 76, 4, 247, 41, 113, 40, 111, 103, 12, 76, 195, 4, 100, 123, 88, 226, 37, 56, 209, 180, 92, 77, 39, 85, 78, 202, 121, 162, 88, 29, 125, 155, 223, 107, 139, 223, 229, 82, 89, 209, 27, 43, 108, 205, 144, 2, 74, 159, 215, 57, 198, 4, 193, 36, 161, 50, 160, 119, 89, 240, 102, 184})
// FUarP2p5EnxD66vVDL4PWRoWMzA56ZVHG24hpEDFShEz
var feePayer, _ = types.AccountFromBase58("4TMFNY9ntAn3CHzguSAvDNLPRoQTaK3sWbQQXdDXaE6KWRBLufGL6PJdsD2koiEe3gGmMdRK3aAw7sikGNksHJrN")

var alice, _ = types.AccountFromBytes([]byte{196, 114, 86, 165, 59, 177, 63, 87, 43, 10, 176, 101, 225, 42, 129, 158, 167, 43, 81, 214, 254, 28, 196, 158, 159, 64, 55, 123, 48, 211, 78, 166, 127, 96, 107, 250, 152, 133, 208, 224, 73, 251, 113, 151, 128, 139, 86, 80, 101, 70, 138, 50, 141, 153, 218, 110, 56, 39, 122, 181, 120, 55, 86, 185})
// 9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde
var alice, _ = types.AccountFromBase58("4voSPg3tYuWbKzimpQK9EbXHmuyy5fUrtXvpLDMLkmY6TRncaTHAKGD8jUg3maB5Jbrd9CkQg4qjJMyN6sQvnEF2")

func main() {
c := client.NewClient(rpc.LocalnetRPCEndpoint)
c := client.NewClient(rpc.DevnetRPCEndpoint)

// create an mint account
mint := types.NewAccount()
fmt.Println("mint:", mint.PublicKey.ToBase58())

// get init balance
// get rent
rentExemptionBalance, err := c.GetMinimumBalanceForRentExemption(
context.Background(),
tokenprog.MintAccountSize,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,19 @@ import (
"github.com/portto/solana-go-sdk/types"
)

var feePayer, _ = types.AccountFromBytes([]byte{178, 244, 76, 4, 247, 41, 113, 40, 111, 103, 12, 76, 195, 4, 100, 123, 88, 226, 37, 56, 209, 180, 92, 77, 39, 85, 78, 202, 121, 162, 88, 29, 125, 155, 223, 107, 139, 223, 229, 82, 89, 209, 27, 43, 108, 205, 144, 2, 74, 159, 215, 57, 198, 4, 193, 36, 161, 50, 160, 119, 89, 240, 102, 184})
// FUarP2p5EnxD66vVDL4PWRoWMzA56ZVHG24hpEDFShEz
var feePayer, _ = types.AccountFromBase58("4TMFNY9ntAn3CHzguSAvDNLPRoQTaK3sWbQQXdDXaE6KWRBLufGL6PJdsD2koiEe3gGmMdRK3aAw7sikGNksHJrN")

var alice, _ = types.AccountFromBytes([]byte{196, 114, 86, 165, 59, 177, 63, 87, 43, 10, 176, 101, 225, 42, 129, 158, 167, 43, 81, 214, 254, 28, 196, 158, 159, 64, 55, 123, 48, 211, 78, 166, 127, 96, 107, 250, 152, 133, 208, 224, 73, 251, 113, 151, 128, 139, 86, 80, 101, 70, 138, 50, 141, 153, 218, 110, 56, 39, 122, 181, 120, 55, 86, 185})
// 9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde
var alice, _ = types.AccountFromBase58("4voSPg3tYuWbKzimpQK9EbXHmuyy5fUrtXvpLDMLkmY6TRncaTHAKGD8jUg3maB5Jbrd9CkQg4qjJMyN6sQvnEF2")

var mintPubkey = common.PublicKeyFromString("29oPCpWj6QiXEipwtmXPrDJAR2P29Z6wHKpHRxEsbnSr")
var mintPubkey = common.PublicKeyFromString("F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo")

func main() {
c := client.NewClient(rpc.LocalnetRPCEndpoint)
c := client.NewClient(rpc.DevnetRPCEndpoint)

aliceTokenAccount := types.NewAccount()
fmt.Println("alice token account:", aliceTokenAccount.PublicKey.ToBase58())
aliceRandomTokenAccount := types.NewAccount()
fmt.Println("alice token account:", aliceRandomTokenAccount.PublicKey.ToBase58())

rentExemptionBalance, err := c.GetMinimumBalanceForRentExemption(context.Background(), tokenprog.TokenAccountSize)
if err != nil {
Expand All @@ -41,19 +43,19 @@ func main() {
Instructions: []types.Instruction{
sysprog.CreateAccount(sysprog.CreateAccountParam{
From: feePayer.PublicKey,
New: aliceTokenAccount.PublicKey,
New: aliceRandomTokenAccount.PublicKey,
Owner: common.TokenProgramID,
Lamports: rentExemptionBalance,
Space: tokenprog.TokenAccountSize,
}),
tokenprog.InitializeAccount(tokenprog.InitializeAccountParam{
Account: aliceTokenAccount.PublicKey,
Account: aliceRandomTokenAccount.PublicKey,
Mint: mintPubkey,
Owner: alice.PublicKey,
}),
},
}),
Signers: []types.Account{feePayer, aliceTokenAccount},
Signers: []types.Account{feePayer, aliceRandomTokenAccount},
})
if err != nil {
log.Fatalf("generate tx error, err: %v\n", err)
Expand Down
31 changes: 31 additions & 0 deletions docs/_examples/tour/get-mint/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package main

import (
"context"
"fmt"
"log"

"github.com/portto/solana-go-sdk/client"
"github.com/portto/solana-go-sdk/common"
"github.com/portto/solana-go-sdk/program/tokenprog"
"github.com/portto/solana-go-sdk/rpc"
)

var mintPubkey = common.PublicKeyFromString("F6tecPzBMF47yJ2EN6j2aGtE68yR5jehXcZYVZa6ZETo")

func main() {
c := client.NewClient(rpc.DevnetRPCEndpoint)

getAccountInfoResponse, err := c.GetAccountInfo(context.TODO(), mintPubkey.ToBase58())
if err != nil {
log.Fatalf("failed to get account info, err: %v", err)
}

mintAccount, err := tokenprog.MintAccountFromData(getAccountInfoResponse.Data)
if err != nil {
log.Fatalf("failed to parse data to a mint account, err: %v", err)
}

fmt.Printf("%+v\n", mintAccount)
// {MintAuthority:9aE476sH92Vz7DMPyq5WLPkrKWivxeuTKEFKd2sZZcde Supply:0 Decimals:8 IsInitialized:true FreezeAuthority:<nil>}
}
22 changes: 22 additions & 0 deletions docs/_examples/tour/get-sol-balance/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"context"
"fmt"
"log"

"github.com/portto/solana-go-sdk/client"
"github.com/portto/solana-go-sdk/rpc"
)

func main() {
c := client.NewClient(rpc.DevnetRPCEndpoint)
balance, err := c.GetBalance(
context.TODO(),
"9qeP9DmjXAmKQc4wy133XZrQ3Fo4ejsYteA7X4YFJ3an",
)
if err != nil {
log.Fatalf("failed to request airdrop, err: %v", err)
}
fmt.Println(balance)
}
Loading

0 comments on commit 1a94545

Please sign in to comment.