9

There are many implementations of the Bitcoin protocol written in other languages, e.g., Bcoin in JavaScript, btcd in Go, bitcoin-s in Scala, etc. Bitcoin Core is widely considered as the "reference implementation" and it is certainly the most widely used implementation on the network. Without a written specification, the authoritative resource, if ...


6

That would have made perfect sense, and I see no reason why that wouldn't have been the superior way of doing it. However, as far as I remember, nobody suggested this at the time.


5

It is extremely difficult to write a specification for a complex format that is 100% watertight and has no poorly defined corner cases. Further even if the specification itself is watertight it's extremely difficult to implement it without making any mistakes. I can't find a link right now but I remember a study posted recently about differences in ...


4

The original Bitcoin code base definitely didn't support this. Currently it's possible to effectively keep the entire UTXO set in memory in Bitcoin Core if you set the database cache large enough (over 6 GB, last I checked). The blockchain itself is always stored on disk.


4

The payment channel between Alice and Bob is encoded as a 2-2 multisig Adress the balance of that Adress is the capacity of the channel. A channel is opened by sending funds to that multisig Adress via a funding transaction. These funds do exist (on the Bitcoin network) and are by no means virtual. Alice and Bob each control a key of that Multisig Adress ...


3

The signatures must be ordered the same way as public keys. Otherwize transaction is invalid. This is how OP_CHECKMULTISIG(VERIFY) works. Of course, you may use the private keys for signing in any order, because signatures are independent.


2

These implementations use some form of the Dijkstra algorithm which is implemented in the open source networkx python lib https://networkx.github.io/documentation/stable/reference/algorithms/shortest_paths.html also electrum wallet is working on lightning. I think they followed pretty much the lnd code base so one could check their pathfing implementation at ...


2

A cryptocoin is a piece of information, like a text in some language. What a cryptocoin says depends on conventions set by the cryptocurrency system, much like what a given text says depends on the language. A cryptocoin is made by some piece of computer code, which has output it. It usually is not made of some piece of computer code, in the sense that a ...


2

This looks like an implementation choice of the PeerGroup.broadcastTransaction method of bitcoinj. If you send a transaction out to one or more peers, there is no guarantee that any of those peers will forward them on to others, and no way to verify it without having another node somewhere else on the bitcoin network listening for it (or listening to it ...


2

I agree with you, that from a marketing standpoint, the different names used by the various implementations of the Bitcoin Cash fork are confusing. First, let's understand what a fork is. The rules about what constitutes a valid block, to be added to a blockchain, are set in the program code which miners follow. They compete to be the next to validate a ...


1

No file systems handle large numbers of files well, putting 600,000+ files in a directory would cause absurd performance problems. Opening and closing that many files during sync would have a performance penalty, versus appending to an already open file and writing its position to an index. Even attempting to delete a folder that large would be a struggle. A ...


1

Bitcoin ABC and Bitcoin unlimited are nodes of the main fork of bitcoin cash. Bitcoin Cash XBC is a "Adjustable Block Size" implementation of the original Bitcoin client, allowing up to 8mb block size. Forked from Bitcoin-ABC and compatible with the Bitcoin Cash blockchain only. All credit for previous engineering work goes to Satoshi Nakamoto, The ...


1

There isn't even a database lookup in Bitcoin Core. All blocks and mempool transactions are indexed by hash in memory. It's typically just serializing from memory, or one disk read directly sending disk data to the network.


Only top voted, non community-wiki answers of a minimum length are eligible