├── .gitignore ├── Makefile ├── docs ├── geth_reference.html ├── geth_reference.md ├── index.html ├── index.md ├── solidity_cheatsheet.html ├── solidity_cheatsheet.md ├── solidity_reference.pdf ├── web3py.html └── web3py.md ├── exams ├── final-s22.pdf ├── final-s23.pdf ├── index.html ├── index.md ├── midterm-f22.pdf ├── midterm-f23.pdf ├── midterm-s22.pdf ├── midterm-s23.pdf ├── midterm-s24.pdf └── midterm-s25.pdf ├── hws ├── Makefile ├── arbitrage │ ├── Arbitrage.sol │ ├── Arbitrage.sol.html │ ├── Makefile │ ├── arbitrage.py │ ├── arbitrage.py.html │ ├── arbitrage_config.py │ ├── arbitrage_config.py.html │ ├── extra.html │ ├── extra.md │ ├── formulas │ │ ├── .gitignore │ │ ├── formulas.tex │ │ └── formulas │ │ │ ├── .gitignore │ │ │ ├── img1.svg │ │ │ ├── img3.svg │ │ │ ├── img5.svg │ │ │ ├── img7.svg │ │ │ └── img9.svg │ ├── img │ │ ├── d10c.webp │ │ ├── d12c.webp │ │ ├── d20c.webp │ │ ├── d4c.webp │ │ ├── d6c.webp │ │ ├── d8c.webp │ │ ├── ddc.webp │ │ ├── index.html │ │ └── index.md │ ├── index-full.html │ ├── index.html │ └── index.md ├── auction │ ├── .gitignore │ ├── IAuctioneer.sol │ ├── IAuctioneer.sol.html │ ├── IERC165.sol │ ├── IERC165.sol.html │ ├── IERC721.sol │ ├── IERC721.sol.html │ ├── IERC721Metadata.sol │ ├── IERC721Metadata.sol.html │ ├── Makefile │ ├── auction.py │ ├── auction.py.html │ ├── index-full.html │ ├── index.html │ └── index.md ├── btcparser │ ├── .gitignore │ ├── Makefile │ ├── blk00000-b0.blk │ ├── blk00000-b170.blk │ ├── blk00000-b26816.blk │ ├── blk00000-b2812.blk │ ├── blk00000-b29664.blk │ ├── blk00000-b49820.blk │ ├── blk00000-b53066.blk │ ├── blk00000-b546.blk │ ├── blk00000-b586.blk │ ├── blk00000-f10.blk │ ├── blk00000-f100.blk │ ├── change_byte.py │ ├── change_byte.py.html │ ├── check_genesis_json.py │ ├── check_genesis_json.py.html │ ├── index-full.html │ ├── index.html │ └── index.md ├── btcscript │ ├── Makefile │ ├── bitcoinctl.py │ ├── bitcoinctl.py.html │ ├── index-full.html │ ├── index.html │ ├── index.md │ ├── scripts.py │ └── scripts.py.html ├── daoweb3 │ ├── .gitignore │ ├── IDAO.abi.txt │ ├── IDAO.sol │ ├── IDAO.sol.html │ ├── IERC165.sol │ ├── IERC165.sol.html │ ├── Makefile │ ├── dao-screenshot.webp │ ├── daoweb3.py │ ├── daoweb3.py.html │ ├── get-url-ext.py │ ├── get-url-ext.py.html │ ├── index-full.html │ ├── index.html │ ├── index.md │ └── js-events.webp ├── dappintro │ ├── .gitignore │ ├── IPoll.abi.txt │ ├── IPoll.sol │ ├── IPoll.sol.html │ ├── Makefile │ ├── Poll-normal.bin.txt │ ├── Poll-optimized.bin.txt │ ├── Poll.abi.txt │ ├── Poll.asm.txt │ ├── Poll.sol │ ├── Poll.sol.html │ ├── dappintro.py │ ├── dappintro.py.html │ ├── evm-options.webp │ ├── img │ │ ├── .gitignore │ │ ├── debuggerLogo.webp │ │ ├── deployAndRun.webp │ │ ├── fileManager.webp │ │ ├── pluginManager.webp │ │ ├── remixLogo.webp │ │ ├── search_icon.webp │ │ ├── settings.webp │ │ ├── solidityLogo.webp │ │ └── unitTesting.webp │ ├── index-full.html │ ├── index.html │ ├── index.md │ └── remix-cors.webp ├── dex │ ├── DEXtest.sol │ ├── DEXtest.sol.html │ ├── EtherPriceOracleConstant.sol │ ├── EtherPriceOracleConstant.sol.html │ ├── IDEX.sol │ ├── IDEX.sol.html │ ├── IERC165.sol │ ├── IERC165.sol.html │ ├── IERC20.sol │ ├── IERC20.sol.html │ ├── IERC20Metadata.sol │ ├── IERC20Metadata.sol.html │ ├── IERC20Receiver.sol │ ├── IERC20Receiver.sol.html │ ├── IEtherPriceOracle.sol │ ├── IEtherPriceOracle.sol.html │ ├── ITokenCC.sol │ ├── ITokenCC.sol.html │ ├── Makefile │ ├── dex.py │ ├── dex.py.html │ ├── index-full.html │ ├── index.html │ └── index.md ├── ecdsa │ ├── Makefile │ ├── index-full.html │ ├── index.html │ └── index.md ├── ethprivate │ ├── Makefile │ ├── copy.svg │ ├── ethprivate.py │ ├── ethprivate.py.html │ ├── geth-on-windows.png │ ├── index-full.html │ ├── index.html │ └── index.md ├── gradebook │ ├── .gitignore │ ├── IGradebook.sol │ ├── IGradebook.sol.html │ ├── Makefile │ ├── gradebook.py │ ├── gradebook.py.html │ ├── index-full.html │ ├── index.html │ └── index.md ├── hwflow.dot ├── hwflow.svg ├── index.html ├── index.md ├── intro │ ├── Makefile │ ├── Sample.java │ ├── Sample.java.html │ ├── basic-test.sh │ ├── basic-test.sh.html │ ├── index-full.html │ ├── index.html │ ├── index.md │ ├── sample.py │ └── sample.py.html ├── maketabs.csv ├── maketabs.py ├── metamask │ ├── .gitignore │ ├── IAuctioneer-full.abi.txt │ ├── IAuctioneer.abi.txt │ ├── INFTManager-full.abi.txt │ ├── INFTManager.abi.txt │ ├── Makefile │ ├── final-web-page.webp │ ├── index-full.html │ ├── index.html │ ├── index.md │ ├── metamask-account-icon.webp │ ├── metamask-confirmation.webp │ ├── metamask-fox.svg │ ├── metamask-pop-up.webp │ ├── metamask.py │ └── metamask.py.html └── tokens │ ├── .gitignore │ ├── Address.sol │ ├── Address.sol.html │ ├── Context.sol │ ├── Context.sol.html │ ├── ERC165.sol │ ├── ERC165.sol.html │ ├── ERC20.sol │ ├── ERC20.sol.html │ ├── ERC721.sol │ ├── ERC721.sol.html │ ├── ERC721Utils.sol │ ├── ERC721Utils.sol.html │ ├── Errors.sol │ ├── Errors.sol.html │ ├── IERC165.sol │ ├── IERC165.sol.html │ ├── IERC20.sol │ ├── IERC20.sol.html │ ├── IERC20Metadata.sol │ ├── IERC20Metadata.sol.html │ ├── IERC721.sol │ ├── IERC721.sol.html │ ├── IERC721Metadata.sol │ ├── IERC721Metadata.sol.html │ ├── IERC721Receiver.sol │ ├── IERC721Receiver.sol.html │ ├── INFTManager.abi │ ├── INFTManager.sol │ ├── INFTManager.sol.html │ ├── ITokenCC.sol │ ├── ITokenCC.sol.html │ ├── Makefile │ ├── Math.sol │ ├── Math.sol.html │ ├── Panic.sol │ ├── Panic.sol.html │ ├── SafeCast.sol │ ├── SafeCast.sol.html │ ├── SignedMath.sol │ ├── SignedMath.sol.html │ ├── Strings.sol │ ├── Strings.sol.html │ ├── draft-IERC6093.sol │ ├── draft-IERC6093.sol.html │ ├── index-full.html │ ├── index.html │ ├── index.md │ ├── inheritance.dot │ ├── inheritance.dot.1.svg │ ├── inheritance.dot.2.svg │ ├── logo-template.png │ ├── sol-includes.zip │ ├── tokens.py │ └── tokens.py.html ├── index.html ├── markdown.css ├── readme.html ├── readme.md ├── slides ├── .gitignore ├── Makefile ├── _quarto-sigcse2025.yml ├── _quarto.yml ├── algorand.html ├── applications.html ├── bitcoin.html ├── ccc.css ├── code │ ├── .gitignore │ ├── Debts-no-interface.sol │ ├── Debts-no-interface.sol.html │ ├── Debts.sol │ ├── Debts.sol.html │ ├── IDebts.sol │ ├── IDebts.sol.abi.txt │ ├── IDebts.sol.html │ ├── Makefile │ ├── MyContract.sol │ └── MyContract.sol.html ├── coins.html ├── coins.md ├── conclusion.html ├── consensus.html ├── darkside.html ├── encryption.html ├── encryption.qmd ├── ethereum.html ├── ethics-legal-policy.html ├── images │ ├── applications │ │ ├── The-dao-logo.webp │ │ ├── aku-nft-lock.webp │ │ ├── bancor-insurance.webp │ │ ├── ethetc │ │ │ ├── Makefile │ │ │ ├── ethetc.dot │ │ │ └── ethetc.dot.1.svg │ │ └── graphs │ │ │ ├── Makefile │ │ │ ├── cpamm-price-curve-a.svg │ │ │ ├── cpamm-price-curve-b.svg │ │ │ ├── cpamm-price-curve-c.svg │ │ │ ├── cpamm-price-curve-d.svg │ │ │ ├── cpamm-price-curve-e.svg │ │ │ ├── cpamm-price-curve-f.svg │ │ │ ├── cpamm-price-curve-g.svg │ │ │ ├── cpamm-price-curve-h.svg │ │ │ ├── cpamm-price-curve-i.svg │ │ │ ├── cpamm-price-curve-j.svg │ │ │ ├── graphs.octave │ │ │ └── impermanent-loss.svg │ ├── bitcoin │ │ ├── Hash_Tree.svg │ │ ├── attack │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── attack.dot │ │ │ ├── attack.dot.1.svg │ │ │ ├── attack.dot.2.svg │ │ │ ├── attack.dot.3.svg │ │ │ ├── attack.dot.4.svg │ │ │ ├── attack.dot.5.svg │ │ │ └── attack.dot.6.svg │ │ ├── blocks │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── blocks.dot │ │ │ ├── blocks.dot.1.svg │ │ │ ├── blocks.dot.2.svg │ │ │ ├── blocks.dot.3.svg │ │ │ ├── blocks.dot.4.svg │ │ │ ├── blocks.dot.5.svg │ │ │ └── blocks.dot.6.svg │ │ ├── merkle │ │ │ ├── Makefile │ │ │ ├── merkle.dot │ │ │ ├── merkle.dot.1.png │ │ │ ├── merkle.dot.1.svg │ │ │ ├── merkle.dot.2.png │ │ │ ├── merkle.dot.2.svg │ │ │ ├── merkle.dot.3.png │ │ │ ├── merkle.dot.3.svg │ │ │ ├── merkle.dot.4.png │ │ │ ├── merkle.dot.4.svg │ │ │ ├── merkle.dot.5.png │ │ │ ├── merkle.dot.5.svg │ │ │ ├── perfect-tree.dot │ │ │ ├── perfect-tree.png │ │ │ └── perfect-tree.svg │ │ ├── multisig │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── multisig.dot │ │ │ ├── multisig.dot.1.svg │ │ │ ├── multisig.dot.2.svg │ │ │ ├── multisig.dot.3.svg │ │ │ ├── multisig.dot.4.svg │ │ │ └── multisig.dot.5.svg │ │ └── p2pkh │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── p2pkh.dot │ │ │ ├── p2pkh.dot.1.svg │ │ │ ├── p2pkh.dot.2.svg │ │ │ ├── p2pkh.dot.3.svg │ │ │ ├── p2pkh.dot.4.svg │ │ │ ├── p2pkh.dot.5.svg │ │ │ ├── p2pkh.dot.6.svg │ │ │ └── p2pkh.dot.7.svg │ ├── cc-by-sa-icon.svg │ ├── conclusion │ │ ├── .gitignore │ │ └── beam-desktop.webp │ ├── consensus │ │ ├── 2gen │ │ │ ├── 2gen-comm.dot │ │ │ ├── 2gen-comm.dot.1.svg │ │ │ ├── 2gen-comm.dot.2.svg │ │ │ ├── 2gen-comm.dot.3.svg │ │ │ ├── 2gen-comm.dot.4.svg │ │ │ ├── 2gen-comm.dot.5.svg │ │ │ ├── 2gen-comm.dot.6.svg │ │ │ ├── 2gen-communication.svg │ │ │ ├── 2gen-map.svg │ │ │ ├── Makefile │ │ │ ├── green-general.svg │ │ │ └── purple-general.svg │ │ ├── 3gen │ │ │ ├── 3gen.dot │ │ │ ├── 3gen.dot.1.svg │ │ │ ├── 3gen.dot.2.svg │ │ │ ├── 3gen.dot.3.svg │ │ │ ├── 3gen.dot.4.svg │ │ │ ├── 3gen.dot.5.svg │ │ │ ├── 3gen.dot.6.svg │ │ │ ├── 3gen.dot.7.svg │ │ │ ├── 3gen.dot.8.svg │ │ │ ├── 3gen.dot.9.svg │ │ │ └── Makefile │ │ ├── Byzantine_Generals.webp │ │ ├── bgp │ │ │ ├── 2gen.svg │ │ │ ├── 3gen.svg │ │ │ ├── bgp.svg │ │ │ ├── communication.svg │ │ │ ├── om0.svg │ │ │ ├── om1-a.svg │ │ │ ├── om1-b.svg │ │ │ ├── om1-c.svg │ │ │ ├── om1-d.svg │ │ │ ├── om1-e.svg │ │ │ ├── om1-f.svg │ │ │ ├── om1-g.svg │ │ │ ├── om2-a.svg │ │ │ ├── om2-b.svg │ │ │ ├── om2-c.svg │ │ │ ├── om2-d.svg │ │ │ ├── om2-e.svg │ │ │ ├── om2-f.svg │ │ │ ├── om2-g.svg │ │ │ ├── om2-h.svg │ │ │ ├── om2-i.svg │ │ │ ├── sm1-a.svg │ │ │ ├── sm1-b.svg │ │ │ ├── sm1-c.svg │ │ │ └── sm1-d.svg │ │ ├── readme.html │ │ ├── readme.md │ │ └── tendermint │ │ │ ├── tendermint-1.png │ │ │ ├── tendermint-2.png │ │ │ ├── tendermint-3.png │ │ │ └── tendermint-4.png │ ├── darkside │ │ ├── .gitignore │ │ ├── mist-icon2x.webp │ │ ├── readme.html │ │ ├── readme.md │ │ ├── web3isgoinggreat-grift.webp │ │ └── web3isgoinggreat.webp │ ├── embedsvg.py │ ├── encryption │ │ ├── EllipticCurveCatalog.svg │ │ ├── otp │ │ │ ├── otp-1.png │ │ │ ├── otp-1e.png │ │ │ ├── otp-2.png │ │ │ ├── otp-2e.png │ │ │ ├── otp-ans.png │ │ │ └── otp.png │ │ └── secp256k1 │ │ │ ├── Makefile │ │ │ ├── secp256k1-a.svg │ │ │ ├── secp256k1-b-2points.svg │ │ │ ├── secp256k1-c-2points-line.svg │ │ │ ├── secp256k1-d-3points-line.svg │ │ │ ├── secp256k1-e-4points-line.svg │ │ │ ├── secp256k1-f-point-p.svg │ │ │ ├── secp256k1-g-point-p-tangent.svg │ │ │ ├── secp256k1-h-points-pq-tangent.svg │ │ │ ├── secp256k1-i-points-pq-tangent.svg │ │ │ ├── secp256k1-j-to-find-3p.svg │ │ │ ├── secp256k1-k-to-find-3p.svg │ │ │ ├── secp256k1-l-found-3p.svg │ │ │ ├── secp256k1-m-showing-found-points.svg │ │ │ ├── secp256k1-n-associative-1.svg │ │ │ ├── secp256k1-o-associative-2.svg │ │ │ ├── secp256k1-p-associative-3.svg │ │ │ ├── secp256k1-q-point-at-infinity.svg │ │ │ ├── secp256k1-q-zoomed-out.svg │ │ │ ├── secp256k1-r-zoomed-out-with-line.svg │ │ │ ├── secp256k1-x-signing.svg │ │ │ └── secp256k1.octave │ ├── ethereum │ │ ├── VitalikButerinProfile.webp │ │ ├── graphs │ │ │ ├── Makefile │ │ │ ├── ethereum.dot │ │ │ └── ethereum.dot.1.svg │ │ ├── patricia.webp │ │ ├── trees │ │ │ ├── Patricia_trie.svg │ │ │ └── Trie_example.svg │ │ └── tries │ │ │ ├── Makefile │ │ │ ├── tries.dot │ │ │ ├── tries.dot.1.svg │ │ │ ├── tries.dot.2.svg │ │ │ ├── tries.dot.3.svg │ │ │ └── tries.dot.4.svg │ ├── flags │ │ ├── car.svg │ │ ├── elsalvador.svg │ │ ├── estonia.svg │ │ ├── japan.svg │ │ ├── russia.svg │ │ ├── sweden.svg │ │ ├── uae.svg │ │ └── venezuela.svg │ ├── introduction │ │ ├── aaronbloomfield.jpg │ │ └── bitcoin-mining.svg │ ├── logos │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── algo-coin-symbol.svg │ │ ├── atom-coin-symbol.svg │ │ ├── aust-coin-symbol.svg │ │ ├── beam-coin-symbol.svg │ │ ├── btc-coin-symbol.svg │ │ ├── btg-coin-symbol.svg │ │ ├── dai-coin-symbol.svg │ │ ├── dot-coin-symbol.svg │ │ ├── erg-coin-symbol.svg │ │ ├── etc-coin-symbol-old.svg │ │ ├── etc-coin-symbol.svg │ │ ├── etc-logo.svg │ │ ├── eth-coin-symbol.svg │ │ ├── eth-logo.svg │ │ ├── fei-coin-symbol.svg │ │ ├── fil-coin-symbol.svg │ │ ├── firo-coin-symbol.svg │ │ ├── frax-coin-symbol.svg │ │ ├── juno-coin-symbol.svg │ │ ├── lunac-coin-symbol.svg │ │ ├── matic-coin-symbol.svg │ │ ├── mim-coin-symbol.svg │ │ ├── mkr-coin-symbol.svg │ │ ├── neox-coin-symbol.svg │ │ ├── nmc-coin-symbol.svg │ │ ├── ppc-coin-symbol.svg │ │ ├── readme.html │ │ ├── readme.md │ │ ├── rvn-coin-symbol.svg │ │ ├── rvn-logo.svg │ │ ├── sai-coin-symbol.svg │ │ ├── shib-coin-symbol.svg │ │ ├── sol-coin-symbol.svg │ │ ├── spell-coin-symbol.svg │ │ ├── storj-coin-symbol.svg │ │ ├── tomb-coin-symbol.svg │ │ ├── tribe-coin-symbol.svg │ │ ├── uniswap-uni-logo.svg │ │ ├── usdc-coin-symbol.svg │ │ ├── usdt-coin-symbol.svg │ │ ├── usdt-logo.svg │ │ ├── ustc-coin-symbol.svg │ │ ├── wbtc-coin-symbol.svg │ │ ├── weth-coin-symbol.svg │ │ ├── xlm-coin-symbol.svg │ │ ├── xpd-coin-symbol.svg │ │ ├── xpm-coin-symbol.svg │ │ └── zec-coin-symbol.svg │ ├── mining │ │ ├── .gitignore │ │ ├── dag │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── dag.dot │ │ │ ├── dag.dot.1.svg │ │ │ ├── dag.dot.10.svg │ │ │ ├── dag.dot.11.svg │ │ │ ├── dag.dot.12.svg │ │ │ ├── dag.dot.13.svg │ │ │ ├── dag.dot.14.svg │ │ │ ├── dag.dot.15.svg │ │ │ ├── dag.dot.16.svg │ │ │ ├── dag.dot.17.svg │ │ │ ├── dag.dot.18.svg │ │ │ ├── dag.dot.19.svg │ │ │ ├── dag.dot.2.svg │ │ │ ├── dag.dot.20.svg │ │ │ ├── dag.dot.3.svg │ │ │ ├── dag.dot.4.svg │ │ │ ├── dag.dot.5.svg │ │ │ ├── dag.dot.6.svg │ │ │ ├── dag.dot.7.svg │ │ │ ├── dag.dot.8.svg │ │ │ ├── dag.dot.9.svg │ │ │ └── dag.py │ │ ├── nonce-tweet-graph.webp │ │ ├── nonce-tweet.webp │ │ └── orphan │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── orphan.dot │ │ │ ├── orphan.dot.1.svg │ │ │ ├── orphan.dot.2.svg │ │ │ ├── orphan.dot.3.svg │ │ │ ├── orphan.dot.4.svg │ │ │ ├── orphan.dot.5.svg │ │ │ └── orphan.dot.6.svg │ ├── overview │ │ ├── aaron-dollar.png │ │ ├── aaron-dollar.svg │ │ ├── bitcoin-coin.webp │ │ └── graphs │ │ │ ├── Makefile │ │ │ ├── overview.dot │ │ │ └── overview.dot.1.svg │ ├── parallax-1.webp │ ├── print-icon.png │ ├── print-icon.svg │ ├── qrcode.webp │ ├── quarto.webp │ ├── scalability │ │ ├── Makefile │ │ ├── concurrency │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── concurrency.dot │ │ │ ├── concurrency.dot.1.svg │ │ │ ├── concurrency.dot.2.svg │ │ │ ├── concurrency.dot.3.svg │ │ │ ├── concurrency.dot.4.svg │ │ │ └── concurrency.dot.5.svg │ │ ├── graphs │ │ │ ├── Makefile │ │ │ ├── scalability.dot │ │ │ ├── scalability.dot.1.svg │ │ │ ├── scalability.dot.2.svg │ │ │ └── scalability.dot.3.svg │ │ └── shards │ │ │ ├── Makefile │ │ │ ├── shards.dot │ │ │ ├── shards.dot.1.svg │ │ │ └── shards.dot.2.svg │ ├── spacer.gif │ ├── stablecoins │ │ ├── graphs │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── dai-eth.plot │ │ │ ├── dai-eth.svg │ │ │ ├── dai-usd-max.csv │ │ │ ├── eth-usd-max.csv │ │ │ ├── get-cv.py │ │ │ ├── readme.html │ │ │ ├── readme.md │ │ │ └── sai-usd-max.csv │ │ └── oracles │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── bigfish.svg │ │ │ ├── oracles.dot │ │ │ ├── oracles.dot.1.svg │ │ │ ├── oracles.dot.2.svg │ │ │ ├── oracles.dot.3.svg │ │ │ ├── oracles.dot.4.svg │ │ │ ├── oracles.dot.5.svg │ │ │ ├── readme.html │ │ │ └── readme.md │ ├── timely │ │ ├── .gitignore │ │ ├── Makefile │ │ ├── btc-difficulty-all-time-2022-01-17.png │ │ ├── btc-difficulty-all-time-2022-08-23.webp │ │ ├── btc-difficulty-all-time-2023-01-17.webp │ │ ├── btc-difficulty-all-time-2023-08-27.webp │ │ ├── btc-difficulty-all-time-2024-01-18.webp │ │ ├── btc-difficulty-all-time.webp │ │ ├── btc-difficulty-last-3-years-2022-01-17.png │ │ ├── btc-difficulty-last-3-years-2022-08-23.webp │ │ ├── btc-difficulty-last-3-years-2023-01-17.webp │ │ ├── btc-difficulty-last-3-years-2023-08-27.webp │ │ ├── btc-difficulty-last-3-years-2024-01-18.webp │ │ ├── btc-difficulty-last-3-years.webp │ │ ├── btc-dominance-2022-01-18.svg │ │ ├── btc-dominance-2022-08-23.svg │ │ ├── btc-dominance-2023-01-17.svg │ │ ├── btc-dominance-2023-08-22.svg │ │ ├── btc-dominance-2024-01-13.svg │ │ ├── btc-dominance.webp │ │ ├── btc-eth-fees-1year-2022-04-17.webp │ │ ├── btc-eth-fees-1year-2023-04-20.webp │ │ ├── btc-eth-fees-1year-2023-11-09.webp │ │ ├── btc-eth-fees-1year.webp │ │ ├── btc-eth-fees-alltime-2022-04-17.webp │ │ ├── btc-eth-fees-alltime-2023-04-20.webp │ │ ├── btc-eth-fees-alltime-2023-11-09.webp │ │ ├── btc-eth-fees-alltime.webp │ │ ├── btc-hashes-per-sec-2022-01-17.png │ │ ├── btc-hashes-per-sec-2022-08-23.webp │ │ ├── btc-hashes-per-sec-2023-01-17.webp │ │ ├── btc-hashes-per-sec-2023-08-27.webp │ │ ├── btc-hashes-per-sec-2024-01-18.webp │ │ ├── btc-hashes-per-sec.webp │ │ ├── btc-nodes-2022-02-06.png │ │ ├── btc-nodes-2022-09-06.webp │ │ ├── btc-nodes.webp │ │ ├── btc-price-2022-01-17.png │ │ ├── btc-price-2022-08-23.webp │ │ ├── btc-price-2023-01-17.webp │ │ ├── btc-price-2023-08-27.webp │ │ ├── btc-price-2024-01-18.webp │ │ ├── btc-price.webp │ │ ├── btc-tps-2022-04-17.webp │ │ ├── btc-tps-2022-11-09.webp │ │ ├── btc-tps-2023-04-20.webp │ │ ├── btc-tps.webp │ │ ├── cc-market-cap-2022-01-18.svg │ │ ├── cc-market-cap-2022-08-23.svg │ │ ├── cc-market-cap-2023-01-17.svg │ │ ├── cc-market-cap-2023-08-22.svg │ │ ├── cc-market-cap-2024-01-13.svg │ │ ├── cc-market-cap-no-btc-2022-01-18.svg │ │ ├── cc-market-cap-no-btc-2022-08-23.svg │ │ ├── cc-market-cap-no-btc-2023-01-17.svg │ │ ├── cc-market-cap-no-btc-2023-08-22.svg │ │ ├── cc-market-cap-no-btc-2024-01-13.svg │ │ ├── cc-market-cap.webp │ │ ├── readme.html │ │ └── readme.md │ ├── tokens │ │ ├── atomic-wallet.webp │ │ ├── dollar-bill.webp │ │ ├── graphs │ │ │ ├── Makefile │ │ │ ├── tokens.dot │ │ │ ├── tokens.dot.1.svg │ │ │ └── tokens.dot.2.svg │ │ └── quarter.webp │ └── zksnarks │ │ ├── MartinHandfordWallyandFriends.webp │ │ ├── Zkip_alibaba1.webp │ │ ├── Zkip_alibaba2.webp │ │ ├── Zkip_alibaba3.webp │ │ ├── bill_gates_hacked.webp │ │ ├── firo-wallet-modified.webp │ │ └── graphs │ │ ├── Makefile │ │ ├── zksnarks.dot │ │ ├── zksnarks.dot.1.svg │ │ ├── zksnarks.dot.2.svg │ │ ├── zksnarks.dot.3.svg │ │ ├── zksnarks.dot.4.svg │ │ ├── zksnarks.dot.5.svg │ │ ├── zksnarks.dot.6.svg │ │ ├── zksnarks.dot.7.svg │ │ └── zksnarks.dot.8.svg ├── index.html ├── index.md ├── introduction.html ├── introduction.qmd ├── mining.html ├── mining.qmd ├── overview.html ├── overview.qmd ├── quarto_files │ ├── clipboard │ │ └── clipboard.min.js │ ├── quarto-html │ │ ├── light-border.css │ │ ├── popper.min.js │ │ ├── quarto-html.min.css │ │ ├── quarto-syntax-highlighting-dark-8ea72dc5fed832574809a9c94082fbbb.css │ │ ├── quarto-syntax-highlighting-dark.css │ │ ├── quarto-syntax-highlighting.css │ │ ├── tabby.min.js │ │ ├── tippy.css │ │ └── tippy.umd.min.js │ └── revealjs │ │ ├── dist │ │ ├── reset.css │ │ ├── reveal.css │ │ ├── reveal.esm.js │ │ ├── reveal.esm.js.map │ │ ├── reveal.js │ │ ├── reveal.js.map │ │ └── theme │ │ │ ├── fonts │ │ │ ├── league-gothic │ │ │ │ ├── LICENSE │ │ │ │ ├── league-gothic.css │ │ │ │ ├── league-gothic.eot │ │ │ │ ├── league-gothic.ttf │ │ │ │ └── league-gothic.woff │ │ │ └── source-sans-pro │ │ │ │ ├── LICENSE │ │ │ │ ├── source-sans-pro-italic.eot │ │ │ │ ├── source-sans-pro-italic.ttf │ │ │ │ ├── source-sans-pro-italic.woff │ │ │ │ ├── source-sans-pro-regular.eot │ │ │ │ ├── source-sans-pro-regular.ttf │ │ │ │ ├── source-sans-pro-regular.woff │ │ │ │ ├── source-sans-pro-semibold.eot │ │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ │ ├── source-sans-pro-semibold.woff │ │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ │ └── source-sans-pro.css │ │ │ ├── quarto-5b48f34d633aed70c74c672477009ffc.css │ │ │ └── quarto.css │ │ └── plugin │ │ ├── highlight │ │ ├── highlight.esm.js │ │ ├── highlight.js │ │ ├── monokai.css │ │ ├── plugin.js │ │ └── zenburn.css │ │ ├── markdown │ │ ├── markdown.esm.js │ │ ├── markdown.js │ │ └── plugin.js │ │ ├── math │ │ ├── katex.js │ │ ├── math.esm.js │ │ ├── math.js │ │ ├── mathjax2.js │ │ ├── mathjax3.js │ │ └── plugin.js │ │ ├── notes │ │ ├── notes.esm.js │ │ ├── notes.js │ │ ├── plugin.js │ │ └── speaker-view.html │ │ ├── pdf-export │ │ ├── pdfexport.js │ │ └── plugin.yml │ │ ├── quarto-line-highlight │ │ ├── line-highlight.css │ │ ├── line-highlight.js │ │ └── plugin.yml │ │ ├── quarto-support │ │ ├── footer.css │ │ ├── plugin.yml │ │ └── support.js │ │ ├── reveal-chalkboard │ │ ├── README.html │ │ ├── README.md │ │ ├── font-awesome │ │ │ ├── LICENSE.txt │ │ │ ├── css │ │ │ │ ├── all.css │ │ │ │ ├── brands.css │ │ │ │ ├── fontawesome.css │ │ │ │ ├── regular.css │ │ │ │ ├── solid.css │ │ │ │ ├── svg-with-js.css │ │ │ │ ├── v4-shims.css │ │ │ │ └── v4-shims.min.css │ │ │ └── webfonts │ │ │ │ ├── fa-brands-400.eot │ │ │ │ ├── fa-brands-400.svg │ │ │ │ ├── fa-brands-400.ttf │ │ │ │ ├── fa-brands-400.woff │ │ │ │ ├── fa-brands-400.woff2 │ │ │ │ ├── fa-regular-400.eot │ │ │ │ ├── fa-regular-400.svg │ │ │ │ ├── fa-regular-400.ttf │ │ │ │ ├── fa-regular-400.woff │ │ │ │ ├── fa-regular-400.woff2 │ │ │ │ ├── fa-solid-900.eot │ │ │ │ ├── fa-solid-900.svg │ │ │ │ ├── fa-solid-900.ttf │ │ │ │ ├── fa-solid-900.woff │ │ │ │ └── fa-solid-900.woff2 │ │ ├── img │ │ │ ├── blackboard.png │ │ │ ├── boardmarker-black.png │ │ │ ├── boardmarker-blue.png │ │ │ ├── boardmarker-green.png │ │ │ ├── boardmarker-orange.png │ │ │ ├── boardmarker-purple.png │ │ │ ├── boardmarker-red.png │ │ │ ├── boardmarker-yellow.png │ │ │ ├── chalk-blue.png │ │ │ ├── chalk-green.png │ │ │ ├── chalk-orange.png │ │ │ ├── chalk-purple.png │ │ │ ├── chalk-red.png │ │ │ ├── chalk-white.png │ │ │ ├── chalk-yellow.png │ │ │ ├── sponge.png │ │ │ └── whiteboard.png │ │ ├── plugin.js │ │ ├── plugin.yml │ │ └── style.css │ │ ├── reveal-menu │ │ ├── menu.css │ │ ├── menu.js │ │ ├── plugin.yml │ │ ├── quarto-menu.css │ │ └── quarto-menu.js │ │ ├── search │ │ ├── plugin.js │ │ ├── search.esm.js │ │ └── search.js │ │ └── zoom │ │ ├── plugin.js │ │ ├── zoom.esm.js │ │ └── zoom.js ├── reveal.js │ ├── .github │ │ ├── CONTRIBUTING.md │ │ ├── FUNDING.yml │ │ └── workflows │ │ │ └── js.yml │ ├── .gitignore │ ├── .npmignore │ ├── LICENSE │ ├── README.md │ ├── css │ │ ├── layout.scss │ │ ├── print │ │ │ ├── paper.scss │ │ │ └── pdf.scss │ │ ├── reveal.scss │ │ └── theme │ │ │ ├── README.md │ │ │ ├── source │ │ │ ├── beige.scss │ │ │ ├── black-contrast.scss │ │ │ ├── black.scss │ │ │ ├── blood.scss │ │ │ ├── dracula.scss │ │ │ ├── league.scss │ │ │ ├── moon.scss │ │ │ ├── night.scss │ │ │ ├── serif.scss │ │ │ ├── simple.scss │ │ │ ├── sky.scss │ │ │ ├── solarized.scss │ │ │ ├── white-contrast.scss │ │ │ └── white.scss │ │ │ └── template │ │ │ ├── exposer.scss │ │ │ ├── mixins.scss │ │ │ ├── settings.scss │ │ │ └── theme.scss │ ├── demo.html │ ├── dist │ │ ├── reset.css │ │ ├── reveal.css │ │ ├── reveal.esm.js │ │ ├── reveal.esm.js.map │ │ ├── reveal.js │ │ ├── reveal.js.map │ │ └── theme │ │ │ ├── beige.css │ │ │ ├── black-contrast.css │ │ │ ├── black.css │ │ │ ├── blood.css │ │ │ ├── dracula.css │ │ │ ├── fonts │ │ │ ├── league-gothic │ │ │ │ ├── LICENSE │ │ │ │ ├── league-gothic.css │ │ │ │ ├── league-gothic.eot │ │ │ │ ├── league-gothic.ttf │ │ │ │ └── league-gothic.woff │ │ │ └── source-sans-pro │ │ │ │ ├── LICENSE │ │ │ │ ├── source-sans-pro-italic.eot │ │ │ │ ├── source-sans-pro-italic.ttf │ │ │ │ ├── source-sans-pro-italic.woff │ │ │ │ ├── source-sans-pro-regular.eot │ │ │ │ ├── source-sans-pro-regular.ttf │ │ │ │ ├── source-sans-pro-regular.woff │ │ │ │ ├── source-sans-pro-semibold.eot │ │ │ │ ├── source-sans-pro-semibold.ttf │ │ │ │ ├── source-sans-pro-semibold.woff │ │ │ │ ├── source-sans-pro-semibolditalic.eot │ │ │ │ ├── source-sans-pro-semibolditalic.ttf │ │ │ │ ├── source-sans-pro-semibolditalic.woff │ │ │ │ └── source-sans-pro.css │ │ │ ├── league.css │ │ │ ├── moon.css │ │ │ ├── night.css │ │ │ ├── serif.css │ │ │ ├── simple.css │ │ │ ├── sky.css │ │ │ ├── solarized.css │ │ │ ├── white-contrast.css │ │ │ ├── white.css │ │ │ └── white_contrast_compact_verbatim_headers.css │ ├── examples │ │ ├── 500-slides.html │ │ ├── assets │ │ │ ├── beeping.txt │ │ │ ├── beeping.wav │ │ │ ├── image1.png │ │ │ └── image2.png │ │ ├── auto-animate.html │ │ ├── backgrounds.html │ │ ├── barebones.html │ │ ├── layout-helpers.html │ │ ├── markdown.html │ │ ├── markdown.md │ │ ├── math.html │ │ ├── media.html │ │ ├── multiple-presentations.html │ │ ├── scroll.html │ │ └── transitions.html │ ├── gulpfile.js │ ├── index.html │ ├── js │ │ ├── components │ │ │ └── playback.js │ │ ├── config.js │ │ ├── controllers │ │ │ ├── autoanimate.js │ │ │ ├── backgrounds.js │ │ │ ├── controls.js │ │ │ ├── focus.js │ │ │ ├── fragments.js │ │ │ ├── jumptoslide.js │ │ │ ├── keyboard.js │ │ │ ├── location.js │ │ │ ├── notes.js │ │ │ ├── overview.js │ │ │ ├── plugins.js │ │ │ ├── pointer.js │ │ │ ├── printview.js │ │ │ ├── progress.js │ │ │ ├── scrollview.js │ │ │ ├── slidecontent.js │ │ │ ├── slidenumber.js │ │ │ └── touch.js │ │ ├── index.js │ │ ├── reveal.js │ │ └── utils │ │ │ ├── color.js │ │ │ ├── constants.js │ │ │ ├── device.js │ │ │ ├── loader.js │ │ │ └── util.js │ ├── package-lock.json │ ├── package.json │ ├── plugin │ │ ├── highlight │ │ │ ├── highlight.esm.js │ │ │ ├── highlight.js │ │ │ ├── monokai.css │ │ │ ├── plugin.js │ │ │ └── zenburn.css │ │ ├── markdown │ │ │ ├── markdown.esm.js │ │ │ ├── markdown.js │ │ │ └── plugin.js │ │ ├── math │ │ │ ├── katex.js │ │ │ ├── math.esm.js │ │ │ ├── math.js │ │ │ ├── mathjax2.js │ │ │ ├── mathjax3.js │ │ │ └── plugin.js │ │ ├── notes │ │ │ ├── notes.esm.js │ │ │ ├── notes.js │ │ │ ├── plugin.js │ │ │ └── speaker-view.html │ │ ├── search │ │ │ ├── plugin.js │ │ │ ├── search.esm.js │ │ │ └── search.js │ │ └── zoom │ │ │ ├── plugin.js │ │ │ ├── zoom.esm.js │ │ │ └── zoom.js │ └── test │ │ ├── assets │ │ ├── external-script-a.js │ │ ├── external-script-b.js │ │ ├── external-script-c.js │ │ └── external-script-d.js │ │ ├── simple.md │ │ ├── test-auto-animate.html │ │ ├── test-dependencies-async.html │ │ ├── test-dependencies.html │ │ ├── test-grid-navigation.html │ │ ├── test-iframe-backgrounds.html │ │ ├── test-iframes.html │ │ ├── test-markdown.html │ │ ├── test-multiple-instances-es5.html │ │ ├── test-multiple-instances.html │ │ ├── test-pdf.html │ │ ├── test-plugins.html │ │ ├── test-scroll.html │ │ ├── test-state.html │ │ └── test.html ├── scalability.html ├── settings.js ├── sigcse2025.html ├── sigcse2025.qmd ├── solidity.html ├── solidity.qmd ├── stablecoins.html ├── template.html ├── tests.html ├── title-slide-sigcse2025.html ├── title-slide.html ├── tokens.html ├── zksnarks-full.html └── znps.html ├── tabs.js └── uva ├── .gitignore ├── Makefile ├── daily-announcements.html ├── grades.html ├── grades.md ├── hw-policies.html ├── hw-policies.md ├── images └── magic-8-ball.png ├── index.html ├── index.md ├── old ├── daily-announcements-fall-2022.html ├── daily-announcements-fall-2023.html ├── daily-announcements-spring-2022.html ├── daily-announcements-spring-2023.html ├── daily-announcements-spring-2024.html ├── grades-spring-2023.html ├── grades-spring-2023.md ├── index-fall-2022.html ├── index-fall-2022.md ├── index-fall-2023.html ├── index-fall-2023.md ├── index-spring-2022.html ├── index-spring-2022.md ├── index-spring-2023.html ├── index-spring-2023.md ├── index-spring-2024.html ├── index-spring-2024.md ├── index.html ├── index.md ├── prices-spring-2022.data ├── prices-spring-2022.svg ├── syllabus-fall-2022.html ├── syllabus-fall-2022.md ├── syllabus-fall-2023.html ├── syllabus-fall-2023.md ├── syllabus-spring-2022.html ├── syllabus-spring-2022.md ├── syllabus-spring-2023.html ├── syllabus-spring-2023.md ├── syllabus-spring-2024.html └── syllabus-spring-2024.md ├── prices.data ├── prices.graph ├── prices.svg ├── sdac.html ├── sdac.md ├── syllabus.html ├── syllabus.md └── zoom-announcements.html /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .SUFFIXES: .md .html 2 | LICENSE =

