<p>The question slightly exceeds capabilities of this q&amp;a forum. Maybe better to search bitcointalk.org, there these type of requests get often discussed. Join one of the discussions there!</p>

<p>Anyhow, we need developers, and people with fresh minds. 
Here my short shot at bitcoin, because we are in bitcoin q&amp;a forum. You would probably want to create an altcoin of it. For sure the relevant info and link to the code is on <strong>bitcoin.org</strong>.</p>

<p>To accomplish your goals, you would have to have an idea and sometimes excessive knowledge on the following:</p>

<pre><code>Information Security
Overview of current crypto coin technologies
Finite Fields
Elliptic Curves
Elliptic Curve Cryptography
Signing/Verifying Messages
Parsing Transactions
Signing Transactions
Creating Transactions
Script parsing and processing
Address construction/Private Key WIF Format Construction
Extended Keys (XPriv and XPub)
Parsing Blocks
Validating Proof-of-Work
Difficulty Calculations
Merkle Tree Construction 
Merkle Proofs
Network Message Parsing
</code></pre>

<p>and maybe </p>

<pre><code>Segwit
Lightning
Altcoin
... 
</code></pre>

<p>The list can be for sure extended :-) So you choose to go for a steep learning curve. From what I read in your message, I think you are not (yet) there, but that's not an issue. You will probably want to read books like Andreas' "Mastering Bitcoin", and some more. They will bring you up to speed.</p>

<p>If you think of on the environments (like Ethereum or IOTA), I doubt that many devs are here to support. </p>

<blockquote>
  <p>1) decide which existing blockchain would resemble the most with what
  i have in mind in terms of consensus algorithm</p>
</blockquote>

<p>this is s.th. we can't help you with, as you haven't presented anything. Do you want to use the community's power &amp; efforts to bring your project forward, but don't provide input to the community by hiding your logic and ideas? In general: we are very curious here for new ideas :-)</p>

<blockquote>
  <p>2) download if from github</p>
</blockquote>

<p>see the links on bitcoin.org</p>

<blockquote>
  <p>3) establish a dev environment</p>
</blockquote>

<p>You take a linux machine, and install the software, compile it, and see how you go. Alternativly you can try your luck in other OS, but support is way better on unixoide systems. Also the usage of virtual machines is very attractive. </p>

<blockquote>
  <p>4) run different tests and let my brain do it’s magic</p>
</blockquote>

<p>again, this is up to your mind howto. But there are testcases deliverd with the software, so you can find relevant code for it, adopt it to your requirements, and go.</p>

CC BY-SA 3.0
2018-03-06T13:23:57.660Z
2018-03-06T13:23:57.660Z
pebwindkraft
<p>Long story short, I want to set up a private chain/a testnet blockchain that can run locally just to fiddle and play with it just to learn how it works. So I have a general understanding of how things work and thought that to really learn I would need to reverse engineer and play with it as much as I can.</p>

<p>So, how would I go about that?
What I am looking for is ideally a step by step clear, beginner friendly explanation because I am aiming at blockchains written in <strong>javascript</strong> (lisk, nimiq) or, in <strong>python</strong>(bismuth)</p>

<p>Let me first tell you what I thought of or, what I think concerning ways to do that. I imagine I would have to:</p>

<ol>
<li>Decide which existing blockchain would resemble the most with what I have in mind regarding the consensus algorithm </li>
<li>Download it from GitHub </li>
<li>Establish a dev environment </li>
<li>Run different tests and let my brain do its magic</li>
</ol>

<p>Now with regards to those steps, I have few questions:</p>

<ol>
<li>Am I missing something like an intermediary step let’s say?</li>
<li>Regarding step 1 where should I look, what parts of a blockchain will be the deciding factors for me choosing one over the other say considering that I want to introduce a new consensus algorithm?</li>
<li>Regarding step 2, how would I download a blockchain but ignore the transaction history (this will be a new altcoin starting with genesis block) or is that more like something I change within the code not sure?</li>
<li>Regarding step 3, this is where I would appreciate a step by step response since I have no idea what to download and what steps to take to get from: "I have the code" stage to "I can play with it and test different things" stage.</li>
<li>Regarding step 4: except deleting part of the code, changing variables value, switch order or lines what else could help me to understand better how the code works?</li>
</ol>

<p>Thank you</p>

