A testing environment in which developers can test their contracts or applications, where node operators can verify that their infrastructure operates as intended, and where new tweaks to source code can be checked for any missed bugs or unintended consequences. Testnets can be set up to mimic production networks, to simulate possible attacks, or for other purposes.