Released under a CC BY-SA

3 | ifeq ($(shell uname),Darwin) 4 | SED=sed -i bak 5 | else 6 | SED=sed -i 7 | endif 8 | 9 | markdown: 10 | @find . | grep -e "\.md$$" | grep -v reveal.js | grep -v node_modules | sed s/.md$$/.html/g | awk '{print "make -s "$$1}' | bash 11 | @/bin/cp -f readme.html index.html 12 | 13 | .md.html: 14 | pathprefix=`echo $< | tr -d -c '/' | sed -r 's/\//..\//g'` && \ 15 | pandoc --standalone -V "pagetitle:$$(head -1 $<)" -H tabs.js -f markdown -c $$pathprefix"markdown.css" --columns=9999 -t html5 -o $@ $< 16 | @echo wrote $@ 17 | #$(SED) s_""_"$(LICENSE)"_g $@ 18 | #pathprefix=`echo $< | tr -d -c '/' | sed -r 's/\//..\//g'` && \ 19 | 20 | markdownold: 21 | @echo Converting markdown files to html format... 22 | @chmod 755 utils/convert-markdown-to-html 23 | @utils/convert-markdown-to-html 24 | @echo done! 25 | 26 | clean: 27 | /bin/rm -rf *~ */*~ */*/*~ */*/*/*~ 28 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | Cryptocurrency Course: Documents 2 | ================================ 3 | 4 | 5 | [Go up to the main CCC readme](../readme.html) ([md](../readme.md)) 6 | 7 | - [Geth reference](geth_reference.html) ([md](geth_reference.md)) 8 | - [Solidity programming reference](solidity_reference.pdf) (PDF) 9 | - [Solidity programming cheatsheet](solidity_cheatsheet.html) ([md](solidity_cheatsheet.md)) 10 | - [Web3.py introduction](web3py.html) ([md](web3py.md)) 11 | -------------------------------------------------------------------------------- /docs/solidity_reference.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/docs/solidity_reference.pdf -------------------------------------------------------------------------------- /exams/final-s22.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/final-s22.pdf -------------------------------------------------------------------------------- /exams/final-s23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/final-s23.pdf -------------------------------------------------------------------------------- /exams/index.md: -------------------------------------------------------------------------------- 1 | Cryptocurrency: Exams 2 | ====================== 3 | 4 | 5 | [Go up to the main CCC readme](../readme.html) ([md](../readme.md)) 6 | 7 | These are the past exams in the course. I do not have (nor do I make) answer keys. 8 | 9 | - Spring 2025: [midterm](midterm-s25.pdf) 10 | - Spring 2024: [midterm](midterm-s24.pdf) 11 | - Fall 2023: [midterm](midterm-f23.pdf) 12 | - Spring 2023: [midterm](midterm-s23.pdf), [final](final-s23.pdf) 13 | - Fall 2022: [midterm](midterm-f22.pdf); (final was online) 14 | - Spring 2022: [midterm](midterm-s22.pdf), [final](final-s22.pdf) 15 | -------------------------------------------------------------------------------- /exams/midterm-f22.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-f22.pdf -------------------------------------------------------------------------------- /exams/midterm-f23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-f23.pdf -------------------------------------------------------------------------------- /exams/midterm-s22.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-s22.pdf -------------------------------------------------------------------------------- /exams/midterm-s23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-s23.pdf -------------------------------------------------------------------------------- /exams/midterm-s24.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-s24.pdf -------------------------------------------------------------------------------- /exams/midterm-s25.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/exams/midterm-s25.pdf -------------------------------------------------------------------------------- /hws/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | @cd .. && make -s 3 | dot -Tsvg -O hwflow.dot 4 | /bin/mv -f hwflow.dot.svg hwflow.svg 5 | 6 | tabs: 7 | @for f in `ls -d */` ; do \ 8 | cd $$f && ../maketabs.py && cd ..; \ 9 | done 10 | 11 | all: 12 | @for f in `ls -d */` ; do \ 13 | cd $$f && make && cd ..; \ 14 | done 15 | -------------------------------------------------------------------------------- /hws/arbitrage/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -t 4 *.py 5 | source-highlight -s cpp -t 4 *.sol 6 | source-highlight -d arbitrage.py 7 | ../maketabs.py 8 | -------------------------------------------------------------------------------- /hws/arbitrage/formulas/.gitignore: -------------------------------------------------------------------------------- 1 | formulas.aux 2 | formulas.log 3 | formulas.pdf 4 | -------------------------------------------------------------------------------- /hws/arbitrage/formulas/formulas.tex: -------------------------------------------------------------------------------- 1 | % this document is just to allow creation of the formula images 2 | % to do so, run: 3 | % latext2html formulas.tex 4 | 5 | \documentclass{article} 6 | 7 | \begin{document} 8 | 9 | \begin{enumerate} 10 | 11 | \item $h_{before} = q_{e} \ast p_{e} + q_{t} \ast p_{t}$ 12 | 13 | \item $h_{after} = (q_{e} + f \ast x_{d}-f \ast k_d/(y_{d}+\delta_{t})) \ast p_{e} + (q_{t}-\delta_{t}) \ast p_{t} - g \ast p_e$ 14 | 15 | \item $h_{after} = \left( q_{e} + f \ast x_{d}-f \ast \frac{k_d}{y_{d}+\delta_{t}} \right) \ast p_{e} + \left( q_{t}-\delta_{t} \right) \ast p_{t} - g \ast p_e$ 16 | 17 | \item $h_{after} = (q_{t} + f \ast y_{d}-f \ast k_d/(x_{d}+\delta_{e})) \ast p_{t} + (q_{e}-\delta_{e}) \ast p_{e} - g \ast p_e$ 18 | 19 | \item $h_{after} = \left( q_{t} + f \ast y_{d}-f \ast \frac{k_d}{x_{d}+\delta_{e}} \right) \ast p_{t} + \left( q_{e}-\delta_{e} \right) \ast p_{e} - g \ast p_e$ 20 | 21 | \item $\delta_{t}=-y_d + \sqrt{f \ast k_d \ast p_e/p_t}$ 22 | 23 | \item $\delta_{t}=-y_d + \sqrt{f \ast k_d \ast \frac{p_e}{p_t}}$ 24 | 25 | \item $\delta_{e}=-x_d + \sqrt{f \ast k_d \ast p_t/p_e}$ 26 | 27 | \item $\delta_{e}=-x_d + \sqrt{f \ast k_d \ast \frac{p_t}{p_e}}$ 28 | 29 | \end{enumerate} 30 | 31 | \end{document} 32 | -------------------------------------------------------------------------------- /hws/arbitrage/formulas/formulas/.gitignore: -------------------------------------------------------------------------------- 1 | formulas.css 2 | formulas.html 3 | images.aux 4 | images.log 5 | images.pdf 6 | images.pl 7 | images.tex 8 | img2.svg 9 | img4.svg 10 | img6.svg 11 | img8.svg 12 | index.html 13 | labels.pl 14 | next_g.png 15 | next.png 16 | node1.html 17 | prev_g.png 18 | prev.png 19 | up_g.png 20 | up.png 21 | *.old 22 | -------------------------------------------------------------------------------- /hws/arbitrage/img/d10c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d10c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/d12c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d12c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/d20c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d20c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/d4c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d4c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/d6c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d6c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/d8c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/d8c.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/ddc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/arbitrage/img/ddc.webp -------------------------------------------------------------------------------- /hws/arbitrage/img/index.md: -------------------------------------------------------------------------------- 1 | Dragon Dice Coin Logos 2 | ====================== 3 | 4 | [![](d10c.webp){style='width:256px'}](d10c.webp) 5 | [![](d12c.webp){style='width:256px'}](d12c.webp) 6 | [![](d20c.webp){style='width:256px'}](d20c.webp) 7 | [![](d4c.webp){style='width:256px'}](d4c.webp) 8 | [![](d6c.webp){style='width:256px'}](d6c.webp) 9 | [![](d8c.webp){style='width:256px'}](d8c.webp) 10 | [![](ddc.webp){style='width:256px'}](ddc.webp) 11 | -------------------------------------------------------------------------------- /hws/auction/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | -------------------------------------------------------------------------------- /hws/auction/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Interface of the ERC-165 standard, as defined in the 8 | * https://eips.ethereum.org/EIPS/eip-165[ERC]. 9 | * 10 | * Implementers can declare support of contract interfaces, which can then be 11 | * queried by others ({ERC165Checker}). 12 | * 13 | * For an implementation, see {ERC165}. 14 | */ 15 | interface IERC165 { 16 | /** 17 | * @dev Returns true if this contract implements the interface defined by 18 | * `interfaceId`. See the corresponding 19 | * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] 20 | * to learn more about how these ids are created. 21 | * 22 | * This function call must use less than 30 000 gas. 23 | */ 24 | function supportsInterface(bytes4 interfaceId) external view returns (bool); 25 | } 26 | -------------------------------------------------------------------------------- /hws/auction/IERC721Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721} from "./IERC721.sol"; 7 | 8 | /** 9 | * @title ERC-721 Non-Fungible Token Standard, optional metadata extension 10 | * @dev See https://eips.ethereum.org/EIPS/eip-721 11 | */ 12 | interface IERC721Metadata is IERC721 { 13 | /** 14 | * @dev Returns the token collection name. 15 | */ 16 | function name() external view returns (string memory); 17 | 18 | /** 19 | * @dev Returns the token collection symbol. 20 | */ 21 | function symbol() external view returns (string memory); 22 | 23 | /** 24 | * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. 25 | */ 26 | function tokenURI(uint256 tokenId) external view returns (string memory); 27 | } 28 | -------------------------------------------------------------------------------- /hws/auction/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -s cpp -d *.sol 5 | /bin/rm -f Auctioneer.sol.html 6 | source-highlight -d auction.py 7 | ../maketabs.py 8 | 9 | sync: 10 | /bin/cp -f ../tokens/IERC165.sol ../tokens/IERC721.sol ../tokens/IERC721Metadata.sol . 11 | -------------------------------------------------------------------------------- /hws/btcparser/.gitignore: -------------------------------------------------------------------------------- 1 | *.json 2 | test.blk 3 | -------------------------------------------------------------------------------- /hws/btcparser/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -d *.py 5 | ../maketabs.py 6 | -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b0.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b0.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b170.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b170.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b26816.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b26816.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b2812.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b2812.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b29664.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b29664.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b49820.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b49820.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b53066.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b53066.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b546.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b546.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-b586.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-b586.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-f10.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-f10.blk -------------------------------------------------------------------------------- /hws/btcparser/blk00000-f100.blk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/btcparser/blk00000-f100.blk -------------------------------------------------------------------------------- /hws/btcparser/change_byte.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # see the homework description for how to use this 3 | import sys 4 | assert (len(sys.argv)==3) 5 | data = bytearray(sys.stdin.buffer.read()) 6 | data[int(sys.argv[1])] = int(sys.argv[2]) 7 | sys.stdout.buffer.write(bytes(data)) 8 | -------------------------------------------------------------------------------- /hws/btcscript/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -d *.py 5 | ../maketabs.py 6 | -------------------------------------------------------------------------------- /hws/daoweb3/.gitignore: -------------------------------------------------------------------------------- 1 | dao-screenshot.png 2 | web3.min.js 3 | web3.min.js.map 4 | -------------------------------------------------------------------------------- /hws/daoweb3/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Interface of the ERC-165 standard, as defined in the 8 | * https://eips.ethereum.org/EIPS/eip-165[ERC]. 9 | * 10 | * Implementers can declare support of contract interfaces, which can then be 11 | * queried by others ({ERC165Checker}). 12 | * 13 | * For an implementation, see {ERC165}. 14 | */ 15 | interface IERC165 { 16 | /** 17 | * @dev Returns true if this contract implements the interface defined by 18 | * `interfaceId`. See the corresponding 19 | * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] 20 | * to learn more about how these ids are created. 21 | * 22 | * This function call must use less than 30 000 gas. 23 | */ 24 | function supportsInterface(bytes4 interfaceId) external view returns (bool); 25 | } 26 | -------------------------------------------------------------------------------- /hws/daoweb3/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -t 4 -s cpp -d *.sol 5 | source-highlight -d *.py 6 | -solc --abi IDAO.sol > IDAO.abi.txt 7 | ../maketabs.py 8 | 9 | sync: 10 | /bin/cp -f ../tokens/IERC165.sol . 11 | -------------------------------------------------------------------------------- /hws/daoweb3/dao-screenshot.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/daoweb3/dao-screenshot.webp -------------------------------------------------------------------------------- /hws/daoweb3/get-url-ext.py: -------------------------------------------------------------------------------- 1 | # to run this, first: `pip install web3 pysha3` 2 | import sys, web3, sha3 3 | 4 | # sanity checks 5 | assert len(sys.argv) == 2, "Must supply one parameter, the eth.coinbase account" 6 | assert int(web3.__version__.split('.')[0]) >= 6, "You must install web3 version 6.0.0 or greater to run this code" 7 | 8 | # compute and print out the suffix 9 | checksummed = web3.Web3.to_checksum_address(sys.argv[1]) 10 | hash = sha3.keccak_256(bytes(checksummed,'ASCII')) 11 | suffix = hash.hexdigest()[:8] 12 | print("dao_"+suffix+".html") 13 | -------------------------------------------------------------------------------- /hws/daoweb3/js-events.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/daoweb3/js-events.webp -------------------------------------------------------------------------------- /hws/dappintro/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | -------------------------------------------------------------------------------- /hws/dappintro/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -d dappintro.py 5 | source-highlight -d -s cpp Poll.sol IPoll.sol 6 | ../maketabs.py 7 | solc --abi IPoll.sol| tail -1 | jq . - > IPoll.abi 8 | /bin/mv -f IPoll.abi IPoll.abi.txt 9 | solc --abi Poll.sol| tail -1 | jq . - > Poll.abi 10 | /bin/mv -f Poll.abi Poll.abi.txt 11 | solc --bin Poll.sol | tail -1 > Poll-normal.bin.txt 12 | solc --bin --optimize Poll.sol | tail -1 > Poll-optimized.bin.txt 13 | solc --asm Poll.sol > Poll.asm.txt 14 | -------------------------------------------------------------------------------- /hws/dappintro/evm-options.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/evm-options.webp -------------------------------------------------------------------------------- /hws/dappintro/img/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /hws/dappintro/img/debuggerLogo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/debuggerLogo.webp -------------------------------------------------------------------------------- /hws/dappintro/img/deployAndRun.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/deployAndRun.webp -------------------------------------------------------------------------------- /hws/dappintro/img/fileManager.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/fileManager.webp -------------------------------------------------------------------------------- /hws/dappintro/img/pluginManager.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/pluginManager.webp -------------------------------------------------------------------------------- /hws/dappintro/img/remixLogo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/remixLogo.webp -------------------------------------------------------------------------------- /hws/dappintro/img/search_icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/search_icon.webp -------------------------------------------------------------------------------- /hws/dappintro/img/settings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/settings.webp -------------------------------------------------------------------------------- /hws/dappintro/img/solidityLogo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/solidityLogo.webp -------------------------------------------------------------------------------- /hws/dappintro/img/unitTesting.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/img/unitTesting.webp -------------------------------------------------------------------------------- /hws/dappintro/remix-cors.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/dappintro/remix-cors.webp -------------------------------------------------------------------------------- /hws/dex/EtherPriceOracleConstant.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This file is part of the http://github.com/aaronbloomfield/ccc repository, 4 | // and is released under the GPL 3.0 license. 5 | 6 | pragma solidity ^0.8.24; 7 | 8 | import "./IEtherPriceOracle.sol"; 9 | 10 | contract EtherPriceOracleConstant is IEtherPriceOracle { 11 | 12 | string public constant name = "A constant EtherPrice oracle that always returns $100.00"; 13 | 14 | string public constant symbol = "$"; 15 | 16 | uint public constant decimals = 2; 17 | 18 | function supportsInterface(bytes4 interfaceId) external pure override returns (bool) { 19 | return interfaceId == type(IEtherPriceOracle).interfaceId || interfaceId == type(IERC165).interfaceId; 20 | } 21 | 22 | uint public constant price = 10000; // in cents 23 | 24 | } -------------------------------------------------------------------------------- /hws/dex/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Interface of the ERC-165 standard, as defined in the 8 | * https://eips.ethereum.org/EIPS/eip-165[ERC]. 9 | * 10 | * Implementers can declare support of contract interfaces, which can then be 11 | * queried by others ({ERC165Checker}). 12 | * 13 | * For an implementation, see {ERC165}. 14 | */ 15 | interface IERC165 { 16 | /** 17 | * @dev Returns true if this contract implements the interface defined by 18 | * `interfaceId`. See the corresponding 19 | * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] 20 | * to learn more about how these ids are created. 21 | * 22 | * This function call must use less than 30 000 gas. 23 | */ 24 | function supportsInterface(bytes4 interfaceId) external view returns (bool); 25 | } 26 | -------------------------------------------------------------------------------- /hws/dex/IERC20Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC20} from "./IERC20.sol"; 7 | 8 | /** 9 | * @dev Interface for the optional metadata functions from the ERC-20 standard. 10 | */ 11 | interface IERC20Metadata is IERC20 { 12 | /** 13 | * @dev Returns the name of the token. 14 | */ 15 | function name() external view returns (string memory); 16 | 17 | /** 18 | * @dev Returns the symbol of the token. 19 | */ 20 | function symbol() external view returns (string memory); 21 | 22 | /** 23 | * @dev Returns the decimals places of the token. 24 | */ 25 | function decimals() external view returns (uint8); 26 | } 27 | -------------------------------------------------------------------------------- /hws/dex/IEtherPriceOracle.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This file is part of the http://github.com/aaronbloomfield/ccc repository, 4 | // and is released under the GPL 3.0 license. 5 | 6 | pragma solidity ^0.8.24; 7 | 8 | import "./IERC165.sol"; 9 | 10 | interface IEtherPriceOracle is IERC165 { 11 | 12 | // The name (really a description) of the implementing contract 13 | function name() external pure returns (string memory); 14 | 15 | // The currency symbol this is being reported in, such as '$' 16 | function symbol() external pure returns (string memory); 17 | 18 | // How many decimals this is being reported in; for cents, it's 2 19 | function decimals() external pure returns (uint); 20 | 21 | // The current price, in cents, of the (fake) ether 22 | function price() external view returns (uint); 23 | 24 | // also supportsInterface() from IERC165.sol 25 | } 26 | -------------------------------------------------------------------------------- /hws/dex/ITokenCC.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This file is part of the http://github.com/aaronbloomfield/ccc repository, 4 | // and is released under the GPL 3.0 license. 5 | 6 | pragma solidity ^0.8.24; 7 | 8 | import "./IERC165.sol"; 9 | import "./IERC20Metadata.sol"; 10 | 11 | interface ITokenCC is IERC20Metadata, IERC165 { 12 | 13 | // You'll need a constructor, which should call the ERC20 constructor 14 | // and _mint(). This sets the name and symbol, so you don't have to 15 | // define those methods (or public variables). 16 | 17 | // You have to implement the decimals() function from the IERC20Metadata 18 | // interface. Because of some peculiarities of Solidity inheritance, you 19 | // have to implement these as actual functions, not public variables. And 20 | // it has to use the multi-override version of the `override` keyword, as 21 | // described in the slides (solidity.html#/multioverride) and the 22 | // homework description. 23 | 24 | // We will need this function in a future assignment (Arbitrage Trading), 25 | // which is why it is in this interface. For now, it should have a single 26 | // line: `revert();`. You can make your implementation `pure` as well 27 | // (the compiler will warn you about that). 28 | function requestFunds() external; 29 | 30 | // You also need to implement supportsInterface(), which is required by 31 | // the IERC165 interface. You support four interfaces! 32 | 33 | // The other methods needed by the IERC20 interface are already 34 | // implemented for you in the ERC20.sol contract. 35 | 36 | } 37 | -------------------------------------------------------------------------------- /hws/dex/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -t 4 -s cpp -d *.sol 5 | /bin/rm -f TokenDEX.sol.html TokenCC.sol.html ERC20.sol.html Context.sol.html 6 | source-highlight -d dex.py 7 | ../maketabs.py 8 | 9 | sync: 10 | /bin/cp ../tokens/IERC165.sol ../tokens/IERC20.sol ../tokens/IERC20Metadata.sol . 11 | -------------------------------------------------------------------------------- /hws/ecdsa/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | ../maketabs.py 5 | -------------------------------------------------------------------------------- /hws/ethprivate/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -d ethprivate.py 5 | ../maketabs.py 6 | -------------------------------------------------------------------------------- /hws/ethprivate/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hws/ethprivate/geth-on-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/ethprivate/geth-on-windows.png -------------------------------------------------------------------------------- /hws/gradebook/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts 2 | -------------------------------------------------------------------------------- /hws/gradebook/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -s cpp -d *.sol 5 | /bin/rm -f CourseGradebook.sol.html 6 | source-highlight -d gradebook.py 7 | ../maketabs.py 8 | -------------------------------------------------------------------------------- /hws/hwflow.dot: -------------------------------------------------------------------------------- 1 | digraph A { 2 | graph [fontname = "Helvetica"]; 3 | node [fontname = "Helvetica",shape=circle,width=1.2,fixedsize=true]; 4 | edge [fontname = "Helvetica"]; 5 | 6 | #null [shape=point,style=invis,width=0]; 7 | hws4 [label="HW S4\nethrpivate"]; 8 | hws5 [label="HW S5\ndappintro"]; 9 | hwp5 [label="HW P5\ngradebook"]; 10 | hwp6 [label="HW P6\ntokens"]; 11 | hwp7 [label="HW P7\nauction"]; 12 | hwp8 [label="HW P8\ndex"]; 13 | hwp9 [label="HW P9\ndao&web3"]; 14 | hwp10 [label="HW P10\narbitrage"]; 15 | hwp11 [label="HW P11\nmetamask"]; 16 | 17 | {rank=same hwp7 hwp8 hwp9} 18 | 19 | #null -> hws4; 20 | hws4 -> hws5 [style=dashed]; 21 | hws5 -> hwp5 [style=dashed]; 22 | hws5 -> hwp6 [style=dashed]; 23 | hwp6 -> hwp7; 24 | hwp6 -> hwp8; 25 | hwp6 -> hwp9; 26 | hwp8 -> hwp10; 27 | hwp7 -> hwp11; 28 | hwp9 -> hwp11 [style=dashed]; 29 | hwp6 -> hwp10; 30 | hwp6 -> hwp11; 31 | hwp10 -> hwp11 [style=dashed]; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /hws/intro/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight *.sh *.py *.java 5 | ../maketabs.py 6 | -------------------------------------------------------------------------------- /hws/intro/basic-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo The name of this cryptocurrency is: 4 | ./cryptomoney.sh name 5 | echo Creation of the genesis block 6 | ./cryptomoney.sh genesis 7 | echo Creating a wallet for alice into alice.wallet.txt 8 | ./cryptomoney.sh generate alice.wallet.txt 9 | export alice=`./cryptomoney.sh address alice.wallet.txt` 10 | echo alice.wallet.txt wallet signature: $alice 11 | echo funding alice wallet with 100 12 | ./cryptomoney.sh fund $alice 100 01-alice-funding.txt 13 | echo Creating a wallet for bob into alice.wallet.txt 14 | ./cryptomoney.sh generate bob.wallet.txt 15 | export bob=`./cryptomoney.sh address bob.wallet.txt` 16 | echo bob.wallet.txt wallet signature: $bob 17 | echo funding bob wallet with 100 18 | ./cryptomoney.sh fund $bob 100 02-bob-funding.txt 19 | echo transfering 12 from alice to bob 20 | ./cryptomoney.sh transfer alice.wallet.txt $bob 12 03-alice-to-bob.txt 21 | echo transfering 2 from bob to alice 22 | ./cryptomoney.sh transfer bob.wallet.txt $alice 2 04-bob-to-alice.txt 23 | echo verifying the last four transactions 24 | ./cryptomoney.sh verify alice.wallet.txt 01-alice-funding.txt 25 | ./cryptomoney.sh verify bob.wallet.txt 02-bob-funding.txt 26 | ./cryptomoney.sh verify alice.wallet.txt 03-alice-to-bob.txt 27 | ./cryptomoney.sh verify bob.wallet.txt 04-bob-to-alice.txt 28 | echo displaying the mempool 29 | cat mempool.txt 30 | echo checking the balance of both alice and bob 31 | ./cryptomoney.sh balance $alice 32 | ./cryptomoney.sh balance $bob 33 | echo mining the block with prefix of 2 34 | ./cryptomoney.sh mine 2 35 | sha256sum block_1.txt 36 | echo validating the cryptocurrency chain 37 | ./cryptomoney.sh validate 38 | -------------------------------------------------------------------------------- /hws/maketabs.csv: -------------------------------------------------------------------------------- 1 | &,& 2 | And,& 3 | Arp,ARP 4 | Ascii,ASCII 5 | Aslr,ASLR 6 | Chatgpt,ChatGPT 7 | Crc,CRC 8 | Csrf,CSRF 9 | Css,CSS 10 | Curl,curl 11 | Dao,DAO 12 | Dex,DEX 13 | Dig,dig 14 | Dns,DNS 15 | Ec,EC 16 | Elf,ELF 17 | Erc,ERC 18 | Eth,ETH 19 | Evm,EVM 20 | Fake,(fake) 21 | Gpg,GPG 22 | Gui,GUI 23 | Host,host 24 | Html,HTML 25 | Iauctioneer,IAuctioneer 26 | Icmp,ICMP 27 | Igradebook,IGradebook 28 | Io,I/O 29 | Irc,IRC 30 | Js,JS 31 | Md5,MD5 32 | Metamask,MetaMask 33 | Msfconsole,msfconsole 34 | Nc,nc 35 | Netcat,netcat 36 | Nft,NFT 37 | Nfts,NFTs 38 | Nmap,nmap 39 | Ns,NS 40 | Nslookup,nslookup 41 | P2Pkh,P2PKH 42 | Ping,ping 43 | Proftpd,ProFTPD 44 | Rndc,rndc 45 | Sql,SQL 46 | Ssh,ssh 47 | Tbtc,tBTC 48 | Tc,TC 49 | Tcp,TCP 50 | Tcpdump,tcpdump 51 | Telnet,telnet 52 | Tokencc,TokenCC 53 | Tokendex,TokenDEX 54 | Traceroute,traceroute 55 | Unrealircd,UnrealIRCD 56 | Url,URL 57 | Web3.Py,Web3.py 58 | Wget,wget 59 | Whois,whois 60 | Xss,XSS 61 | -------------------------------------------------------------------------------- /hws/metamask/.gitignore: -------------------------------------------------------------------------------- 1 | IAuctioneer.sol 2 | IERC165.sol 3 | -------------------------------------------------------------------------------- /hws/metamask/INFTManager.abi.txt: -------------------------------------------------------------------------------- 1 | [{'inputs': [{'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'tokenId', 'type': 'uint256'}], 'name': 'approve', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': '_to', 'type': 'address'}, {'internalType': 'string', 'name': '_uri', 'type': 'string'}], 'name': 'mintWithURI', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'string', 'name': '_uri', 'type': 'string'}], 'name': 'mintWithURI', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'internalType': 'uint256', 'name': 'tokenId', 'type': 'uint256'}], 'name': 'tokenURI', 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}], 'stateMutability': 'view', 'type': 'function'}] 2 | -------------------------------------------------------------------------------- /hws/metamask/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | touch index.md 3 | cd ../..; make -s 4 | source-highlight -d metamask.py 5 | ../maketabs.py 6 | /bin/cp -f ../tokens/IERC165.sol . 7 | /bin/cp -f ../auction/IAuctioneer.sol . 8 | solc --abi ../tokens/INFTManager.sol | tail -1 > INFTManager-full.abi.txt 9 | solc --abi ../auction/IAuctioneer.sol | head -4 | tail -1 > IAuctioneer-full.abi.txt 10 | python3 -c "import json; print([x for x in json.load(open('INFTManager-full.abi.txt')) if x['name'] in ['mintWithURI','approve','tokenURI']])" > INFTManager.abi.txt 11 | python3 -c "import json; print([x for x in json.load(open('IAuctioneer-full.abi.txt')) if x['name'] in ['startAuction','placeBid','closeAuction','nftmanager','auctions','num_auctions']])" > IAuctioneer.abi.txt 12 | -------------------------------------------------------------------------------- /hws/metamask/final-web-page.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/metamask/final-web-page.webp -------------------------------------------------------------------------------- /hws/metamask/metamask-account-icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/metamask/metamask-account-icon.webp -------------------------------------------------------------------------------- /hws/metamask/metamask-confirmation.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/metamask/metamask-confirmation.webp -------------------------------------------------------------------------------- /hws/metamask/metamask-pop-up.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/metamask/metamask-pop-up.webp -------------------------------------------------------------------------------- /hws/tokens/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | TokenCC.sol 3 | NFTmanager.sol 4 | TokenCC.sol.html 5 | NFTManager.sol 6 | NFTManager.sol.html 7 | IERC20Receiver.sol 8 | IERC20Receiver.sol.html 9 | -------------------------------------------------------------------------------- /hws/tokens/Context.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Provides information about the current execution context, including the 8 | * sender of the transaction and its data. While these are generally available 9 | * via msg.sender and msg.data, they should not be accessed in such a direct 10 | * manner, since when dealing with meta-transactions the account sending and 11 | * paying for execution may not be the actual sender (as far as an application 12 | * is concerned). 13 | * 14 | * This contract is only required for intermediate, library-like contracts. 15 | */ 16 | abstract contract Context { 17 | function _msgSender() internal view virtual returns (address) { 18 | return msg.sender; 19 | } 20 | 21 | function _msgData() internal view virtual returns (bytes calldata) { 22 | return msg.data; 23 | } 24 | 25 | function _contextSuffixLength() internal view virtual returns (uint256) { 26 | return 0; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /hws/tokens/ERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC165} from "./IERC165.sol"; 7 | 8 | /** 9 | * @dev Implementation of the {IERC165} interface. 10 | * 11 | * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check 12 | * for the additional interface id that will be supported. For example: 13 | * 14 | * ```solidity 15 | * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { 16 | * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); 17 | * } 18 | * ``` 19 | */ 20 | abstract contract ERC165 is IERC165 { 21 | /** 22 | * @dev See {IERC165-supportsInterface}. 23 | */ 24 | function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { 25 | return interfaceId == type(IERC165).interfaceId; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /hws/tokens/Errors.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Collection of common custom errors used in multiple contracts 8 | * 9 | * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. 10 | * It is recommended to avoid relying on the error API for critical functionality. 11 | * 12 | * _Available since v5.1._ 13 | */ 14 | library Errors { 15 | /** 16 | * @dev The ETH balance of the account is not enough to perform the operation. 17 | */ 18 | error InsufficientBalance(uint256 balance, uint256 needed); 19 | 20 | /** 21 | * @dev A call to an address target failed. The target may have reverted. 22 | */ 23 | error FailedCall(); 24 | 25 | /** 26 | * @dev The deployment failed. 27 | */ 28 | error FailedDeployment(); 29 | 30 | /** 31 | * @dev A necessary precompile is missing. 32 | */ 33 | error MissingPrecompile(address); 34 | } 35 | -------------------------------------------------------------------------------- /hws/tokens/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @dev Interface of the ERC-165 standard, as defined in the 8 | * https://eips.ethereum.org/EIPS/eip-165[ERC]. 9 | * 10 | * Implementers can declare support of contract interfaces, which can then be 11 | * queried by others ({ERC165Checker}). 12 | * 13 | * For an implementation, see {ERC165}. 14 | */ 15 | interface IERC165 { 16 | /** 17 | * @dev Returns true if this contract implements the interface defined by 18 | * `interfaceId`. See the corresponding 19 | * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] 20 | * to learn more about how these ids are created. 21 | * 22 | * This function call must use less than 30 000 gas. 23 | */ 24 | function supportsInterface(bytes4 interfaceId) external view returns (bool); 25 | } 26 | -------------------------------------------------------------------------------- /hws/tokens/IERC20Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC20} from "./IERC20.sol"; 7 | 8 | /** 9 | * @dev Interface for the optional metadata functions from the ERC-20 standard. 10 | */ 11 | interface IERC20Metadata is IERC20 { 12 | /** 13 | * @dev Returns the name of the token. 14 | */ 15 | function name() external view returns (string memory); 16 | 17 | /** 18 | * @dev Returns the symbol of the token. 19 | */ 20 | function symbol() external view returns (string memory); 21 | 22 | /** 23 | * @dev Returns the decimals places of the token. 24 | */ 25 | function decimals() external view returns (uint8); 26 | } 27 | -------------------------------------------------------------------------------- /hws/tokens/IERC721Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | import {IERC721} from "./IERC721.sol"; 7 | 8 | /** 9 | * @title ERC-721 Non-Fungible Token Standard, optional metadata extension 10 | * @dev See https://eips.ethereum.org/EIPS/eip-721 11 | */ 12 | interface IERC721Metadata is IERC721 { 13 | /** 14 | * @dev Returns the token collection name. 15 | */ 16 | function name() external view returns (string memory); 17 | 18 | /** 19 | * @dev Returns the token collection symbol. 20 | */ 21 | function symbol() external view returns (string memory); 22 | 23 | /** 24 | * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. 25 | */ 26 | function tokenURI(uint256 tokenId) external view returns (string memory); 27 | } 28 | -------------------------------------------------------------------------------- /hws/tokens/IERC721Receiver.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol) 3 | 4 | pragma solidity ^0.8.20; 5 | 6 | /** 7 | * @title ERC-721 token receiver interface 8 | * @dev Interface for any contract that wants to support safeTransfers 9 | * from ERC-721 asset contracts. 10 | */ 11 | interface IERC721Receiver { 12 | /** 13 | * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} 14 | * by `operator` from `from`, this function is called. 15 | * 16 | * It must return its Solidity selector to confirm the token transfer. 17 | * If any other value is returned or the interface is not implemented by the recipient, the transfer will be 18 | * reverted. 19 | * 20 | * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. 21 | */ 22 | function onERC721Received( 23 | address operator, 24 | address from, 25 | uint256 tokenId, 26 | bytes calldata data 27 | ) external returns (bytes4); 28 | } 29 | -------------------------------------------------------------------------------- /hws/tokens/INFTManager.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This file is part of the http://github.com/aaronbloomfield/ccc repository, 4 | // and is released under the GPL 3.0 license. 5 | 6 | pragma solidity ^0.8.24; 7 | 8 | import "./IERC721Metadata.sol"; 9 | import "./IERC165.sol"; 10 | 11 | interface INFTManager is IERC721Metadata { 12 | 13 | // This creates a NFT for `_to` with the pased file name `_uri`. Note 14 | // that `_uri` is just the filename itself -- the prefix is set via 15 | // overriding _baseURI() 16 | function mintWithURI(address _to, string memory _uri) external returns (uint); 17 | 18 | // This also creates a NFT, but assumes `msg.sender` is who the NFT is 19 | // for; it can just call the previous function. 20 | function mintWithURI(string memory _uri) external returns (uint); 21 | 22 | // This is just a count of how many NFTs have been minted with this 23 | // manager; it can be a public variable. 24 | function count() external view returns (uint); 25 | 26 | // Additional functions to implement / override: 27 | // supportsInterface(): for the interfaces specified in the HW writeup 28 | // _baseURI(): the part of the full path name before the filename itself 29 | // tokenURI(): get the file name (with _baseURI() before it) for the passed NFT ID 30 | 31 | } -------------------------------------------------------------------------------- /hws/tokens/ITokenCC.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This file is part of the http://github.com/aaronbloomfield/ccc repository, 4 | // and is released under the GPL 3.0 license. 5 | 6 | pragma solidity ^0.8.24; 7 | 8 | import "./IERC165.sol"; 9 | import "./IERC20Metadata.sol"; 10 | 11 | interface ITokenCC is IERC20Metadata, IERC165 { 12 | 13 | // You'll need a constructor, which should call the ERC20 constructor 14 | // and _mint(). This sets the name and symbol, so you don't have to 15 | // define those methods (or public variables). 16 | 17 | // You have to implement the decimals() function from the IERC20Metadata 18 | // interface. Because of some peculiarities of Solidity inheritance, you 19 | // have to implement these as actual functions, not public variables. And 20 | // it has to use the multi-override version of the `override` keyword, as 21 | // described in the slides (solidity.html#/multioverride) and the 22 | // homework description. 23 | 24 | // We will need this function in a future assignment (Arbitrage Trading), 25 | // which is why it is in this interface. For now, it should have a single 26 | // line: `revert();`. You can make your implementation `pure` as well 27 | // (the compiler will warn you about that). 28 | function requestFunds() external; 29 | 30 | // You also need to implement supportsInterface(), which is required by 31 | // the IERC165 interface. You support four interfaces! 32 | 33 | // The other methods needed by the IERC20 interface are already 34 | // implemented for you in the ERC20.sol contract. 35 | 36 | } 37 | -------------------------------------------------------------------------------- /hws/tokens/logo-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/tokens/logo-template.png -------------------------------------------------------------------------------- /hws/tokens/sol-includes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/hws/tokens/sol-includes.zip -------------------------------------------------------------------------------- /slides/.gitignore: -------------------------------------------------------------------------------- 1 | /.quarto/ 2 | -------------------------------------------------------------------------------- /slides/Makefile: -------------------------------------------------------------------------------- 1 | SLIDE_SETS: introduction.html overview.html encryption.html mining.html solidity.html 2 | .SUFFIXES: .qmd .html 3 | .PHONY: slides all clean 4 | 5 | slides: $(SLIDE_SETS) 6 | @echo conversion done 7 | 8 | .qmd.html: 9 | quarto render $< --to revealjs 10 | 11 | clean: 12 | /bin/rm -rf *~ */*~ */*/*~ */*/*/*~ reductions.tmp.* 13 | 14 | all: 15 | touch *.qmd 16 | make $(SLIDE_SETS) 17 | 18 | graphtest: 19 | pdflatex graph.tex > /dev/null 20 | pdf2svg graph.pdf graph.html 21 | 22 | sigcse2025: 23 | /bin/cp -a title-slide-sigcse2025.html title-slide.html 24 | quarto render --profile sigcse2025 sigcse2025.qmd --to revealjs 25 | git checkout title-slide.html 26 | sed -i .bak s/"a href"/"a target='_blank' href"/g sigcse2025.html 27 | /bin/rm -rf sigcse2025.html.bak 28 | -------------------------------------------------------------------------------- /slides/_quarto-sigcse2025.yml: -------------------------------------------------------------------------------- 1 | project: 2 | title: SIGCSE 2025 3 | lib-dir: quarto_files 4 | format: 5 | revealjs: 6 | toc: false 7 | parallax-background-image: images/parallax-1.webp 8 | parallax-background-size: "3940px 1080px" 9 | parallax-background-horizontal: 100 10 | parallax-background-vertical: 0 11 | -------------------------------------------------------------------------------- /slides/_quarto.yml: -------------------------------------------------------------------------------- 1 | project: 2 | title: CCC slides 3 | lib-dir: quarto_files 4 | format: 5 | revealjs: 6 | html-math-method: mathjax 7 | slide-number: true 8 | chalkboard: 9 | buttons: true 10 | preview-links: auto 11 | logo: images/quarto.webp 12 | css: ccc.css 13 | navigation-mode: vertical 14 | footer: 15 | controls: false 16 | template-partials: 17 | - title-slide.html 18 | toc: true 19 | toc-depth: 1 20 | toc-title: Contents 21 | theme: dark 22 | menu: true 23 | center: false 24 | link-external-newwindow: true 25 | link-external-icon: false 26 | -------------------------------------------------------------------------------- /slides/code/.gitignore: -------------------------------------------------------------------------------- 1 | artifacts/ 2 | -------------------------------------------------------------------------------- /slides/code/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | source-highlight -t 4 -s cpp -d *.sol 3 | solc --abi IDebts.sol > IDebts.sol.abi 4 | /bin/mv -f IDebts.sol.abi IDebts.sol.abi.txt 5 | -------------------------------------------------------------------------------- /slides/code/MyContract.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-or-later 2 | 3 | // This example is just to show the compiled bytecode and opcodes in the 4 | // solidity slide set. 5 | 6 | pragma solidity ^0.8.24; 7 | contract MyContract { 8 | uint public i = 1 + 2 * 3 - 4; 9 | } 10 | -------------------------------------------------------------------------------- /slides/code/MyContract.sol.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | MyContract.sol 10 | 11 | 12 |
// SPDX-License-Identifier: GPL-3.0-or-later
13 | 
14 | // This example is just to show the compiled bytecode and opcodes in the
15 | // solidity slide set.
16 | 
17 | pragma solidity ^0.8.24;
18 | contract MyContract {
19 |     uint public i = 1 + 2 * 3 - 4;
20 | }
21 | 
22 | 23 | 24 | -------------------------------------------------------------------------------- /slides/images/applications/The-dao-logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/applications/The-dao-logo.webp -------------------------------------------------------------------------------- /slides/images/applications/aku-nft-lock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/applications/aku-nft-lock.webp -------------------------------------------------------------------------------- /slides/images/applications/bancor-insurance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/applications/bancor-insurance.webp -------------------------------------------------------------------------------- /slides/images/applications/ethetc/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | @/bin/cp -f ../../logos/et?-coin-symbol.svg . 3 | @dot -Tsvg -O ethetc.dot 4 | @/bin/mv -f ethetc.dot.svg ethetc.dot.1.svg 5 | @../../embedsvg.py ethetc.dot.1.svg > outtmp.svg 6 | @/bin/mv -f outtmp.svg ethetc.dot.1.svg 7 | @/bin/rm -f et?-coin-symbol.svg 8 | -------------------------------------------------------------------------------- /slides/images/applications/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | octave graphs.octave 3 | -------------------------------------------------------------------------------- /slides/images/bitcoin/attack/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/bitcoin/attack/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Tsvg -O attack.dot 3 | /bin/mv -f attack.dot.svg attack.dot.1.svg 4 | 5 | png: 6 | dot -Tpng -O attack.dot 7 | /bin/mv -f attack.dot.png attack.dot.1.png 8 | -------------------------------------------------------------------------------- /slides/images/bitcoin/attack/attack.dot.1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | A 11 | 12 | 13 | 14 | 15 | 1000 16 | 17 | block 1000 18 | 19 | 20 | 21 | null->1000 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /slides/images/bitcoin/blocks/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/bitcoin/blocks/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | /bin/cp -f ../../logos/btc-coin-symbol.svg . 3 | dot -Tsvg -O blocks.dot 4 | /bin/mv -f blocks.dot.svg blocks.dot.1.svg 5 | ../../embedsvg.py blocks.dot.1.svg > out.svg 6 | /bin/mv out.svg blocks.dot.1.svg 7 | /bin/rm -rf btc-coin-symbol.svg 8 | 9 | png: 10 | dot -Tpng -O blocks.dot 11 | /bin/mv -f blocks.dot.png blocks.dot.1.png 12 | -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Tsvg -O merkle.dot 3 | /bin/mv -f merkle.dot.svg merkle.dot.1.svg 4 | dot -Tsvg perfect-tree.dot -o perfect-tree.svg 5 | 6 | png: 7 | dot -Tpng -O merkle.dot 8 | /bin/mv -f merkle.dot.png merkle.dot.1.png 9 | dot -Tpng perfect-tree.dot -o perfect-tree.png 10 | -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot: -------------------------------------------------------------------------------- 1 | graph A { 2 | node [shape=record,fontname="Helvetica"]; 3 | stack [label=0
h0=h(x0)|x1
h1=h(x1)|x2
h2=h(x2)|x3
h3=h(x3)|x4
h4=h(x4)|x5
h5=h(x5)|x6
h6=h(x6)|x7
h7=h(x7)|x8
h8=h(x8)|x9
h9=h(x9)>]; 4 | } 5 | 6 | graph B { 7 | node [shape=record,fontname="Helvetica"]; 8 | stack [label=01=h(h0+h1)|h23=h(h2+h3)|h45=h(h4+h5)|h67=h(h6+h7)|h89=h(h8+h9)>]; 9 | } 10 | 11 | graph C { 12 | node [shape=record,fontname="Helvetica"]; 13 | stack [label=0-3=h(h01+h23) | h4-7=h(h45+h67) | h89'=h(h89+h89)>]; 14 | } 15 | 16 | graph D { 17 | node [shape=record,fontname="Helvetica"]; 18 | stack [label=0-7=h(h0-3+h4-7) | h89''=h(h89'+h89')>]; 19 | } 20 | 21 | graph E { 22 | node [shape=record,fontname="Helvetica"]; 23 | stack [label=all=h0-9=h(h0-7+h89'')>]; 24 | } 25 | -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/merkle.dot.1.png -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/merkle.dot.2.png -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/merkle.dot.3.png -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/merkle.dot.4.png -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/merkle.dot.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/merkle.dot.5.png -------------------------------------------------------------------------------- /slides/images/bitcoin/merkle/perfect-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/bitcoin/merkle/perfect-tree.png -------------------------------------------------------------------------------- /slides/images/bitcoin/multisig/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/bitcoin/multisig/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Tsvg -O multisig.dot 3 | /bin/mv -f multisig.dot.svg multisig.dot.1.svg 4 | 5 | png: 6 | dot -Tpng -O multisig.dot 7 | /bin/mv -f multisig.dot.png multisig.dot.1.png 8 | -------------------------------------------------------------------------------- /slides/images/bitcoin/multisig/multisig.dot: -------------------------------------------------------------------------------- 1 | graph A { 2 | node [shape=record,fontname="Helvetica",width=2]; 3 | rankdir=LR 4 | stack [label="3|(pubKey3)|(pubKey2)|(pubKey1)|2|(sig2)|(sig1)|0"]; 5 | } 6 | graph B { 7 | node [shape=record,fontname="Helvetica",width=1]; 8 | rankdir=LR 9 | stack [label="n -\>|ikey -\>|||m -\>|isig -\>||"]; 10 | } 11 | graph C { 12 | node [shape=record,fontname="Helvetica",width=1]; 13 | rankdir=LR 14 | stack [label="n -\>||ikey -\>||m -\>|isig -\>||"]; 15 | } 16 | graph D { 17 | node [shape=record,fontname="Helvetica",width=1]; 18 | rankdir=LR 19 | stack [label="n -\>||ikey -\>||m -\>||isig -\>|"]; 20 | } 21 | graph D { 22 | node [shape=record,fontname="Helvetica",width=1]; 23 | rankdir=LR 24 | stack [label="n -\>|||ikey -\>|m -\>||isig -\>|"]; 25 | } 26 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -O p2pkh.dot 3 | /bin/mv -f p2pkh.dot.svg p2pkh.dot.1.svg 4 | 5 | png: 6 | dot -Tpng -O p2pkh.dot 7 | /bin/mv -f p2pkh.dot.png p2pkh.dot.1.png 8 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/p2pkh.dot: -------------------------------------------------------------------------------- 1 | graph A { 2 | node [shape=record,fontname="Helvetica",width=2]; 3 | rankdir=LR 4 | stack [label="||||"]; 5 | } 6 | graph B { 7 | node [shape=record,fontname="Helvetica",width=2]; 8 | rankdir=LR 9 | stack [label="|||| \"]; 10 | } 11 | graph C { 12 | node [shape=record,fontname="Helvetica",width=2]; 13 | rankdir=LR 14 | stack [label="||| \| \"]; 15 | } 16 | graph D { 17 | node [shape=record,fontname="Helvetica",width=2]; 18 | rankdir=LR 19 | stack [label="|| \| \| \"]; 20 | } 21 | graph E { 22 | node [shape=record,fontname="Helvetica",width=2]; 23 | rankdir=LR 24 | stack [label="|| \| \| \"]; 25 | } 26 | graph F { 27 | node [shape=record,fontname="Helvetica",width=2]; 28 | rankdir=LR 29 | stack [label="| \| \| \| \"]; 30 | } 31 | /* graph G is the same as graph C */ 32 | graph h { 33 | node [shape=record,fontname="Helvetica",width=2]; 34 | rankdir=LR 35 | stack [label="|||| true (1)"]; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/p2pkh.dot.1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | A 11 | 12 | 13 | 14 | stack 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/p2pkh.dot.2.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | B 11 | 12 | 13 | 14 | stack 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | <sig> 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /slides/images/bitcoin/p2pkh/p2pkh.dot.7.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | h 11 | 12 | 13 | 14 | stack 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | true (1) 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /slides/images/conclusion/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/conclusion/beam-desktop.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/conclusion/beam-desktop.webp -------------------------------------------------------------------------------- /slides/images/consensus/2gen/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -Kneato -O 2gen-comm.dot 3 | /bin/mv -f 2gen-comm.dot.svg 2gen-comm.dot.1.svg 4 | for file in `ls 2gen-comm.dot.*.svg`; do \ 5 | ../../embedsvg.py $$file > 2gen_tmp.svg ; \ 6 | /bin/mv -f 2gen_tmp.svg $$file ; \ 7 | done -------------------------------------------------------------------------------- /slides/images/consensus/3gen/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | #dot -Tpng -O 3gen.dot 3 | dot -Tsvg -O 3gen.dot 4 | #/bin/mv -f 3gen.dot.png 3gen.dot.1.png 5 | /bin/mv -f 3gen.dot.svg 3gen.dot.1.svg 6 | -------------------------------------------------------------------------------- /slides/images/consensus/Byzantine_Generals.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/consensus/Byzantine_Generals.webp -------------------------------------------------------------------------------- /slides/images/consensus/readme.md: -------------------------------------------------------------------------------- 1 | Image Sources 2 | ============= 3 | 4 | For the Two Generals images: 5 | 6 | - The Byzantine Generals diagram is from [the Wikipedia image](https://commons.wikimedia.org/wiki/File:Byzantine_Generals.png) from the [Wikipedia article on Byzantine fault](https://en.wikipedia.org/wiki/Byzantine_fault) 7 | - The map was adapted from [this map of Ghana from Wikipedia Commons](https://commons.wikimedia.org/wiki/File:Ghana_-_blank_region_map.svg) 8 | - The knight silhouette was from [this Wikimedia Commons image](https://commons.wikimedia.org/wiki/File:KnightSilhouette2.svg), and is the same one used in the [Wikipedia Byzantine Generals diagram](https://commons.wikimedia.org/wiki/File:Byzantine_Generals.png) 9 | - The fortress image was from [this Wikimedia Commons image](https://commons.wikimedia.org/wiki/File:Noun_Project_-_Castle_tower.svg), and is also the same one used in the [Wikipedia Byzantine Generals diagram](https://commons.wikimedia.org/wiki/File:Byzantine_Generals.png) -------------------------------------------------------------------------------- /slides/images/consensus/tendermint/tendermint-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/consensus/tendermint/tendermint-1.png -------------------------------------------------------------------------------- /slides/images/consensus/tendermint/tendermint-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/consensus/tendermint/tendermint-2.png -------------------------------------------------------------------------------- /slides/images/consensus/tendermint/tendermint-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/consensus/tendermint/tendermint-3.png -------------------------------------------------------------------------------- /slides/images/consensus/tendermint/tendermint-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/consensus/tendermint/tendermint-4.png -------------------------------------------------------------------------------- /slides/images/darkside/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/darkside/mist-icon2x.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/darkside/mist-icon2x.webp -------------------------------------------------------------------------------- /slides/images/darkside/readme.md: -------------------------------------------------------------------------------- 1 | Licenses 2 | ======== 3 | 4 | - The [Ethereum Mist icon](mist-icon2x.webp) is adapted from the one in the [github.com/ethereum/mist repository](https://github.com/ethereum/mist), which is released under a [GPL license](https://github.com/ethereum/mist/blob/develop/LICENSE) 5 | -------------------------------------------------------------------------------- /slides/images/darkside/web3isgoinggreat-grift.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/darkside/web3isgoinggreat-grift.webp -------------------------------------------------------------------------------- /slides/images/darkside/web3isgoinggreat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/darkside/web3isgoinggreat.webp -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp-1.png -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp-1e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp-1e.png -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp-2.png -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp-2e.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp-2e.png -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp-ans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp-ans.png -------------------------------------------------------------------------------- /slides/images/encryption/otp/otp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/encryption/otp/otp.png -------------------------------------------------------------------------------- /slides/images/encryption/secp256k1/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | /bin/rm -f *.svg 3 | octave secp256k1.octave 4 | /bin/rm -f todel.svg 5 | -------------------------------------------------------------------------------- /slides/images/ethereum/VitalikButerinProfile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/ethereum/VitalikButerinProfile.webp -------------------------------------------------------------------------------- /slides/images/ethereum/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | /bin/cp -f ../../logos/eth-coin-symbol.svg . 3 | dot -Tsvg -Kdot -O ethereum.dot 4 | /bin/mv -f ethereum.dot.svg ethereum.dot.1.svg 5 | ../../embedsvg.py ethereum.dot.1.svg > out.svg 6 | /bin/mv out.svg ethereum.dot.1.svg 7 | /bin/rm -rf eth-coin-symbol.svg 8 | -------------------------------------------------------------------------------- /slides/images/ethereum/graphs/ethereum.dot: -------------------------------------------------------------------------------- 1 | digraph TXN { 2 | imagescale=true; 3 | scale=0.5; 4 | rankdir="LR"; 5 | node [fontname="Helvetica",width=3]; 6 | init_or_data [shape=Mrecord,label="init or data"] 7 | vrs [shape=Mrecord,label="v, r, s"] 8 | value [shape=Mrecord,label="value"] 9 | to [shape=Mrecord,label="to"] 10 | gaslimit [shape=Mrecord,label="gasLimit"] 11 | gasprice [shape=Mrecord,label="gasPrice"] 12 | nonce [shape=Mrecord,label="nonce"]; 13 | title [shape=none,label=<
Ethereum transaction
>]; 14 | } 15 | -------------------------------------------------------------------------------- /slides/images/ethereum/patricia.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/ethereum/patricia.webp -------------------------------------------------------------------------------- /slides/images/ethereum/tries/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Tsvg -O tries.dot 3 | /bin/mv -f tries.dot.svg tries.dot.1.svg 4 | 5 | png: 6 | dot -Tpng -O tries.dot 7 | /bin/mv -f tries.dot.png tries.dot.1.png 8 | -------------------------------------------------------------------------------- /slides/images/flags/car.svg: -------------------------------------------------------------------------------- 1 | 2 | Flag of the Central African Republic 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /slides/images/flags/estonia.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /slides/images/flags/japan.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /slides/images/flags/russia.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /slides/images/flags/sweden.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /slides/images/flags/uae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /slides/images/flags/venezuela.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /slides/images/introduction/aaronbloomfield.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/introduction/aaronbloomfield.jpg -------------------------------------------------------------------------------- /slides/images/logos/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/logos/Makefile: -------------------------------------------------------------------------------- 1 | doc: 2 | @cd ../../.. && make -s 3 | -------------------------------------------------------------------------------- /slides/images/logos/eth-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /slides/images/logos/fei-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /slides/images/logos/lunac-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /slides/images/logos/mkr-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | Asset 1 -------------------------------------------------------------------------------- /slides/images/logos/nmc-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /slides/images/logos/ppc-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 16 | 17 | -------------------------------------------------------------------------------- /slides/images/logos/rvn-logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /slides/images/logos/sai-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | dai -------------------------------------------------------------------------------- /slides/images/logos/usdt-logo.svg: -------------------------------------------------------------------------------- 1 | tether-usdt-logo -------------------------------------------------------------------------------- /slides/images/logos/xpd-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /slides/images/logos/xpm-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /slides/images/logos/zec-coin-symbol.svg: -------------------------------------------------------------------------------- 1 | z -------------------------------------------------------------------------------- /slides/images/mining/.gitignore: -------------------------------------------------------------------------------- 1 | tmp/ 2 | -------------------------------------------------------------------------------- /slides/images/mining/dag/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/mining/dag/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | seq 1 20 | awk '{print "./dag.py "$$1" 8086 > dag.dot;dot -Kfdp -n -Tpng -o dag.dot."$$1".png dag.dot"}' | bash 3 | seq 1 20 | awk '{print "./dag.py "$$1" 8086 > dag.dot;dot -Kfdp -n -Tsvg -o dag.dot."$$1".svg dag.dot"}' | bash 4 | 5 | full: 6 | ./dag.py > dag.dot 7 | make main 8 | eog dag.dot.1.png 9 | -------------------------------------------------------------------------------- /slides/images/mining/dag/dag.dot.1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | r0c 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /slides/images/mining/dag/dag.dot.2.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | r0c 15 | 16 | 17 | 18 | 19 | r1c 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /slides/images/mining/dag/dag.dot.3.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | G 11 | 12 | 13 | 14 | r0c 15 | 16 | 17 | 18 | 19 | r1c 20 | 21 | 22 | 23 | 24 | r2c 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /slides/images/mining/nonce-tweet-graph.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/mining/nonce-tweet-graph.webp -------------------------------------------------------------------------------- /slides/images/mining/nonce-tweet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/mining/nonce-tweet.webp -------------------------------------------------------------------------------- /slides/images/mining/orphan/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/mining/orphan/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -O orphan.dot 3 | /bin/mv -f orphan.dot.svg orphan.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/images/mining/orphan/orphan.dot.1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | A 11 | 12 | 13 | 14 | 15 | 1000 16 | 17 | block 1000 18 | 19 | 20 | 21 | null->1000 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /slides/images/overview/aaron-dollar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/overview/aaron-dollar.png -------------------------------------------------------------------------------- /slides/images/overview/bitcoin-coin.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/overview/bitcoin-coin.webp -------------------------------------------------------------------------------- /slides/images/overview/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -Kdot -O overview.dot 3 | /bin/mv -f overview.dot.svg overview.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/images/parallax-1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/parallax-1.webp -------------------------------------------------------------------------------- /slides/images/print-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/print-icon.png -------------------------------------------------------------------------------- /slides/images/print-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /slides/images/qrcode.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/qrcode.webp -------------------------------------------------------------------------------- /slides/images/quarto.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/quarto.webp -------------------------------------------------------------------------------- /slides/images/scalability/Makefile: -------------------------------------------------------------------------------- 1 | default: 2 | @echo webp is probably the target you want 3 | 4 | webp: 5 | ls *.png | sed s/.png//g | awk '{print "cwebp -quiet -q 50 -o "$$1 ".webp "$$1".png"}' | bash 6 | -------------------------------------------------------------------------------- /slides/images/scalability/concurrency/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/scalability/concurrency/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Tsvg -O concurrency.dot 3 | /bin/mv -f concurrency.dot.svg concurrency.dot.1.svg 4 | dot -Tpng -O concurrency.dot 5 | /bin/mv -f concurrency.dot.png concurrency.dot.1.png 6 | -------------------------------------------------------------------------------- /slides/images/scalability/concurrency/concurrency.dot.3.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | C 11 | 12 | 13 | 14 | txn1 15 | 16 | Block 17 | 18 | TXN 1 19 | contract A spends ETH 20 | 21 | TXN 2 22 | get balance of A 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /slides/images/scalability/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -Kneato -O scalability.dot 3 | /bin/mv -f scalability.dot.svg scalability.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/images/scalability/shards/Makefile: -------------------------------------------------------------------------------- 1 | svg: 2 | dot -Kneato -Tsvg -O shards.dot 3 | /bin/mv -f shards.dot.svg shards.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/images/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/spacer.gif -------------------------------------------------------------------------------- /slides/images/stablecoins/graphs/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | fei-usd-max.csv 3 | usdc-usd-max.csv 4 | usdt-usd-max.csv 5 | xpd-usd-max.csv 6 | lunc-usd-max.csv 7 | -------------------------------------------------------------------------------- /slides/images/stablecoins/graphs/Makefile: -------------------------------------------------------------------------------- 1 | graph: 2 | gnuplot dai-eth.plot 3 | -------------------------------------------------------------------------------- /slides/images/stablecoins/graphs/dai-eth.plot: -------------------------------------------------------------------------------- 1 | set title font "Helvetica,20" 2 | set title "SAI & DAI price vs ETH price" 3 | set xdata time 4 | set style data lines 5 | set datafile separator ',' 6 | set timefmt "%Y-%m-%d %H:%M:%S UTC" 7 | set format x "%b\n%Y" 8 | set format y "$%g" 9 | set format y2 "$%g" 10 | set xlabel "Date" 11 | set ylabel "SAI & DAI price" 12 | set y2label "ETH price" 13 | set yrange [0:2] 14 | set y2range [0:5600] 15 | set xrange ["2017-12-27 00:00:00 UTC":"2023-04-09 00:00:00 UTC"] 16 | set ytics 0.5 nomirror 17 | set y2tics 1000 nomirror 18 | set term png 19 | set output "dai-eth.png" 20 | plot "dai-usd-max.csv" using 1:2 title "DAI price" with lines, "sai-usd-max.csv" using 1:2 title "SAI price" with lines, "eth-usd-max.csv" using 1:2 title "ETH price" with lines axes x1y2 21 | set term svg 22 | set output "dai-eth.svg" 23 | plot "dai-usd-max.csv" using 1:2 title "DAI price" with lines, "sai-usd-max.csv" using 1:2 title "SAI price" with lines, "eth-usd-max.csv" using 1:2 title "ETH price" with lines axes x1y2 24 | -------------------------------------------------------------------------------- /slides/images/stablecoins/graphs/get-cv.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | import os, csv, statistics 4 | 5 | l = [] 6 | 7 | # the key is the start of the file name, likely what coingecko names the file 8 | # the first part of the value is the full name of the coin 9 | # the second part of the value is the relevant part of the URL on coinmarketcap.com 10 | coins = { 11 | 'dai': ("Dai","multi-collateral-dai"), 12 | 'eth': ("Ether","ethereum"), 13 | 'sai': ("Sai","single-collateral-dai"), 14 | 'usdc': ("USD Coin","usd-coin"), 15 | 'usdt': ("Tether","tether"), 16 | 'xpd': ("PetroDollar","petrodollar"), 17 | 'fei': ("Fei","fei-usd"), 18 | 'lunc': ("Luna Classic", "terra-luna"), 19 | } 20 | 21 | print("coin\tnum\tCV") 22 | print("----\t---\t--") 23 | for entry in os.scandir(): 24 | if entry.name[-4:] == '.csv': 25 | name = entry.name.split("-")[0] 26 | data = [] 27 | with open(entry.name) as fcsv: 28 | csvreader = csv.reader(fcsv) 29 | for line in csvreader: 30 | try: 31 | data.append(float(line[1])) 32 | except: 33 | pass 34 | cv = statistics.stdev(data) / statistics.mean(data) 35 | print("%s\t%d\t%.2f%%" % (name, len(data), 100.0*cv) ) 36 | l.append( (name,100.0*cv) ) 37 | 38 | print() 39 | for (name,cv) in sorted(l): 40 | filename = name + '-coin-symbol.svg' 41 | if name == 'lunc': 42 | filename = 'lunac-coin-symbol.svg' 43 | print ('- [![' + name.lower() + ' logo](../slides/images/logos/' + filename + ')](https://coinmarketcap.com/currencies/' + \ 44 | coins[name][1] + '/) ' + coins[name][0] + ' (' + name.upper() + '): %.2f%%' % cv) 45 | -------------------------------------------------------------------------------- /slides/images/stablecoins/oracles/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/stablecoins/oracles/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -O oracles.dot 3 | /bin/mv -f oracles.dot.svg oracles.dot.1.svg 4 | ../../embedsvg.py oracles.dot.5.svg > outtmp.svg 5 | /bin/mv -f outtmp.svg oracles.dot.5.svg 6 | -------------------------------------------------------------------------------- /slides/images/stablecoins/oracles/readme.md: -------------------------------------------------------------------------------- 1 | Licenses 2 | ======== 3 | 4 | The whale diagram ([bigfish.svg](bigfish.svg)) is from [here](https://freesvg.org/blue-whale) 5 | -------------------------------------------------------------------------------- /slides/images/timely/.gitignore: -------------------------------------------------------------------------------- 1 | *.png 2 | -------------------------------------------------------------------------------- /slides/images/timely/Makefile: -------------------------------------------------------------------------------- 1 | .SUFFIXES: .png .webp 2 | WEBP = btc-difficulty-all-time.webp btc-difficulty-last-3-years.webp btc-hashes-per-sec.webp btc-price.webp 3 | 4 | webp: $(WEBP) 5 | cd ../../.. && make -s 6 | echo all converted 7 | 8 | .png.webp: 9 | cwebp -lossless -quiet -o $@ $< 10 | -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time-2022-01-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time-2022-01-17.png -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time-2022-08-23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time-2022-08-23.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time-2023-01-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time-2023-01-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time-2023-08-27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time-2023-08-27.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time-2024-01-18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time-2024-01-18.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-all-time.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-all-time.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years-2022-01-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years-2022-01-17.png -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years-2022-08-23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years-2022-08-23.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years-2023-01-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years-2023-01-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years-2023-08-27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years-2023-08-27.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years-2024-01-18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years-2024-01-18.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-difficulty-last-3-years.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-difficulty-last-3-years.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-dominance.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-dominance.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-1year-2022-04-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-1year-2022-04-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-1year-2023-04-20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-1year-2023-04-20.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-1year-2023-11-09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-1year-2023-11-09.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-1year.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-1year.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-alltime-2022-04-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-alltime-2022-04-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-alltime-2023-04-20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-alltime-2023-04-20.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-alltime-2023-11-09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-alltime-2023-11-09.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-eth-fees-alltime.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-eth-fees-alltime.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec-2022-01-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec-2022-01-17.png -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec-2022-08-23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec-2022-08-23.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec-2023-01-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec-2023-01-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec-2023-08-27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec-2023-08-27.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec-2024-01-18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec-2024-01-18.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-hashes-per-sec.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-hashes-per-sec.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-nodes-2022-02-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-nodes-2022-02-06.png -------------------------------------------------------------------------------- /slides/images/timely/btc-nodes-2022-09-06.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-nodes-2022-09-06.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-nodes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-nodes.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-price-2022-01-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price-2022-01-17.png -------------------------------------------------------------------------------- /slides/images/timely/btc-price-2022-08-23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price-2022-08-23.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-price-2023-01-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price-2023-01-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-price-2023-08-27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price-2023-08-27.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-price-2024-01-18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price-2024-01-18.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-price.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-price.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-tps-2022-04-17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-tps-2022-04-17.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-tps-2022-11-09.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-tps-2022-11-09.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-tps-2023-04-20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-tps-2023-04-20.webp -------------------------------------------------------------------------------- /slides/images/timely/btc-tps.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/btc-tps.webp -------------------------------------------------------------------------------- /slides/images/timely/cc-market-cap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/timely/cc-market-cap.webp -------------------------------------------------------------------------------- /slides/images/tokens/atomic-wallet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/tokens/atomic-wallet.webp -------------------------------------------------------------------------------- /slides/images/tokens/dollar-bill.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/tokens/dollar-bill.webp -------------------------------------------------------------------------------- /slides/images/tokens/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -Kneato -O tokens.dot 3 | /bin/mv -f tokens.dot.svg tokens.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/images/tokens/quarter.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/tokens/quarter.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/MartinHandfordWallyandFriends.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/MartinHandfordWallyandFriends.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/Zkip_alibaba1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/Zkip_alibaba1.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/Zkip_alibaba2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/Zkip_alibaba2.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/Zkip_alibaba3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/Zkip_alibaba3.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/bill_gates_hacked.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/bill_gates_hacked.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/firo-wallet-modified.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/images/zksnarks/firo-wallet-modified.webp -------------------------------------------------------------------------------- /slides/images/zksnarks/graphs/Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | dot -Tsvg -Kfdp -O zksnarks.dot 3 | /bin/mv -f zksnarks.dot.svg zksnarks.dot.1.svg 4 | -------------------------------------------------------------------------------- /slides/index.md: -------------------------------------------------------------------------------- 1 | Cryptocurrency: Slides 2 | ====================== 3 | 4 | 5 | [Go up to the main CCC readme](../readme.html) ([md](../readme.md)) 6 | 7 | You may want to see the [daily announcements slide set](../uva/daily-announcements.html#/) for the current semester. 8 | 9 | Slide sets, in the intended order to be presented in lecture, are below: 10 | 11 | - [Course Introduction](introduction.html#/) (UVA-specific) 12 | - [Cryptocurrency overview](overview.html#/) 13 | - [Encryption](encryption.html#/) 14 | - [Bitcoin](bitcoin.html#/) 15 | - [Mining](mining.html#/) 16 | - [Ethereum](ethereum.html#/) 17 | - [Solidity](solidity.html#/) 18 | - [Tokens](tokens.html#/) 19 | - [Consensus](consensus.html#/) 20 | - [Blockchain Applications](applications.html#/) 21 | - [Stablecoins](stablecoins.html#/) 22 | - [Zero-knowledge proofs](znps.html#/) 23 | - [Scalability](scalability.html#/) 24 | - [Ethics, Legality, and Policy](ethics-legal-policy.html#/) 25 | - [The Dark Side of Cryptocurrency](darkside.html#/) 26 | - [Course Conclusion](conclusion.html) 27 | 28 | 35 | -------------------------------------------------------------------------------- /slides/quarto_files/quarto-html/quarto-html.min.css: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /slides/quarto_files/quarto-html/tippy.css: -------------------------------------------------------------------------------- 1 | .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('./league-gothic.eot'); 4 | src: url('./league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('./league-gothic.woff') format('woff'), 6 | url('./league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/math/plugin.js: -------------------------------------------------------------------------------- 1 | import {KaTeX} from "./katex"; 2 | import {MathJax2} from "./mathjax2"; 3 | import {MathJax3} from "./mathjax3"; 4 | 5 | const defaultTypesetter = MathJax2; 6 | 7 | /*! 8 | * This plugin is a wrapper for the MathJax2, 9 | * MathJax3 and KaTeX typesetter plugins. 10 | */ 11 | export default Plugin = Object.assign( defaultTypesetter(), { 12 | KaTeX, 13 | MathJax2, 14 | MathJax3 15 | } ); -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/pdf-export/plugin.yml: -------------------------------------------------------------------------------- 1 | name: PdfExport 2 | script: pdfexport.js 3 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/quarto-line-highlight/line-highlight.css: -------------------------------------------------------------------------------- 1 | .reveal 2 | div.sourceCode 3 | pre 4 | code.has-line-highlights 5 | > span:not(.highlight-line) { 6 | opacity: 0.4; 7 | } 8 | 9 | .reveal pre.numberSource { 10 | padding-left: 0; 11 | } 12 | 13 | .reveal pre.numberSource code > span { 14 | left: -2.1em; 15 | } 16 | 17 | pre.numberSource code > span > a:first-child::before { 18 | left: -0.7em; 19 | } 20 | 21 | .reveal pre > code:not(:first-child).fragment { 22 | position: absolute; 23 | top: 0; 24 | left: 0; 25 | width: 100%; 26 | box-sizing: border-box; 27 | } 28 | 29 | .reveal div.sourceCode pre code { 30 | min-height: 100%; 31 | } 32 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/quarto-line-highlight/plugin.yml: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight 2 | name: QuartoLineHighlight 3 | script: line-highlight.js 4 | stylesheet: line-highlight.css 5 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/quarto-support/plugin.yml: -------------------------------------------------------------------------------- 1 | name: QuartoSupport 2 | script: support.js 3 | stylesheet: footer.css 4 | config: 5 | smaller: false 6 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/css/brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"} -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/css/regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/css/solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/font-awesome/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/blackboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/blackboard.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-black.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-blue.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-green.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-orange.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-purple.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-red.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/boardmarker-yellow.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-blue.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-green.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-orange.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-purple.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-red.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-white.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/chalk-yellow.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/sponge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/sponge.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/whiteboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/quarto_files/revealjs/plugin/reveal-chalkboard/img/whiteboard.png -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/plugin.yml: -------------------------------------------------------------------------------- 1 | name: RevealChalkboard 2 | script: plugin.js 3 | stylesheet: ["font-awesome/css/all.css", "style.css"] 4 | self-contained: false 5 | config: 6 | chalkboard: 7 | buttons: true 8 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-chalkboard/style.css: -------------------------------------------------------------------------------- 1 | div.palette, div.boardhandle { 2 | position: absolute; 3 | /* 4 | height: 260px; 5 | margin: -130px 0 0 0px; 6 | */ 7 | top: 50%; 8 | transform: translateY(-50%); 9 | font-size: 24px; 10 | border-radius: 10px; 11 | border-top: 4px solid #222; 12 | border-right: 4px solid #222; 13 | border-bottom: 4px solid #222; 14 | background: black; 15 | transition: transform 0.3s; 16 | } 17 | 18 | div.palette { 19 | left: -10px; 20 | padding-left:10px; 21 | } 22 | 23 | div.boardhandle { 24 | right: -10px; 25 | padding-right:10px; 26 | } 27 | 28 | div.palette > ul, 29 | div.boardhandle > ul { 30 | list-style-type: none; 31 | margin: 0; 32 | padding: 0; 33 | } 34 | 35 | div.palette > ul > li, 36 | div.boardhandle > ul > li { 37 | margin: 10px; 38 | } 39 | 40 | @media print { 41 | div.palette, div.boardhandle { 42 | display: none!important; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-menu/plugin.yml: -------------------------------------------------------------------------------- 1 | name: RevealMenu 2 | script: [menu.js, quarto-menu.js] 3 | stylesheet: [menu.css, quarto-menu.css] 4 | config: 5 | menu: 6 | side: "left" 7 | useTextContentForMissingTitles: true 8 | markers: false 9 | loadIcons: false 10 | -------------------------------------------------------------------------------- /slides/quarto_files/revealjs/plugin/reveal-menu/quarto-menu.js: -------------------------------------------------------------------------------- 1 | window.revealMenuToolHandler = function (handler) { 2 | return function (event) { 3 | event.preventDefault(); 4 | handler(); 5 | Reveal.getPlugin("menu").closeMenu(); 6 | }; 7 | }; 8 | 9 | window.RevealMenuToolHandlers = { 10 | fullscreen: revealMenuToolHandler(function () { 11 | const element = document.documentElement; 12 | const requestMethod = 13 | element.requestFullscreen || 14 | element.webkitRequestFullscreen || 15 | element.webkitRequestFullScreen || 16 | element.mozRequestFullScreen || 17 | element.msRequestFullscreen; 18 | if (requestMethod) { 19 | requestMethod.apply(element); 20 | } 21 | }), 22 | speakerMode: revealMenuToolHandler(function () { 23 | Reveal.getPlugin("notes").open(); 24 | }), 25 | keyboardHelp: revealMenuToolHandler(function () { 26 | Reveal.toggleHelp(true); 27 | }), 28 | overview: revealMenuToolHandler(function () { 29 | Reveal.toggleOverview(true); 30 | }), 31 | toggleChalkboard: revealMenuToolHandler(function () { 32 | RevealChalkboard.toggleChalkboard(); 33 | }), 34 | toggleNotesCanvas: revealMenuToolHandler(function () { 35 | RevealChalkboard.toggleNotesCanvas(); 36 | }), 37 | downloadDrawings: revealMenuToolHandler(function () { 38 | RevealChalkboard.download(); 39 | }), 40 | togglePdfExport: revealMenuToolHandler(function () { 41 | PdfExport.togglePdfExport(); 42 | }), 43 | toggleScrollView: revealMenuToolHandler(function() { 44 | Reveal.getPlugin("quarto-support").toggleScrollView(); 45 | }) 46 | }; 47 | -------------------------------------------------------------------------------- /slides/reveal.js/.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | Please keep the [issue tracker](https://github.com/hakimel/reveal.js/issues) limited to **bug reports**. 3 | 4 | 5 | ### General Questions and Support 6 | If you have questions about how to use reveal.js the best place to ask is in the [Discussions](https://github.com/hakimel/reveal.js/discussions). Anything that isn't a bug report should be posted as a dicussion instead. 7 | 8 | 9 | ### Bug Reports 10 | When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested. 11 | 12 | 13 | ### Pull Requests 14 | - Should be submitted from a feature/topic branch (not your master) 15 | - Should follow the coding style of the file you work in, most importantly: 16 | - Tabs to indent 17 | - Single-quoted strings 18 | 19 | 20 | ### Plugins 21 | Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines 22 | -------------------------------------------------------------------------------- /slides/reveal.js/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [hakimel] 2 | -------------------------------------------------------------------------------- /slides/reveal.js/.github/workflows/js.yml: -------------------------------------------------------------------------------- 1 | name: tests 2 | 3 | on: 4 | - push 5 | 6 | permissions: 7 | contents: read 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: 16 | - 18 17 | - 20 18 | 19 | steps: 20 | - uses: actions/checkout@v4 21 | 22 | - name: Use Node.js ${{ matrix.node-version }} 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | 27 | - run: npm install 28 | - run: npm run build --if-present 29 | - run: npm test 30 | env: 31 | CI: true 32 | -------------------------------------------------------------------------------- /slides/reveal.js/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | *.iws 4 | *.eml 5 | out/ 6 | .DS_Store 7 | .svn 8 | log/*.log 9 | tmp/** 10 | node_modules/ 11 | .sass-cache -------------------------------------------------------------------------------- /slides/reveal.js/.npmignore: -------------------------------------------------------------------------------- 1 | /test 2 | /examples 3 | .github 4 | .sass-cache 5 | gulpfile.js 6 | -------------------------------------------------------------------------------- /slides/reveal.js/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2011-2024 Hakim El Hattab, http://hakim.se, and reveal.js contributors 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/README.md: -------------------------------------------------------------------------------- 1 | ## Dependencies 2 | 3 | Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment installed before proceeding: https://revealjs.com/installation/#full-setup 4 | 5 | ## Creating a Theme 6 | 7 | To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled from Sass to CSS (see the [gulpfile](https://github.com/hakimel/reveal.js/blob/master/gulpfile.js)) when you run `npm run build -- css-themes`. 8 | 9 | Each theme file does four things in the following order: 10 | 11 | 1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** 12 | Shared utility functions. 13 | 14 | 2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** 15 | Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. 16 | 17 | 3. **Override** 18 | This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. 19 | 20 | 4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** 21 | The template theme file which will generate final CSS output based on the currently defined variables. 22 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/beige.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Beige theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(./fonts/league-gothic/league-gothic.css); 17 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainColor: #333; 22 | $headingColor: #333; 23 | $headingTextShadow: none; 24 | $backgroundColor: #f7f3de; 25 | $linkColor: #8b743d; 26 | $linkColorHover: lighten( $linkColor, 20% ); 27 | $selectionBackgroundColor: rgba(79, 64, 28, 0.99); 28 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 29 | 30 | $overlayElementBgColor: 0, 0, 0; 31 | $overlayElementFgColor: 240, 240, 240; 32 | 33 | // Background generator 34 | @mixin bodyBackground() { 35 | @include radial-gradient( rgba(247,242,211,1), rgba(255,255,255,1) ); 36 | } 37 | 38 | // Change text colors against dark slide backgrounds 39 | @include dark-bg-text-color(#fff); 40 | 41 | 42 | // Theme template ------------------------------ 43 | @import "../template/theme"; 44 | // --------------------------------------------- 45 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/black-contrast.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black compact & high contrast reveal.js theme, with headers not in capitals. 3 | * 4 | * By Peter Kehl. Based on black.(s)css by Hakim El Hattab, http://hakim.se 5 | * 6 | * - Keep the source similar to black.css - for easy comparison. 7 | * - $mainFontSize controls code blocks, too (although under some ratio). 8 | */ 9 | 10 | 11 | // Default mixins and settings ----------------- 12 | @import "../template/mixins"; 13 | @import "../template/settings"; 14 | // --------------------------------------------- 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(./fonts/source-sans-pro/source-sans-pro.css); 19 | 20 | 21 | // Override theme settings (see ../template/settings.scss) 22 | $backgroundColor: #000000; 23 | 24 | $mainColor: #fff; 25 | $headingColor: #fff; 26 | 27 | $mainFontSize: 42px; 28 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 29 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 30 | $headingTextShadow: none; 31 | $headingLetterSpacing: normal; 32 | $headingTextTransform: uppercase; 33 | $headingFontWeight: 600; 34 | $linkColor: #42affa; 35 | $linkColorHover: lighten( $linkColor, 15% ); 36 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 37 | 38 | $heading1Size: 2.5em; 39 | $heading2Size: 1.6em; 40 | $heading3Size: 1.3em; 41 | $heading4Size: 1.0em; 42 | 43 | // Change text colors against light slide backgrounds 44 | @include light-bg-text-color(#000); 45 | 46 | 47 | // Theme template ------------------------------ 48 | @import "../template/theme"; 49 | // --------------------------------------------- 50 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/black.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. This is the opposite of the 'white' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #191919; 20 | 21 | $mainColor: #fff; 22 | $headingColor: #fff; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #42affa; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: rgba( $linkColor, 0.75 ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | // Change text colors against light slide backgrounds 41 | @include light-bg-text-color(#222); 42 | 43 | 44 | // Theme template ------------------------------ 45 | @import "../template/theme"; 46 | // --------------------------------------------- 47 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/league.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * League theme for reveal.js. 3 | * 4 | * This was the default theme pre-3.0.0. 5 | * 6 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(./fonts/league-gothic/league-gothic.css); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | // Override theme settings (see ../template/settings.scss) 22 | $headingTextShadow: 0px 0px 6px rgba(0,0,0,0.2); 23 | $heading1TextShadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,.1), 0 0 5px rgba(0,0,0,.1), 0 1px 3px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2), 0 5px 10px rgba(0,0,0,.25), 0 20px 20px rgba(0,0,0,.15); 24 | 25 | // Background generator 26 | @mixin bodyBackground() { 27 | @include radial-gradient( rgba(28,30,32,1), rgba(85,90,95,1) ); 28 | } 29 | 30 | // Change text colors against light slide backgrounds 31 | @include light-bg-text-color(#222); 32 | 33 | 34 | // Theme template ------------------------------ 35 | @import "../template/theme"; 36 | // --------------------------------------------- 37 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/moon.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Solarized Dark theme for reveal.js. 3 | * Author: Achim Staebler 4 | */ 5 | 6 | 7 | // Default mixins and settings ----------------- 8 | @import "../template/mixins"; 9 | @import "../template/settings"; 10 | // --------------------------------------------- 11 | 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/league-gothic/league-gothic.css); 16 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 17 | 18 | /** 19 | * Solarized colors by Ethan Schoonover 20 | */ 21 | 22 | // Solarized colors 23 | $base03: #002b36; 24 | $base02: #073642; 25 | $base01: #586e75; 26 | $base00: #657b83; 27 | $base0: #839496; 28 | $base1: #93a1a1; 29 | $base2: #eee8d5; 30 | $base3: #fdf6e3; 31 | $yellow: #b58900; 32 | $orange: #cb4b16; 33 | $red: #dc322f; 34 | $magenta: #d33682; 35 | $violet: #6c71c4; 36 | $blue: #268bd2; 37 | $cyan: #2aa198; 38 | $green: #859900; 39 | 40 | // Override theme settings (see ../template/settings.scss) 41 | $mainColor: $base1; 42 | $headingColor: $base2; 43 | $headingTextShadow: none; 44 | $backgroundColor: $base03; 45 | $linkColor: $blue; 46 | $linkColorHover: lighten( $linkColor, 20% ); 47 | $selectionBackgroundColor: $magenta; 48 | 49 | // Change text colors against light slide backgrounds 50 | @include light-bg-text-color(#222); 51 | 52 | // Theme template ------------------------------ 53 | @import "../template/theme"; 54 | // --------------------------------------------- 55 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/night.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Black theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(https://fonts.googleapis.com/css?family=Montserrat:700); 16 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic); 17 | 18 | 19 | // Override theme settings (see ../template/settings.scss) 20 | $backgroundColor: #111; 21 | 22 | $mainFont: 'Open Sans', sans-serif; 23 | $linkColor: #e7ad52; 24 | $linkColorHover: lighten( $linkColor, 20% ); 25 | $headingFont: 'Montserrat', Impact, sans-serif; 26 | $headingTextShadow: none; 27 | $headingLetterSpacing: -0.03em; 28 | $headingTextTransform: none; 29 | $selectionBackgroundColor: #e7ad52; 30 | 31 | // Change text colors against light slide backgrounds 32 | @include light-bg-text-color(#222); 33 | 34 | 35 | // Theme template ------------------------------ 36 | @import "../template/theme"; 37 | // --------------------------------------------- -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/serif.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is brown. 4 | * 5 | * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed. 6 | */ 7 | 8 | 9 | // Default mixins and settings ----------------- 10 | @import "../template/mixins"; 11 | @import "../template/settings"; 12 | // --------------------------------------------- 13 | 14 | 15 | 16 | // Override theme settings (see ../template/settings.scss) 17 | $mainFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 18 | $mainColor: #000; 19 | $headingFont: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif; 20 | $headingColor: #383D3D; 21 | $headingTextShadow: none; 22 | $headingTextTransform: none; 23 | $backgroundColor: #F0F1EB; 24 | $linkColor: #51483D; 25 | $linkColorHover: lighten( $linkColor, 20% ); 26 | $selectionBackgroundColor: #26351C; 27 | 28 | $overlayElementBgColor: 0, 0, 0; 29 | $overlayElementFgColor: 240, 240, 240; 30 | 31 | .reveal a { 32 | line-height: 1.3em; 33 | } 34 | 35 | // Change text colors against dark slide backgrounds 36 | @include dark-bg-text-color(#fff); 37 | 38 | 39 | // Theme template ------------------------------ 40 | @import "../template/theme"; 41 | // --------------------------------------------- 42 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/simple.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * A simple theme for reveal.js presentations, similar 3 | * to the default theme. The accent color is darkblue. 4 | * 5 | * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed. 6 | * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 7 | */ 8 | 9 | 10 | // Default mixins and settings ----------------- 11 | @import "../template/mixins"; 12 | @import "../template/settings"; 13 | // --------------------------------------------- 14 | 15 | 16 | 17 | // Include theme-specific fonts 18 | @import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700); 19 | @import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); 20 | 21 | 22 | // Override theme settings (see ../template/settings.scss) 23 | $mainFont: 'Lato', sans-serif; 24 | $mainColor: #000; 25 | $headingFont: 'News Cycle', Impact, sans-serif; 26 | $headingColor: #000; 27 | $headingTextShadow: none; 28 | $headingTextTransform: none; 29 | $backgroundColor: #fff; 30 | $linkColor: #00008B; 31 | $linkColorHover: lighten( $linkColor, 20% ); 32 | $selectionBackgroundColor: rgba(0, 0, 0, 0.99); 33 | 34 | $overlayElementBgColor: 0, 0, 0; 35 | $overlayElementFgColor: 240, 240, 240; 36 | 37 | // Change text colors against dark slide backgrounds 38 | @include dark-bg-text-color(#fff); 39 | 40 | 41 | // Theme template ------------------------------ 42 | @import "../template/theme"; 43 | // --------------------------------------------- -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/sky.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Sky theme for reveal.js. 3 | * 4 | * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | 15 | // Include theme-specific fonts 16 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic); 17 | @import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); 18 | 19 | 20 | // Override theme settings (see ../template/settings.scss) 21 | $mainFont: 'Open Sans', sans-serif; 22 | $mainColor: #333; 23 | $headingFont: 'Quicksand', sans-serif; 24 | $headingColor: #333; 25 | $headingLetterSpacing: -0.08em; 26 | $headingTextShadow: none; 27 | $backgroundColor: #f7fbfc; 28 | $linkColor: #3b759e; 29 | $linkColorHover: lighten( $linkColor, 20% ); 30 | $selectionBackgroundColor: #134674; 31 | 32 | $overlayElementBgColor: 0, 0, 0; 33 | $overlayElementFgColor: 240, 240, 240; 34 | 35 | // Fix links so they are not cut off 36 | .reveal a { 37 | line-height: 1.3em; 38 | } 39 | 40 | // Background generator 41 | @mixin bodyBackground() { 42 | @include radial-gradient( #add9e4, #f7fbfc ); 43 | } 44 | 45 | // Change text colors against dark slide backgrounds 46 | @include dark-bg-text-color(#fff); 47 | 48 | 49 | 50 | // Theme template ------------------------------ 51 | @import "../template/theme"; 52 | // --------------------------------------------- 53 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/source/white.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * White theme for reveal.js. This is the opposite of the 'black' theme. 3 | * 4 | * By Hakim El Hattab, http://hakim.se 5 | */ 6 | 7 | 8 | // Default mixins and settings ----------------- 9 | @import "../template/mixins"; 10 | @import "../template/settings"; 11 | // --------------------------------------------- 12 | 13 | 14 | // Include theme-specific fonts 15 | @import url(./fonts/source-sans-pro/source-sans-pro.css); 16 | 17 | 18 | // Override theme settings (see ../template/settings.scss) 19 | $backgroundColor: #fff; 20 | 21 | $mainColor: #222; 22 | $headingColor: #222; 23 | 24 | $mainFontSize: 42px; 25 | $mainFont: 'Source Sans Pro', Helvetica, sans-serif; 26 | $headingFont: 'Source Sans Pro', Helvetica, sans-serif; 27 | $headingTextShadow: none; 28 | $headingLetterSpacing: normal; 29 | $headingTextTransform: uppercase; 30 | $headingFontWeight: 600; 31 | $linkColor: #2a76dd; 32 | $linkColorHover: lighten( $linkColor, 15% ); 33 | $selectionBackgroundColor: lighten( $linkColor, 25% ); 34 | 35 | $heading1Size: 2.5em; 36 | $heading2Size: 1.6em; 37 | $heading3Size: 1.3em; 38 | $heading4Size: 1.0em; 39 | 40 | $overlayElementBgColor: 0, 0, 0; 41 | $overlayElementFgColor: 240, 240, 240; 42 | 43 | // Change text colors against dark slide backgrounds 44 | @include dark-bg-text-color(#fff); 45 | 46 | 47 | // Theme template ------------------------------ 48 | @import "../template/theme"; 49 | // --------------------------------------------- 50 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/template/exposer.scss: -------------------------------------------------------------------------------- 1 | // Exposes theme's variables for easy re-use in CSS for plugin authors 2 | 3 | :root { 4 | --r-background-color: #{$backgroundColor}; 5 | --r-main-font: #{$mainFont}; 6 | --r-main-font-size: #{$mainFontSize}; 7 | --r-main-color: #{$mainColor}; 8 | --r-block-margin: #{$blockMargin}; 9 | --r-heading-margin: #{$headingMargin}; 10 | --r-heading-font: #{$headingFont}; 11 | --r-heading-color: #{$headingColor}; 12 | --r-heading-line-height: #{$headingLineHeight}; 13 | --r-heading-letter-spacing: #{$headingLetterSpacing}; 14 | --r-heading-text-transform: #{$headingTextTransform}; 15 | --r-heading-text-shadow: #{$headingTextShadow}; 16 | --r-heading-font-weight: #{$headingFontWeight}; 17 | --r-heading1-text-shadow: #{$heading1TextShadow}; 18 | --r-heading1-size: #{$heading1Size}; 19 | --r-heading2-size: #{$heading2Size}; 20 | --r-heading3-size: #{$heading3Size}; 21 | --r-heading4-size: #{$heading4Size}; 22 | --r-code-font: #{$codeFont}; 23 | --r-link-color: #{$linkColor}; 24 | --r-link-color-dark: #{darken($linkColor , 15% )}; 25 | --r-link-color-hover: #{$linkColorHover}; 26 | --r-selection-background-color: #{$selectionBackgroundColor}; 27 | --r-selection-color: #{$selectionColor}; 28 | --r-overlay-element-bg-color: #{$overlayElementBgColor}; 29 | --r-overlay-element-fg-color: #{$overlayElementFgColor}; 30 | } 31 | -------------------------------------------------------------------------------- /slides/reveal.js/css/theme/template/settings.scss: -------------------------------------------------------------------------------- 1 | // Base settings for all themes that can optionally be 2 | // overridden by the super-theme 3 | 4 | // Background of the presentation 5 | $backgroundColor: #2b2b2b; 6 | 7 | // Primary/body text 8 | $mainFont: 'Lato', sans-serif; 9 | $mainFontSize: 40px; 10 | $mainColor: #eee; 11 | 12 | // Vertical spacing between blocks of text 13 | $blockMargin: 20px; 14 | 15 | // Headings 16 | $headingMargin: 0 0 $blockMargin 0; 17 | $headingFont: 'League Gothic', Impact, sans-serif; 18 | $headingColor: #eee; 19 | $headingLineHeight: 1.2; 20 | $headingLetterSpacing: normal; 21 | $headingTextTransform: uppercase; 22 | $headingTextShadow: none; 23 | $headingFontWeight: normal; 24 | $heading1TextShadow: $headingTextShadow; 25 | 26 | $heading1Size: 3.77em; 27 | $heading2Size: 2.11em; 28 | $heading3Size: 1.55em; 29 | $heading4Size: 1.00em; 30 | 31 | $codeFont: monospace; 32 | 33 | // Links and actions 34 | $linkColor: #13DAEC; 35 | $linkColorHover: lighten( $linkColor, 20% ); 36 | 37 | // Text selection 38 | $selectionBackgroundColor: #FF5E99; 39 | $selectionColor: #fff; 40 | 41 | // Colors used for UI elements that are overlaid on top of 42 | // the presentation 43 | $overlayElementBgColor: 240, 240, 240; 44 | $overlayElementFgColor: 0, 0, 0; 45 | 46 | // Generates the presentation background, can be overridden 47 | // to return a background image or gradient 48 | @mixin bodyBackground() { 49 | background: $backgroundColor; 50 | } 51 | -------------------------------------------------------------------------------- /slides/reveal.js/dist/reset.css: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v4.0 | 20180602 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | main, menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, main, menu, nav, section { 29 | display: block; 30 | } -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/league-gothic/LICENSE: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'League Gothic'; 3 | src: url('./league-gothic.eot'); 4 | src: url('./league-gothic.eot?#iefix') format('embedded-opentype'), 5 | url('./league-gothic.woff') format('woff'), 6 | url('./league-gothic.ttf') format('truetype'); 7 | 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.eot -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.ttf -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/league-gothic/league-gothic.woff -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff -------------------------------------------------------------------------------- /slides/reveal.js/dist/theme/fonts/source-sans-pro/source-sans-pro.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | src: url('./source-sans-pro-regular.eot'); 4 | src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), 5 | url('./source-sans-pro-regular.woff') format('woff'), 6 | url('./source-sans-pro-regular.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | @font-face { 12 | font-family: 'Source Sans Pro'; 13 | src: url('./source-sans-pro-italic.eot'); 14 | src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), 15 | url('./source-sans-pro-italic.woff') format('woff'), 16 | url('./source-sans-pro-italic.ttf') format('truetype'); 17 | font-weight: normal; 18 | font-style: italic; 19 | } 20 | 21 | @font-face { 22 | font-family: 'Source Sans Pro'; 23 | src: url('./source-sans-pro-semibold.eot'); 24 | src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), 25 | url('./source-sans-pro-semibold.woff') format('woff'), 26 | url('./source-sans-pro-semibold.ttf') format('truetype'); 27 | font-weight: 600; 28 | font-style: normal; 29 | } 30 | 31 | @font-face { 32 | font-family: 'Source Sans Pro'; 33 | src: url('./source-sans-pro-semibolditalic.eot'); 34 | src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), 35 | url('./source-sans-pro-semibolditalic.woff') format('woff'), 36 | url('./source-sans-pro-semibolditalic.ttf') format('truetype'); 37 | font-weight: 600; 38 | font-style: italic; 39 | } 40 | -------------------------------------------------------------------------------- /slides/reveal.js/examples/assets/beeping.txt: -------------------------------------------------------------------------------- 1 | Source: https://freesound.org/people/fennelliott/sounds/379419/ 2 | License: CC0 (public domain) -------------------------------------------------------------------------------- /slides/reveal.js/examples/assets/beeping.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/examples/assets/beeping.wav -------------------------------------------------------------------------------- /slides/reveal.js/examples/assets/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/examples/assets/image1.png -------------------------------------------------------------------------------- /slides/reveal.js/examples/assets/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/slides/reveal.js/examples/assets/image2.png -------------------------------------------------------------------------------- /slides/reveal.js/examples/barebones.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | reveal.js - Barebones 6 | 7 | 8 | 9 | 10 |
11 |
12 | 13 |
14 |

