cardanogo

package module
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2022 License: GPL-3.0 Imports: 0 Imported by: 17

README

cardano-go

cardano-go is a library for creating go applicactions that interact with the Cardano Blockchain. [WIP]

Installation

$ go get github.com/echovl/cardano-node
$ go get github.com/echovl/cardano-node/node
$ go get github.com/echovl/cardano-node/tx

Usage

Get protocol parameters
package main

import (
	"fmt"

	"github.com/echovl/cardano-go/node/blockfrost"
	"github.com/echovl/cardano-go/types"
)

func main() {
	node := blockfrost.NewNode(types.Mainnet, "project-id")

	pparams, err := node.ProtocolParams()
	if err != nil {
		panic(err)
	}

	fmt.Println(pparams)
}
Create simple transaction
package main

import (
	"fmt"

	"github.com/echovl/cardano-go/tx"
	"github.com/echovl/cardano-go/types"
)

func main() {
	txBuilder := tx.NewTxBuilder(&tx.ProtocolParams{})

	txInput, err := tx.NewTxInput("txhash", 0, types.Coin(2000000))
	if err != nil {
		panic(err)
	}
	txOut, err := tx.NewTxOutput("addr", types.Coin(1300000))
	if err != nil {
		panic(err)
	}

	txBuilder.AddInputs(txInput)
	txBuilder.AddOutputs(txOut)
	txBuilder.SetTTL(100000)
	txBuilder.SetFee(types.Coin(160000))
	txBuilder.Sign("xprv")

	tx, err := txBuilder.Build()
	if err != nil {
		panic(err)
	}

	fmt.Println(tx.Hex())
}
Set fee and change output
package main

import (
	"fmt"

	"github.com/echovl/cardano-go/tx"
)

func main() {
	txBuilder := tx.NewTxBuilder(&tx.ProtocolParams{})

	// Transaction should be signed at this point
	err := txBuilder.AddChangeIfNeeded("addr")
	if err != nil {
		panic(err)
	}
}
Submit transaction
package main

import (
	"fmt"

	"github.com/echovl/cardano-go/node/blockfrost"
	"github.com/echovl/cardano-go/tx"
	"github.com/echovl/cardano-go/types"
)

func main() {
	node := blockfrost.NewNode(types.Mainnet, "project-id")

	txHash, err := node.SubmitTx(&tx.Tx{})
	if err != nil {
		panic(err)
	}

	fmt.Println(txHash)
}
Add transaction metadata
package main

import (
	"github.com/echovl/cardano-go/tx"
)

func main() {
	txBuilder := tx.NewTxBuilder(&tx.ProtocolParams{})

	txBuilder.AddAuxiliaryData(&tx.AuxiliaryData{
		Metadata: tx.Metadata{
			0: map[string]interface{}{
				"hello": "cardano-go",
			},
		},
	})
}

cwallet

This package provides a cli cwallet for wallet management. It supports:

  • hierarchical deterministic wallets
  • fetching balances
  • transfering ADA
Configuration

cwallet uses blockfrost as a Node provider. It requires a config file in $XDG_CONFIG_HOME/cwallet.yml. Example:

blockfrost_project_id: "project-id"
Installation
$ git clone github.com/echovl/cardano-go
$ make && sudo make install
Usage

Wallet creation:

$ cwallet new-wallet jhon
mnemonic: various find knee churn bicycle current midnight visit artist help soon flower venture wasp problem

List wallet address:

$ cwallet list-address jhon
PATH                      ADDRESS
m/1852'/1815'/0'/0/0      addr1vxzfs9dj365gcdmv6dwj7auewf624ghwrtduecu37hrxsyst8gvu2

Send ADA:

$ cwallet transfer echo addr1vxzfs9dj365gcdmv6dwj7auewf624ghwrtduecu37hrxsyst8gvu2 2000000
fd3a7d6e9742fd9ddba2bd1740fa994f5c93a4f59bf88dc5f81d8d7413c5b3a9

Documentation

Overview

Package cardano-go is a library for the Cardano Blockchain.

Getting started

The best way to get started working with cardano-go is to use `go get` to add the library.

 go get github.com/echovl/cardano-go
	go get github.com/echovl/cardano-go/node
	go get github.com/echovl/cardano-go/tx

Hello cardano-go

This example shows how you can use cardano-go to query UTXOs.

package main

import (
    "fmt"

    "github.com/echovl/cardano-go/node/blockfrost"
    "github.com/echovl/cardano-go/types"
)

func main() {
    addr, err := types.NewAddress("addr1v9c7flddz5nqj448t78h5mdgau8p9ee24m7n62g2s48akkcjzfhw3")
    if err != nil {
        panic(err)
    }

    node := blockfrost.NewNode(types.Mainnet, "project-id")

    utxos, err := node.UTXOs(addr)
    if err != nil {
        panic(err)
    }

    fmt.Println(utxos)
}

Directories

Path Synopsis
cli
cmd
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL