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
- func Blake224Hash(b []byte) ([]byte, error)
- 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 AssetName
- type Assets
- type AuxiliaryData
- type BigNum
- type Certificate
- type CertificateType
- type Coin
- type Hash28
- type Hash32
- type Metadata
- type Mint
- type MintAssets
- type MultiAsset
- func (ma *MultiAsset) Get(policyID PolicyID) *Assets
- func (ma *MultiAsset) Keys() []PolicyID
- func (ma *MultiAsset) MarshalCBOR() ([]byte, error)
- func (ma *MultiAsset) Set(policyID PolicyID, assets *Assets) *MultiAsset
- func (ma MultiAsset) String() string
- func (ma *MultiAsset) UnmarshalCBOR(data []byte) error
- type NativeScript
- type NativeScriptType
- type Network
- type Node
- type NodeTip
- type Pointer
- type PolicyID
- type PoolKeyHash
- type PoolMetadata
- type ProtocolParams
- type ProtocolVersion
- type Rational
- type Relay
- type RelayType
- type ScriptHashNamespace
- type StakeCredential
- type StakeCredentialType
- type String
- type Tx
- type TxBody
- type TxBuilder
- func (tb *TxBuilder) AddAuxiliaryData(data *AuxiliaryData)
- func (tb *TxBuilder) AddCertificate(cert Certificate)
- func (tb *TxBuilder) AddChangeIfNeeded(changeAddr Address)
- func (tb *TxBuilder) AddInputs(inputs ...*TxInput)
- func (tb *TxBuilder) AddNativeScript(script NativeScript)
- func (tb *TxBuilder) AddOutputs(outputs ...*TxOutput)
- func (tb *TxBuilder) Build() (*Tx, error)
- func (tb *TxBuilder) MinCoinsForTxOut(txOut *TxOutput) Coin
- func (tb *TxBuilder) MinFee() (Coin, error)
- func (tb *TxBuilder) Mint(asset *Mint)
- func (tb *TxBuilder) Reset()
- func (tb *TxBuilder) SetFee(fee Coin)
- func (tb *TxBuilder) SetTTL(ttl uint64)
- func (tb *TxBuilder) Sign(privateKeys ...crypto.PrvKey)
- type TxInput
- type TxOutput
- type UTxO
- type Uint64
- type UnitInterval
- type VKeyWitness
- type Value
- type WitnessSet
Constants ¶
const ( SingleHostAddr RelayType = 0 SingleHostName = 1 MultiHostName = 2 )
const (
ProtocolMagic = 1097911063
)
Variables ¶
This section is empty.
Functions ¶
func Blake224Hash ¶ added in v0.1.9
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)
NewBaseAddress returns a new Base Address.
func NewEnterpriseAddress ¶
func NewEnterpriseAddress(network Network, payment StakeCredential) (Address, error)
NewEnterpriseAddress returns a new Enterprise Address.
func NewPointerAddress ¶
func NewPointerAddress(network Network, payment StakeCredential, ptr Pointer) (Address, error)
NewPointerAddress returns a new Pointer Address.
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 AssetName ¶ added in v0.1.9
type AssetName struct {
// contains filtered or unexported fields
}
AssetName represents an Asset name.
func NewAssetName ¶ added in v0.1.9
NewAssetName returns a new AssetName.
type Assets ¶ added in v0.1.9
type Assets struct {
// contains filtered or unexported fields
}
Assets repressents a set of Cardano Native Tokens.
func (*Assets) MarshalCBOR ¶ added in v0.1.9
MarshalCBOR implements cbor.Marshaler
func (*Assets) UnmarshalCBOR ¶ added in v0.1.14
UnmarshalCBOR implements cbor.Unmarshaler.
type AuxiliaryData ¶
type AuxiliaryData struct { Metadata Metadata `cbor:"0,keyasint,omitempty"` NativeScripts interface{} `cbor:"1,keyasint,omitempty"` PlutusScripts interface{} `cbor:"2,keyasint,omitempty"` }
AuxiliaryData is the auxiliary data in the transaction.
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 }
Certificate is a Cardano certificate.
func NewStakeDelegationCertificate ¶ added in v0.1.8
func NewStakeDelegationCertificate(stakeKey crypto.PubKey, poolKeyHash Hash28) (Certificate, error)
NewStakeDelegationCertificate creates a Stake Delegation Certificate.
func NewStakeDeregistrationCertificate ¶ added in v0.1.8
func NewStakeDeregistrationCertificate(stakeKey crypto.PubKey) (Certificate, error)
NewStakeDeregistrationCertificate creates a Stake Deregistration Certificate.
func NewStakeRegistrationCertificate ¶ added in v0.1.8
func NewStakeRegistrationCertificate(stakeKey crypto.PubKey) (Certificate, error)
NewStakeRegistrationCertificate creates a Stake Registration Certificate.
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 Hash28 ¶
type Hash28 []byte
type Hash32 ¶
type Hash32 []byte
type Mint ¶ added in v0.1.10
type Mint struct {
// contains filtered or unexported fields
}
Mint is a bundle of MintAssets indexed by Policy.
func (*Mint) Get ¶ added in v0.1.10
func (m *Mint) Get(policyID PolicyID) *MintAssets
Get returns the MintAssets of a given Policy in Mint.
func (*Mint) MarshalCBOR ¶ added in v0.1.10
MarshalCBOR implements cbor.Marshaler
func (*Mint) MultiAsset ¶ added in v0.1.10
func (m *Mint) MultiAsset() *MultiAsset
MultiAsset returns a new MultiAsset created from Mint.
func (*Mint) Set ¶ added in v0.1.10
func (m *Mint) Set(policyID PolicyID, assets *MintAssets) *Mint
Set sets the MintAssets of a given Policy in Mint.
func (*Mint) UnmarshalCBOR ¶ added in v0.1.14
UnmarshalCBOR implements cbor.Unmarshaler.
type MintAssets ¶ added in v0.1.10
type MintAssets struct {
// contains filtered or unexported fields
}
MintAssets represents a set of Cardano Native Tokens to be minted.
func NewMintAssets ¶ added in v0.1.10
func NewMintAssets() *MintAssets
NewMintAssets returns a new empty MintAssets.
func (*MintAssets) Get ¶ added in v0.1.10
func (a *MintAssets) Get(name AssetName) *big.Int
Get returns the value of a given Asset in MintAssets.
func (*MintAssets) Keys ¶ added in v0.1.10
func (a *MintAssets) Keys() []AssetName
Keys returns all the AssetNames stored in MintAssets.
func (*MintAssets) MarshalCBOR ¶ added in v0.1.10
func (a *MintAssets) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler
func (*MintAssets) Set ¶ added in v0.1.10
func (a *MintAssets) Set(name AssetName, val *big.Int) *MintAssets
Set sets the value of a given Asset in MintAssets.
func (*MintAssets) UnmarshalCBOR ¶ added in v0.1.14
func (a *MintAssets) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type MultiAsset ¶ added in v0.1.9
type MultiAsset struct {
// contains filtered or unexported fields
}
MultiAsset is a bundle of Assets indexed by Policy.
func NewMultiAsset ¶ added in v0.1.9
func NewMultiAsset() *MultiAsset
NewMultiAsset returns a new empty MultiAsset.
func (*MultiAsset) Get ¶ added in v0.1.9
func (ma *MultiAsset) Get(policyID PolicyID) *Assets
Get returns the Assets of a given Policy in MultiAsset.
func (*MultiAsset) Keys ¶ added in v0.1.9
func (ma *MultiAsset) Keys() []PolicyID
Keys returns all the Policies stored in MultiAsset.
func (*MultiAsset) MarshalCBOR ¶ added in v0.1.9
func (ma *MultiAsset) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler
func (*MultiAsset) Set ¶ added in v0.1.9
func (ma *MultiAsset) Set(policyID PolicyID, assets *Assets) *MultiAsset
Set sets the Assets of a given Policy in MultiAsset.
func (MultiAsset) String ¶ added in v0.1.14
func (ma MultiAsset) String() string
String implements Stringer.
func (*MultiAsset) UnmarshalCBOR ¶ added in v0.1.14
func (ma *MultiAsset) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type NativeScript ¶ added in v0.1.9
type NativeScript struct { Type NativeScriptType KeyHash AddrKeyHash N uint64 Scripts []NativeScript IntervalValue uint64 }
NativeScript is a Cardano Native Script.
func NewScriptPubKey ¶ added in v0.1.9
func NewScriptPubKey(publicKey crypto.PubKey) (NativeScript, error)
NewScriptPubKey returns a new Script PubKey.
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.
func (*NativeScript) UnmarshalCBOR ¶ added in v0.1.14
func (ns *NativeScript) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type NativeScriptType ¶ added in v0.1.9
type NativeScriptType uint64
const ( ScriptPubKey NativeScriptType = iota ScriptAll ScriptAny ScriptNofK ScriptInvalidBefore ScriptInvalidAfter )
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 PolicyID ¶ added in v0.1.9
type PolicyID struct {
// contains filtered or unexported fields
}
PolicyID is the native token policy id.
func NewPolicyID ¶ added in v0.1.9
func NewPolicyID(script NativeScript) (PolicyID, error)
NewPolicyID returns a new PolicyID using a native script.
func NewPolicyIDFromHash ¶ added in v0.1.9
NewPolicyIDFromHash returns a new PolicyID using a script hash.
type PoolKeyHash ¶
type PoolKeyHash = Hash28
type PoolMetadata ¶
PoolMetadata represents the metadata used for a pool registration.
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 }
ProtocolParams is a Cardano Protocol Parameters.
type ProtocolVersion ¶ added in v0.1.8
ProtocolVersion is the protocol version number.
type Rational ¶ added in v0.1.8
func (*Rational) MarshalCBOR ¶ added in v0.1.8
MarshalCBOR implements cbor.Marshaler
func (*Rational) UnmarshalCBOR ¶ added in v0.1.8
UnmarshalCBOR implements cbor.Unmarshaler
type Relay ¶
func (*Relay) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*Relay) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
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 }
StakeCredential is a Cardano credential.
func NewKeyCredential ¶ added in v0.1.8
func NewKeyCredential(publicKey crypto.PubKey) (StakeCredential, error)
NewKeyCredential creates a Key Credential.
func NewScriptCredential ¶
func NewScriptCredential(script []byte) (StakeCredential, error)
NewKeyCredential creates a Script Credential.
func (*StakeCredential) Equal ¶ added in v0.1.9
func (s *StakeCredential) Equal(rhs StakeCredential) bool
Equal returns true if the credentials are equal.
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 Tx ¶
type Tx struct { Body TxBody WitnessSet WitnessSet IsValid bool AuxiliaryData *AuxiliaryData // or null // contains filtered or unexported fields }
Tx is a Cardano transaction.
func (*Tx) MarshalCBOR ¶ added in v0.1.14
MarshalCBOR implements cbor.Marshaler.
func (*Tx) UnmarshalCBOR ¶ added in v0.1.14
UnmarshalCBOR implements cbor.Unmarshaler.
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 *Mint `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"` }
type TxBuilder ¶
type TxBuilder struct {
// contains filtered or unexported fields
}
TxBuilder is a transaction builder.
func NewTxBuilder ¶
func NewTxBuilder(protocol *ProtocolParams) *TxBuilder
NewTxBuilder returns a new instance of TxBuilder.
func (*TxBuilder) AddAuxiliaryData ¶
func (tb *TxBuilder) AddAuxiliaryData(data *AuxiliaryData)
AddAuxiliaryData adds auxiliary data to the transaction.
func (*TxBuilder) AddCertificate ¶ added in v0.1.8
func (tb *TxBuilder) AddCertificate(cert Certificate)
AddCertificate adds a certificate to the transaction.
func (*TxBuilder) AddChangeIfNeeded ¶
AddChangeIfNeeded instructs the builder to calculate the required fee for the transaction and to add an aditional output for the change if there is any.
func (*TxBuilder) AddNativeScript ¶ added in v0.1.9
func (tb *TxBuilder) AddNativeScript(script NativeScript)
AddNativeScript adds a native script to the transaction.
func (*TxBuilder) AddOutputs ¶
AddOutputs adds outputs to the transaction.
func (*TxBuilder) Build ¶
Build returns a new transaction using the inputs, outputs and keys provided.
func (*TxBuilder) MinCoinsForTxOut ¶ added in v0.1.12
MinCoinsForTxOut computes the minimal amount of coins required for a given transaction output.
func (*TxBuilder) MinFee ¶
MinFee computes the minimal fee required for the transaction. This assumes that the inputs-outputs are defined and signing keys are present.
func (*TxBuilder) Reset ¶ added in v0.1.13
func (tb *TxBuilder) Reset()
Reset resets the builder to its initial state.
type TxInput ¶
type TxInput struct { TxHash Hash32 Index uint64 Amount *Value `cbor:"-"` // contains filtered or unexported fields }
TxInput is the transaction input.
func NewTxInput ¶
NewTxInput creates a new instance of TxInput
type TxOutput ¶
TxInput is the transaction output.
func NewTxOutput ¶
NewTxOutput creates a new instance of TxOutput
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 }
VKeyWitness is a witnesss that uses verification keys.
type Value ¶ added in v0.1.9
type Value struct { Coin Coin MultiAsset *MultiAsset }
Value is a bundle of transferable Cardano Native Tokens.
func NewValueWithAssets ¶ added in v0.1.9
func NewValueWithAssets(coin Coin, assets *MultiAsset) *Value
NewValueWithAssets returns a new MultiAsset Value.
func (*Value) Cmp ¶ added in v0.1.9
Compares two Values and returns
-1 if v < rhs 0 if v == rhs 1 if v > rhs 2 if not comparable
func (*Value) MarshalCBOR ¶ added in v0.1.9
MarshalCBOR implements cbor.Marshaler.
func (*Value) Sub ¶ added in v0.1.9
Sub computes the substracion of two Values and returns the result.
func (*Value) UnmarshalCBOR ¶ added in v0.1.14
UnmarshalCBOR implements cbor.Unmarshaler.
type WitnessSet ¶
type WitnessSet struct { VKeyWitnessSet []VKeyWitness `cbor:"0,keyasint,omitempty"` Scripts []NativeScript `cbor:"1,keyasint,omitempty"` }
WitnessSet represents the witnesses of the transaction.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
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. |