navcoind

package module
v1.1.6 Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2021 License: MIT Imports: 10 Imported by: 0

README

navcoind

A Golang client library wrapping the navcoind JSON RPC API

Installation

$ go get https://github.com/NavExplorer/navcoind-go

Usage

package main

import (
	"github.com/NavExplorer/navcoind-go"
	"log"
)

const (
	SERVER_HOST        = "You server host"
	SERVER_PORT        = port (int)
	USER               = "user"
	PASSWD             = "passwd"
	USESSL             = false
	WALLET_PASSPHRASE  = "WalletPassphrase"
)

func main() {
	bc, err := navcoind.New(SERVER_HOST, SERVER_PORT, USER, PASSWD, USESSL)
	if err != nil {
		log.Fatalln(err)
	}

	//walletpassphrase
	err = bc.WalletPassphrase(WALLET_PASSPHRASE, 3600)
	log.Println(err)

	// backupwallet
	err = bc.BackupWallet("/tmp/wallet.dat")
	log.Println(err)


	// dumpprivkey
	privKey, err := bc.DumpPrivKey("1KU5DX7jKECLxh1nYhmQ7CahY7GMNMVLP3")
	log.Println(err, privKey)

}

Mores examples in example.go (in examples folder)

Documentation

Click on the button below to access the full documentation:

GoDoc

Unit tests

Build Status

More than 100 unit tests are made.

To run tests:

$ go get github.com/onsi/ginkgo/ginkgo
$ go get github.com/onsi/gomega
$ ginkgo

Running Suite: Navcoind Suite	
=============================
Random Seed: 1401120770
Will run 112 of 112 specs

•••••••••••••••••••••••••••••••••••
Ran 112 of 112 Specs in 0.001 seconds
SUCCESS! -- 112 Passed | 0 Failed | 0 Pending | 0 Skipped PASS

Ginkgo ran in 10.856335553s
Test Suite Passed

Todo

  • GetBlockTemplate
  • sendrawtransaction
  • signrawtransaction
  • submitblock
Note on SSL support

Note on ssl support : navcoind library doesn't verify the server's certificate chain. That means that it accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks.

Donation

Donation QR

1HgpsmxV52eAjDcoNpVGpYEhGfgN7mM1JB

Documentation

Overview

Package Navcoind is client library for navcoind JSON RPC API

Index

Constants

