区块链学习-开始

我打算整理一下这段时间自学区块链的一些笔记
一开始,学习区块链是从以太坊开始的,这个过程中看了很多人写的教程,东学一点西学一点,过程并不是十分顺利,但是庆幸的是最后还是摸索出来了很多东西,如果你现在也是刚刚接触这门技术,但是却不知道从哪里入手的话,那就看看我写的东西吧,应该能帮上些忙

因为我主要的想法就是想要学会怎么使用它来写智能合约,所以主要学的是怎么从头到尾成功地将自己想实现的东西写到智能合约上,并部署到区块链中。首先我以最近很火的区块猫来作为了自己入门的实例,它的开源代码大家都能在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-bounty

posted @ 2018-08-27 16:27  慢行厚积  阅读(431)  评论(0编辑  收藏  举报