CryptoURANUS Economics: 07/24/19


Wednesday, July 24, 2019

Free Open-Source FPGA-Simulators: Cryptocurrency

Free Open-Source FPGA-Simulators

This is the Free Open-Source FPGA-Simulators, such as, SystemVerilog that is not a proprietary language and is free for personal use. I think what you mean is a free simulator that can compile and run SystemVerilog. Here’s that information:

  1. If working online is an option for you, check out It is an online IDE that gives you access to Synopsys VCS, Cadence Ncisive and other simulators.
  2. Download ModelSim PE Student Edition. It supports many, if not all SystemVerilog constructs.

List of Verilog simulators in alphabetical order
Simulator name License Author/company Supported languages Description
GPL Cver GPL Pragmatic C Software V1995, minimal V2001 This is a GPL open-source simulator. It is a pure simulator. This simulator is not fully IEEE 1364-2001 compliant. It does not support generate and constant functions. 
Icarus Verilog GPL2+ Stephen Williams V1995, V2001, V2005, limited SV2005/SV2009 Also known as iverilog. Good support for Verilog 2005, including generate statements and constant functions.
A. Bosio, G. Di Natale (LIRMM) V1995 LIFTING (LIRMM Fault Simulator) is an open-source simulator able to perform both logic and fault simulation for single/multiple stuck-at faults and single event upset (SEU) on digital circuits described in Verilog.
OSS CVC Perl style artistic license Tachyon Design Automation V2001, V2005 CVC is a Verilog HDL compiled simulator. CVC has the ability to simulate in either interpreted or compiled mode. Source code is available under a Perl style artistic license.
TkGate GPL2+ Jeffery P. Hansen V1995 Event driven digital circuit editor and simulator with tcl/tk GUI based on Verilog. Includes Verilog simulator Verga.
Verilator GPL3 Veripool Synthesizable V1995, V2001, V2005, SV2005, SV2009, SV2012, SV2017 This is a very high speed open-source simulator that compiles synthesizable Verilog to multithreaded C++/SystemC.
Verilog Behavioral Simulator (VBS) GPL Lay H. Tho and Jimen Ching V1995 Supports functions, tasks and module instantiation. Still lacks a lot of features, but this release has enough for a VLSI student to use and learn Verilog. Supports only behavioral constructs of Verilog and minimal simulation constructs such as 'initial' statements.
VeriWell GPL2 Elliot Mednick V1995 This simulator used to be commercial, but has recently become GPL open-source. Compliance with 1364 is not well documented. It is not fully compliant with IEEE 1364-1995.
ISOTEL Mixed Signal & Domain GPL ngspice and Yosys communities, and Isotel V2005 Open-source mixed signal ngspice simulator in combination with verilog synthesis software called Yosys and Isotel extension for embedded C/C++ (or other) co-simulation.
List of VHDL simulators in alphabetical order 

Simulator name License Author/company Supported languages Description
GHDL GPL2+ Tristan Gingold VHDL-1987, VHDL-1993, VHDL-2002, partial VHDL-2008 GHDL is a complete VHDL simulator, using the GCC technology.
Icarus Verilog GPL2+ Maciej SumiƄski Stephen Williams It supports the 1995, 2001 and 2005 versions of the standard, portions of SystemVerilog, and some extensions. VHDL preprocessor added that converts VHDL to Verilog
NVC GPL3 Nick Gasson VHDL-1993 NVC is a GPLv3 VHDL compiler and simulator aiming for IEEE 1076-2002 compliance. See these blog posts for background information. NVC has been successfully used to simulate several real-world designs.
YoSys GPL3 UnKnown Verilog-2005 design Yosys is a framework for Verilog RTL synthesis.


Tag Description
V1995 IEEE 1364-1995 Verilog
V2001 IEEE 1364-2001 Verilog
V2005 IEEE 1364-2005 Verilog
SV2005 IEEE 1800-2005 SystemVerilog
SV2009 IEEE 1800-2009 SystemVerilog
SV2012 IEEE 1800-2012 SystemVerilog
SV2017 IEEE 1800-2017 SystemVerilog
VHDL-1987 IEEE 1076-1987 VHDL
VHDL-1993 IEEE 1076-1993 VHDL
VHDL-2002 IEEE 1076-2002 VHDL
VHDL-2008 IEEE 1076-2008 VHDL
See also

ScriptPubKey: Cryptocurrency


A ScriptPubKey is an ouput transaction script. It defines a condition that must be met to spend funds commited to the output in question.

See also: ScriptSig
To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide.
Like Trezor? Get one here!

SegWit: Cryptocurrency


Segregated Witness (SegWit) is a protocol upgrade providing protection from transaction malleability, and this is an increase of block capacity.

SegWit defines a new structure called a witness committed to blocks separately from the transaction merkle tree.

This structure contains data required to check transaction validity, and this is not required to determine transaction effects.

Signatures and redeem scripts are moved into this new structure.

This does not count add to the traditional one (1)MB block size limit and a new weight parameter is defined,.

These blocks are allowed to have maximum of 4 million weight units (WU).