CC BY-SA 3.0
2018-03-08T03:01:53.020Z
Related: https://bitcoin.stackexchange.com/questions/14187/when-making-an-altcoin-copy-of-bitcoin-where-should-one-start
Highly Irregular
CC BY-SA 3.0
2018-03-08T03:02:10.673Z
Related: https://bitcoin.stackexchange.com/questions/28212/where-do-i-start-for-creating-altcoin
Highly Irregular
CC BY-SA 3.0
2018-03-08T03:44:19.627Z
Welcome to Bitcoin.SE! You plan to establish a development environment, on what platform?
Willtech
<testnet><python><altcoin-development><javascript><private-blockchains>
How to set up a private chain/local testnet : reverse engineering the blockchain code
a1nb0
# How to set up a private chain/local testnet : reverse engineering the blockchain code

(Asked by: username_0 on 2018-03-06)

Long story short, I want to set up a private chain/a testnet blockchain that can run locally just to fiddle and play with it just to learn how it works. So I have a general understanding of how things work and thought that to really learn I would need to reverse engineer and play with it as much as I can.

So, how would I go about that?
What I am looking for is ideally a step by step clear, beginner friendly explanation because I am aiming at blockchains written in **javascript** (lisk, nimiq) or, in **python**(bismuth)

Let me first tell you what I thought of or, what I think concerning ways to do that. I imagine I would have to:

1. Decide which existing blockchain would resemble the most with what I have in mind regarding the consensus algorithm
2. Download it from GitHub
3. Establish a dev environment
4. Run different tests and let my brain do its magic

Now with regards to those steps, I have few questions:

1. Am I missing something like an intermediary step let’s say?
2. Regarding step 1 where should I look, what parts of a blockchain will be the deciding factors for me choosing one over the other say considering that I want to introduce a new consensus algorithm?
3. Regarding step 2, how would I download a blockchain but ignore the transaction history (this will be a new altcoin starting with genesis block) or is that more like something I change within the code not sure?
4. Regarding step 3, this is where I would appreciate a step by step response since I have no idea what to download and what steps to take to get from: "I have the code" stage to "I can play with it and test different things" stage.
5. Regarding step 4: except deleting part of the code, changing variables value, switch order or lines what else could help me to understand better how the code works?

Thank you

**Tags:** testnet, python, altcoin-development, javascript, private-blockchains

> **Comments:**
> **username_1**: Related: https://bitcoin.stackexchange.com/questions/14187/when-making-an-altcoin-copy-of-bitcoin-where-should-one-start  
> **username_1**: Related: https://bitcoin.stackexchange.com/questions/28212/where-do-i-start-for-creating-altcoin  
> **username_2**: Welcome to Bitcoin.SE! You plan to establish a development environment, on what platform?  

---

## 1 answers

### Answer by username_3 on 2018-03-06. Score: 2

The question slightly exceeds capabilities of this q&a forum. Maybe better to search bitcointalk.org, there these type of requests get often discussed. Join one of the discussions there!

Anyhow, we need developers, and people with fresh minds.
Here my short shot at bitcoin, because we are in bitcoin q&a forum. You would probably want to create an altcoin of it. For sure the relevant info and link to the code is on **bitcoin.org**.

To accomplish your goals, you would have to have an idea and sometimes excessive knowledge on the following:

```
Information Security
Overview of current crypto coin technologies
Finite Fields
Elliptic Curves
Elliptic Curve Cryptography
Signing/Verifying Messages
Parsing Transactions
Signing Transactions
Creating Transactions
Script parsing and processing
Address construction/Private Key WIF Format Construction
Extended Keys (XPriv and XPub)
Parsing Blocks
Validating Proof-of-Work
Difficulty Calculations
Merkle Tree Construction 
Merkle Proofs
Network Message Parsing

```

and maybe

```
Segwit
Lightning
Altcoin
... 

```

The list can be for sure extended :-) So you choose to go for a steep learning curve. From what I read in your message, I think you are not (yet) there, but that's not an issue. You will probably want to read books like Andreas' "Mastering Bitcoin", and some more. They will bring you up to speed.

If you think of on the environments (like Ethereum or IOTA), I doubt that many devs are here to support.

> 1) decide which existing blockchain would resemble the most with what
> i have in mind in terms of consensus algorithm

this is s.th. we can't help you with, as you haven't presented anything. Do you want to use the community's power & efforts to bring your project forward, but don't provide input to the community by hiding your logic and ideas? In general: we are very curious here for new ideas :-)

> 2) download if from github

see the links on bitcoin.org

> 3) establish a dev environment

You take a linux machine, and install the software, compile it, and see how you go. Alternativly you can try your luck in other OS, but support is way better on unixoide systems. Also the usage of virtual machines is very attractive.

> 4) run different tests and let my brain do it’s magic

again, this is up to your mind howto. But there are testcases deliverd with the software, so you can find relevant code for it, adopt it to your requirements, and go.


---

