Skip to content

Commit

Permalink
Go-SDK aligning with other SDK (#651)
Browse files Browse the repository at this point in the history
* add go-sdk and update related examples

* rewrite sdk and make user usability easier

* add rpc calls and kate RPC examples

* add better logging and parsing of events

* rm unnecessary lines

* add: more chain,authoruser RPCs

* add helper docs and minor fmt changes

* fix docs

* fix wrong logs && chg folder names

* doc fix

* update docs
  • Loading branch information
kroos47 authored Sep 18, 2024
1 parent 383fb72 commit ab93908
Show file tree
Hide file tree
Showing 65 changed files with 4,630 additions and 2,291 deletions.
991 changes: 991 additions & 0 deletions avail-go/examples/README.md

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions avail-go/examples/balance_allow_death/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"
"avail-go-sdk/src/sdk/types"
"math"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
WaitFor := sdk.BlockInclusion

amount := uint64(math.Pow(10, 18)) * 10 // send amount 10 AVAIL
dest := "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty"
bondAmountUCompact := types.NewUCompactFromUInt(amount)
BlockHash, txHash, err := tx.TransferAllowDeath(api, config.Seed, WaitFor, dest, bondAmountUCompact)
if err != nil {
fmt.Printf("cannot submit Transaction:%v", err)
}
fmt.Printf("Transaction submitted successfully with block hash: %v\n and ext hash:%v", BlockHash.Hex(), txHash.Hex())
sdk.EventParser(api, BlockHash, "BalanceTransfer")
}
28 changes: 28 additions & 0 deletions avail-go/examples/balance_transfer_all/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
WaitFor := sdk.BlockInclusion

dest := "5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY"
BlockHash, txHash, err := tx.TransferAll(api, config.Seed, WaitFor, dest)
if err != nil {
fmt.Printf("cannot submit Transaction:%v", err)
}
fmt.Printf("Transaction submitted successfully with block hash: %v\n and ext hash:%v", BlockHash.Hex(), txHash.Hex())
}
33 changes: 33 additions & 0 deletions avail-go/examples/balances_keep_alive/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"
"avail-go-sdk/src/sdk/types"
"math"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
WaitFor := sdk.BlockInclusion

amount := uint64(math.Pow(10, 18)) * 10 // send amount 10 AVAIL
dest := "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty"
bondAmountUCompact := types.NewUCompactFromUInt(amount)
BlockHash, txHash, err := tx.TransferKeepAlive(api, config.Seed, WaitFor, dest, bondAmountUCompact)
if err != nil {
fmt.Printf("cannot submit Transaction:%v", err)
}
fmt.Printf("Transaction submitted successfully with block hash: %v\n and ext hash:%v", BlockHash.Hex(), txHash.Hex())
sdk.EventParser(api, BlockHash, "BalanceTransfer")
}
File renamed without changes.
28 changes: 6 additions & 22 deletions examples/go/connect/main.go → avail-go/examples/connect/main.go
Original file line number Diff line number Diff line change
@@ -1,36 +1,20 @@
package main

import (
"avail-gsrpc-examples/internal/config"
"flag"
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"fmt"
"log"
"os"

gsrpc "github.com/centrifuge/go-substrate-rpc-client/v4"
)

// The following example shows how to connect to a node and display some basic information.
func main() {
var configJSON string
var config config.Config

flag.StringVar(&configJSON, "config", "", "config json file")
flag.Parse()

if configJSON == "" {
log.Println("No config file provided. Exiting...")
os.Exit(0)
}

err := config.GetConfig(configJSON)
config, err := config.LoadConfig()
if err != nil {
panic(fmt.Sprintf("cannot get config:%v", err))
fmt.Printf("cannot load config:%v", err)
}

api, err := gsrpc.NewSubstrateAPI(config.ApiURL)
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
panic(fmt.Sprintf("cannot create api client:%v", err))
fmt.Printf("cannot create api:%v", err)
}
chain, err := api.RPC.System.Chain()
if err != nil {
Expand Down
29 changes: 29 additions & 0 deletions avail-go/examples/da_create_application_key/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}