A byte in the original one (1)MB zone of the block weighs 4 WU.

A byte in a witness structure only weighs 1 WU.

In and by this translation allowing blocks technically larger than one (1)MB without a hardforking change.

SegWit was the last protocol change needed to make the Lightning network safe to deploy on the Bitcoin network.

P2WPKH-within-P2SH (SegWit-aware): Cryptocurrency


P2WPKH-in-P2SH together with P2WSH-in-P2SH represents a Transaction which allows non-SegWit wallets to generate a SegWit transaction.

The P2SH addressing transaction used as the cornerstone that includes P2WPKH inside it.

When SegWit-aware node identifies P2SH containing P2WPKH then interprets enact native transactions.

ScriptPubKey: OP_HASH160 <20-byte-redeemScriptHash> OP_EQUAL 
ScriptSig:  <0 <20-byte-PublicKeyHash>> 
Witness:  <Signature> <PublicKey>
RedeemScript: 0 <20-byte-PublicKeyHash>
The P2SH redeem script is equal to 0 <20-byte-PublicKeyHash> and is the exact same as P2WPKH scriptPubKey.

The ScriptSig is a canonical push of data, and this data contain another canonical push of data, please read link: "ScriptSig" for definition.

To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide.
Like Trezor? Get one here!

Transaction: Cryptocurrency


Transaction In cryptocurrencies is a transaction  that is moving funds, (cryptocurrency coins), from one address to another. 
Each transaction has a unique transaction ID that is used to reference the transaction. 
Each transaction includes a fee paid to the miners for including the transaction into the blockchain
The fee amount included in transaction(s) affects the confirmation time
A transactions are considered final when it has been confirmed

The Trezor device are the best on the market and used together with the Trezor Wallet making transactions of any supported cryptocurrencies private, secure, easy, and affordable.

Trezor devices require to send transactions, as transactions are signed securely on the device ensuring your private keys never leave the device.

Trezor Wallet allow setting a custom fee and add multiple recipients.

See also: Unconfirmed transaction, Confirmed transaction, Confirmation time & Fee (basic) - Public key, Private key, Input & Output (advanced)

How do transactions work technically?

To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide.
Like Trezor? Get one here!

Address: Cryptocurrency


Address defined is when working with cryptocurrencies, an address is a unique alphanumeric identifier that is used to receive payments.

It can be shared with other users in the same way an e-mail address would be shared. Addresses can also be transformed into the QR code format, so it can be scanned by a mobile device or another camera.

The QR code can (potentially) contain other information as well, such as transaction amount and a message.

In public blockchains, such as Bitcoin, it is possible to see all transactions that have been made on a particular address by looking into a blockchain explorer.

NoteClick here to see what an address and its history looks like in a blockchain explorer.

See also: Change address, Transaction, QR code, Address reuse, Address replacement (basic) - Public key, Private key (advanced) 

 To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide.
Like Trezor? Get one here!

ScriptSig: Cryptocurrency


A ScriptSig, an input script unlocking funds committing transaction output.

ScriptSig contains one(1) or more signatures with other data needed to satisfy spending condition defined in the output.

See also: ScriptPubKey

To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide, MyCryptoPedia ScriptSig.

Like Trezor? Get one here!

Transaction-output: Cryptocurrency

Transaction output

In the context of Bitcoin in reference of an output contains instructions for sending bitcoins.

In this value is the number of Satoshi (1 BTC = 100,000,000 Satoshi) that this output will be worth when claimed.

For more information about "Transaction output", see this external article.

See also: Change address, Transaction, Transaction input
Like Trezor? Get one here!

Transaction-input: Cryptocurrency

Transaction input

Transaction input In the context of Bitcoin is an input that is a reference to an output from a previous transaction.

Multiple inputs are often listed in a transaction.

An input can only be spent as a whole.

If payment is smaller than the input, the remaining change is sent back to the user's change address.

For more information, see this external article.

Making cryptocurrency user(s) experience easier, Trezor Wallet calculates all the inputs and outputs and displays only the final balances and transaction amounts.

Detailed information of the Trezor Wallet and transactions, see Transaction details.

See also: Change address, Transaction, Transaction output

Like Trezor? Get one here!

Lightning-Network: Cryptocurrency

Lightning Network

The Lightning Network is an off-chain approach for solving Bitcoin scalability issues.

It is a proposed implementation, "Hashed Timelock Contracts" (HTLCs), with bi-directional payment channels which allows payments to be securely routed across multiple peer-to-peer payment channels.

This architecture of payment channels permits network formation within any peer on the network that can pay any other peer even if they do not directly have a channel open between each other which speeds up process quickly.

A prerequisite for Lightning network is enabling SegWit which solved the malleability issue (BIP141 - Segregated Witness - Consensus layer: This BIP enabled SegWit as a soft-fork in Bitcoin.

It is also prerequisite for Lightning network as it solves malleability issue of pre-segwit transaction types.

In particular, BIP141 defines the following new transaction type: P2WPKH, P2WPKH-in-P2SH, P2WSH, P2WSH-in-P2SH, where only the first two types are currently supported in Trezor.  See also: BIP141 source).

