Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Blockchain | 752 | 1 | 9 years ago | May 28, 2021 | 6 | Go | ||||
A basic blockchain implementation written in Go | ||||||||||
Proof Of Work | 90 | 6 | 3 | 5 years ago | 26 | July 26, 2018 | 1 | JavaScript | ||
Proof of Work with SHA256 and Bloom filter | ||||||||||
Victor | 9 | 5 years ago | other | Shell | ||||||
Victor, verifier in cryptography, publicly issues free trusted TIMESTAMP of file hash information embedded into a blockchain. | ||||||||||
Igsignature | 7 | 8 years ago | 1 | March 24, 2015 | mit | Objective-C | ||||
Objective-C client of signature gem. Sign API call with shared secret and timestamp using SHA256 HMAC. | ||||||||||
Rack Simple_auth | 2 | 3 years ago | mit | Ruby | ||||||
Rack Authentication Middlewares | ||||||||||
Kvas | 2 | 3 months ago | mit | Go | ||||||
kvas a minimal overhead key value store backed by the filesystem | ||||||||||
Ps Flatten Directory | 1 | a year ago | PowerShell | |||||||
This Powershell script removes the duplicated files from source directories and copies them to a single export directory (Flatten-Directory). | ||||||||||
Go Pathfingerprint | 1 | 6 years ago | gpl-2.0 | Go | ||||||
Recursively calculate a SHA1 or SHA256 hash for a given directory. |
Having fun implementing a blockchain using Golang.
Using Minimum Viable Blockchain
The Blockchain uses ECDSA (224 bits) keys. When a user first joins the blockchain a random key will be generated.
Keys are encoded using base58.
Given x, y as the components of the public key, the key is generated as following:
base58(BigInt(append(x as bytes, y as bytes)))
In order to sign a transaction and send it to the network, proof of work is required.
Proof of work is also required for block generation.
The blockchain runs on port 9191
and uses TCP to handle connections among peers.
const (
MESSAGE_GET_NODES = iota + 20
MESSAGE_SEND_NODES
MESSAGE_GET_TRANSACTION
MESSAGE_SEND_TRANSACTION
MESSAGE_GET_BLOCK
MESSAGE_SEND_BLOCK
)
Header:
Signature (80 bytes): signed(sha256(header))
Payload data (Payload Length bytes): raw data
Header:
Signature (80 bytes): signed(sha256(header))
Block transactions