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
- type AddrKeyHash
- type Address
- func NewAddress(bech string) (Address, error)
- func NewAddressFromBytes(bytes []byte) (Address, error)
- func NewBaseAddress(network Network, payment StakeCredential, stake StakeCredential) (Address, error)
- func NewEnterpriseAddress(network Network, payment StakeCredential) (Address, error)
- func NewPointerAddress(network Network, payment StakeCredential, ptr Pointer) (Address, error)
- type AddressType
- type AuxiliaryData
- type Certificate
- type CertificateType
- type Coin
- type Hash28
- type Hash32
- type Metadata
- type Network
- type Node
- type NodeTip
- type Pointer
- type PoolKeyHash
- type PoolMetadata
- type ProtocolParams
- type RationalNumber
- type Relay
- type RelayType
- type StakeCredential
- type StakeCredentialType
- type String
- type Tx
- type TxBody
- type TxBuilder
- func (tb *TxBuilder) AddAuxiliaryData(data *AuxiliaryData)
- func (tb *TxBuilder) AddChangeIfNeeded(changeAddr string) error
- func (tb *TxBuilder) AddInputs(inputs ...*TxInput)
- func (tb *TxBuilder) AddOutputs(outputs ...*TxOutput)
- func (tb *TxBuilder) Build() (*Tx, error)
- func (tb *TxBuilder) MinFee() (Coin, error)
- func (tb *TxBuilder) SetFee(fee Coin)
- func (tb *TxBuilder) SetTTL(ttl uint64)
- func (tb *TxBuilder) Sign(privateKeys ...string) error
- type TxInput
- type TxOutput
- type UTxO
- type Uint64
- type UnitInterval
- type VKeyWitness
- type WitnessSet
Constants ¶
const ( StakeRegistration CertificateType = 0 StakeDeregistration = 1 StakeDelegation = 2 PoolRegistration = 3 PoolRetirement = 4 GenesisKeyDelegation = 5 MoveInstantaneousRewards = 6 )
const ( SingleHostAddr RelayType = 0 SingleHostName = 1 MultiHostName = 2 )
const (
ProtocolMagic = 1097911063
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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 ¶
NewAddress creates an Address from a bech32 encoded string.
func NewAddressFromBytes ¶
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) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*Address) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
type AddressType ¶
type AddressType byte
const ( Base AddressType = 0x00 Ptr AddressType = 0x04 Enterprise AddressType = 0x06 )
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 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 (*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
type Hash28 ¶
type Hash28 []byte
type Hash32 ¶
type Hash32 []byte
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 PoolKeyHash ¶
type PoolKeyHash = Hash28
type PoolMetadata ¶
type ProtocolParams ¶
type RationalNumber ¶
func (*RationalNumber) MarshalCBOR ¶
func (r *RationalNumber) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler
func (*RationalNumber) UnmarshalCBOR ¶
func (r *RationalNumber) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler
type Relay ¶
func (*Relay) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*Relay) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
type StakeCredential ¶
type StakeCredential struct {
Type StakeCredentialType
AddrKeyHash AddrKeyHash
ScriptHash Hash28
}
func NewAddrKeyCredential ¶
func NewAddrKeyCredential(publicKey crypto.PubKey) (StakeCredential, error)
func NewScriptCredential ¶
func NewScriptCredential(script []byte) (StakeCredential, error)
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 ( AddrKeyCredential StakeCredentialType = 0 ScriptCredential = 1 )
type Tx ¶
type Tx struct {
Body TxBody
WitnessSet WitnessSet
IsValid bool
AuxiliaryData *AuxiliaryData // or null
// contains filtered or unexported fields
}
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 interface{} `cbor:"9,keyasint,omitempty"` // unsupported
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) AddSignatures ¶
AddSignatures sets the transaction's witness set.
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) AddChangeIfNeeded ¶
AddChangeIfNeeded calculates the required fee for the transaction and adds an aditional output for the change if there is any. This assumes that the tb inputs and outputs are defined.
func (*TxBuilder) AddOutputs ¶
AddOutputs adds outputs to the transaction being builded.
func (*TxBuilder) Build ¶
Build creates a new transaction using the inputs, outputs and keys provided.
type TxInput ¶
type UnitInterval ¶
type UnitInterval = RationalNumber
type VKeyWitness ¶
type WitnessSet ¶
type WitnessSet struct {
VKeyWitnessSet []VKeyWitness `cbor:"0,keyasint,omitempty"`
}