cardano

package module
v0.1.9 Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2022 License: GPL-3.0 Imports: 11 Imported by: 17

README

cardano-go

PkgGoDev ci

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

Installation

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

Usage

Get protocol parameters
package main

import (
	"fmt"

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

func main() {
	node := blockfrost.NewNode(cardano.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"
	"github.com/echovl/cardano-go/crypto"
)

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

	receiver, err := cardano.NewAddress("addr")
	sk, err := crypto.NewPrvKey("addr_sk")
	if err != nil {
		panic(err)
	}

	txHash, err := cardano.NewHash32("txhash")
	if err != nil {
		panic(err)
	}

	txInput := cardano.NewTxInput(txHash, 0, cardano.NewValue(2000000))
	txOut := cardano.NewTxOutput(receiver, cardano.NewValue(1300000))

	txBuilder.AddInputs(txInput)
	txBuilder.AddOutputs(txOut)
	txBuilder.SetTTL(100000)
	txBuilder.SetFee(cardano.Coin(160000))
	txBuilder.Sign(sk)

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

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

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

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

	changeAddr, err := cardano.NewAddress("addr")
	if err != nil {
		panic(err)
	}

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

import (
	"fmt"

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

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

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

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

import "github.com/echovl/cardano-go"

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

	txBuilder.AddAuxiliaryData(&cardano.AuxiliaryData{
		Metadata: cardano.Metadata{
			0: map[string]interface{}{
				"hello": "cardano-go",
			},
		},
	})
}
Stake key registration
package main

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

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

	stakeKey, err := crypto.NewPrvKey("stake_sk")
	if err != nil {
		panic(err)
	}

	stakeRegCert, err := cardano.NewStakeRegistrationCertificate(stakeKey.PubKey())
	if err != nil {
		panic(err)
	}

	txBuilder.AddCertificate(stakeRegCert)
}
Stake delegation
package main

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

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

	stakeKey, err := crypto.NewPrvKey("stake_sk")
	if err != nil {
		panic(err)
	}

	poolKeyHash, err := cardano.NewHash28("2d6765748cc86efe862f5abeb0c0271f91d368d300123ecedc078ef2")
    if err != nil {
        panic(err)
    }
	stakeDelCert, err := cardano.NewStakeDelegationCertificate(stakeKey.PubKey(), poolKeyHash)
	if err != nil {
		panic(err)
	}

	txBuilder.AddCertificate(stakeDelCert)
}
Mint native tokens
package main

import (
	"fmt"

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

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

	paymentKey, err := crypto.NewPrvKey("addr_sk")
	if err != nil {
		panic(err)
	}
	policyKey, err := crypto.NewPrvKey("policy_sk")
	if err != nil {
		panic(err)
	}
	policyScript, err := cardano.NewScriptPubKey(policyKey.PubKey())
	if err != nil {
		panic(err)
	}
	policyID, err := cardano.NewPolicyID(policyScript)
	if err != nil {
		panic(err)
	}

	newAsset := cardano.NewMultiAsset().Set(
		policyID,
		cardano.NewAssets().
			Set(cardano.NewAssetName("cardanogo"), 1e9),
	)

	addr, err := cardano.NewAddress("addr")
	if err != nil {
		panic(err)
	}

	txHashIn, err := cardano.NewHash32("41dc71e3225adb84d287df1da52a2b618d4b459d1d88936f3a8955c3bcc51c6c")
	if err != nil {
		panic(err)
	}

	txBuilder.AddInputs(
		cardano.NewTxInput(txHashIn, 0, cardano.NewValue(987658966)),
	)
	txBuilder.AddOutputs(
		cardano.NewTxOutput(addr, cardano.NewValueWithAssets(10e6, newAsset)),
	)

	txBuilder.AddNativeScript(policyScript)
	txBuilder.Mint(newAsset)
}

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

Index

Constants

