Skip to content

A collection of simple programs which can generate bitcoin wallets, create and sign transactions, and send transactions over the bitcoin network Google Colab

License

Notifications You must be signed in to change notification settings

demining/hellobitcoin-Google-Colab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Run hellobitcoin-Google-Colab

https://colab.research.google.com/drive/1OShIMVcFZ_khsUIBOIV1lzrqAGo1gfm_?usp=sharing


This is a collection of simple programs which can generate bitcoin wallets, create and sign transactions, and send transactions over the bitcoin network.

It was a learning project for me to learn more about both golang, and the bitcoin protocol.

This project consists of three programs which each contain the most basic usecase.

  • keys.go - Generates a public/private key pair
  • transaction.go - Creates, and signs a bitcoin transaction
  • network.go - Connects to a peer, and sends a transaction over the network

Disclaimer

These programs are not "crytographically" random, and should not be used for any purpose other than educational use.

Installation

  1. Install go
  2. run go get to install dependencies
  3. Follow the instructions at go-secp256k1 to compile bitcoin/c-secp256k1
  4. Run one of the programs using the syntax below

Usage

Creating a key pair
go run keys.go

options (optional)
--testnet
Generating a transaction
go run transaction.go

options (required)
--private-key yourPrivateKey
--public-key yourPublicKey
--destination destinationPublicKey
--input-transaction inputTransactionHash
--satoshis satoshisToSend

options (optional)
--input-index inputTransactionIndex
Sending a transaction over the bitcoin network
go run network.go

options (required)
--transaction yourTransaction
--node-address 255.255.255.255 (IPv4 address of the bitcoin node to connect to)
--network-address 255.255.255.255 (IPv4 address of your public IP address)

options (optional)
--testnet

Dependencies

This library is used for the creation of public keys from private keys, as well as signing transactions. It is a project which wraps the official bitcoin/c-secp256k1 bitcoin library.

This library does the base58 conversion. I have included the base58 project in this codebase rather than importing it from the aforementioned github, because I needed to change the dictionary that was used.

Resources


Donation Address
BTC 1Lw2kh9WzCActXSGHxyypGLkqQZfxDpw8v
ETH 0xaBd66CF90898517573f19184b3297d651f7b90bf