Skip to main content

Go Smart Contract Development Kit

Project description

Go Smart Contracts Development Kit (GSCDK)

PyPi Version PyPi Downloads

Overview

The Go Smart Contracts Development Kit (GSCDK) provides a comprehensive toolkit for creating, building, and debugging Go-based smart contracts.

Example of a Go Smart Contract

Here is an example of what a Go Smart Contract looks like using GSCDK:

package main

import (
	"github.com/uuosio/chain"
)

//table mytable
type MyData struct {
	primary uint64 //primary
	name    string
}

//contract mycontract
type MyContract struct {
	Receiver      chain.Name
	FirstReceiver chain.Name
	Action        chain.Name
}

func NewContract(receiver, firstReceiver, action chain.Name) *MyContract {
	return &MyContract{receiver, firstReceiver, action}
}

//action sayhello
func (c *MyContract) SayHello(name string) {
	code := c.Receiver
	payer := c.Receiver
	mydb := NewMyDataDB(code)
	primary := uint64(111)
	if it, data := mydb.GetByKey(primary); it.IsOk() {
		if data.name != name {
			chain.Println("Welcome new friend:", name)
		} else {
			chain.Println("Welcome old friend", name)
		}
		data.name = name
		mydb.Update(it, data, payer)
	} else {
		chain.Println("Welcome new friend", name)
		data := &MyData{primary, name}
		mydb.Store(data, payer)
	}
}

Quick Start

Jump right into building your first smart contract with our Quick Start Guide.

Installation

To install GSCDK, run the following command:

For Unix-based platforms (like Linux or macOS):

python3 -m pip install gscdk

For Windows:

python -m pip install gscdk

Upgrading GSCDK

If you've previously installed GSCDK and want to upgrade to the latest version, use the following command:

For Unix-based platforms:

python3 -m pip install --upgrade gscdk

For Windows:

python -m pip install --upgrade gscdk

Building Go Smart Contracts Compiler

To build the tinygo command that supports building Go Smart Contracts, follow the instructions in Building. Once built, add the tinygo command to your PATH:

export PATH=$(pwd)/compiler/build:$PATH

Using go-contract

go-contract is a powerful tool for managing your smart contract projects. Learn more about its features below:

Initializing a Project

Use the "init" command to initialize a project with a specific contract name:

go-contract init mycontract
cd mycontract

Generating ABI and Extra Code

Use the "gencode" command to generate ABI and extra code for smart contracts:

go-contract gencode

Note: Code generation is also the default option for the "build" command.

Building Your Project

To compile the source code of your project, use the "build" command:

go-contract build

To disable code generation during the build process, use the -gen-code=false flag:

go-contract build -gen-code=false

To disable code optimization, use the -d or --debug option:

go-contract build -d

Debugging

Before debugging, install ipyeos:

python3 -m pip install ipyeos

To update to a new version, use the following command:

python3 -m pip install -U ipyeos

Then run the debugging server:

eosdebugger

On Windows, use a Docker image to run a debugging server.

First, pull ipyeos docker image:

docker pull ghcr.io/uuosio/ipyeos:latest

then start a debugging server from docker:

docker run -it --rm -p 9090:9090 -p 9092:9092 -t ghcr.io/uuosio/ipyeos

Here's a sneak peek of the debugger in action:

Debugging

Code Coverage Analysis

To generate a code coverage report in HTML, follow these steps:

  1. Build your project:
go-contract build
  1. Generate a coverage report:
TEST_COVERAGE=1 go test -coverprofile=coverage.out
  1. Create an HTML report from the coverage data:
go tool cover -html=coverage.out

Here's an example of what the code coverage report looks like:

Code Coverage

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gscdk-0.7.10.tar.gz (77.8 MB view hashes)

Uploaded Source

Built Distributions

gscdk-0.7.10-py3-none-win_amd64.whl (72.4 MB view hashes)

Uploaded Python 3 Windows x86-64

gscdk-0.7.10-py3-none-manylinux1_x86_64.whl (83.2 MB view hashes)

Uploaded Python 3

gscdk-0.7.10-py3-none-macosx_10_15_x86_64.whl (66.0 MB view hashes)

Uploaded Python 3 macOS 10.15+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page