mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-12 09:06:52 +00:00

* [NOD-510] Change coinbase flags to kaspad. * [NOD-510] Removed superfluous spaces after periods in comments. * [NOD-510] Rename btcd -> kaspad in the root folder. * [NOD-510] Rename BtcEncode -> KaspaEncode and BtcDecode -> KaspaDecode. * [NOD-510] Rename BtcEncode -> KaspaEncode and BtcDecode -> KaspaDecode. * [NOD-510] Continue renaming btcd -> kaspad. * [NOD-510] Rename btcjson -> kaspajson. * [NOD-510] Rename file names inside kaspajson. * [NOD-510] Rename kaspajson -> jsonrpc. * [NOD-510] Finish renaming in addrmgr. * [NOD-510] Rename package btcec to ecc. * [NOD-510] Finish renaming stuff in blockdag. * [NOD-510] Rename stuff in cmd. * [NOD-510] Rename stuff in config. * [NOD-510] Rename stuff in connmgr. * [NOD-510] Rename stuff in dagconfig. * [NOD-510] Rename stuff in database. * [NOD-510] Rename stuff in docker. * [NOD-510] Rename stuff in integration. * [NOD-510] Rename jsonrpc to rpcmodel. * [NOD-510] Rename stuff in limits. * [NOD-510] Rename stuff in logger. * [NOD-510] Rename stuff in mempool. * [NOD-510] Rename stuff in mining. * [NOD-510] Rename stuff in netsync. * [NOD-510] Rename stuff in peer. * [NOD-510] Rename stuff in release. * [NOD-510] Rename stuff in rpcclient. * [NOD-510] Rename stuff in server. * [NOD-510] Rename stuff in signal. * [NOD-510] Rename stuff in txscript. * [NOD-510] Rename stuff in util. * [NOD-510] Rename stuff in wire. * [NOD-510] Fix failing tests. * [NOD-510] Fix merge errors. * [NOD-510] Fix go vet errors. * [NOD-510] Remove merged file that's no longer relevant. * [NOD-510] Add a comment above Op0. * [NOD-510] Fix some comments referencing Bitcoin Core. * [NOD-510] Fix some more comments referencing Bitcoin Core. * [NOD-510] Fix bitcoin -> kaspa. * [NOD-510] Fix more bitcoin -> kaspa. * [NOD-510] Fix comments, remove DisconnectBlock in addrindex. * [NOD-510] Rename KSPD to KASD. * [NOD-510] Fix comments and user agent.
28 lines
1.5 KiB
Go
28 lines
1.5 KiB
Go
// Copyright (c) 2015-2016 The btcsuite developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
/*
|
|
Package treap implements a treap data structure that is used to hold ordered
|
|
key/value pairs using a combination of binary search tree and heap semantics.
|
|
It is a self-organizing and randomized data structure that doesn't require
|
|
complex operations to to maintain balance. Search, insert, and delete
|
|
operations are all O(log n). Both mutable and immutable variants are provided.
|
|
|
|
The mutable variant is typically faster since it is able to simply update the
|
|
treap when modifications are made. However, a mutable treap is not safe for
|
|
concurrent access without careful use of locking by the caller and care must be
|
|
taken when iterating since it can change out from under the iterator.
|
|
|
|
The immutable variant works by creating a new version of the treap for all
|
|
mutations by replacing modified nodes with new nodes that have updated values
|
|
while sharing all unmodified nodes with the previous version. This is extremely
|
|
useful in concurrent applications since the caller only has to atomically
|
|
replace the treap pointer with the newly returned version after performing any
|
|
mutations. All readers can simply use their existing pointer as a snapshot
|
|
since the treap it points to is immutable. This effectively provides O(1)
|
|
snapshot capability with efficient memory usage characteristics since the old
|
|
nodes only remain allocated until there are no longer any references to them.
|
|
*/
|
|
package treap
|