Barebones Presentation

15 |

This example contains the bare minimum includes and markup required to run a reveal.js presentation.

16 |
17 | 18 |
19 |

No Theme

20 |

There's no theme included, so it will fall back on browser defaults.

21 |
22 | 23 |
24 |
25 | 26 | 27 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /slides/reveal.js/examples/markdown.md: -------------------------------------------------------------------------------- 1 | # Markdown Demo 2 | 3 | 4 | 5 | ## External 1.1 6 | 7 | Content 1.1 8 | 9 | Note: This will only appear in the speaker notes window. 10 | 11 | 12 | ## External 1.2 13 | 14 | Content 1.2 15 | 16 | 17 | 18 | ## External 2 19 | 20 | Content 2.1 21 | 22 | 23 | 24 | ## External 3.1 25 | 26 | Content 3.1 27 | 28 | 29 | ## External 3.2 30 | 31 | Content 3.2 32 | 33 | 34 | ## External 3.3 (Image) 35 | 36 | ![External Image](https://s3.amazonaws.com/static.slid.es/logo/v2/slides-symbol-512x512.png) 37 | 38 | 39 | ## External 3.4 (Math) 40 | 41 | `\[ J(\theta_0,\theta_1) = \sum_{i=0} \]` 42 | -------------------------------------------------------------------------------- /slides/reveal.js/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
Slide 1
20 |
Slide 2
21 |
22 |
23 | 24 | 25 | 26 | 27 | 28 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /slides/reveal.js/js/utils/constants.js: -------------------------------------------------------------------------------- 1 | 2 | export const SLIDES_SELECTOR = '.slides section'; 3 | export const HORIZONTAL_SLIDES_SELECTOR = '.slides>section'; 4 | export const VERTICAL_SLIDES_SELECTOR = '.slides>section.present>section'; 5 | 6 | // Methods that may not be invoked via the postMessage API 7 | export const POST_MESSAGE_METHOD_BLACKLIST = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener|showPreview/; 8 | 9 | // Regex for retrieving the fragment style from a class attribute 10 | export const FRAGMENT_STYLE_REGEX = /fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/; 11 | 12 | // Slide number formats 13 | export const SLIDE_NUMBER_FORMAT_HORIZONTAL_DOT_VERTICAL = 'h.v'; 14 | export const SLIDE_NUMBER_FORMAT_HORIZONTAL_SLASH_VERTICAL = 'h/v'; 15 | export const SLIDE_NUMBER_FORMAT_CURRENT = 'c'; 16 | export const SLIDE_NUMBER_FORMAT_CURRENT_SLASH_TOTAL = 'c/t'; -------------------------------------------------------------------------------- /slides/reveal.js/js/utils/device.js: -------------------------------------------------------------------------------- 1 | const UA = navigator.userAgent; 2 | 3 | export const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) || 4 | ( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS 5 | 6 | export const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA ); 7 | 8 | export const isAndroid = /android/gi.test( UA ); -------------------------------------------------------------------------------- /slides/reveal.js/js/utils/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Loads a JavaScript file from the given URL and executes it. 3 | * 4 | * @param {string} url Address of the .js file to load 5 | * @param {function} callback Method to invoke when the script 6 | * has loaded and executed 7 | */ 8 | export const loadScript = ( url, callback ) => { 9 | 10 | const script = document.createElement( 'script' ); 11 | script.type = 'text/javascript'; 12 | script.async = false; 13 | script.defer = false; 14 | script.src = url; 15 | 16 | if( typeof callback === 'function' ) { 17 | 18 | // Success callback 19 | script.onload = script.onreadystatechange = event => { 20 | if( event.type === 'load' || /loaded|complete/.test( script.readyState ) ) { 21 | 22 | // Kill event listeners 23 | script.onload = script.onreadystatechange = script.onerror = null; 24 | 25 | callback(); 26 | 27 | } 28 | }; 29 | 30 | // Error callback 31 | script.onerror = err => { 32 | 33 | // Kill event listeners 34 | script.onload = script.onreadystatechange = script.onerror = null; 35 | 36 | callback( new Error( 'Failed loading script: ' + script.src + '\n' + err ) ); 37 | 38 | }; 39 | 40 | } 41 | 42 | // Append the script at the end of 43 | const head = document.querySelector( 'head' ); 44 | head.insertBefore( script, head.lastChild ); 45 | 46 | } -------------------------------------------------------------------------------- /slides/reveal.js/plugin/highlight/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | color: #ddd; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-keyword, 15 | .hljs-selector-tag, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-name { 19 | color: #f92672; 20 | } 21 | 22 | .hljs-code { 23 | color: #66d9ef; 24 | } 25 | 26 | .hljs-class .hljs-title { 27 | color: white; 28 | } 29 | 30 | .hljs-attribute, 31 | .hljs-symbol, 32 | .hljs-regexp, 33 | .hljs-link { 34 | color: #bf79db; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-bullet, 39 | .hljs-subst, 40 | .hljs-title, 41 | .hljs-section, 42 | .hljs-emphasis, 43 | .hljs-type, 44 | .hljs-built_in, 45 | .hljs-builtin-name, 46 | .hljs-selector-attr, 47 | .hljs-selector-pseudo, 48 | .hljs-addition, 49 | .hljs-variable, 50 | .hljs-template-tag, 51 | .hljs-template-variable { 52 | color: #a6e22e; 53 | } 54 | 55 | .hljs-comment, 56 | .hljs-quote, 57 | .hljs-deletion, 58 | .hljs-meta { 59 | color: #75715e; 60 | } 61 | 62 | .hljs-keyword, 63 | .hljs-selector-tag, 64 | .hljs-literal, 65 | .hljs-doctag, 66 | .hljs-title, 67 | .hljs-section, 68 | .hljs-type, 69 | .hljs-selector-id { 70 | font-weight: bold; 71 | } 72 | -------------------------------------------------------------------------------- /slides/reveal.js/plugin/highlight/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | } 15 | 16 | .hljs-keyword, 17 | .hljs-selector-tag, 18 | .hljs-tag { 19 | color: #e3ceab; 20 | } 21 | 22 | .hljs-template-tag { 23 | color: #dcdcdc; 24 | } 25 | 26 | .hljs-number { 27 | color: #8cd0d3; 28 | } 29 | 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-attribute { 33 | color: #efdcbc; 34 | } 35 | 36 | .hljs-literal { 37 | color: #efefaf; 38 | } 39 | 40 | .hljs-subst { 41 | color: #8f8f8f; 42 | } 43 | 44 | .hljs-title, 45 | .hljs-name, 46 | .hljs-selector-id, 47 | .hljs-selector-class, 48 | .hljs-section, 49 | .hljs-type { 50 | color: #efef8f; 51 | } 52 | 53 | .hljs-symbol, 54 | .hljs-bullet, 55 | .hljs-link { 56 | color: #dca3a3; 57 | } 58 | 59 | .hljs-deletion, 60 | .hljs-string, 61 | .hljs-built_in, 62 | .hljs-builtin-name { 63 | color: #cc9393; 64 | } 65 | 66 | .hljs-addition, 67 | .hljs-comment, 68 | .hljs-quote, 69 | .hljs-meta { 70 | color: #7f9f7f; 71 | } 72 | 73 | 74 | .hljs-emphasis { 75 | font-style: italic; 76 | } 77 | 78 | .hljs-strong { 79 | font-weight: bold; 80 | } 81 | -------------------------------------------------------------------------------- /slides/reveal.js/plugin/math/plugin.js: -------------------------------------------------------------------------------- 1 | import {KaTeX} from "./katex"; 2 | import {MathJax2} from "./mathjax2"; 3 | import {MathJax3} from "./mathjax3"; 4 | 5 | const defaultTypesetter = MathJax2; 6 | 7 | /*! 8 | * This plugin is a wrapper for the MathJax2, 9 | * MathJax3 and KaTeX typesetter plugins. 10 | */ 11 | export default Plugin = Object.assign( defaultTypesetter(), { 12 | KaTeX, 13 | MathJax2, 14 | MathJax3 15 | } ); -------------------------------------------------------------------------------- /slides/reveal.js/test/assets/external-script-a.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'A'; -------------------------------------------------------------------------------- /slides/reveal.js/test/assets/external-script-b.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'B'; -------------------------------------------------------------------------------- /slides/reveal.js/test/assets/external-script-c.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'C'; -------------------------------------------------------------------------------- /slides/reveal.js/test/assets/external-script-d.js: -------------------------------------------------------------------------------- 1 | window.externalScriptSequence += 'D'; -------------------------------------------------------------------------------- /slides/reveal.js/test/simple.md: -------------------------------------------------------------------------------- 1 | ## Slide 1.1 2 | 3 | ```js 4 | var a = 1; 5 | ``` 6 | 7 | 8 | ## Slide 1.2 9 | 10 | 11 | 12 | ## Slide 2 -------------------------------------------------------------------------------- /slides/reveal.js/test/test-dependencies.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | reveal.js - Test Dependencies 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | 19 | 28 | 29 | 30 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /slides/title-slide-sigcse2025.html: -------------------------------------------------------------------------------- 1 |
2 |

 