View Source
const (
	SingleHostAddr RelayType = 0
	SingleHostName           = 1
	MultiHostName            = 2
)
View Source
const (
	ProtocolMagic = 1097911063
)

Variables

This section is empty.

Functions

func Blake224Hash added in v0.1.9

func Blake224Hash(b []byte) ([]byte, error)

Types

type AddrKeyHash

type AddrKeyHash = Hash28

type Address

type Address struct {
	Network Network
	Type    AddressType
	Pointer Pointer

	Payment StakeCredential
	Stake   StakeCredential
}

Address represents a cardano address.

func NewAddress

func NewAddress(bech string) (Address, error)

NewAddress creates an Address from a bech32 encoded string.

func NewAddressFromBytes

func NewAddressFromBytes(bytes []byte) (Address, error)

NewAddressFromBytes creates an Address from bytes.

func NewBaseAddress

func NewBaseAddress(network Network, payment StakeCredential, stake StakeCredential) (Address, error)

func NewEnterpriseAddress

func NewEnterpriseAddress(network Network, payment StakeCredential) (Address, error)

func NewPointerAddress

func NewPointerAddress(network Network, payment StakeCredential, ptr Pointer) (Address, error)

func (*Address) Bech32

func (addr *Address) Bech32() string

Bech32 returns the Address encoded as bech32.

func (*Address) Bytes

func (addr *Address) Bytes() []byte

func (*Address) MarshalCBOR

func (addr *Address) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler.

func (*Address) UnmarshalCBOR

func (addr *Address) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler.

type AddressType

type AddressType byte
const (
	Base       AddressType = 0x00
	Ptr        AddressType = 0x04
	Enterprise AddressType = 0x06
)

type AssetName added in v0.1.9

type AssetName struct {
	// contains filtered or unexported fields
}

func NewAssetName added in v0.1.9

func NewAssetName(name string) AssetName

func (*AssetName) Bytes added in v0.1.9

func (an *AssetName) Bytes() []byte

func (*AssetName) String added in v0.1.9

func (an *AssetName) String() string

type Assets added in v0.1.9

type Assets struct {
	// contains filtered or unexported fields
}

func NewAssets added in v0.1.9

func NewAssets() *Assets

func (*Assets) Get added in v0.1.9

func (a *Assets) Get(name AssetName) BigNum

func (*Assets) Keys added in v0.1.9

func (a *Assets) Keys() []AssetName

func (*Assets) MarshalCBOR added in v0.1.9

func (a *Assets) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler

func (*Assets) Set added in v0.1.9

func (a *Assets) Set(name AssetName, val BigNum) *Assets

type AuxiliaryData

type AuxiliaryData struct {
	Metadata      Metadata    `cbor:"0,keyasint,omitempty"`
	NativeScripts interface{} `cbor:"1,keyasint,omitempty"`
	PlutusScripts interface{} `cbor:"2,keyasint,omitempty"`
}

func (*AuxiliaryData) MarshalCBOR

func (d *AuxiliaryData) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler

func (*AuxiliaryData) UnmarshalCBOR

func (d *AuxiliaryData) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler

type BigNum added in v0.1.9

type BigNum uint64

type Certificate

type Certificate struct {
	Type CertificateType

	// Common fields
	StakeCredential StakeCredential
	PoolKeyHash     PoolKeyHash
	VrfKeyHash      Hash32

	// Pool related fields
	Operator      PoolKeyHash
	Pledge        Coin
	Margin        UnitInterval
	RewardAccount Address
	Owners        []AddrKeyHash
	Relays        []Relay
	PoolMetadata  *PoolMetadata // or null
	Epoch         uint64

	// Genesis fields
	GenesisHash         Hash28
	GenesisDelegateHash Hash28
}

TODO: MoveInstantaneousRewardsCert requires a map with StakeCredential as a key

func NewStakeDelegationCertificate added in v0.1.8