View Source
const (
	// VERSION represents navcoind package version
	VERSION = 0.1
	// DEFAULT_RPCCLIENT_TIMEOUT represent http timeout for rcp client
	RPCCLIENT_TIMEOUT = 30
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AddressBalance added in v1.0.0

type AddressBalance struct {
	Balance  uint64 `json:"balance"`
	Received uint64 `json:"received"`
}

type AddressHistory added in v1.1.0

type AddressHistory struct {
	Block   uint64 `json:"block"`
	TxIndex uint   `json:"txindex"`
	Time    int64  `json:"time"`
	TxId    string `json:"txid"`
	Address string `json:"address"`
	Changes struct {
		Balance      int64 `json:"balance"`
		Stakable     int64 `json:"stakable"`
		VotingWeight int64 `json:"voting_weight"`
		Flags        uint  `json:"flags"`
	}
	Result struct {
		Balance      int64 `json:"balance"`
		Stakable     int64 `json:"stakable"`
		VotingWeight int64 `json:"voting_weight"`
	}
}

type AddressHistoryRequest added in v1.1.0

type AddressHistoryRequest struct {
	Addresses []string `json:"addresses"`
	Start     uint64   `json:"start"`
	End       uint64   `json:"end"`
}

type AddressTxids added in v1.1.4

type AddressTxids []string

type AddressTxidsRequest added in v1.1.4

type AddressTxidsRequest struct {
	Addresses []string `json:"addresses"`
	Start     uint64   `json:"start"`
	End       uint64   `json:"end"`
}

type Answer added in v1.0.0

type Answer struct {
	Version             uint32         `json:"version"`
	Answer              string         `json:"answer"`
	Support             int            `json:"support"`
	Votes               int            `json:"votes"`
	Status              string         `json:"status"`
	State               int            `json:"state"`
	StateChangedOnBlock string         `json:"stateChangedOnBlock"`
	TxBlockHash         string         `json:"txblockhash"`
	Parent              string         `json:"parent"`
	Hash                string         `json:"hash"`
	MapState            map[int]string `json:"mapState"`
}

type Bip9SoftFork

type Bip9SoftFork struct {
	Id        int    `json:"id"`
	Status    string `json:"status"`
	Bit       uint   `json:"bit"`
	StartTime uint64 `json:"starttime"`
	Timeout   uint64 `json:"timeout"`
}

type Block

type Block struct {
	Hash                       string   `json:"hash"`
	Confirmations              uint64   `json:"confirmations"`
	StrippedSize               uint64   `json:"strippedsize"`
	Size                       uint64   `json:"size"`
	Weight                     uint64   `json:"weight"`
	Height                     uint64   `json:"height"`
	Version                    uint32   `json:"version"`
	VersionHex                 string   `json:"versionHex"`
	MerkleRoot                 string   `json:"merkleroot"`
	Tx                         []string `json:"tx"`
	TxCount                    uint     `json:"tx_count"`
	ProposalCount              uint     `json:"proposal_count"`
	PaymentRequestCount        uint     `json:"payment_request_count"`
	ProposalVotesCount         uint     `json:"proposal_votes_count"`
	PaymentRequestVotesCount   uint     `json:"payment_request_votes_count"`
	PaymentRequestPayoutsCount uint     `json:"payment_request_payouts_count"`
	Time                       int64    `json:"time"`
	MedianTime                 int64    `json:"mediantime"`
	Nonce                      uint64   `json:"nonce"`
	Bits                       string   `json:"bits"`
	Difficulty                 float64  `json:"difficulty"`
	ChainWork                  string   `json:"chainwork,omitempty"`
	PreviousBlockHash          string   `json:"previousblockhash"`
	NextBlockHash              string   `json:"nextblockhash"`
}

type BlockHeader

type BlockHeader struct {
	Hash              string    `json:"hash"`
	Confirmations     uint64    `json:"confirmations"`
	Height            uint64    `json:"height"`
	Version           uint32    `json:"version"`
	VersionHex        string    `json:"versionHex"`
	MerkleRoot        string    `json:"merkleroot"`
	Time              int64     `json:"time"`
	MedianTime        int64     `json:"mediantime"`
	Mint              float64   `json:"mint"`
	Nonce             uint64    `json:"nonce"`
	Bits              string    `json:"bits"`
	Difficulty        float64   `json:"difficulty"`
	ChainWork         string    `json:"chainwork"`
	NcfSupply         string    `json:"ncfsupply"`
	NcfLocked         string    `json:"ncflocked"`
	Flags             string    `json:"flags"`
	ProofHash         string    `json:"proofhash"`
	EntropyBit        int64     `json:"entropybit"`
	Modifier          string    `json:"modifier"`
	CfundVotes        []DaoVote `json:"cfund_votes"`
	CfundRequestVotes []DaoVote `json:"cfund_request_votes"`
	DaoSupport        []string  `json:"dao_support"`
	DaoVotes          []DaoVote `json:"dao_votes"`
	PreviousBlockHash string    `json:"previousblockhash"`
	NextBlockHash     string    `json:"nextblockhash"`
}

type BlockchainInfo

type BlockchainInfo struct {
	Chain                string                  `json:"chain"`
	Blocks               uint64                  `json:"blocks"`
	Headers              uint64                  `json:"headers"`
	BestBlockHash        string                  `json:"bestblockhash"`
	Difficulty           float64                 `json:"difficulty"`
	MedianTime           uint64                  `json:"mediantime"`
	VerificationProgress float64                 `json:"verificationprocess"`
	ChainWork            string                  `json:"chainwork"`
	Pruned               bool                    `json:"pruned"`
	SoftForks            []SoftFork              `json:"softforks"`
	Bip9SoftForks        map[string]Bip9SoftFork `json:"bip9_softforks"`
}

type CFundStats

type CFundStats struct {
	Consensus Consensus `json:"consensus"`
}

type ChainTip

type ChainTip struct {
	// The height of the current tip
	Height int
	// The hash of the highest tip
	Hash string
	// The length of the associated blockchain branch
	BranchLen int
	// The status of the current tip.
	Status string
}

type Consensus

type Consensus struct {
	BlocksPerVotingCycle                uint    `json:"blocksPerVotingCycle"`
	MinSumVotesPerVotingCycle           uint    `json:"minSumVotesPerVotingCycle"`
	MaxCountVotingCycleProposals        uint    `json:"maxCountVotingCycleProposals"`
	MaxCountVotingCyclePaymentRequests  uint    `json:"maxCountVotingCyclePaymentRequests"`
	VotesAcceptProposalPercentage       uint    `json:"votesAcceptProposalPercentage"`
	VotesRejectProposalPercentage       uint    `json:"votesRejectProposalPercentage"`
	VotesAcceptPaymentRequestPercentage uint    `json:"votesAcceptPaymentRequestPercentage"`
	VotesRejectPaymentRequestPercentage uint    `json:"votesRejectPaymentRequestPercentage"`
	ProposalMinimalFee                  float64 `json:"proposalMinimalFee"`
}

type ConsensusParameter added in v1.0.0

type ConsensusParameter struct {
	Id          int    `json:"id"`
	Description string `json:"desc"`
	Type        int    `json:"type"`
	Value       int    `json:"value"`
}

type Consultation added in v1.0.0

type Consultation struct {
	Version                  uint32          `json:"version"`
	Hash                     string          `json:"hash"`
	BlockHash                string          `json:"blockhash"`
	Question                 string          `json:"question"`
	Support                  int             `json:"support"`
	Abstain                  int             `json:"abstain"`
	RawAnswers               json.RawMessage `json:"answers"`
	Answers                  []*Answer       `json:"-"`
	RangeAnswers             map[string]int  `json:"-"`
	Min                      int             `json:"min"`
	Max                      int             `json:"max"`
	VotingCyclesFromCreation int             `json:"votingCyclesFromCreation"`
	VotingCycleForState      Cycle           `json:"votingCycleForState"`
	Status                   string          `json:"status"`
	State                    int             `json:"state"`
	StateChangedOnBlock      string          `json:"stateChangedOnBlock"`
	MapState                 map[int]string  `json:"mapState"`
}

type Cycle added in v1.0.0

type Cycle struct {
	Current int `json:"current"`
	Max     int `json:"max"`
}

type DaoVote added in v0.1.5

type DaoVote struct {
	Hash string `json:"hash"`
	Vote int    `json:"vote"`
}

type Info

type Info struct {
	Version         uint32  `json:"version"`
	Protocolversion uint32  `json:"protocolversion"`
	Walletversion   uint32  `json:"walletversion"`
	Balance         float64 `json:"balance"`
	Blocks          uint32  `json:"blocks"`
	Timeoffset      int32   `json:"timeoffset"`
	Connections     uint32  `json:"connections"`
	Proxy           string  `json:"proxy,omitempty"`
	Difficulty      float64 `json:"difficulty"`
	Testnet         bool    `json:"testnet"`
	Keypoololdest   uint64  `json:"keypoololdest"`
	KeypoolSize     uint32  `json:"keypoolsize,omitempty"`
	UnlockedUntil   int64   `json:"unlocked_until,omitempty"`
	Paytxfee        float64 `json:"paytxfee"`
	Relayfee        float64 `json:"relayfee"`
	Errors          string  `json:"errors"`
}

type ListAddressResult

type ListAddressResult struct {
	Address string
	Amount  float64
	Account string
}

ListAddressResult represents a result composing ListAddressGroupings slice reply

type MiningInfo

type MiningInfo struct {
	// The current block
	Blocks uint64 `json:"blocks"`

	// The last block size
	CurrentBlocksize uint64 `json:"currentblocksize"`

	// The last block transaction
	CurrentBlockTx uint64 `json:"currentblocktx"`

	// The current difficulty
	Difficulty float64 `json:"difficulty"`

	// Current errors
	Errors string `json:"errors"`

	// The processor limit for generation. -1 if no generation. (see getgenerate or setgenerate calls)
	GenProcLimit int32 `json:"genproclimit"`

	// The size of the mem pool
	PooledtTx uint64 `json:"pooledtx"`

	// If using testnet or not
	Testnet bool `json:"testnet"`

	// If the generation is on or off (see getgenerate or setgenerate calls)
	Generate bool `json:"generate"`

	// The network hashrate
	NetworkHashps uint64 `json:"networkhashps"`

	// Node hashrate
	HashesPersec uint64 `json:"hashespersec"`
}

A MiningInfo represents a mininginfo response

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

A Navcoind represents a Navcoind client

func New

func New(host string, port int, user, passwd string, useSSL, debug bool, timeoutParam ...int) (*Navcoind, error)

New return a new navcoind

func (b *Navcoind) BackupWallet(destination string) error

BackupWallet Safely copies wallet.dat to destination, which can be a directory or a path with filename on the remote server

func (b *Navcoind) CfundStats() (cfundStats CFundStats, err error)

CfundStats Returns statistics about the community fund.

func (b *Navcoind) DumpPrivKey(address string) (privKey string, err error)

DumpPrivKey return private key as string associated to public <address>

func (b *Navcoind) EncryptWallet(passphrase string) error

EncryptWallet encrypts the wallet with <passphrase>.

func (b *Navcoind) GetAccount(address string) (account string, err error)

GetAccount returns the account associated with the given address.

func (b *Navcoind) GetAccountAddress(account string) (address string, err error)

GetAccountAddress Returns the current bitcoin address for receiving payments to this account. If account does not exist, it will be created along with an associated new address that will be returned.

func (b *Navcoind) GetAddressBalance(address string) (addresses *AddressBalance, err error)
func (b *Navcoind) GetAddressHistory(start, end *uint64, addresses ...string) (history []*AddressHistory, err error)
func (b *Navcoind) GetAddressTxids(start, end *uint64, addresses ...string) (txids AddressTxids, err error)
func (b *Navcoind) GetAddressesByAccount(account string) (addresses []string, err error)

GetAddressesByAccount return addresses associated with account <account>

func (b *Navcoind) GetBalance(account string, minconf uint64) (balance float64, err error)

GetBalance return the balance of the server or of a specific account If [account] is "", returns the server's total available balance. If [account] is specified, returns the balance in the account

func (b *Navcoind) GetBestBlockhash() (bestBlockHash string, err error)

GetBestBlockhash returns the hash of the best (tip) block in the longest block chain.

func (b *Navcoind) GetBlock(blockHash string) (block Block, err error)

GetBlock returns information about the block with the given hash.

func (b *Navcoind) GetBlockCount() (count uint64, err error)

GetBlockCount returns the number of blocks in the longest block chain.

func (b *Navcoind) GetBlockHash(index uint64) (hash string, err error)

GetBlockHash returns hash of block in best-block-chain at <index>

func (b *Navcoind) GetBlockTemplate(capabilities []string, mode string) (template string, err error)

TODO a finir GetBlockTemplate Returns data needed to construct a block to work on. See BIP_0022 for more info on params.

func (b *Navcoind) GetBlockchainInfo() (i BlockchainInfo, err error)

GetBlockchainInfo return result of "getblockchaininfo" command

func (b *Navcoind) GetBlockheader(blockHash string) (*BlockHeader, error)
func (b *Navcoind) GetChainTips() (tips []ChainTip, err error)
func (b *Navcoind) GetConnectionCount() (count uint64, err error)

GetConnectionCount returns the number of connections to other nodes.

func (b *Navcoind) GetConsensusParameters(extended bool) (consensusParameters []ConsensusParameter, err error)

GetConsensusParameters returns information about the consensus parameters

func (b *Navcoind) GetConsultation(hash string) (Consultation, error)

GetConsultation returns information about the consultation with the given hash.

func (b *Navcoind) GetDifficulty() (difficulty float64, err error)

GetDifficulty returns the proof-of-work difficulty as a multiple of the minimum difficulty.

func (b *Navcoind) GetGenerate() (generate bool, err error)

GetGenerate returns true or false whether navcoind is currently generating hashes

func (b *Navcoind) GetHashesPerSec() (hashpersec float64, err error)

GetHashesPerSec returns a recent hashes per second performance measurement while generating.

func (b *Navcoind) GetInfo() (i Info, err error)

GetInfo return result of "getinfo" command

func (b *Navcoind) GetMiningInfo() (miningInfo MiningInfo, err error)

GetMiningInfo returns an object containing mining-related information

func (b *Navcoind) GetNewAddress(account ...string) (addr string, err error)

GetNewAddress return a new address for account [account].

func (b *Navcoind) GetPaymentRequest(hash string) (paymentRequest PaymentRequest, err error)

GetPaymentRequest returns information about the proposal with the given hash.

func (b *Navcoind) GetPeerInfo() (peerInfo []Peer, err error)

GetPeerInfo returns data about each connected node

func (b *Navcoind) GetProposal(hash string) (proposal Proposal, err error)

GetProposal returns information about the proposal with the given hash.

func (b *Navcoind) GetRawBlock(blockHash string) (str string, err error)

GetRawBlock returns information about the block with the given hash.

func (b *Navcoind) GetRawChangeAddress(account ...string) (rawAddress string, err error)

GetRawChangeAddress Returns a new Bitcoin address, for receiving change. This is for use with raw transactions, NOT normal use.

func (b *Navcoind) GetRawMempool() (txId []string, err error)

GetRawMempool returns all transaction ids in memory pool

func (b *Navcoind) GetRawMempoolVerbose() (txs map[string]VerboseTx, err error)

GetRawMempoolVerbose returns a verbose set of transactions map [TxId] => VerboseTx

func (b *Navcoind) GetRawTransaction(txId string, verbose bool) (rawTx interface{}, err error)

GetRawTransaction returns raw transaction representation for given transaction id.

func (b *Navcoind) GetReceivedByAccount(account string, minconf uint32) (amount float64, err error)

GetReceivedByAccount Returns the total amount received by addresses with [account] in transactions with at least [minconf] confirmations. If [account] is set to all return will include all transactions to all accounts

func (b *Navcoind) GetReceivedByAddress(address string, minconf uint32) (amount float64, err error)

Returns the amount received by <address> in transactions with at least [minconf] confirmations. It correctly handles the case where someone has sent to the address in multiple transactions. Keep in mind that addresses are only ever used for receiving transactions. Works only for addresses in the local wallet, external addresses will always show 0.

func (b *Navcoind) GetTransaction(txid string) (transaction Transaction, err error)

GetTransaction returns a Navcoind.Transation struct about the given transaction

func (b *Navcoind) GetTxOut(txid string, n uint32, includeMempool bool) (transactionOut UTransactionOut, err error)

GetTxOut returns details about an unspent transaction output (UTXO)

func (b *Navcoind) GetTxOutsetInfo() (txOutSet TransactionOutSet, err error)

GetTxOutsetInfo returns statistics about the unspent transaction output (UTXO) set

func (b *Navcoind) GetWork(data ...string) (response interface{}, err error)

GetWork If [data] is not specified, returns formatted hash data to work on If [data] is specified, tries to solve the block and returns true if it was successful.

func (b *Navcoind) ImportPrivKey(privKey, label string, rescan bool) error

ImportPrivKey Adds a private key (as returned by dumpprivkey) to your wallet. This may take a while, as a rescan is done, looking for existing transactions. Optional [rescan] parameter added in 0.8.0. Note: There's no need to import public key, as in ECDSA (unlike RSA) this can be computed from private key.

func (b *Navcoind) KeyPoolRefill() error

KeyPoolRefill fills the keypool, requires wallet passphrase to be set.

func (b *Navcoind) ListAccounts(minconf int32) (accounts map[string]float64, err error)

ListAccounts returns Object that has account names as keys, account balances as values.

func (b *Navcoind) ListAddressGroupings() (list []ListAddressResult, err error)

ListAddressGroupings returns all addresses in the wallet and info used for coincontrol.

func (b *Navcoind) ListLockUnspent() (unspendableOutputs []UnspendableOutput, err error)

ListLockUnspent returns list of temporarily unspendable outputs

func (b *Navcoind) ListReceivedByAccount(minConf uint32, includeEmpty bool) (list []ReceivedByAccount, err error)

ListReceivedByAccount Returns an slice of AccountRecieved:

func (b *Navcoind) ListReceivedByAddress(minConf uint32, includeEmpty bool) (list []ReceivedByAddress, err error)

ListReceivedByAccount Returns an slice of AccountRecieved:

func (b *Navcoind) ListSinceBlock(blockHash string, targetConfirmations uint32) (transaction []Transaction, err error)

ListSinceBlock

func (b *Navcoind) ListTransactions(account string, count, from uint32) (transaction []Transaction, err error)

ListTransactions returns up to [count] most recent transactions skipping the first [from] transactions for account [account]. If [account] not provided it'll return recent transactions from all accounts.

func (b *Navcoind) ListUnspent(minconf, maxconf uint32) (transactions []Transaction, err error)

ListUnspent returns array of unspent transaction inputs in the wallet.

func (b *Navcoind) LockUnspent(lock bool, outputs []UnspendableOutput) (success bool, err error)

LockUnspent updates(lock/unlock) list of temporarily unspendable outputs

func (b *Navcoind) Move(formAccount, toAccount string, amount float64, minconf uint32, comment string) (success bool, err error)

Move from one account in your wallet to another

func (b *Navcoind) SendFrom(fromAccount, toAddress string, amount float64, minconf uint32, comment, commentTo string) (txID string, err error)

SendFrom send amount from fromAccount to toAddress

amount is a real and is rounded to 8 decimal places.
Will send the given amount to the given address, ensuring the account has a valid balance using [minconf] confirmations.
func (b *Navcoind) SendMany(fromAccount string, amounts map[string]float64, minconf uint32, comment string) (txID string, err error)

SenMany send multiple times

func (b *Navcoind) SendToAddress(toAddress string, amount float64, comment, commentTo string) (txID string, err error)

SendToAddress send an amount to a given address

func (b *Navcoind) SetAccount(address, account string) error

SetAccount sets the account associated with the given address

func (b *Navcoind) SetGenerate(generate bool, genProcLimit int32) error

SetGenerate turns generation on or off. Generation is limited to [genproclimit] processors, -1 is unlimited.

func (b *Navcoind) SetTxFee(amount float64) error

SetTxFee set the transaction fee per kB

func (b *Navcoind) SignMessage(address, message string) (sig string, err error)

SignMessage sign a message with the private key of an address

func (b *Navcoind) Stop() error

Stop stop bitcoin server.

func (b *Navcoind) ValidateAddress(address string) (va ValidateAddressResponse, err error)

ValidateAddress return information about <bitcoinaddress>.

func (b *Navcoind) VerifyMessage(address, sign, message string) (success bool, err error)

Verifymessage Verify a signed message.

func (b *Navcoind) WalletLock() error

WalletLock Removes the wallet encryption key from memory, locking the wallet. After calling this method, you will need to call walletpassphrase again before being able to call any methods which require the wallet to be unlocked.

func (b *Navcoind) WalletPassphrase(passPhrase string, timeout uint64) error

walletPassphrase stores the wallet decryption key in memory for <timeout> seconds.

func (b *Navcoind) WalletPassphraseChange(oldPassphrase, newPassprhase string) error

type PaymentRequest

type PaymentRequest struct {
	Version             uint32 `json:"version"`
	Hash                string `json:"hash"`
	BlockHash           string `json:"blockHash"`
	ProposalHash        string `json:"proposalHash,omitempty"`
	Description         string `json:"description"`
	RequestedAmount     string `json:"requestedAmount"`
	VotesYes            uint   `json:"votesYes"`
	VotesAbs            uint   `json:"votesAbs"`
	VotesNo             uint   `json:"votesNo"`
	VotesExcluded       uint   `json:"votesExcluded"`
	VotingCycle         uint   `json:"votingCycle"`
	Status              string `json:"status"`
	State               uint   `json:"state"`
	StateChangedOnBlock string `json:"stateChangedOnBlock,omitempty"`
	PaidOnBlock         string `json:"paidOnBlock,omitempty"`
}

type Peer

type Peer struct {
	// The ip address and port of the peer
	Addr string `json:"addr"`

	// Local address
	Addrlocal string `json:"addrlocal"`

	// The services
	Services string `json:"services"`

	// The time in seconds since epoch (Jan 1 1970 GMT) of the last send
	Lastsend uint64 `json:"lastsend"`

	// The time in seconds since epoch (Jan 1 1970 GMT) of the last receive
	Lastrecv uint64 `json:"lastrecv"`

	// The total bytes sent
	Bytessent uint64 `json:"bytessent"`

	// The total bytes received
	Bytesrecv uint64 `json:"bytesrecv"`

	// The connection time in seconds since epoch (Jan 1 1970 GMT)
	Conntime uint64 `json:"conntime"`

	// Ping time
	Pingtime float64 `json:"pingtime"`

	// Ping Wait
	Pingwait float64 `json:"pingwait"`

	// The peer version, such as 7001
	Version uint32 `json:"version"`

	// The string version
	Subver string `json:"subver"`

	// Inbound (true) or Outbound (false)
	Inbound bool `json:"inbound"`

	//  The starting height (block) of the peer
	Startingheight int32 `json:"startingheight"`

	// The ban score (stats.nMisbehavior)
	Banscore int32 `json:"banscore"`

	// If sync node
	Syncnode bool `json:"syncnode"`
}

type Proposal

type Proposal struct {
	Version             uint32           `json:"version"`
	Hash                string           `json:"hash"`
	BlockHash           string           `json:"blockHash"`
	Description         string           `json:"description"`
	RequestedAmount     string           `json:"requestedAmount"`
	NotPaidYet          string           `json:"notPaidYet"`
	NotRequestedYet     string           `json:"notRequestedYet"`
	UserPaidFee         string           `json:"userPaidFee"`
	PaymentAddress      string           `json:"paymentAddress"`
	ProposalDuration    uint64           `json:"proposalDuration"`
	ExpiresOn           uint64           `json:"expiresOn"`
	VotesYes            uint             `json:"votesYes"`
	VotesAbs            uint             `json:"votesAbs"`
	VotesNo             uint             `json:"votesNo"`
	VotesExcluded       uint             `json:"votesExcluded"`
	VotingCycle         uint             `json:"votingCycle"`
	Status              string           `json:"status"`
	State               uint             `json:"state"`
	StateChangedOnBlock string           `json:"stateChangedOnBlock,omitempty"`
	PaymentRequests     []PaymentRequest `json:"paymentRequests"`
}

type RPCError

type RPCError struct {
	Code    RPCErrorCode `json:"code,omitempty"`
	Message string       `json:"message,omitempty"`
}

RPCError represents an error that is used as a part of a JSON-RPC Response object.

func (RPCError) Error

func (e RPCError) Error() string

Error returns a string describing the RPC error. This satisfies the builtin error interface.

type RPCErrorCode

type RPCErrorCode int

RPCErrorCode represents an error code to be used as a part of an RPCError which is in turn used in a JSON-RPC Response object.

A specific type is used to help ensure the wrong errors aren't used.

type RawTransaction

type RawTransaction struct {
	Hex             string `json:"hex"`
	Txid            string `json:"txid"`
	Hash            string `json:"hash"`
	Size            uint64 `json:"size"`
	VSize           uint64 `json:"vsize"`
	Version         uint32 `json:"version"`
	LockTime        uint32 `json:"locktime"`
	Strdzeel        string `json:"strdzeel,omitempty"`
	VchTxSig        string `json:"vchTxSig,omitempty"`
	VchBalanceSig   string `json:"vchBalanceSig,omitempty"`
	AnonDestination string `json:"anon-destination,omitempty"`
	Vin             []Vin  `json:"vin"`
	Vout            []Vout `json:"vout"`
	BlockHash       string `json:"blockhash,omitempty"`
	Height          uint64 `json:"height"`
	Confirmations   uint64 `json:"confirmations,omitempty"`
	Time            int64  `json:"time,omitempty"`
	BlockTime       int64  `json:"blocktime,omitempty"`
}

type ReceivedByAccount

type ReceivedByAccount struct {
	// the account of the receiving addresses
	Account string
	// total amount received by addresses with this account
	Amount float64
	// number of confirmations of the most recent transaction included
	Confirmations uint32
}

ReceivedByAccount represents how much coin a account have recieved

type ReceivedByAddress

type ReceivedByAddress struct {
	//  receiving address
	Address string
	// The corresponding account
	Account string
	// total amount received by addresses with this account
	Amount float64
	// number of confirmations of the most recent transaction included
	Confirmations uint32
	// Tansactions ID
	TxIds []string
}

ReceivedByAddress represents how much coin a account have recieved

type ScriptPubKey

type ScriptPubKey struct {
	Asm       string   `json:"asm"`
	Hex       string   `json:"hex"`
	ReqSigs   int      `json:"reqSigs,omitempty"`
	Type      string   `json:"type"`
	Addresses []string `json:"addresses,omitempty"`
	Hash      string   `json:"hash,omitempty"`
}

type ScriptSig

type ScriptSig struct {
	Asm string `json:"asm"`
	Hex string `json:"hex"`
}

type SoftFork

type SoftFork struct {
	Id      string `json:"id"`
	Version int    `json:"version"`
	Enforce struct {
		Status   bool `json:"status"`
		Found    uint `json:"found"`
		Required uint `json:"required"`
		Window   uint `json:"window"`
	}
	Reject struct {
		Status   bool `json:"status"`
		Found    uint `json:"found"`
		Required uint `json:"required"`
		Window   uint `json:"window"`
	}
}

type Transaction

type Transaction struct {
	Amount          float64              `json:"amount"`
	Account         string               `json:"account,omitempty"`
	Address         string               `json:"address,omitempty"`
	Category        string               `json:"category,omitempty"`
	Fee             float64              `json:"fee,omitempty"`
	Confirmations   int64                `json:"confirmations"`
	BlockHash       string               `json:"blockhash"`
	BlockIndex      int64                `json:"blockindex"`
	BlockTime       int64                `json:"blocktime"`
	TxID            string               `json:"txid"`
	WalletConflicts []string             `json:"walletconflicts"`
	Time            int64                `json:"time"`
	TimeReceived    int64                `json:"timereceived"`
	Details         []TransactionDetails `json:"details,omitempty"`
	Hex             string               `json:"hex,omitempty"`
}

type TransactionDetails

type TransactionDetails struct {
	Account  string  `json:"account"`
	Address  string  `json:"address,omitempty"`
	Category string  `json:"category"`
	Amount   float64 `json:"amount"`
	Fee      float64 `json:"fee,omitempty"`
}

type TransactionOutSet

type TransactionOutSet struct {
	Height          uint32  `json:"height"`
	Bestblock       string  `json:"bestblock"`
	Transactions    float64 `json:"transactions"`
	TxOuts          float64 `json:"txouts"`
	BytesSerialized float64 `json:"bytes_serialized"`
	HashSerialized  string  `json:"hash_serialized"`
	TotalAmount     float64 `json:"total_amount"`
}

type UTransactionOut

type UTransactionOut struct {
	Bestblock     string       `json:"bestblock"`
	Confirmations uint32       `json:"confirmations"`
	Value         float64      `json:"value"`
	ScriptPubKey  ScriptPubKey `json:"scriptPubKey"`
	Version       uint32       `json:"version"`
	Coinbase      bool         `json:"coinbase"`
}

type UnspendableOutput

type UnspendableOutput struct {
	TxId string `json:"txid"`
	Vout uint64 `json:"vout"`
}

UnspendableOutput represents a unspendable (locked) output

type ValidateAddressResponse

type ValidateAddressResponse struct {
	IsValid      bool   `json:"isvalid"`
	Address      string `json:"address"`
	IsMine       bool   `json:"ismine"`
	IsScript     bool   `json:"isscript"`
	PubKey       string `json:"pubkey"`
	IsCompressed bool   `json:"iscompressed"`
	Account      string `json:"account"`
}

ValidateAddressResponse represents a response to "validateaddress" call

type VerboseTx

type VerboseTx struct {
	// Virtual transaction size as defined in BIP 141
	Size uint32
	// Transaction fee in BTC
	Fee float64
	// Transaction fee with fee deltas used for mining priority
	ModifiedFee float64
	// Local time when tx entered pool
	Time uint32
	// Block height when tx entered pool
	Height uint32
	// Number of inpool descendents (including this one)
	DescendantCount uint32
	// Virtual transaction size of in-mempool descendants (including this one)
	DescendantSize uint32
	// Modified fees (see above) of in-mempool descendants (including this one)
	DescendantFees float64
	// Number of in-mempool ancestor transactions (including this one)
	AncestorCount uint32
	// Virtual transaction size of in-mempool ancestors (including this one)
	AncestorSize uint32
	// Modified fees (see above) of in-mempool ancestors (including this one)
	AncestorFees uint32
	// Hash of serialized transaction, including witness data
	WTxId string
	// Unconfirmed transactions used as inputs for this transaction
	Depends []string
	// Used by Bitcoin Unlimited RPC
	SpentBy []string
}

type Vin

type Vin struct {
	Coinbase  string    `json:"coinbase,omitempty"`
	Txid      string    `json:"txid,omitempty"`
	Vout      int       `json:"vout,omitempty"`
	ScriptSig ScriptSig `json:"scriptSig,omitempty"`
	Value     float64   `json:"value,omitempty"`
	ValueSat  uint64    `json:"valuesat,omitempty"`
	Address   string    `json:"address,omitempty"`
	Sequence  uint32    `json:"sequence"`
}

type Vout

type Vout struct {
	Value        float64      `json:"value"`
	ValueSat     uint64       `json:"valuesat"`
	N            int          `json:"n"`
	ScriptPubKey ScriptPubKey `json:"scriptPubKey"`
	SpendingKey  string       `json:"spendingKey,omitempty"`
	OutputKey    string       `json:"outputKey,omitempty"`
	EphemeralKey string       `json:"ephemeralKey,omitempty"`
	RangeProof   bool         `json:"rangeProof,omitempty"`
	SpentTxId    string       `json:"spentTxId,omitempty"`
	SpentIndex   int          `json:"spentIndex,omitempty"`
	SpentHeight  int          `json:"spentHeight,omitempty"`
}

type Work

type Work struct {
	Midstate string `json:"midstate"`
	Data     string `json:"data"`
	Hash1    string `json:"hash1"`
	Target   string `json:"target"`
}

A Work represents a formatted hash data to work on

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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