fmt.Println("Submitting data ...")
WaitFor := sdk.BlockInclusion
blockHash, txHash, err := tx.CreateApplicationKey(api, config.Seed, "my happyyy", WaitFor)
if err != nil {
fmt.Printf("cannot create application key:%v", err)
}
fmt.Printf("Application key created successfully with block hash: %v\n and ext hash:%v\n", blockHash.Hex(), txHash.Hex())
sdk.EventParser(api, blockHash, "ApplicationKeyCreated")
}
36 changes: 36 additions & 0 deletions avail-go/examples/da_data_submit/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}

appID := 0

// if app id is greater than 0 then it must be created before submitting data
if config.AppID != 0 {
appID = config.AppID
}
fmt.Println("Submitting data ...")
WaitFor := sdk.BlockInclusion

// submit data
BlockHash, txHash, err := tx.SubmitData(api, config.Seed, appID, "my happy data", WaitFor)
if err != nil {
fmt.Printf("cannot submit data:%v", err)
}
fmt.Printf("Data submitted successfully with block hash: %v\n and ext hash:%v", BlockHash.Hex(), txHash.Hex())
}
36 changes: 36 additions & 0 deletions avail-go/examples/da_data_submit_watch/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}

appID := 0

// if app id is greater than 0 then it must be created before submitting data
if config.AppID != 0 {
appID = config.AppID
}
fmt.Println("Submitting data ...")
WaitFor := sdk.BlockFinalization
// submit data
blockHash, txHash, err := tx.SubmitData(api, config.Seed, appID, "my happy data", WaitFor)
if err != nil {
fmt.Printf("cannot submit data:%v", err)
}
fmt.Printf("Data submitted successfully with block hash: %v\n and ext hash:%v\n", blockHash.Hex(), txHash.Hex())
sdk.EventParser(api, blockHash, "DataSubmitted")
}
30 changes: 30 additions & 0 deletions avail-go/examples/da_set_application_key/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
fmt.Println("Submitting data ...")
WaitFor := sdk.BlockInclusion
newKey := "newKey"
oldKey := "oldKey"
blockHash, txHash, err := tx.SetApplicationKey(api, config.Seed, WaitFor, oldKey, newKey)
if err != nil {
fmt.Printf("cannot set key:%v", err)
}
fmt.Printf("Application Key updated successfully with block hash: %v\n and ext hash:%v\n", blockHash.Hex(), txHash.Hex())
sdk.EventParser(api, blockHash, "ApplicationKeySet")
}
30 changes: 30 additions & 0 deletions avail-go/examples/da_submit_block_length/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}

fmt.Println("Submitting data ...")
WaitFor := sdk.BlockInclusion
rows := uint32(128)
cols := uint32(128)
blockHash, txHash, err := tx.SubmitBlockLength(api, config.Seed, WaitFor, rows, cols)
if err != nil {
fmt.Printf("cannot submit block length:%v", err)
}
fmt.Printf("Block Length updated successfully with block hash: %v\n and ext hash:%v\n", blockHash.Hex(), txHash.Hex())
}
41 changes: 41 additions & 0 deletions avail-go/examples/da_submit_data_fee_modifier/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"avail-go-sdk/src/sdk/tx"
"math/big"

"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
tenPow18 := new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil)

weightMaximumFee := sdk.NewU128(tenPow18)
weightFeeDivider := sdk.NewU32(20)
weightFeeMultiplier := sdk.NewU32(1)

// Create the DispatchFeeModifier
modifier := sdk.DispatchFeeModifier{
WeightMaximumFee: weightMaximumFee,
WeightFeeDivider: weightFeeDivider,
WeightFeeMultiplier: weightFeeMultiplier,
}
fmt.Println("Submitting data ...")
WaitFor := sdk.BlockInclusion
blockHash, txHash, err := tx.SetSubmitDataFeeModifier(api, config.Seed, WaitFor, modifier)
if err != nil {
fmt.Printf("cannot update DA fee:%v", err)
}
fmt.Printf("Data Fee modified successfully with block hash: %v\n and ext hash:%v\n", blockHash.Hex(), txHash.Hex())

}
19 changes: 19 additions & 0 deletions avail-go/examples/existential/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package main

import (
"avail-go-sdk/src/config"
"avail-go-sdk/src/sdk"
"fmt"
)

func main() {
config, err := config.LoadConfig()
if err != nil {
fmt.Printf("cannot load config:%v", err)
}
api, err := sdk.NewSDK(config.ApiURL)
if err != nil {
fmt.Printf("cannot create api:%v", err)
}
sdk.ExistentialDeposit(api)
}
Loading

0 comments on commit ab93908

Please sign in to comment.