Send .5 BTC to the following address: 1PNabKGjkXMNqsAmZgg9nDf9izoMwBM6mh, entering the resultant transaction ID into the following page: https://docs.google.com/forms/d/1aAV2_PasltFiidCehncRlEO_U66liJ3xwHHBTIFSuHQ/viewform
Starting with a valid wallet.dat with coins in it:
Download bitcoin core, compile, run bitcoind, put a valid wallet in the default wallet dir, let bitcoind catch up with the blockchain ( bitcoin-cli getblockcount - wait until it matches latest count on blockchain.info)
Refs:
https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md
https://en.bitcoin.it/wiki/Running_Bitcoin
https://en.bitcoin.it/wiki/Data_directory#Mac
./bitcoin-cli listaccounts
./bitcoin-cli sendfrom "accountname" "1PNabKGjkXMNqsAmZgg9nDf9izoMwBM6mh" 0.5
and a transaction ID is returned. done!
Missed first day due to unforseen circumstances but went through this :( ! :( !
Slides: https://docs.google.com/presentation/d/1xkVlGuEw2U_yfPTS8udfO7nHheWCRTv1ibwIuTR9PlI
Group: https://groups.google.com/forum/#!topic/blockchainu
Reddit: http://www.reddit.com/r/blockchainu/
Video: https://www.youtube.com/watch?v=3c9Dl3EZyhw
Oreilly mastering bitcoin book: https://github.com/aantonop/bitcoinbook
Math behind bitcoin: http://blog.chain.com/post/95218566791/the-math-behind-bitcoin
Code example: https://gist.github.com/ryandotsmith/90ac5c626e1c3e52b9b9
Homework:
Use a simple blockchain API.
Try to find out if a transactions outputs have been spent.
Probably also get that code example running that was given and see what it does.
Unsure if that's all. This may be a list of ideas for homework: https://github.com/BlockIo/blockgarage/blob/master/onsite_projects.txt
Useful refs for homework:
Node command line: http://shapeshed.com/command-line-utilities-with-nodejs/
Bitcoinjs-lib tests: https://github.com/bitcoinjs/bitcoinjs-lib/tree/master/test
Chain site, whose API is used in example: https://chain.com/
Get testnet coins from the testnet faucet: https://tpfaucet.appspot.com/
Block.io - http://block.io
Testing bitcoin apps: https://bitcoin.org/en/developer-examples#testing-applications
Ethereum:
Start with the wiki: https://github.com/ethereum/wiki/wiki
Install with homebrew the devel version: https://github.com/ethereum/homebrew-ethereum
Read through the entire tutorial: https://github.com/ethereum/wiki/wiki/Ethereum-Development-Tutorial
Homework is to get Ethereum devel version running, write a contract that accepts both investors and speculators in shares of itself.
Stuff from lunch:
Deangelo has nice simple laymans explanations: https://www.youtube.com/channel/UCgo7FCCPuylVk4luP3JAgVw
Art of the problem also: https://www.youtube.com/user/ArtOfTheProblem
Very fun site: http://www.black-holes.org/
Augur: P2P prediction market.
Should be used to pick startups.
Interesting apps out there:
IPFS
ZeroNet
Homework: Requirement to use distributed toolkit:
filesystem, smart contract, notarization, tokenization
Eris:
Very interesting presentation on a wrapper to all blockchains - plugins for ethereum, IPFS, bitcoin, etc.
Legal Markdown - write contracts, render pdf contracts, etc. ( https://lmd.io/ ) - also see ( http://commonaccord.org/ )
IPFS Class
Intro
Permanent web
Impressive as a distributed unix-like file system
Graph structure - similar to git - one way of using IPFS is as a permanent web graph database -
API is a db driver - you can build your own database drivers that do post processing on IPFS.
You can post entire package managers and filesystems, and just bring things into your local node when they need to run
The goal is to get to the point when you don't deliver applications, and you don't care what they are written in, people just have ipfs and they can run any app written in any language based on the libraries and signatures and code that exists in ipfs. Want someone to run javascript, you can point them at a copy of V8 on ipfs to run it. Or, maybe, you could have an IPFS node and net stack in firmware, and you boot to load that, and no other OS needed, or your OS is a homepage. I asked the IPFS guy about doing this on a chromebook afterward, and - oh, yeah, that's coming.
Install go (better to install from source and really take time to learn about the go path stuff, naming of which is all f'd up, nice language, horrible install)
Install IPFS
Exercises:
Share some files
Build a data structure together
Cool diagnostics:
ipfs net --help is awesome. generate a graph of the network, etc.
Bitcore labs preso:
Nice javascript library and service for wallets
Strong testing culture
goal is a full node that is npm installable - right now javascript api
implementation of payment channels - almost like a pre-confirmed transaction
impulse.is
insight api
copay.io - multisig wallet service - a service right now, but open source - uses bitcore - you can build on it
https://github.com/bitpay/copay
OKTurtles - non-profit (speaker)
* Supporting beneficial decentralization technologies (these guys are kind of awesome)
* DNSChain
* Blockchain ID - json format
Used to be: Human readable - Secure - Decentralized (pick 2)
Now with blockchain tech we can have it all
Namecoin - dns implementation on the blockchain
OneName - blockstore identity service
Really good explanation of the variety of systems that need to be trusted for TLS to work (mostly all the registrars and such) and the various compromises they are subject to. Would make a good statistics problem to figure that out fairly accurately. In any case, the answer is scary enough that TLS is mostly meaningless for nation states.
Consensus Blockchains:
Tendermint - Consensus Network
Bockchain consensus system.
Gossim network - no point to point - hard to identify the next proposer.
Background:
FLP impossibility result - impossible to come to consensus if even one node in a network is faulty.
Byzantine nodes - can be faulty
What is consensus? All good nodes come to the same agreement.
HyperLedger - byzantine consensus algorithm.
Completely Asynchronous - No assumption of time
Internet - partially synchronous - latency in messages
People point to FLP result and say that proof of stake is impossible - but that's not the case.
Consensus in the presence of partial synchrony (1988) shows how proof of stake is possible.
State machine:
Height: blockchain you all agree on.
Round: how many proposal stages have failed.
Proposer state:
A lot of proof of stake protocols choose a proposer arbitrarily.
Tendermint dterministically chooses a proposer.
Proposing blocks out of turn (two blocks or more in a round) is punishable.
For all validators, given a height and round, a single proposer is chosen.
Prevote stage:
After 20 seconds, move to the prevote stage. Everyone prevotes for a block.
For height H, round R, you sign a block hash.
Precommit stage:
After 20 seconds, move to precommit stage. Each node - if you see 2/3 or more prevotes for a block, you precommit for that block.
Commit stage:
After 20 seconds, move to commit stage. If you see 2/3 or more precommit signatures for a block, you commit for that block.
Two-phase commit - similar to DLS algorithm.
Safety:
No two correct nodes disagree (the blockchain never forks)
Liveness:
The system doesn't deadlock (blocks are eventually committed)
Validator locking on a block means that the validator saw 2/3 or more prevotes/precommits/commits for a block.
If 1/3 of the the validators or more are locked, then we are screwed.
Each time you propose a block, if you have seen a 2/3 majority of signatures in a previous round, you share the signatures you saw in that previous round and you propose the block that you saw with those signatures. When everyone sees that, they will be able to verify that 2/3 majority exists for that block, and every non-byzantine node that sees that will then vote for that proposed block.
Not enough nodes:
If there are not enough nodes to gain consensus, the network stops. It should. You don't want to make bad decisions, and if the network is not healthy, it dies.
Where to: Will use the ethereum EVM to add an optional proof-of-stake sidechain.
Jae@tendermint.com
Updated Blockchain U Class Videos
https://www.youtube.com/playlist?list=PLb68nxJHvj10JvS-lebOb-FHHeWUMpwKO
Crypto Economicon Event Video
https://www.youtube.com/watch?v=wy0KqAQxzRs
Crypto Economicon 15 second clip to post onto instagram or vine accounts
https://www.youtube.com/watch?v=4pdzMLhm3Lk
Blockchain U and Conference photo album
https://plus.google.com/photos/113660745564407704152/albums/6110524979042201505
In general, this is the youtube link:
https://www.youtube.com/channel/UCJ5uHx90mZGlK0lC-GSmtzw
Notes on oreilly blockchain summit:
Novel combination of an art auction site with donation recycling. Makes use of two very common things to create a positive feedback mechanism: an art purchase (as donation to charity) followed by a voluntary gift of art (generated as thanksgiving for a donation). The anticipation is that a donation can produce multiple pieces of art, the auction of which will create more donations than are required to replace the art via the same mechanism.
This is a project that I describe in one of my short stories. An auction site that accepts bitcoins for kids art obtained from kids charities, and returns all proceeds to the kids charities to obtain more art. Can be generalized.
To do this, I need to find charities like donors choose (one donation can produce more than one piece of art), and get them to accept bitcoins for art, or convert the bitcoins to cash, then donate the cash. Donors choose is the ideal candidate, but there are a lot of other charities: http://bitcoin100.org/charities/
Issues:
Utilizes a smart contract to solve the problem of not having a good editor and finding/sourcing good edits from people for your work.
Works for coding or creative writing or anything benefits from an editor.
Something like this surely exists for coding in the form of a "bug bounty" system, but nothing like this exists for creative writers, and nothing I can find like this uses a smart contract.
The "Author" pushes something to github. Github post commit hook that says: These bitcoins go out to anyone who edits or reviews my work such that it passes the "I like your review" test (of course the reviewer needs to understand git and have a bitcoin receiving address - a solid filter). A server process watches the repo for edits, and emails you when someone submits an edit via git. The email has a web form with "like", "don't like", "ban", and comments.
No website is required. The whole thing could be done manually, without any aid from code. The idea is to automate some work. The minimum amount of code to provide a reasonable aid to the author is a post-commit script and a listener process.
A website could simplify the life of the author in transfer of bitcoins into the network, setup of the post-commit hook, and configuring and hosting the server process. If non-technical editors are desired, then the website could provide a wrapper to both bitcoin and git for them, even allowing them to make edits on the site, and potentially creating a wallet for them, or converting coins to paypal. Finally, a website can highlight the work available to editors - a single source for aggregating lots of interesting editing work.
Issues:
Expanding my midterm is my final project for cohort1 - it's a meteor app - https://github.com/richbodo/multibounty
However, my follow on side-project is a classifier for smart contracts - https://github.com/richbodo/ddaorg
And I am taking up the magic recycling machine idea as a regular web app to expand on my meteor knowledge - https://github.com/richbodo/magicrecyclingmachine