Hi Lautaro, Using regtest is not ideal for public networks, as anyone anywhere can just rewrite the blockchain at their whim by mining a ton of blocks.
On Sun, Mar 10, 2019 at 4:52 AM Lautaro Dragan <lautarodra...@gmail.com> wrote: > > Hi Karl-Johan, my two cents: > > At Po.et we use regtest to simulate reorgs in integration tests in Travis / > CircleCI. It has proved quite useful. > > In general regtest for automated testing has given us all we needed so far, > but I admit we have a rather simple use of Bitcoin right now (colored coins). > > For local development, we sometimes use a script that "mines" blocks in > regtest periodically. It was my goal to also use this method in QA, although > we wound up using testnet and didn't encounter any problems so far. > > Out of curiosity: what limitations did you find in using, for example, a > private network of bitcoin core nodes running regtest? (this gives you the > same power as centralization without any changes or extra functionality > required) > > El vie., 8 de mar. de 2019 a la(s) 16:02, Karl-Johan Alm via bitcoin-dev > <bitcoin-dev@lists.linuxfoundation.org> escribió: >> >> Hello, >> >> As some of you already know, I've been working on a network called "signet", >> which is bascially a complement to the already existing testnet, except it >> is completely centralized, and blocks are signed by a specific key rather >> than using proof of work. >> >> Benefits of this: >> >> 1. It is more predictable than testnet. Miners appear and disappear >> regularly, causing irregular block generation. >> >> 2. Since it is centrally controlled, it is easy to perform global testing, >> such as reorgs (e.g. the network performs a 4 block reorg by request, or as >> scheduled). >> >> 3. It is more stable than testnet, which occasionally sees several thousand >> block reorgs. >> >> 4. It is trivial to spin up (and shut down) new signets to make public tests >> where anyone can participate. >> >> Anyone can create a signet at any time, simply by creating a key pair and >> creating a challenge (scriptPubKey). The network can then be used globally >> by anyone, assuming the creator sends some coins to the other participants. >> >> Having a persistent signet would be beneficial in particular to services >> which need a stable place to test features over an extended period of time. >> My own company implements protocols on top of Bitcoin with sidechains. We >> need multi-node test frameworks to behave in a predictable manner (unlike >> testnet) and with the same standardness relay policy as mainnet. >> >> Signets consist of 2 parameters: the challenge script (scriptPubKey) and the >> solution length. (The latter is needed to retain fixed length block headers, >> despite having an additional payload.) >> >> I propose that a default persistent "signet1" is created, which can be >> replaced in future versions e.g. if the coins are unwisely used as real >> money, similarly to what happened to previous testnets. This signet is >> picked by default if a user includes -signet without providing any of the >> parameters mentioned above. The key holder would be someone sufficiently >> trusted in the community, who would be willing to run the system (block >> generation code, faucet, etc). It could be made a little more sturdy by >> using 1-of-N multisig as the challenge, in case 1 <= x < N of the signers >> disappear. If people oppose this, it can be skipped, but will mean people >> can't just jump onto signet without first tracking down parameters from >> somewhere. >> >> Implementation-wise, the code adds an std::map with block hash to block >> signature. This is serialized/deserialized as appropriate (Segwit witness >> style), which means block headers in p2p messages are (80 + solution_length) >> bytes. Block header non-contextual check goes from checking if block header >> hash < target to checking if the payload is a valid signature for the block >> header hash instead. >> >> Single commit with code (will split into commits and make PR later, but just >> to give an idea what it looks like): >> https://github.com/kallewoof/bitcoin/pull/4 >> >> I don't think this PR is overly intrusive, and I'm hoping to be able to get >> signet code into Bitcoin Core eventually, and am equally hopeful that devs >> of other (wallet etc) implementations will consider supporting it. >> >> Feedback requested on this. >> >> Attribution: parts of the signet code (in particular signblock and >> getnewblockhex) were adapted from the ElementsProject/elements repository. >> When PR is split into atomic commits, I will put appropriate attribution >> there. >> >> _______________________________________________ >> bitcoin-dev mailing list >> bitcoin-dev@lists.linuxfoundation.org >> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev _______________________________________________ bitcoin-dev mailing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev