我打算整理一下这段时间自学区块链的一些笔记
一开始,学习区块链是从以太坊开始的,这个过程当中看了不少人写的教程,东学一点西学一点,过程并非十分顺利,可是庆幸的是最后仍是摸索出来了不少东西,若是你如今也是刚刚接触这门技术,可是殊不知道从哪里入手的话,那就看看我写的东西吧,应该能帮上些忙
由于我主要的想法就是想要学会怎么使用它来写智能合约,因此主要学的是怎么从头至尾成功地将本身想实现的东西写到智能合约上,并部署到区块链中。首先我以最近很火的区块猫来做为了本身入门的实例,它的开源代码你们都能在GitHub上找到
网址是:https://github.com/dapperlabs/cryptokitties-bounty
固然,在这个网址上的代码truffle的框架格式存储的,若是你想要在remix-ide等上面运行的话,能够从这个网址直接复制粘贴便可:
https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code
一开始选择的是区块猫cryptokitties,可是后面发现这个游戏的代码比较长,我以为这个加密朋克cryptopunks可能更适合刚入门的人,等到差很少都会了以后,再去看区块猫cryptokitties效果会更好。(cryptopunks的代码解释和solidity-cryptoPunks为实例)
固然在正式开始前,我以为仍是有必要介绍一下一些相关的工具,省得后面用起来,你们不知道是什么,由于我当时就懵逼了好久.并且要声明一下下面的内容都是在macOS环境下搭建的。
固然首先要进行环境的安装——看开始学习前的环境安装
1. Geth:
Geth是由以太坊基金会提供的官方客户端软件,用Go编程语言编写的,用于部署一个私有链,而且配置和使用该私有链。详情能够看Geth和私有链配置信息的解释
2.ganache
看ganache与metamask
3. Solidity:
Solidity是用于编写在以太坊区块链上运行的智能合约的最流行的编程语言。 它是一种高级语言,当编译转换为 EVM 字节码。 这与 Java 很是类似,其中有诸如 Scala,Groovy,Clojure,JRuby等JVM语言。全部这些编译都生成在JVM(Java虚拟机)中运行的字节码。这部分也本身看了文档作了些笔记,在solidity learning(1)和solidity learning(2),可是很乱,我以为你们仍是要本身去看原文档。
4.Truffle:
Truffle 和 Embark 是用于开发以太坊 DApps的两个最经常使用的框架。 它们抽象出在区块链上编译和部署合同的许多复杂的东西。我本身写了truffle的简单使用,可供参考
5. Web3.js:
javascript库,能够用来与一个节点进行交互。 因为它是一个 JavaScript 库,您可使用它来构建基于Web的dapps。
我使用的版本是web3的版本是0.20.1,笔记是web3js learning,依旧比较乱。如今已经有1.0了,1.0版本的内容与其仍是有些不一样的,你们要根据本身下载的版本去看相应的文档,固然,仍是看最新的比较好,后面会再来一个1.0版本的笔记的
7. Remix:
以太坊官方推荐的智能合约开发IDE,适合新手,能够在浏览器中快速部署测试智能合约。
我只给你们介绍我用的,其余我没有用过的就不介绍了
就是在网上好多人介绍了不少有关testrpc\guanache\remix-ide等相似代码部署环境之类的东西,以前就各类很乱,不知道从哪一个下手好,如今我用的最多的是remix-ide,详情看remix的使用
8.nodejs
这个其实就是在node的环境下运行JavaScript,网上有不少详细资料,如http://nodejs.cn/api/。
经过使用nodejs的web3模块来调用区块链的API,还有以前写的关于部署智能合约的方法有不少,好比使用truffle框架,使用remix-ide等,还有使用nodejs一步步编译部署的方法——nodejs部署智能合约的方法;
若是你想要作一个相似于cryptokitties的网页来调用本身的智能合约,那么nodejs是颇有用的,特别要学会里面的回调——js同步-异步-回调。
9.metamask钱包
这个的详细内容看metamask的使用
10.ERC20/ERC721-165
看erc721-165学习
11.而后就能够去看比较难的cryptokitties代码了https://github.com/dapperlabs/cryptokitties-bountyjavascript