Key features of the Lightning network are:
  • Rapid payments
  • No third-party trust
  • Reduced blockchain load
  • Channels can stay open indefinitely
  • Rapid cooperative closes
  • Outsourceable enforcement
  • Onion-style routing
  • Securely cross blockchains
  • Multisignature capable
  • Sub-satoshi payments
  • Single-funded channels
Further Reading Click Here: CLiCK!

Bech32: Cryptocurrency


Bech32 is a SegWit address format specified by BIP173, (BIP173 - Base32 address format for native v0-16 witness outputs This BIP proposes a new format for native SegWit addresses, called Bech32.)

BIP173 - Base32 is currently not supported in Trezor Wallet, although it is supported in Trezor.

See also: BIP173 source.

This address format is also known as "bc1 addresses".

Main disadvantages of base58 format which has been used in Bitcoin for most of its history are:
  • Base58 needs more visible space in QR codes image. Base58 cannot use the alphanumeric mode.
  • The mixed case in base58 makes it inconvenient to reliably write down, type on mobile keyboards, or read out loud.
  • The double SHA-256 checksum is slow and has no error-detection guarantees.
  • Most of the research on error-detecting codes only applies to character-set sizes that are a prime power, which 58 is not.
  • Base58 decoding is complicated and relatively slow.
A Bech32 string is at most 90 characters long and consists of:
  • The human-readable part.
    • "bc" for mainnet
    • "tb" for testnet
  • The separator, which is always "1".
  • The data part, which is at least 6 characters long and only consists of alphanumeric characters excluding "1", "b", "i" and "o".

Trezor with Bech32 addresses

Trezor already implemented Bech32 addresses in its firmware, it is possible to send funds to Bech32 addresses using Trezor Wallet. Receiving is possible using Electrum with native segwit (P2WPKH) option.
Like Trezor? Get one here!

SHA-256 Hash-Algorithm: Cryptocurrency


SHA-256 (Secure Hash Algorithm) is a cryptographic hash (sometimes called ‘digest’).

SHA-256 is a member of the SHA-2 cryptographic hash functions designed by the NSAgov.

Cryptographic hash functions are mathematical operations run on digital data, SHA-256 generates an almost-unique 256-bit (32-byte) signature.

By comparing the computed "hash", (the output from execution of the algorithm), to a known and expected hash value, a person can determine the data's integrity.

A one-way hash can be generated from any piece of data, but the data cannot be generated from the hash. 
Example: 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' 
is a SHA-256 hash for text 'abc'

See also Trezor Cryptography

SHA-256 in Bitcoin

SHA-256 is used in several different parts of the Bitcoin network:
  • Mining uses SHA-256 as the Proof-of-work algorithm.
  • SHA-256 is used in the creation of bitcoin addresses to improve security and privacy.
SHA-256 in Trezor
SHA-256 is used in Recovery seed creation.

Like Trezor? Get one here!

QR-Code: Cryptocurrency

QR code

A QR code, or Quick Response Code, is a two-dimensional machine-readable barcode that can be used to represent an address. The use of a QR code makes it easy to scan an address, rather than having to type or copy it.

Why to use a QR code

When using Bitcoin, and alt.coin cryptocurrencies for point-of-sale or face-to-face transaction solidifies the problem how to communicate the receiving address the person paying can use. A Bitcoin address is between 27 and 34 characters long. This takes time to type manually, and it is easy to make a mistake.

On the other hand, a QR code can quickly and reliably amount of data in a machine-readable manner.

The QR code can (potentially) contain other information as well, such as an amount and a message.
With a mobile phone, a convenient way to pass that data is for the payment recipient (e.g., a merchant) to display a QR code with the Bitcoin address for the transaction, and then for the person paying to scan that code to obtain the address.

It is also possible to print out the QR code containing the user's receiving address and hand it to the sender, who can use it for repeated or regular payments.

How does a QR code work

As mentioned above, a QR code is a two-dimensional barcode that contains machine-readable information in a convenient manner. It was first designed in 1994 for the automotive industry in Japan and has since expanded to a wide range of applications. Where a traditional barcode presents a string of information as a one-dimensional line of black and white bars, a two-dimensional barcode packs significantly more information into a grid of black and white squares.
It contains the following information:
  1. Quiet zone: The empty white border is making it possible to identify the code among other printed information.
  2. Finder patterns: Larger black and white squares in three of the corners. They differentiate QR codes from other types of barcodes and make the orientation of the code clear.
  3. Alignment pattern: Ensures the code can be deciphered even if the code is distorted.
  4. Timing pattern: Makes it easy to identify the individual data cells within a QR code and is especially useful when the code is damaged or distorted.
  5. Version information: Identifies the specific standard of the QR code.
  6. Data cells: Contain some of the actual data in the code.

To understand how transactions work on basic technical level, check blog post Types of Bitcoin transactions: Part I, Part 2.

More detailed description can be found in Bitcoin Wiki or in Developer guide.
Like Trezor? Get one here!