func NewStakeDelegationCertificate(stakeKey crypto.PubKey, poolKeyHash Hash28) (Certificate, error)

func NewStakeDeregistrationCertificate added in v0.1.8

func NewStakeDeregistrationCertificate(stakeKey crypto.PubKey) (Certificate, error)

func NewStakeRegistrationCertificate added in v0.1.8

func NewStakeRegistrationCertificate(stakeKey crypto.PubKey) (Certificate, error)

func (*Certificate) MarshalCBOR

func (c *Certificate) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler.

func (*Certificate) UnmarshalCBOR

func (c *Certificate) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler.

type CertificateType

type CertificateType uint
const (
	StakeRegistration CertificateType = iota
	StakeDeregistration
	StakeDelegation
	PoolRegistration
	PoolRetirement
	GenesisKeyDelegation
	MoveInstantaneousRewards
)

type Coin

type Coin BigNum

type Hash28

type Hash28 []byte

func NewHash28

func NewHash28(h string) (Hash28, error)

NewHash28 creates a new Hash28 from a hex encoded string.

func (Hash28) String

func (h Hash28) String() string

String returns the hex encoding representation of a Hash28.

type Hash32

type Hash32 []byte

func NewHash32

func NewHash32(h string) (Hash32, error)

NewHash32 creates a new Hash32 from a hex encoded string.

func (Hash32) String

func (h Hash32) String() string

String returns the hex encoding representation of a Hash32

type Metadata

type Metadata map[uint]interface{}

type MultiAsset added in v0.1.9

type MultiAsset struct {
	// contains filtered or unexported fields
}

func NewMultiAsset added in v0.1.9

func NewMultiAsset() *MultiAsset

func (*MultiAsset) AssetsLength added in v0.1.9

func (ma *MultiAsset) AssetsLength() uint

func (*MultiAsset) Get added in v0.1.9

func (ma *MultiAsset) Get(policyID PolicyID) *Assets

func (*MultiAsset) Keys added in v0.1.9

func (ma *MultiAsset) Keys() []PolicyID

func (*MultiAsset) MarshalCBOR added in v0.1.9

func (ma *MultiAsset) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler

func (*MultiAsset) NumAssets added in v0.1.9

func (ma *MultiAsset) NumAssets() uint

func (*MultiAsset) NumPIDs added in v0.1.9

func (ma *MultiAsset) NumPIDs() uint

func (*MultiAsset) Set added in v0.1.9

func (ma *MultiAsset) Set(policyID PolicyID, assets *Assets) *MultiAsset

type NativeScript added in v0.1.9

type NativeScript struct {
	Type          NativeScriptType
	KeyHash       AddrKeyHash
	N             uint64
	Scripts       []NativeScript
	IntervalValue uint64
}

func NewScriptPubKey added in v0.1.9

func NewScriptPubKey(publicKey crypto.PubKey) (NativeScript, error)

func (*NativeScript) Bytes added in v0.1.9

func (ns *NativeScript) Bytes() ([]byte, error)

Bytes returns the CBOR encoding of the script as bytes.

func (*NativeScript) Hash added in v0.1.9

func (ns *NativeScript) Hash() (Hash28, error)

Hash returns the script hash using blake2b224.

func (*NativeScript) MarshalCBOR added in v0.1.9

func (ns *NativeScript) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler.

type NativeScriptType added in v0.1.9

type NativeScriptType uint64
const (
	ScriptPubKey NativeScriptType = iota
	ScriptAll
	ScriptAny
	ScriptNofK
	ScriptInvalidBefore
	ScriptInvalidAfter
)

type Network

type Network byte
const (
	Testnet Network = 0
	Mainnet Network = 1
)

func (Network) String

func (n Network) String() string

type Node