3 |
4 |

Implementation of a Cryptocurrency Elective Course

5 |

 

6 |

SIGCSE 2025

7 |
8 |

 

9 |

10 | Aaron Bloomfield (aaron@virginia.edu)
11 | University of Virginia
12 | @github | | 13 |

14 |

 

15 |
16 | -------------------------------------------------------------------------------- /slides/title-slide.html: -------------------------------------------------------------------------------- 1 |
2 |

 

3 |
4 |

CS 4970

5 |

Cryptocurrency

6 |

$title$

7 |
8 |

 

9 |

 

10 |

11 | Aaron Bloomfield (aaron@virginia.edu)
12 | @github | | 13 |

14 |

 

15 |
16 | -------------------------------------------------------------------------------- /tabs.js: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /uva/.gitignore: -------------------------------------------------------------------------------- 1 | comic-slides.html 2 | -------------------------------------------------------------------------------- /uva/Makefile: -------------------------------------------------------------------------------- 1 | SLIDE_SETS: daily-announcements.html 2 | .SUFFIXES: .qmd .html 3 | .PHONY: slides 4 | 5 | slides: $(SLIDE_SETS) 6 | @echo conversion done 7 | 8 | .qmd.html: 9 | quarto render $< --to revealjs 10 | 11 | doc: 12 | @cd .. && make -s 13 | 14 | graph: 15 | gnuplot prices.graph 16 | -------------------------------------------------------------------------------- /uva/grades.md: -------------------------------------------------------------------------------- 1 | CS 4970: Cryptocurrency: Course grades 2 | ====================== 3 | 4 | As per the [syllabus](syllabus.html) ([md](syllabus.md)), the grades were computed by: 5 | 6 | - Programming and written assignments (45%) 7 | - Midterms (20%) 8 | - Final exam (25%) 9 | - Class participation, pop quizzes (10%) 10 | 11 | ## The Process of Grade Determination 12 | 13 | ![](images/magic-8-ball.png) 14 | 15 | 20 | -------------------------------------------------------------------------------- /uva/images/magic-8-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronbloomfield/ccc/ba3eb0d2c54c5d6f129fdc577114f59a6c1133b4/uva/images/magic-8-ball.png -------------------------------------------------------------------------------- /uva/old/index.md: -------------------------------------------------------------------------------- 1 | CCC: Old Material 2 | ================= 3 | 4 | [Go up to the CCC UVa page](../index.html) ([md](../index.md)) 5 | 6 | This page contains the relevant pages from the uva/ directory in this repository from previous semester. While the content of those pages should all be viewable, the links therein are likely to not work properly. 7 | 8 | ### Spring 2024 9 | 10 | - [Main UVa page](index-spring-2024.html) ([md](index-spring-2024.md)) 11 | - [Course syllabus](syllabus-spring-2024.html) ([md](syllabus-spring-2024.md)) 12 | - [Daily announcements](daily-announcements-spring-2024.html) 13 | 14 | ### Fall 2023 15 | 16 | - [Main UVa page](index-fall-2023.html) ([md](index-fall-2023.md)) 17 | - [Course syllabus](syllabus-fall-2023.html) ([md](syllabus-fall-2023.md)) 18 | - [Daily announcements](daily-announcements-fall-2023.html) 19 | 20 | ### Spring 2023 21 | 22 | - [Main UVa page](index-spring-2023.html) ([md](index-spring-2023.md)) 23 | - [Course syllabus](syllabus-spring-2023.html) ([md](syllabus-spring-2023.md)) 24 | - [Daily announcements](daily-announcements-spring-2023.html) 25 | 26 | ### Fall 2022 27 | 28 | - [Main UVa page](index-fall-2022.html) ([md](index-fall-2022.md)) 29 | - [Course syllabus](syllabus-fall-2022.html) ([md](syllabus-fall-2022.md)) 30 | - [Daily announcements](daily-announcements-fall-2022.html) 31 | 32 | ### Spring 2022 33 | 34 | - [Main UVa page](index-spring-2022.html) ([md](index-spring-2022.md)) 35 | - [Course syllabus](syllabus-spring-2022.html) ([md](syllabus-spring-2022.md)) 36 | - [Daily announcements](daily-announcements-spring-2022.html) 37 | -------------------------------------------------------------------------------- /uva/old/prices-spring-2022.data: -------------------------------------------------------------------------------- 1 | 28 38.182 27.95 9.2 5.40 2 | 27 39.023 28.66 6.4 3.85 3 | 26 39.475 29.32 7.5 4.62 4 | 25 41.062 30.52 18.9 12.11 5 | 24 40.768 30.14 5.6 3.54 6 | 23 41.273 30.99 6.0 3.90 7 | 22 40.396 30.17 7.9 5.01 8 | 21 43.500 31.95 7.8 5.23 9 | 20 45.323 34.37 9.4 6.78 10 | 19 47.375 34.11 11.2 8.02 11 | 18 47.958 34.10 20.8 14.89 12 | 17 42.101 29.54 2.5 1.55 13 | 16 41.047 29.17 4.7 2.88 14 | 15 39.866 26.60 6.5 3.63 15 | 14 38.594 25.26 4.4 2.59 16 | 12 41.308 28.02 7.2 4.23 17 | 11 37.753 26.46 7.8 4.34 18 | 10 37.915 26.36 14.6 8.09 19 | 9 44.049 31.24 6.5 4.25 20 | 8 42.181 28.83 8.1 4.90 21 | 7 44.535 32.48 15.9 10.88 22 | 6 44.363 31.80 27.5 18.36 23 | 5 37.629 27.12 27.8 15.80 24 | 4 38.453 26.71 15.7 8.82 25 | 3 37.735 25.88 26.1 14.40 26 | 2 35.797 23.51 14.3 7.05 27 | -------------------------------------------------------------------------------- /uva/prices.data: -------------------------------------------------------------------------------- 1 | 29 92860 1747 0.565 0.02 2 | 28 91962 1746 0.543 0.02 3 | 27 84674 1566 0.437 0.01 4 | 26 83154 1540 0.347 0.01 5 | 25 83743 1609 0.402 0.01 6 | 24 75754 1440 0.579 0.02 7 | 23 74436 1415 1.089 0.03 8 | 22 82343 1783 0.617 0.02 9 | 21 81314 1778 0.573 0.02 10 | 20 85861 1982 0.402 0.02 11 | 19 86461 2013 0.713 0.03 12 | 18 82752 1930 0.407 0.02 13 | 17 82492 1880 0.443 0.02 14 | 16 86746 2159 0.641 0.03 15 | 15 82467 2004 1.148 0.05 16 | 13 90924 2461 0.884 0.05 17 | 11 95243 2640 0.756 0.04 18 | 10 94101 2551 0.864 0.05 19 | 8 96208 2636 1.206 0.07 20 | 7 91242 2159 9.353 0.42 21 | 6 101427 3055 1.926 0.12 22 | 5 97795 3024 3.966 0.25 23 | 4 102000 3203 4.705 0.32 24 | 3 100454 3191 12.076 0.81 25 | 2 96480 3186 6.771 0.45 26 | -------------------------------------------------------------------------------- /uva/prices.graph: -------------------------------------------------------------------------------- 1 | # A graph of the price data presented in the daily announcements. To generate 2 | # the graph, run `gnuplot prices.graph` 3 | # 4 | # prices.data format: 5 | # - lecture number (int) 6 | # - BTC price / 1000 (USD, float) 7 | # - ETH price / 1000 (USD, float) 8 | # - gas price (gwei, float) 9 | # - gas fees in (USD, float) 10 | # 11 | # - to generate the data, run (on Linux, not a Mac): 12 | # `grep gwei daily-announcements.html | grep ETH | sed s/[\`,\;\$]//g | awk '{print 43-NR" "$3" "$5" "$8" "$11}' > prices.data` 13 | # - then clean it up, fixing the lecture number (the first value of each 14 | # line), adjusting the scales (below in this file) as necessary, and change the date axis 15 | # - change the other fields below (semester, dates, etc.) 16 | # - run `make graph` 17 | 18 | set xrange [1:30] 19 | set yrange [0:130] 20 | set key left top 21 | # for a M-W-F semester: 22 | #set xtics ( "Jan 19" 2, "Jan 31" 7, "Feb 12" 12, "Feb 23" 17, "Mar 13" 22, "Mar 25" 27, "Apr 5 6" 32, "Apr 17" 37, "Apr 29" 42 ) 23 | # for a Tu-Th semester: 24 | set xtics ( "Jan 16" 2, "Feb 13" 10, "Mar 27" 20, "Apr 29" 29 ) 25 | set title "BTC and ETH prices & fees, spring 2025" 26 | set xlabel "Date" 27 | set ylabel "Price (USD)" 28 | set terminal svg size 1000,500 background rgb 'white' 29 | set output "prices.svg" 30 | plot 'prices.data' using 1:($2/1000) with linespoints title "BTC / 1,000", 'prices.data' using 1:($3/100) with linespoints title "ETH / 100", \ 31 | 'prices.data' using 1:($5*100) with linespoints title "gas (USD) * 100", 'prices.data' using 1:($4*10) with linespoints title "gas (gwei) * 10" 32 | --------------------------------------------------------------------------------