Documentation ¶
Overview ¶
For key value stores where buckets are not supported, we add a byte to the key to represent a bucket. For now, all buckets are hard coded, but we could change that in the future.
Buckets are not really enough to index everything we wish to index. So we have labels as well. Labels are shifted 8 bits left, so they can be combined with the buckets to create a unique key.
This allows us to put the raw directory block at DBlockBucket+L_raw, and meta data about the directory block at DBlockBucket+MetaLabel
Index ¶
- func GetReceipt(manager *MerkleManager, element Hash, anchor Hash) (r *merkle.Receipt, err error)
- func GetSignaturesForSigner(transaction *Transaction, signer protocol.Signer) ([]protocol.Signature, error)
- func UpdateAccount[T protocol.Account](batch *Batch, url *url.URL, fn func(T) error) (T, error)
- type Account
- func (c *Account) AnchorChain(partition string) *AccountAnchorChain
- func (c *Account) AnchorSequenceChain() *Chain2
- func (a *Account) BptReceipt() (*merkle.Receipt, error)
- func (a *Account) ChainByName(name string) (*Chain2, error)
- func (c *Account) Chains() values.Set[*protocol.ChainMetadata]
- func (a *Account) Commit() error
- func (c *Account) Data() *AccountData
- func (c *Account) Directory() values.Set[*url.URL]
- func (a *Account) GetChainByName(name string) (*Chain, error)
- func (a *Account) GetIndexChainByName(name string) (*Chain, error)
- func (a *Account) Hash() ([32]byte, error)
- func (c *Account) IsDirty() bool
- func (c *Account) Key() *record.Key
- func (c *Account) Main() values.Value[protocol.Account]
- func (c *Account) MainChain() *Chain2
- func (c *Account) MajorBlockChain() *Chain2
- func (c *Account) Pending() values.Set[*url.TxID]
- func (c *Account) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *Account) RootChain() *Chain2
- func (c *Account) ScratchChain() *Chain2
- func (c *Account) SignatureChain() *Chain2
- func (a *Account) StateReceipt() (*merkle.Receipt, error)
- func (c *Account) SyntheticAnchors() values.Set[[32]byte]
- func (c *Account) SyntheticForAnchor(anchor [32]byte) values.Set[*url.TxID]
- func (c *Account) SyntheticSequenceChain(partition string) *Chain2
- func (c *Account) Transaction(hash [32]byte) *AccountTransaction
- func (a *Account) UpdatedChains() ([]*protocol.BlockEntry, error)
- func (r *Account) Url() *url.URL
- func (a *Account) VerifyHash(hash []byte) error
- func (c *Account) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type AccountAnchorChain
- func (c *AccountAnchorChain) BPT() *Chain2
- func (c *AccountAnchorChain) Commit() error
- func (c *AccountAnchorChain) IsDirty() bool
- func (c *AccountAnchorChain) Key() *record.Key
- func (c *AccountAnchorChain) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *AccountAnchorChain) Root() *Chain2
- func (c *AccountAnchorChain) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type AccountData
- func (c *AccountData) Commit() error
- func (c *AccountData) Entry() values.Counted[[32]byte]
- func (c *AccountData) IsDirty() bool
- func (c *AccountData) Key() *record.Key
- func (c *AccountData) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *AccountData) Transaction(entryHash [32]byte) values.Value[[32]byte]
- func (c *AccountData) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type AccountIterator
- type AccountTransaction
- func (c *AccountTransaction) Commit() error
- func (c *AccountTransaction) History() values.Set[uint64]
- func (c *AccountTransaction) IsDirty() bool
- func (c *AccountTransaction) Key() *record.Key
- func (c *AccountTransaction) Payments() values.Set[[32]byte]
- func (c *AccountTransaction) RecordHistory(msg messaging.Message) error
- func (c *AccountTransaction) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *AccountTransaction) Signatures() values.Set[*SignatureSetEntry]
- func (c *AccountTransaction) ValidatorSignatures() values.Set[protocol.KeySignature]
- func (c *AccountTransaction) Votes() values.Set[*VoteEntry]
- func (c *AccountTransaction) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type Batch
- func (b *Batch) Account(u *url.URL) *Account
- func (b *Batch) AccountTransaction(id *url.TxID) *AccountTransaction
- func (c *Batch) BPT() *bpt.BPT
- func (b *Batch) Begin(writable bool) *Batch
- func (b *Batch) BptReceipt(key storage.Key, value [32]byte) (*merkle.Receipt, error)
- func (b *Batch) Commit() error
- func (b *Batch) DeleteAccountState_TESTONLY(url *url.URL) error
- func (b *Batch) Discard()
- func (b *Batch) ForEachAccount(fn func(account *Account, hash [32]byte) error) error
- func (b *Batch) GetMinorRootChainAnchor(describe *config.Describe) ([]byte, error)
- func (c *Batch) IsDirty() bool
- func (b *Batch) IterateAccounts() *AccountIterator
- func (c *Batch) Key() *record.Key
- func (c *Batch) Message(hash [32]byte) *Message
- func (b *Batch) Message2(hash []byte) *Message
- func (c *Batch) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (b *Batch) SaveAccounts(file io.WriteSeeker, collect func(*Account) ([]byte, error)) error
- func (b *Batch) SetObserver(observer Observer)
- func (c *Batch) SystemData(partition string) *SystemData
- func (b *Batch) Transaction(id []byte) *Transaction
- func (b *Batch) Transaction2(id [32]byte) *Transaction
- func (b *Batch) Update(fn func(batch *Batch) error) error
- func (b *Batch) UpdatedAccounts() []*Account
- func (b *Batch) View(fn func(batch *Batch) error) error
- func (c *Batch) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type Beginner
- type BlockStateSynthTxnEntry
- func (e *BlockStateSynthTxnEntry) Compare(f *BlockStateSynthTxnEntry) int
- func (v *BlockStateSynthTxnEntry) Copy() *BlockStateSynthTxnEntry
- func (v *BlockStateSynthTxnEntry) CopyAsInterface() interface{}
- func (v *BlockStateSynthTxnEntry) Equal(u *BlockStateSynthTxnEntry) bool
- func (v *BlockStateSynthTxnEntry) IsValid() error
- func (v *BlockStateSynthTxnEntry) MarshalBinary() ([]byte, error)
- func (v *BlockStateSynthTxnEntry) MarshalJSON() ([]byte, error)
- func (v *BlockStateSynthTxnEntry) UnmarshalBinary(data []byte) error
- func (v *BlockStateSynthTxnEntry) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *BlockStateSynthTxnEntry) UnmarshalJSON(data []byte) error
- type Chain
- func (c *Chain) AddEntry(entry []byte, unique bool) error
- func (c *Chain) Anchor() []byte
- func (c *Chain) AnchorAt(height uint64) ([]byte, error)
- func (c *Chain) CurrentState() *merkle.State
- func (c *Chain) Entries(start int64, end int64) ([][]byte, error)
- func (c *Chain) Entry(height int64) ([]byte, error)
- func (c *Chain) EntryAs(height int64, value encoding.BinaryUnmarshaler) error
- func (c *Chain) Height() int64
- func (c *Chain) HeightOf(hash []byte) (int64, error)
- func (c *Chain) Pending() [][]byte
- func (c *Chain) Receipt(from, to int64) (*merkle.Receipt, error)
- func (c *Chain) State(height int64) (*merkle.State, error)
- type Chain2
- func (c *Chain2) Account() *url.URL
- func (c *Chain2) Commit() error
- func (c *Chain2) Entry(height int64) ([]byte, error)
- func (c *Chain2) Get() (*Chain, error)
- func (c *Chain2) Head() values.Value[*merkle.State]
- func (c *Chain2) Index() *Chain2
- func (c *Chain2) IndexOf(hash []byte) (int64, error)
- func (c *Chain2) Inner() *MerkleManager
- func (c *Chain2) IsDirty() bool
- func (c *Chain2) Key() *record.Key
- func (c *Chain2) Name() string
- func (c *Chain2) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *Chain2) Type() merkle.ChainType
- func (c *Chain2) Url() *url.URL
- func (c *Chain2) Walk(opts database.WalkOptions, fn database.WalkFunc) error
- type CollectOptions
- type Database
- func (d *Database) Begin(writable bool) *Batch
- func (d *Database) Close() error
- func (db *Database) Collect(file io.WriteSeeker, partition *url.URL, opts *CollectOptions) error
- func (db *Database) Restore(file ioutil.SectionReader, opts *RestoreOptions) error
- func (d *Database) SetObserver(observer Observer)
- func (d *Database) Store() (keyvalue.Beginner, error)
- func (d *Database) Update(fn func(batch *Batch) error) error
- func (d *Database) View(fn func(batch *Batch) error) error
- type Hash
- type HashFunc
- type HashList
- type MerkleManager
- func (m *MerkleManager) AddHash(hash Hash, unique bool) error
- func (m *MerkleManager) BuildReceipt(r *merkle.Receipt) error
- func (c *MerkleManager) Commit() error
- func (c *MerkleManager) Element(index uint64) values.Value[[]byte]
- func (c *MerkleManager) ElementIndex(hash []byte) values.Value[uint64]
- func (m *MerkleManager) Get(element int64) (Hash, error)
- func (m *MerkleManager) GetAnyState(element int64) (ms *merkle.State, err error)
- func (m *MerkleManager) GetElementIndex(hash []byte) (int64, error)
- func (m *MerkleManager) GetIntermediate(element, height int64) (Left, Right Hash, err error)
- func (m *MerkleManager) GetRange(begin, end int64) ([][]byte, error)
- func (m *MerkleManager) GetState(element int64) *merkle.State
- func (c *MerkleManager) Head() values.Value[*merkle.State]
- func (c *MerkleManager) IsDirty() bool
- func (c *MerkleManager) Key() *record.Key
- func (c *MerkleManager) MarkFreq() int64
- func (c *MerkleManager) MarkMask() int64
- func (c *MerkleManager) MarkPower() int64
- func (c *MerkleManager) Name() string
- func (c *MerkleManager) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *MerkleManager) States(index uint64) values.Value[*merkle.State]
- func (c *MerkleManager) Type() merkle.ChainType
- func (c *MerkleManager) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type Message
- func (c *Message) Cause() values.Set[*url.TxID]
- func (c *Message) Commit() error
- func (m *Message) FindSigners(u *url.URL) ([]*url.URL, error)
- func (c *Message) IsDirty() bool
- func (c *Message) Key() *record.Key
- func (m *Message) Main() values.Value[messaging.Message]
- func (c *Message) Produced() values.Set[*url.TxID]
- func (c *Message) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *Message) Signers() values.Set[*url.URL]
- func (c *Message) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type Observer
- type ReceiptList
- func (v *ReceiptList) Copy() *ReceiptList
- func (v *ReceiptList) CopyAsInterface() interface{}
- func (v *ReceiptList) Equal(u *ReceiptList) bool
- func (r *ReceiptList) Included(entry []byte) bool
- func (v *ReceiptList) IsValid() error
- func (v *ReceiptList) MarshalBinary() ([]byte, error)
- func (v *ReceiptList) MarshalJSON() ([]byte, error)
- func (v *ReceiptList) UnmarshalBinary(data []byte) error
- func (v *ReceiptList) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *ReceiptList) UnmarshalJSON(data []byte) error
- func (r *ReceiptList) Validate(opts *merkle.ValidateOptions) bool
- type RestoreOptions
- type SigOrTxn
- func (v *SigOrTxn) Copy() *SigOrTxn
- func (v *SigOrTxn) CopyAsInterface() interface{}
- func (v *SigOrTxn) Equal(u *SigOrTxn) bool
- func (v *SigOrTxn) IsValid() error
- func (v *SigOrTxn) MarshalBinary() ([]byte, error)
- func (v *SigOrTxn) MarshalJSON() ([]byte, error)
- func (v *SigOrTxn) UnmarshalBinary(data []byte) error
- func (v *SigOrTxn) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *SigOrTxn) UnmarshalJSON(data []byte) error
- type SigSetEntry
- func (s *SigSetEntry) Compare(t *SigSetEntry) int
- func (v *SigSetEntry) Copy() *SigSetEntry
- func (v *SigSetEntry) CopyAsInterface() interface{}
- func (v *SigSetEntry) Equal(u *SigSetEntry) bool
- func (v *SigSetEntry) IsValid() error
- func (v *SigSetEntry) MarshalBinary() ([]byte, error)
- func (v *SigSetEntry) MarshalJSON() ([]byte, error)
- func (v *SigSetEntry) UnmarshalBinary(data []byte) error
- func (v *SigSetEntry) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *SigSetEntry) UnmarshalJSON(data []byte) error
- type SignatureSet
- type SignatureSetEntry
- func (v *SignatureSetEntry) Copy() *SignatureSetEntry
- func (v *SignatureSetEntry) CopyAsInterface() interface{}
- func (v *SignatureSetEntry) Equal(u *SignatureSetEntry) bool
- func (v *SignatureSetEntry) IsValid() error
- func (v *SignatureSetEntry) MarshalBinary() ([]byte, error)
- func (v *SignatureSetEntry) MarshalJSON() ([]byte, error)
- func (a *SignatureSetEntry) PathHash() [32]byte
- func (v *SignatureSetEntry) UnmarshalBinary(data []byte) error
- func (v *SignatureSetEntry) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *SignatureSetEntry) UnmarshalJSON(data []byte) error
- type SparseHashList
- type SystemData
- func (c *SystemData) Commit() error
- func (c *SystemData) IsDirty() bool
- func (c *SystemData) Key() *record.Key
- func (c *SystemData) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (c *SystemData) SyntheticIndexIndex(block uint64) values.Value[uint64]
- func (c *SystemData) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type Transaction
- func (t *Transaction) AddSignature(keyEntryIndex uint64, newSignature protocol.Signature) (int, error)
- func (t *Transaction) AddSystemSignature(net *config.Describe, newSignature protocol.Signature) (int, error)
- func (c *Transaction) Chains() values.Set[*TransactionChainEntry]
- func (c *Transaction) Commit() error
- func (c *Transaction) IsDirty() bool
- func (c *Transaction) Key() *record.Key
- func (c *Transaction) Main() values.Value[*SigOrTxn]
- func (c *Transaction) Produced() values.Set[*url.TxID]
- func (t *Transaction) ReadSignatures(signer *url.URL) (*SignatureSet, error)
- func (t *Transaction) ReadSignaturesForSigner(signer protocol.Signer2) (*SignatureSet, error)
- func (c *Transaction) Resolve(key *record.Key) (record.Record, *record.Key, error)
- func (t *Transaction) RestoreSignatureSets(signer *url.URL, version uint64, entries []SigSetEntry) error
- func (t *Transaction) Signatures(signer *url.URL) (*SignatureSet, error)
- func (t *Transaction) SignaturesForSigner(signer protocol.Signer2) (*SignatureSet, error)
- func (t *Transaction) Status() values.Value[*protocol.TransactionStatus]
- func (c *Transaction) Walk(opts record.WalkOptions, fn record.WalkFunc) error
- type TransactionChainEntry
- func (e *TransactionChainEntry) Compare(f *TransactionChainEntry) int
- func (v *TransactionChainEntry) Copy() *TransactionChainEntry
- func (v *TransactionChainEntry) CopyAsInterface() interface{}
- func (v *TransactionChainEntry) Equal(u *TransactionChainEntry) bool
- func (v *TransactionChainEntry) IsValid() error
- func (v *TransactionChainEntry) MarshalBinary() ([]byte, error)
- func (v *TransactionChainEntry) UnmarshalBinary(data []byte) error
- func (v *TransactionChainEntry) UnmarshalBinaryFrom(rd io.Reader) error
- type Updater
- type Viewer
- type VoteEntry
- func (v *VoteEntry) Copy() *VoteEntry
- func (v *VoteEntry) CopyAsInterface() interface{}
- func (v *VoteEntry) Equal(u *VoteEntry) bool
- func (v *VoteEntry) IsValid() error
- func (v *VoteEntry) MarshalBinary() ([]byte, error)
- func (v *VoteEntry) MarshalJSON() ([]byte, error)
- func (v *VoteEntry) UnmarshalBinary(data []byte) error
- func (v *VoteEntry) UnmarshalBinaryFrom(rd io.Reader) error
- func (v *VoteEntry) UnmarshalJSON(data []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetReceipt ¶ added in v1.1.0
GetReceipt Given a merkle tree and two elements, produce a proof that the element was used to derive the DAG at the anchor Note that the element must be added to the Merkle Tree before the anchor, but the anchor can be any element after the element, or even the element itself.
func GetSignaturesForSigner ¶ added in v1.0.0
Types ¶
type Account ¶
type Account struct {
// contains filtered or unexported fields
}
func (*Account) AnchorChain ¶ added in v1.0.0
func (c *Account) AnchorChain(partition string) *AccountAnchorChain
func (*Account) AnchorSequenceChain ¶ added in v1.0.0
func (*Account) BptReceipt ¶ added in v1.0.0
BptReceipt builds a BPT receipt for the account.
func (*Account) ChainByName ¶ added in v1.0.0
ChainByName returns account Chain2 for the named chain, or a not found error if there is no such chain.
func (*Account) Chains ¶ added in v1.0.0
func (c *Account) Chains() values.Set[*protocol.ChainMetadata]
func (*Account) Data ¶
func (c *Account) Data() *AccountData
func (*Account) GetChainByName ¶ added in v1.0.0
GetChainByName calls ChainByName and Get.
func (*Account) GetIndexChainByName ¶ added in v1.0.0
GetChainByName calls ChainByName, Index, and Get.
func (*Account) MajorBlockChain ¶ added in v1.0.0
func (*Account) ScratchChain ¶ added in v1.0.0
func (*Account) SignatureChain ¶ added in v1.0.0
func (*Account) StateReceipt ¶ added in v0.5.1
StateReceipt returns a Merkle receipt for the account state in the BPT.
func (*Account) SyntheticAnchors ¶ added in v1.0.0
func (*Account) SyntheticForAnchor ¶ added in v0.6.0
func (*Account) SyntheticSequenceChain ¶ added in v1.0.0
func (*Account) Transaction ¶ added in v1.1.0
func (c *Account) Transaction(hash [32]byte) *AccountTransaction
func (*Account) UpdatedChains ¶ added in v1.0.2
func (a *Account) UpdatedChains() ([]*protocol.BlockEntry, error)
UpdatedChains returns a block entry for every chain updated in the current database batch.
func (*Account) VerifyHash ¶ added in v1.0.0
type AccountAnchorChain ¶ added in v1.0.0
type AccountAnchorChain struct {
// contains filtered or unexported fields
}
func (*AccountAnchorChain) BPT ¶ added in v1.0.0
func (c *AccountAnchorChain) BPT() *Chain2
func (*AccountAnchorChain) Commit ¶ added in v1.0.0
func (c *AccountAnchorChain) Commit() error
func (*AccountAnchorChain) IsDirty ¶ added in v1.0.0
func (c *AccountAnchorChain) IsDirty() bool
func (*AccountAnchorChain) Key ¶ added in v1.1.1
func (c *AccountAnchorChain) Key() *record.Key
func (*AccountAnchorChain) Root ¶ added in v1.0.0
func (c *AccountAnchorChain) Root() *Chain2
func (*AccountAnchorChain) Walk ¶ added in v1.1.1
func (c *AccountAnchorChain) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type AccountData ¶ added in v1.0.0
type AccountData struct {
// contains filtered or unexported fields
}
func (*AccountData) Commit ¶ added in v1.0.0
func (c *AccountData) Commit() error
func (*AccountData) IsDirty ¶ added in v1.0.0
func (c *AccountData) IsDirty() bool
func (*AccountData) Key ¶ added in v1.1.1
func (c *AccountData) Key() *record.Key
func (*AccountData) Transaction ¶ added in v1.0.0
func (c *AccountData) Transaction(entryHash [32]byte) values.Value[[32]byte]
func (*AccountData) Walk ¶ added in v1.1.1
func (c *AccountData) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type AccountIterator ¶ added in v1.1.1
type AccountIterator struct {
// contains filtered or unexported fields
}
func (*AccountIterator) Err ¶ added in v1.1.1
func (it *AccountIterator) Err() error
func (*AccountIterator) Next ¶ added in v1.1.1
func (it *AccountIterator) Next() (*Account, bool)
type AccountTransaction ¶ added in v1.1.0
type AccountTransaction struct {
// contains filtered or unexported fields
}
func (*AccountTransaction) Commit ¶ added in v1.1.0
func (c *AccountTransaction) Commit() error
func (*AccountTransaction) History ¶ added in v1.1.0
func (c *AccountTransaction) History() values.Set[uint64]
func (*AccountTransaction) IsDirty ¶ added in v1.1.0
func (c *AccountTransaction) IsDirty() bool
func (*AccountTransaction) Key ¶ added in v1.1.1
func (c *AccountTransaction) Key() *record.Key
func (*AccountTransaction) Payments ¶ added in v1.1.0
func (c *AccountTransaction) Payments() values.Set[[32]byte]
func (*AccountTransaction) RecordHistory ¶ added in v1.1.0
func (c *AccountTransaction) RecordHistory(msg messaging.Message) error
RecordHistory adds the message to the signature chain and history.
func (*AccountTransaction) Signatures ¶ added in v1.1.0
func (c *AccountTransaction) Signatures() values.Set[*SignatureSetEntry]
func (*AccountTransaction) ValidatorSignatures ¶ added in v1.1.0
func (c *AccountTransaction) ValidatorSignatures() values.Set[protocol.KeySignature]
func (*AccountTransaction) Votes ¶ added in v1.1.0
func (c *AccountTransaction) Votes() values.Set[*VoteEntry]
func (*AccountTransaction) Walk ¶ added in v1.1.1
func (c *AccountTransaction) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type Batch ¶
type Batch struct {
// contains filtered or unexported fields
}
func (*Batch) AccountTransaction ¶ added in v1.1.0
func (b *Batch) AccountTransaction(id *url.TxID) *AccountTransaction
func (*Batch) BptReceipt ¶ added in v0.5.1
BptReceipt builds a BPT receipt for the given key.
func (*Batch) Commit ¶
Commit commits pending writes to the key-value store or the parent batch. Attempting to use the Batch after calling Commit or Discard will result in a panic.
func (*Batch) DeleteAccountState_TESTONLY ¶ added in v1.0.0
DeleteAccountState_TESTONLY is intended for testing purposes only. It deletes an account from the database. It will panic if the batch's store is not a key-value store.
func (*Batch) Discard ¶
func (b *Batch) Discard()
Discard discards pending writes. Attempting to use the Batch after calling Discard will result in a panic.
func (*Batch) ForEachAccount ¶ added in v1.1.0
func (*Batch) GetMinorRootChainAnchor ¶ added in v0.5.1
func (*Batch) IterateAccounts ¶ added in v1.1.1
func (b *Batch) IterateAccounts() *AccountIterator
func (*Batch) SaveAccounts ¶ added in v1.0.0
func (*Batch) SetObserver ¶ added in v1.1.0
SetObserver sets the database observer.
func (*Batch) SystemData ¶ added in v1.0.0
func (c *Batch) SystemData(partition string) *SystemData
func (*Batch) Transaction ¶
func (b *Batch) Transaction(id []byte) *Transaction
Transaction returns an Transaction for the given hash.
func (*Batch) Transaction2 ¶ added in v1.1.0
func (b *Batch) Transaction2(id [32]byte) *Transaction
func (*Batch) Update ¶ added in v0.5.1
Update runs the function with a writable transaction and commits if the function succeeds.
func (*Batch) UpdatedAccounts ¶ added in v1.0.2
UpdatedAccounts returns every account updated in this database batch.
type BlockStateSynthTxnEntry ¶ added in v1.0.0
type BlockStateSynthTxnEntry struct { Account *url.URL `json:"account,omitempty" form:"account" query:"account" validate:"required"` Transaction []byte `json:"transaction,omitempty" form:"transaction" query:"transaction" validate:"required"` ChainEntry uint64 `json:"chainEntry,omitempty" form:"chainEntry" query:"chainEntry" validate:"required"` // contains filtered or unexported fields }
func (*BlockStateSynthTxnEntry) Compare ¶ added in v1.0.0
func (e *BlockStateSynthTxnEntry) Compare(f *BlockStateSynthTxnEntry) int
func (*BlockStateSynthTxnEntry) Copy ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) Copy() *BlockStateSynthTxnEntry
func (*BlockStateSynthTxnEntry) CopyAsInterface ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) CopyAsInterface() interface{}
func (*BlockStateSynthTxnEntry) Equal ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) Equal(u *BlockStateSynthTxnEntry) bool
func (*BlockStateSynthTxnEntry) IsValid ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) IsValid() error
func (*BlockStateSynthTxnEntry) MarshalBinary ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) MarshalBinary() ([]byte, error)
func (*BlockStateSynthTxnEntry) MarshalJSON ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) MarshalJSON() ([]byte, error)
func (*BlockStateSynthTxnEntry) UnmarshalBinary ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) UnmarshalBinary(data []byte) error
func (*BlockStateSynthTxnEntry) UnmarshalBinaryFrom ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) UnmarshalBinaryFrom(rd io.Reader) error
func (*BlockStateSynthTxnEntry) UnmarshalJSON ¶ added in v1.0.0
func (v *BlockStateSynthTxnEntry) UnmarshalJSON(data []byte) error
type Chain ¶
type Chain struct {
// contains filtered or unexported fields
}
Chain manages a Merkle tree (chain).
func (*Chain) AnchorAt ¶ added in v0.5.1
AnchorAt calculates the anchor of the chain at the given height.
func (*Chain) CurrentState ¶ added in v0.5.1
CurrentState returns the current state of the chain.
func (*Chain) EntryAs ¶ added in v0.5.1
func (c *Chain) EntryAs(height int64, value encoding.BinaryUnmarshaler) error
EntryAs loads and unmarshals the entry in the chain at the given height.
type Chain2 ¶ added in v1.0.0
type Chain2 struct {
// contains filtered or unexported fields
}
Chain2 is a wrapper for Chain.
func (*Chain2) Get ¶ added in v1.0.0
Get converts the Chain2 to a Chain, updating the account's chains index and loading the chain head.
func (*Chain2) Index ¶ added in v1.0.0
Index returns the index chain of this chain. Index will panic if called on an index chain.
func (*Chain2) Inner ¶ added in v1.0.0
func (c *Chain2) Inner() *MerkleManager
type CollectOptions ¶ added in v1.1.1
type CollectOptions struct {
PreserveAll bool
}
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database is an Accumulate database.
func OpenBadger ¶ added in v0.5.1
func OpenInMemory ¶ added in v0.5.1
func (*Database) Collect ¶ added in v1.1.1
func (db *Database) Collect(file io.WriteSeeker, partition *url.URL, opts *CollectOptions) error
func (*Database) Restore ¶ added in v1.1.1
func (db *Database) Restore(file ioutil.SectionReader, opts *RestoreOptions) error
func (*Database) SetObserver ¶ added in v1.1.0
SetObserver sets the database observer.
func (*Database) Store ¶ added in v1.1.1
Store returns the underlying key-value store. Store may return an error in the future.
type Hash ¶ added in v1.1.0
type Hash []byte
This Stateful Merkle Tree implementation handles 256 bit hashes
func (Hash) BinarySize ¶ added in v1.1.0
func (Hash) Combine ¶ added in v1.1.0
Combine Hash this hash (the left hash) with the given right hash to produce a new hash
func (Hash) Copy ¶ added in v1.1.0
Copy Make a copy of a Hash (so the caller cannot modify the original version)
func (Hash) MarshalBinary ¶ added in v1.1.0
func (*Hash) UnmarhsalBinary ¶ added in v1.1.0
type HashList ¶ added in v1.1.0
type HashList [][]byte
func (HashList) BinarySize ¶ added in v1.1.0
func (HashList) MarshalBinary ¶ added in v1.1.0
func (*HashList) UnmarhsalBinary ¶ added in v1.1.0
type MerkleManager ¶ added in v1.1.0
type MerkleManager struct {
// contains filtered or unexported fields
}
func (*MerkleManager) AddHash ¶ added in v1.1.0
func (m *MerkleManager) AddHash(hash Hash, unique bool) error
AddHash adds a Hash to the Chain controlled by the ChainManager. If unique is true, the hash will not be added if it is already in the chain.
func (*MerkleManager) BuildReceipt ¶ added in v1.1.0
func (m *MerkleManager) BuildReceipt(r *merkle.Receipt) error
BuildReceipt takes the values collected by GetReceipt and flushes out the data structures in the receipt to represent a fully populated version.
func (*MerkleManager) Commit ¶ added in v1.1.0
func (c *MerkleManager) Commit() error
func (*MerkleManager) Element ¶ added in v1.1.0
func (c *MerkleManager) Element(index uint64) values.Value[[]byte]
func (*MerkleManager) ElementIndex ¶ added in v1.1.0
func (c *MerkleManager) ElementIndex(hash []byte) values.Value[uint64]
func (*MerkleManager) Get ¶ added in v1.1.0
func (m *MerkleManager) Get(element int64) (Hash, error)
Get the nth leaf node
func (*MerkleManager) GetAnyState ¶ added in v1.1.0
func (m *MerkleManager) GetAnyState(element int64) (ms *merkle.State, err error)
GetAnyState We only store the state at MarkPoints. This function computes a missing state even if one isn't stored for a particular element.
func (*MerkleManager) GetElementIndex ¶ added in v1.1.0
func (m *MerkleManager) GetElementIndex(hash []byte) (int64, error)
GetElementIndex Get an Element of a Merkle Tree from the database
func (*MerkleManager) GetIntermediate ¶ added in v1.1.0
func (m *MerkleManager) GetIntermediate(element, height int64) (Left, Right Hash, err error)
GetIntermediate Return the last two hashes that were combined to create the local Merkle Root at the given index. The element provided must be odd, and the Pending List must be fully populated up to height specified.
func (*MerkleManager) GetRange ¶ added in v1.1.0
func (m *MerkleManager) GetRange(begin, end int64) ([][]byte, error)
GetRange returns the list of hashes with indexes indicated by range: (begin,end) begin must be before or equal to end. The hash with index begin upto but not including end are the hashes returned. Indexes are zero based, so the first hash in the merkle.State is at 0
func (*MerkleManager) GetState ¶ added in v1.1.0
func (m *MerkleManager) GetState(element int64) *merkle.State
GetState Query the database for the merkle state for a given index, i.e. the state Note that not every element in the Merkle Tree has a stored state; states are stored at the frequency indicated by the Mark Power. We also store the state of the chain at the end of a block regardless, but this state overwrites the previous block state.
If no state exists in the database for the element, GetState returns nil
func (*MerkleManager) Head ¶ added in v1.1.0
func (c *MerkleManager) Head() values.Value[*merkle.State]
func (*MerkleManager) IsDirty ¶ added in v1.1.0
func (c *MerkleManager) IsDirty() bool
func (*MerkleManager) Key ¶ added in v1.1.1
func (c *MerkleManager) Key() *record.Key
func (*MerkleManager) MarkFreq ¶ added in v1.1.0
func (c *MerkleManager) MarkFreq() int64
func (*MerkleManager) MarkMask ¶ added in v1.1.0
func (c *MerkleManager) MarkMask() int64
func (*MerkleManager) MarkPower ¶ added in v1.1.0
func (c *MerkleManager) MarkPower() int64
func (*MerkleManager) Name ¶ added in v1.1.0
func (c *MerkleManager) Name() string
func (*MerkleManager) Type ¶ added in v1.1.0
func (c *MerkleManager) Type() merkle.ChainType
func (*MerkleManager) Walk ¶ added in v1.1.1
func (c *MerkleManager) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type Message ¶ added in v1.1.0
type Message struct {
// contains filtered or unexported fields
}
func (*Message) FindSigners ¶ added in v1.1.0
FindSigners return signers that are equal to or a child of the given URL. FindSigners only returns an error if the signer list cannot be retrieved. FindSigners returns nil, if no matching signers are found.
type ReceiptList ¶ added in v1.1.0
type ReceiptList struct { // MerkleState merkle.State at the beginning of the list. MerkleState *merkle.State `json:"merkleState,omitempty" form:"merkleState" query:"merkleState" validate:"required"` Elements [][]byte `json:"elements,omitempty" form:"elements" query:"elements" validate:"required"` Receipt *merkle.Receipt `json:"receipt,omitempty" form:"receipt" query:"receipt" validate:"required"` ContinuedReceipt *merkle.Receipt `json:"continuedReceipt,omitempty" form:"continuedReceipt" query:"continuedReceipt" validate:"required"` // contains filtered or unexported fields }
func GetReceiptList ¶ added in v1.1.0
func GetReceiptList(manager *MerkleManager, Start int64, End int64) (r *ReceiptList, err error)
GetReceiptList Given a merkle tree with a start point and an end point, create a ReceiptList for all the elements from the start hash to the end hash, inclusive.
func NewReceiptList ¶ added in v1.1.0
func NewReceiptList() *ReceiptList
NewReceiptList Return a new ReceiptList with at least a MerkleState initialized
func (*ReceiptList) Copy ¶ added in v1.1.0
func (v *ReceiptList) Copy() *ReceiptList
func (*ReceiptList) CopyAsInterface ¶ added in v1.1.0
func (v *ReceiptList) CopyAsInterface() interface{}
func (*ReceiptList) Equal ¶ added in v1.1.0
func (v *ReceiptList) Equal(u *ReceiptList) bool
func (*ReceiptList) Included ¶ added in v1.1.0
func (r *ReceiptList) Included(entry []byte) bool
Included Tests an entry for inclusion in the given ReceiptList Note that while a ReceiptList proves inclusion in a Merkle Tree, and the fact that the list of elements proceed in order up to and including the anchor point, the ReceiptList does not necessarily prove the indices of the elements in the Merkle Tree. This could be solved by salting Receipts with the index of the hash at the anchor point.
func (*ReceiptList) IsValid ¶ added in v1.1.0
func (v *ReceiptList) IsValid() error
func (*ReceiptList) MarshalBinary ¶ added in v1.1.0
func (v *ReceiptList) MarshalBinary() ([]byte, error)
func (*ReceiptList) MarshalJSON ¶ added in v1.1.0
func (v *ReceiptList) MarshalJSON() ([]byte, error)
func (*ReceiptList) UnmarshalBinary ¶ added in v1.1.0
func (v *ReceiptList) UnmarshalBinary(data []byte) error
func (*ReceiptList) UnmarshalBinaryFrom ¶ added in v1.1.0
func (v *ReceiptList) UnmarshalBinaryFrom(rd io.Reader) error
func (*ReceiptList) UnmarshalJSON ¶ added in v1.1.0
func (v *ReceiptList) UnmarshalJSON(data []byte) error
func (*ReceiptList) Validate ¶ added in v1.1.0
func (r *ReceiptList) Validate(opts *merkle.ValidateOptions) bool
Validate Take a receipt and validate that the element hash progresses to the Merkle Dag Root hash (MDRoot) in the receipt
type RestoreOptions ¶ added in v1.1.1
type RestoreOptions struct {
BatchRecordLimit int
}
type SigOrTxn ¶ added in v0.6.0
type SigOrTxn struct { Transaction *protocol.Transaction `json:"transaction,omitempty" form:"transaction" query:"transaction" validate:"required"` Signature protocol.Signature `json:"signature,omitempty" form:"signature" query:"signature" validate:"required"` Txid *url.TxID `json:"txid,omitempty" form:"txid" query:"txid" validate:"required"` // contains filtered or unexported fields }
func (*SigOrTxn) CopyAsInterface ¶ added in v0.6.0
func (v *SigOrTxn) CopyAsInterface() interface{}
func (*SigOrTxn) MarshalBinary ¶ added in v0.6.0
func (*SigOrTxn) MarshalJSON ¶ added in v0.6.0
func (*SigOrTxn) UnmarshalBinary ¶ added in v0.6.0
func (*SigOrTxn) UnmarshalBinaryFrom ¶ added in v0.6.0
func (*SigOrTxn) UnmarshalJSON ¶ added in v0.6.0
type SigSetEntry ¶ added in v1.0.0
type SigSetEntry struct { Type protocol.SignatureType `json:"type,omitempty" form:"type" query:"type" validate:"required"` KeyEntryIndex uint64 `json:"keyEntryIndex,omitempty" form:"keyEntryIndex" query:"keyEntryIndex" validate:"required"` SignatureHash [32]byte `json:"signatureHash,omitempty" form:"signatureHash" query:"signatureHash" validate:"required"` ValidatorKeyHash *[32]byte `json:"validatorKeyHash,omitempty" form:"validatorKeyHash" query:"validatorKeyHash" validate:"required"` // contains filtered or unexported fields }
func (*SigSetEntry) Compare ¶ added in v1.0.0
func (s *SigSetEntry) Compare(t *SigSetEntry) int
func (*SigSetEntry) Copy ¶ added in v1.0.0
func (v *SigSetEntry) Copy() *SigSetEntry
func (*SigSetEntry) CopyAsInterface ¶ added in v1.0.0
func (v *SigSetEntry) CopyAsInterface() interface{}
func (*SigSetEntry) Equal ¶ added in v1.0.0
func (v *SigSetEntry) Equal(u *SigSetEntry) bool
func (*SigSetEntry) IsValid ¶ added in v1.0.0
func (v *SigSetEntry) IsValid() error
func (*SigSetEntry) MarshalBinary ¶ added in v1.0.0
func (v *SigSetEntry) MarshalBinary() ([]byte, error)
func (*SigSetEntry) MarshalJSON ¶ added in v1.0.0
func (v *SigSetEntry) MarshalJSON() ([]byte, error)
func (*SigSetEntry) UnmarshalBinary ¶ added in v1.0.0
func (v *SigSetEntry) UnmarshalBinary(data []byte) error
func (*SigSetEntry) UnmarshalBinaryFrom ¶ added in v1.0.0
func (v *SigSetEntry) UnmarshalBinaryFrom(rd io.Reader) error
func (*SigSetEntry) UnmarshalJSON ¶ added in v1.0.0
func (v *SigSetEntry) UnmarshalJSON(data []byte) error
type SignatureSet ¶ added in v0.5.1
type SignatureSet struct {
// contains filtered or unexported fields
}
func (*SignatureSet) Add ¶ added in v0.5.1
Add adds a signature to the signature set. Add does nothing if the signature set already includes the signer's public key. The entry hash must refer to a signature chain entry.
func (*SignatureSet) Count ¶ added in v0.5.1
func (s *SignatureSet) Count() int
func (*SignatureSet) Entries ¶ added in v1.0.0
func (s *SignatureSet) Entries() []SigSetEntry
func (*SignatureSet) Version ¶ added in v1.0.0
func (s *SignatureSet) Version() uint64
type SignatureSetEntry ¶ added in v1.1.0
type SignatureSetEntry struct { // KeyIndex is the index of the public key entry in the signer. KeyIndex uint64 `json:"keyIndex" form:"keyIndex" query:"keyIndex" validate:"required"` // Version is the signer version. Version uint64 `json:"version,omitempty" form:"version" query:"version" validate:"required"` // Path is the authority/delegation path. Path []*url.URL `json:"path,omitempty" form:"path" query:"path" validate:"required"` // Hash is the hash of the signature. Hash [32]byte `json:"hash,omitempty" form:"hash" query:"hash" validate:"required"` // contains filtered or unexported fields }
func (*SignatureSetEntry) Copy ¶ added in v1.1.0
func (v *SignatureSetEntry) Copy() *SignatureSetEntry
func (*SignatureSetEntry) CopyAsInterface ¶ added in v1.1.0
func (v *SignatureSetEntry) CopyAsInterface() interface{}
func (*SignatureSetEntry) Equal ¶ added in v1.1.0
func (v *SignatureSetEntry) Equal(u *SignatureSetEntry) bool
func (*SignatureSetEntry) IsValid ¶ added in v1.1.0
func (v *SignatureSetEntry) IsValid() error
func (*SignatureSetEntry) MarshalBinary ¶ added in v1.1.0
func (v *SignatureSetEntry) MarshalBinary() ([]byte, error)
func (*SignatureSetEntry) MarshalJSON ¶ added in v1.1.0
func (v *SignatureSetEntry) MarshalJSON() ([]byte, error)
func (*SignatureSetEntry) PathHash ¶ added in v1.1.0
func (a *SignatureSetEntry) PathHash() [32]byte
PathHash returns a hash derived from the delegation path.
func (*SignatureSetEntry) UnmarshalBinary ¶ added in v1.1.0
func (v *SignatureSetEntry) UnmarshalBinary(data []byte) error
func (*SignatureSetEntry) UnmarshalBinaryFrom ¶ added in v1.1.0
func (v *SignatureSetEntry) UnmarshalBinaryFrom(rd io.Reader) error
func (*SignatureSetEntry) UnmarshalJSON ¶ added in v1.1.0
func (v *SignatureSetEntry) UnmarshalJSON(data []byte) error
type SparseHashList ¶ added in v1.1.0
type SparseHashList [][]byte
func (SparseHashList) BinarySize ¶ added in v1.1.0
func (l SparseHashList) BinarySize(height int64) int
func (SparseHashList) Copy ¶ added in v1.1.0
func (l SparseHashList) Copy() SparseHashList
func (SparseHashList) MarshalBinary ¶ added in v1.1.0
func (l SparseHashList) MarshalBinary(height int64) ([]byte, error)
func (*SparseHashList) UnmarshalBinary ¶ added in v1.1.0
func (l *SparseHashList) UnmarshalBinary(height int64, data []byte) error
type SystemData ¶ added in v1.0.0
type SystemData struct {
// contains filtered or unexported fields
}
func (*SystemData) Commit ¶ added in v1.0.0
func (c *SystemData) Commit() error
func (*SystemData) IsDirty ¶ added in v1.0.0
func (c *SystemData) IsDirty() bool
func (*SystemData) Key ¶ added in v1.1.1
func (c *SystemData) Key() *record.Key
func (*SystemData) SyntheticIndexIndex ¶ added in v1.0.0
func (c *SystemData) SyntheticIndexIndex(block uint64) values.Value[uint64]
func (*SystemData) Walk ¶ added in v1.1.1
func (c *SystemData) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
func (*Transaction) AddSignature ¶ added in v0.5.1
func (t *Transaction) AddSignature(keyEntryIndex uint64, newSignature protocol.Signature) (int, error)
AddSignature loads the appropriate signature set and adds the signature to it.
func (*Transaction) AddSystemSignature ¶ added in v1.0.0
func (t *Transaction) AddSystemSignature(net *config.Describe, newSignature protocol.Signature) (int, error)
AddSystemSignature adds a system signature to the operator signature set. AddSystemSignature panics if the signature is not a system signature.
func (*Transaction) Chains ¶ added in v1.0.0
func (c *Transaction) Chains() values.Set[*TransactionChainEntry]
func (*Transaction) Commit ¶ added in v1.0.0
func (c *Transaction) Commit() error
func (*Transaction) IsDirty ¶ added in v1.0.0
func (c *Transaction) IsDirty() bool
func (*Transaction) Key ¶ added in v1.1.1
func (c *Transaction) Key() *record.Key
func (*Transaction) Produced ¶ added in v1.0.0
func (c *Transaction) Produced() values.Set[*url.TxID]
func (*Transaction) ReadSignatures ¶ added in v0.5.1
func (t *Transaction) ReadSignatures(signer *url.URL) (*SignatureSet, error)
ReadSignatures returns a read-only signature set for the given signer.
func (*Transaction) ReadSignaturesForSigner ¶ added in v0.6.0
func (t *Transaction) ReadSignaturesForSigner(signer protocol.Signer2) (*SignatureSet, error)
SignaturesForSigner returns a read-only signature set for the given signer account.
func (*Transaction) RestoreSignatureSets ¶ added in v1.0.0
func (t *Transaction) RestoreSignatureSets(signer *url.URL, version uint64, entries []SigSetEntry) error
RestoreSignatureSets is specifically only to be used to restore a transaction's signature sets from a snapshot.
func (*Transaction) Signatures ¶ added in v0.5.1
func (t *Transaction) Signatures(signer *url.URL) (*SignatureSet, error)
Signatures returns a signature set for the given signer.
func (*Transaction) SignaturesForSigner ¶ added in v0.6.0
func (t *Transaction) SignaturesForSigner(signer protocol.Signer2) (*SignatureSet, error)
SignaturesForSigner returns a signature set for the given signer account.
func (*Transaction) Status ¶ added in v1.0.0
func (t *Transaction) Status() values.Value[*protocol.TransactionStatus]
func (*Transaction) Walk ¶ added in v1.1.1
func (c *Transaction) Walk(opts record.WalkOptions, fn record.WalkFunc) error
type TransactionChainEntry ¶ added in v1.0.0
type TransactionChainEntry struct { Account *url.URL `json:"account,omitempty" form:"account" query:"account" validate:"required"` // Chain is the name of the chain. Chain string `json:"chain,omitempty" form:"chain" query:"chain" validate:"required"` // ChainIndex is the index of the entry in the chain's index chain. ChainIndex uint64 `json:"chainIndex,omitempty" form:"chainIndex" query:"chainIndex" validate:"required"` // AnchorIndex is the index of the entry in the anchor chain's index chain. AnchorIndex uint64 `json:"anchorIndex,omitempty" form:"anchorIndex" query:"anchorIndex" validate:"required"` // contains filtered or unexported fields }
func (*TransactionChainEntry) Compare ¶ added in v1.0.0
func (e *TransactionChainEntry) Compare(f *TransactionChainEntry) int
func (*TransactionChainEntry) Copy ¶ added in v1.0.0
func (v *TransactionChainEntry) Copy() *TransactionChainEntry
func (*TransactionChainEntry) CopyAsInterface ¶ added in v1.0.0
func (v *TransactionChainEntry) CopyAsInterface() interface{}
func (*TransactionChainEntry) Equal ¶ added in v1.0.0
func (v *TransactionChainEntry) Equal(u *TransactionChainEntry) bool
func (*TransactionChainEntry) IsValid ¶ added in v1.0.0
func (v *TransactionChainEntry) IsValid() error
func (*TransactionChainEntry) MarshalBinary ¶ added in v1.0.0
func (v *TransactionChainEntry) MarshalBinary() ([]byte, error)
func (*TransactionChainEntry) UnmarshalBinary ¶ added in v1.0.0
func (v *TransactionChainEntry) UnmarshalBinary(data []byte) error
func (*TransactionChainEntry) UnmarshalBinaryFrom ¶ added in v1.0.0
func (v *TransactionChainEntry) UnmarshalBinaryFrom(rd io.Reader) error
type VoteEntry ¶ added in v1.1.0
type VoteEntry struct { // Authority is the URL of the authority. Authority *url.URL `json:"authority,omitempty" form:"authority" query:"authority" validate:"required"` // Hash is the hash of the signature. Hash [32]byte `json:"hash,omitempty" form:"hash" query:"hash" validate:"required"` // contains filtered or unexported fields }
func (*VoteEntry) CopyAsInterface ¶ added in v1.1.0
func (v *VoteEntry) CopyAsInterface() interface{}