type Node interface {
	// UTxOs returns a list of unspent transaction outputs for a given address
	UTxOs(Address) ([]UTxO, error)

	// Tip returns the node's current tip
	Tip() (*NodeTip, error)

	// SubmitTx submits a transaction to the node using cbor encoding
	SubmitTx(*Tx) (*Hash32, error)

	// ProtocolParams returns the Node's Protocol Parameters
	ProtocolParams() (*ProtocolParams, error)

	// Network returns the node's current network type
	Network() Network
}

Node is the interface required for a Cardano backend/node. A backend/node is used to interact with the Cardano Blockchain, sending transactions and fetching state.

type NodeTip

type NodeTip struct {
	Block uint64
	Epoch uint64
	Slot  uint64
}

type Pointer

type Pointer struct {
	Slot      uint64
	TxIndex   uint64
	CertIndex uint64
}

type PolicyID added in v0.1.9

type PolicyID struct {
	// contains filtered or unexported fields
}

func NewPolicyID added in v0.1.9

func NewPolicyID(script NativeScript) (PolicyID, error)

func NewPolicyIDFromHash added in v0.1.9

func NewPolicyIDFromHash(scriptHash Hash28) PolicyID

func (*PolicyID) Bytes added in v0.1.9

func (p *PolicyID) Bytes() []byte

func (*PolicyID) String added in v0.1.9

func (p *PolicyID) String() string

type PoolKeyHash

type PoolKeyHash = Hash28

type PoolMetadata

type PoolMetadata struct {
	URL  string
	Hash Hash32
	// contains filtered or unexported fields
}

type ProtocolParams

type ProtocolParams struct {
	MinFeeA              Coin
	MinFeeB              Coin
	MaxBlockBodySize     uint
	MaxTxSize            uint
	MaxBlockHeaderSize   uint
	KeyDeposit           Coin
	PoolDeposit          Coin
	MaxEpoch             uint
	NOpt                 uint
	PoolPledgeInfluence  Rational
	ExpansionRate        UnitInterval
	TreasuryGrowthRate   UnitInterval
	D                    UnitInterval
	ExtraEntropy         []byte
	ProtocolVersion      ProtocolVersion
	MinPoolCost          Coin
	CoinsPerUTXOWord     Coin
	CostModels           interface{}
	ExecutionCosts       interface{}
	MaxTxExUnits         interface{}
	MaxBlockTxExUnits    interface{}
	MaxValueSize         uint
	CollateralPercentage uint
	MaxCollateralInputs  uint
}

type ProtocolVersion added in v0.1.8

type ProtocolVersion struct {
	Major uint
	Minor uint
	// contains filtered or unexported fields
}

type Rational added in v0.1.8

type Rational struct {
	P uint64
	Q uint64
	// contains filtered or unexported fields
}

func (*Rational) MarshalCBOR added in v0.1.8

func (r *Rational) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler

func (*Rational) UnmarshalCBOR added in v0.1.8

func (r *Rational) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler

type Relay

type Relay struct {
	Type    RelayType
	Port    Uint64
	Ipv4    []byte
	Ipv6    []byte
	DNSName string
}

func (*Relay) MarshalCBOR

func (r *Relay) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler.

func (*Relay) UnmarshalCBOR

func (r *Relay) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler.

type RelayType

type RelayType uint64

type ScriptHashNamespace added in v0.1.9

type ScriptHashNamespace uint8
const (
	NativeScriptNamespace ScriptHashNamespace = iota
	PlutusScriptNamespace
)

type StakeCredential

type StakeCredential struct {
	Type       StakeCredentialType
	KeyHash    AddrKeyHash
	ScriptHash Hash28
}

func NewKeyCredential added in v0.1.8

func NewKeyCredential(publicKey crypto.PubKey) (StakeCredential, error)

func NewScriptCredential

func NewScriptCredential(script []byte) (StakeCredential, error)

func (*StakeCredential) Equal added in v0.1.9

func (s *StakeCredential) Equal(rhs StakeCredential) bool

func (*StakeCredential) Hash

func (s *StakeCredential) Hash() Hash28

