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/melraidin/cardano-go go get github.com/melraidin/cardano-go/node go get github.com/melraidin/cardano-go/tx
Hello cardano-go ¶
This example shows how you can use cardano-go to query UTXOs.
package main import ( "fmt" "github.com/melraidin/cardano-go/node/blockfrost" "github.com/melraidin/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)
- func GetBytesFromCBORHex(cborHex string) ([]byte, error)
- func GetCBORHexFromBytes(data []byte) (string, error)
- func GetCBOR_DecMode() cbor.DecMode
- func GetCBOR_EncMode() cbor.EncMode
- 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)
- func NewStakeAddress(network Network, stake StakeCredential) (Address, error)
- type AddressType
- type AssetName
- type Assets
- type AuxiliaryData
- type BigNum
- type Certificate
- type CertificateType
- type Coin
- type DatumOption
- type DatumType
- 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 TxAlonzoOutput
- type TxBabbageOutput
- 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) SetAdditionalFee(additionalFee Coin)
- func (tb *TxBuilder) SetAdditionalWitnesses(witnesses uint)
- func (tb *TxBuilder) SetFee(fee Coin)
- func (tb *TxBuilder) SetTTL(ttl uint64)
- func (tb *TxBuilder) Sign(privateKeys ...crypto.PrvKey)
- type TxInput
- type TxLegacyOutput
- 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 ¶
func GetBytesFromCBORHex ¶
func GetCBORHexFromBytes ¶
func GetCBOR_DecMode ¶
func GetCBOR_EncMode ¶
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 NewStakeAddress ¶
func NewStakeAddress(network Network, stake StakeCredential) (Address, error)
NewStakeAddress returns a new Staake 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 Stake AddressType = 0x0e )
type AssetName ¶
type AssetName struct {
// contains filtered or unexported fields
}
AssetName represents an Asset name.
type Assets ¶
type Assets struct {
// contains filtered or unexported fields
}
Assets repressents a set of Cardano Native Tokens.
func (*Assets) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler
func (*Assets) UnmarshalCBOR ¶
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 ¶
func NewStakeDelegationCertificate(stakeKey crypto.PubKey, poolKeyHash Hash28) (Certificate, error)
NewStakeDelegationCertificate creates a Stake Delegation Certificate.
func NewStakeDeregistrationCertificate ¶
func NewStakeDeregistrationCertificate(stakeKey crypto.PubKey) (Certificate, error)
NewStakeDeregistrationCertificate creates a Stake Deregistration Certificate.
func NewStakeRegistrationCertificate ¶
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 ¶
type Mint struct {
// contains filtered or unexported fields
}
Mint is a bundle of MintAssets indexed by Policy.
func (*Mint) Get ¶
func (m *Mint) Get(policyID PolicyID) *MintAssets
Get returns the MintAssets of a given Policy in Mint.
func (*Mint) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler
func (*Mint) MultiAsset ¶
func (m *Mint) MultiAsset() *MultiAsset
MultiAsset returns a new MultiAsset created from Mint.
func (*Mint) Set ¶
func (m *Mint) Set(policyID PolicyID, assets *MintAssets) *Mint
Set sets the MintAssets of a given Policy in Mint.
func (*Mint) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
type MintAssets ¶
type MintAssets struct {
// contains filtered or unexported fields
}
MintAssets represents a set of Cardano Native Tokens to be minted.
func (*MintAssets) Get ¶
func (a *MintAssets) Get(name AssetName) *big.Int
Get returns the value of a given Asset in MintAssets.
func (*MintAssets) Keys ¶
func (a *MintAssets) Keys() []AssetName
Keys returns all the AssetNames stored in MintAssets.
func (*MintAssets) MarshalCBOR ¶
func (a *MintAssets) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler
func (*MintAssets) Set ¶
func (a *MintAssets) Set(name AssetName, val *big.Int) *MintAssets
Set sets the value of a given Asset in MintAssets.
func (*MintAssets) UnmarshalCBOR ¶
func (a *MintAssets) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type MultiAsset ¶
type MultiAsset struct {
// contains filtered or unexported fields
}
MultiAsset is a bundle of Assets indexed by Policy.
func (*MultiAsset) Get ¶
func (ma *MultiAsset) Get(policyID PolicyID) *Assets
Get returns the Assets of a given Policy in MultiAsset.
func (*MultiAsset) Keys ¶
func (ma *MultiAsset) Keys() []PolicyID
Keys returns all the Policies stored in MultiAsset.
func (*MultiAsset) MarshalCBOR ¶
func (ma *MultiAsset) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler
func (*MultiAsset) Set ¶
func (ma *MultiAsset) Set(policyID PolicyID, assets *Assets) *MultiAsset
Set sets the Assets of a given Policy in MultiAsset.
func (*MultiAsset) UnmarshalCBOR ¶
func (ma *MultiAsset) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type NativeScript ¶
type NativeScript struct { Type NativeScriptType KeyHash AddrKeyHash N uint64 Scripts []NativeScript IntervalValue uint64 }
NativeScript is a Cardano Native Script.
func NewScriptPubKey ¶
func NewScriptPubKey(publicKey crypto.PubKey) (NativeScript, error)
NewScriptPubKey returns a new Script PubKey.
func (*NativeScript) Bytes ¶
func (ns *NativeScript) Bytes() ([]byte, error)
Bytes returns the CBOR encoding of the script as bytes.
func (*NativeScript) Hash ¶
func (ns *NativeScript) Hash() (Hash28, error)
Hash returns the script hash using blake2b224.
func (*NativeScript) MarshalCBOR ¶
func (ns *NativeScript) MarshalCBOR() ([]byte, error)
MarshalCBOR implements cbor.Marshaler.
func (*NativeScript) UnmarshalCBOR ¶
func (ns *NativeScript) UnmarshalCBOR(data []byte) error
UnmarshalCBOR implements cbor.Unmarshaler.
type NativeScriptType ¶
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 ¶
type PolicyID struct {
// contains filtered or unexported fields
}
PolicyID is the native token policy id.
func NewPolicyID ¶
func NewPolicyID(script NativeScript) (PolicyID, error)
NewPolicyID returns a new PolicyID using a native script.
func NewPolicyIDFromHash ¶
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 ¶
ProtocolVersion is the protocol version number.
type Rational ¶
func (*Rational) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler
func (*Rational) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler
type Relay ¶
func (*Relay) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*Relay) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
type ScriptHashNamespace ¶
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 ¶
func NewKeyCredential(publicKey crypto.PubKey) (StakeCredential, error)
NewKeyCredential creates a Key Credential.
func NewKeyCredentialFromHash ¶
func NewKeyCredentialFromHash(keyHash AddrKeyHash) (StakeCredential, error)
NewKeyCredential creates a Key Credential from an AddrKeyHash (28 bytes key hash).
func NewScriptCredential ¶
func NewScriptCredential(script []byte) (StakeCredential, error)
NewKeyCredential creates a Script Credential.
func (*StakeCredential) Equal ¶
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 ¶
MarshalCBOR implements cbor.Marshaler.
func (*Tx) UnmarshalCBOR ¶
UnmarshalCBOR implements cbor.Unmarshaler.
type TxAlonzoOutput ¶
type TxBabbageOutput ¶
type TxBabbageOutput struct { Address Address `cbor:"0,keyasint"` Amount *Value `cbor:"1,keyasint"` // TODO: double-check/verify if the below 2 fields need double CBOR enc/dec-oding, // in the cddl those are tagged as #6.24 , means encoded-cbor DatumOption *DatumOption `cbor:"2,keyasint,omitempty"` ScriptRef []byte `cbor:"3,keyasint,omitempty"` }
TxBabbageOutput is the transaction output after alonzo, in babbage era.
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:"11,keyasint,omitempty"` Collateral []*TxInput `cbor:"13,keyasint,omitempty"` RequiredSigners []AddrKeyHash `cbor:"14,keyasint,omitempty"` NetworkID Uint64 `cbor:"15,keyasint,omitempty"` CollateralReturn *TxOutput `cbor:"16,keyasint,omitempty"` TotalCollateral Coin `cbor:"17,keyasint,omitempty"` ReferenceInputs []*TxInput `cbor:"18,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 NewTxBuilderFromTransaction ¶
func NewTxBuilderFromTransaction(protocol *ProtocolParams, inputTx *Tx) *TxBuilder
func (*TxBuilder) AddAuxiliaryData ¶
func (tb *TxBuilder) AddAuxiliaryData(data *AuxiliaryData)
AddAuxiliaryData adds auxiliary data to the transaction.
func (*TxBuilder) AddCertificate ¶
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 ¶
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 ¶
MinCoinsForTxOut computes the minimal amount of coins required for a given transaction output. More info could be found in <https://github.com/input-output-hk/cardano-ledger/blob/master/doc/explanations/min-utxo-alonzo.rst>
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 ¶
func (tb *TxBuilder) Reset()
Reset resets the builder to its initial state.
func (*TxBuilder) SetAdditionalFee ¶
SetAdditionalFee sets arbitrary additional fee coins, like a tip or amount to burn. This is useful to allow workaround around the auto computation of the minimal fee
func (*TxBuilder) SetAdditionalWitnesses ¶
SetAdditionalWitnesses sets future witnesses for a partially signed transction. This is useful to compute the real length and so fee in advance
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 TxLegacyOutput ¶
type TxLegacyOutput struct { Address Address Amount *Value // contains filtered or unexported fields }
TxLegacyOutput is the transaction output before alonzo, shelley-mary-allegra.
type TxOutput ¶
type TxOutput struct {
TxBabbageOutput
}
TxOutput is the transaction output after alonzo, in babbage era.
func NewTxOutput ¶
NewTxOutput creates a new instance of TxOutput
func (*TxOutput) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*TxOutput) UnmarshalCBOR ¶
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 ¶
type Value struct { Coin Coin MultiAsset *MultiAsset }
Value is a bundle of transferable Cardano Native Tokens.
func NewValueWithAssets ¶
func NewValueWithAssets(coin Coin, assets *MultiAsset) *Value
NewValueWithAssets returns a new MultiAsset Value.
func (*Value) Cmp ¶
Compares two Values and returns
-1 if v < rhs 0 if v == rhs 1 if v > rhs 2 if not comparable
func (*Value) MarshalCBOR ¶
MarshalCBOR implements cbor.Marshaler.
func (*Value) UnmarshalCBOR ¶
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 |
---|---|
cli
|
|
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. |