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 details)

Uploaded Source

Built Distributions

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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3 macOS 10.15+ x86-64

File details

Details for the file gscdk-0.7.10.tar.gz.

File metadata

  • Download URL: gscdk-0.7.10.tar.gz
  • Upload date:
  • Size: 77.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for gscdk-0.7.10.tar.gz
Algorithm Hash digest
SHA256 66a1bb47c370bf1fa9175b0f906b0cac0d50c5da7ab347ab1cb1a6ab26a0df70
MD5 347c9ea1c760614aec5513eba4c5a4f2
BLAKE2b-256 7f6df5ae0884e70d2ae70149585213d9e8bd0785666618a0e5cf91f0ff085603

See more details on using hashes here.

File details

Details for the file gscdk-0.7.10-py3-none-win_amd64.whl.

File metadata

  • Download URL: gscdk-0.7.10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 72.4 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for gscdk-0.7.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 67e2c3e149edb551d58f7a232f8553d6084c222919ebd62ef307aba1a7c7740e
MD5 d4770e604c4d037a59478aebcbb6102e
BLAKE2b-256 3b9b3709af908a2f8790bc3c933145cee6b57d5ed9732c719a4fcd24c239f6a9

See more details on using hashes here.

File details

Details for the file gscdk-0.7.10-py3-none-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for gscdk-0.7.10-py3-none-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1722cd5eccd1d8b6e7fce879bbdca59c05ab1504bfb5128a59cbf72e17eea29b
MD5 5d096c07bb542b2f52cf1249da2d2a0e
BLAKE2b-256 c7730dc2450c31fd1b3eec647c9d781cffab5582492924fcc734ab8e5d54313b

See more details on using hashes here.

File details

Details for the file gscdk-0.7.10-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gscdk-0.7.10-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7866803b5149069c10272d708f2a242721acf86bdc3e5867e315be70cecf7d49
MD5 c07c2edd0a1607329d037a0353ab8c8e
BLAKE2b-256 073ce8dcd36db851c5978985aa5e39371f89ceb949d7017357d618228c4ebc00

See more details on using hashes here.

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