func (*StakeCredential) MarshalCBOR

func (s *StakeCredential) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler.

func (*StakeCredential) UnmarshalCBOR

func (s *StakeCredential) UnmarshalCBOR(data []byte) error

UnmarshalCBOR implements cbor.Unmarshaler.

type StakeCredentialType

type StakeCredentialType uint64
const (
	KeyCredential StakeCredentialType = iota
	ScriptCredential
)

type String

type String *string

func NewString

func NewString(s string) String

type Tx

type Tx struct {
	Body          TxBody
	WitnessSet    WitnessSet
	IsValid       bool
	AuxiliaryData *AuxiliaryData // or null
	// contains filtered or unexported fields
}

func (*Tx) Bytes

func (tx *Tx) Bytes() []byte

Bytes returns the CBOR encoding of the transaction as bytes.

func (*Tx) Hash

func (tx *Tx) Hash() (Hash32, error)

Hash returns the transaction body hash using blake2b.

func (Tx) Hex

func (tx Tx) Hex() string

Hex returns the CBOR encoding of the transaction as hex.

type TxBody

type TxBody struct {
	Inputs  []*TxInput  `cbor:"0,keyasint"`
	Outputs []*TxOutput `cbor:"1,keyasint"`
	Fee     Coin        `cbor:"2,keyasint"`

	// Optionals
	TTL                   Uint64        `cbor:"3,keyasint,omitempty"`
	Certificates          []Certificate `cbor:"4,keyasint,omitempty"`
	Withdrawals           interface{}   `cbor:"5,keyasint,omitempty"` // unsupported
	Update                interface{}   `cbor:"6,keyasint,omitempty"` // unsupported
	AuxiliaryDataHash     *Hash32       `cbor:"7,keyasint,omitempty"`
	ValidityIntervalStart Uint64        `cbor:"8,keyasint,omitempty"`
	Mint                  *MultiAsset   `cbor:"9,keyasint,omitempty"`
	ScriptDataHash        *Hash32       `cbor:"10,keyasint,omitempty"`
	Collateral            []TxInput     `cbor:"11,keyasint,omitempty"`
	RequiredSigners       []AddrKeyHash `cbor:"12,keyasint,omitempty"`
	NetworkID             Uint64        `cbor:"13,keyasint,omitempty"`
}

func (*TxBody) Hash

func (body *TxBody) Hash() (Hash32, error)

Hash returns the transaction body hash using blake2b256.

type TxBuilder

type TxBuilder struct {
	// contains filtered or unexported fields
}

func NewTxBuilder

func NewTxBuilder(protocol *ProtocolParams) *TxBuilder

NewTxBuilder returns a new instance of TxBuilder.

func (*TxBuilder) AddAuxiliaryData

func (tb *TxBuilder) AddAuxiliaryData(data *AuxiliaryData)

func (*TxBuilder) AddCertificate added in v0.1.8

func (tb *TxBuilder) AddCertificate(cert Certificate)

func (*TxBuilder) AddChangeIfNeeded

func (tb *TxBuilder) AddChangeIfNeeded(changeAddr Address) error

AddChangeIfNeeded calculates the required fee for the transaction and adds an aditional output for the change if there is any. This assumes that the inputs-outputs are defined and signing keys are present.

func (*TxBuilder) AddInputs

func (tb *TxBuilder) AddInputs(inputs ...*TxInput)

AddInputs adds inputs to the transaction being builded.

func (*TxBuilder) AddNativeScript added in v0.1.9

func (tb *TxBuilder) AddNativeScript(script NativeScript)

func (*TxBuilder) AddOutputs

func (tb *TxBuilder) AddOutputs(outputs ...*TxOutput)

AddOutputs adds outputs to the transaction being builded.

func (*TxBuilder) Build

func (tb *TxBuilder) Build() (*Tx, error)

Build creates a new transaction using the inputs, outputs and keys provided.

func (*TxBuilder) MinFee

func (tb *TxBuilder) MinFee() (Coin, error)

MinFee computes the minimal fee required for the transaction. This assumes that the inputs-outputs are defined and signing keys are present.

func (*TxBuilder) Mint added in v0.1.9

func (tb *TxBuilder) Mint(asset *MultiAsset)

func (*TxBuilder) SetFee

func (tb *TxBuilder) SetFee(fee Coin)

SetFee sets the transactions's fee.

func (*TxBuilder) SetTTL

func (tb *TxBuilder) SetTTL(ttl uint64)

SetTtl sets the transaction's time to live.

func (*TxBuilder) Sign

func (tb *TxBuilder) Sign(privateKeys ...crypto.PrvKey) error

Sign adds signing keys to create signatures for the witness set.

type TxInput

type TxInput struct {
	TxHash Hash32
	Index  uint64
	Amount *Value `cbor:"-"`
	// contains filtered or unexported fields
}

func NewTxInput

func NewTxInput(txHash Hash32, index uint, amount *Value) *TxInput

NewTxInput creates a new instance of TxInput

type TxOutput

type TxOutput struct {
	Address Address
	Amount  *Value
	// contains filtered or unexported fields
}

func NewTxOutput

func NewTxOutput(addr Address, amount *Value) *TxOutput

NewTxOutput creates a new instance of TxOutput

type UTxO

type UTxO struct {
	TxHash  Hash32
	Spender Address
	Amount  *Value
	Index   uint64
}

type Uint64

type Uint64 *uint64

func NewUint64

func NewUint64(u uint64) Uint64

type UnitInterval

type UnitInterval = Rational

type VKeyWitness

type VKeyWitness struct {
	VKey      crypto.PubKey // ed25519 public key
	Signature []byte        // ed25519 signature
	// contains filtered or unexported fields
}

type Value added in v0.1.9

type Value struct {
	Coin       Coin
	MultiAsset *MultiAsset
}

func NewValue added in v0.1.9

func NewValue(coin Coin) *Value

func NewValueWithAssets added in v0.1.9

func NewValueWithAssets(coin Coin, assets *MultiAsset) *Value

func (*Value) Add added in v0.1.9

func (v *Value) Add(rhs *Value) *Value

func (*Value) Cmp added in v0.1.9

func (v *Value) Cmp(rhs *Value) (int, error)

Compares and returns

-1 if v < rhs
 0 if v == rhs
 1 if v > rhs

func (*Value) IsZero added in v0.1.9

func (v *Value) IsZero() bool

func (*Value) MarshalCBOR added in v0.1.9

func (v *Value) MarshalCBOR() ([]byte, error)

MarshalCBOR implements cbor.Marshaler

func (*Value) OnlyCoin added in v0.1.9

func (v *Value) OnlyCoin() bool

func (*Value) Sub added in v0.1.9

func (v *Value) Sub(rhs *Value) *Value

type WitnessSet

type WitnessSet struct {
	VKeyWitnessSet []VKeyWitness  `cbor:"0,keyasint,omitempty"`
	Scripts        []NativeScript `cbor:"1,keyasint,omitempty"`
}

Directories

Path Synopsis
cli
cmd
internal
bech32
https://github.com/decred/dcrd/tree/master/bech32
https://github.com/decred/dcrd/tree/master/bech32
cbor
Package cbor is a modern CBOR codec (RFC 8949 & RFC 7049) with CBOR tags, Go struct tags (toarray/keyasint/omitempty), Core Deterministic Encoding, CTAP2, Canonical CBOR, float64->32->16, and duplicate map key detection.
Package cbor is a modern CBOR codec (RFC 8949 & RFC 7049) with CBOR tags, Go struct tags (toarray/keyasint/omitempty), Core Deterministic Encoding, CTAP2, Canonical CBOR, float64->32->16, and duplicate map key detection.

Jump to

Keyboard shortcuts

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