Open chokcoco opened 6 years ago
区块链在 2018 突然就爆发了,区块链工程师招聘也是异常火爆。长期混迹币圈,又是个人兴趣所向,遂打算学习一下区块链方面的编程技术。
如果你也感兴趣,可以和我一起,从零开始学习以太坊编程。
废话少说,直接开始教程。
Truffle 是一个以太坊智能合约开发框架,利用它可以方便地生成项目模板、编译合约、部署合约到区块链、测试合约等等。
Truffle官方文档可以戳这里。
truffle 支持使用 npm 安装。对于前端同学是个福音。
npm install -g truffle
当然有些前提:
nodejs 版本要求大于 5.0,所以版本过低的同学需要更新一下。建议直接上 8.1.0 的稳定版本。Node.js 8.10.0 LTS
OK,我是 windows 下的环境,安装完成大概是这样:
OK,工具已经有了,接下来就是创建项目。
我们创建一个文件夹,在该文件夹下,使用 truffle init 指令创建一个新的项目。
truffle init
> truffle init
上述命令之后,我们可以得到一个官方提供的简单脚手架 -- metacoin 项目。简单的目录示意如下:
truffle.js
当然,除了 truffle init 之外,官方还提供了一个简明教程项目 -- metacoin。安装它的方法如下:
> truffle unbox metacoin
两者都可以,目的是创建一个简单的脚手架。我们看到,脚手架提供的几个文件,后缀只有两个 *.js 或者是 *.sol。
*.js
*.sol
*.js 这个大家都很熟悉,就是 JavaScript 脚本。
*.sol 是个啥呢?
.sol 后缀文件中的 sol 是 Solidity 的简称。Solidity 是基于以太坊虚拟机 Ethereum Virtual Machine (EVM)运行,面向智能合约,语法类似于 JavaScript 的高级编程语言。
.sol
语法类似于 JavaScript,前端工程师的福音。
这里先了解一下,后面会有更深入的讲解。
下面在正式编程之前,还有一些专业术语要了解一下。
什么是 Dapp?去中心化应用也被称为DApp(decentralized applications),是技术进化的下一个合乎逻辑的步骤。
一个分布式应用,类似以太坊上的智能合约,但也有关键不同。不像智能合约,Dapp不需仅围绕金融,还可将区块链技术用于可想到的任何用途。
有人将 Distributed App 翻译成去中心化应用,这个翻译其实并不准确。去中心化的英文单词是 Decentralized 或者是 Distributed 。但其实翻译过来为分散,而非去中心化。 区块链是一种软件系统,而软件系统的网络架构一般有三种模式:单中心、多中心、分布式。单词 Decentralized 只是表明不是单中心模式,可能为多中心或弱中心,也可能是分布式的。
有人将 Distributed App 翻译成去中心化应用,这个翻译其实并不准确。去中心化的英文单词是 Decentralized 或者是 Distributed 。但其实翻译过来为分散,而非去中心化。
区块链是一种软件系统,而软件系统的网络架构一般有三种模式:单中心、多中心、分布式。单词 Decentralized 只是表明不是单中心模式,可能为多中心或弱中心,也可能是分布式的。
经常看到说像 ETH 钱包支持 ERC20 标准代币。
那么所谓的 ERC20 是什么呢?
ERC-20 标准是在2015年11月份推出的,使用这种规则的代币,表现出一种通用的和可预测的方式,可以让以太坊区块链上的其他智能合约和分布式应用之间无缝交互。
简单地说,任何 ERC-20 代币都能立即兼容以太坊钱包。ERC20 是各个代币的标准接口。ERC20 代币仅仅是以太坊代币的子集。
ERC20 令牌存在的最大问题在于无法通过接收方合同处理传入的交易。在此基础上,有了 ERC223 标准。
自从引入 ERC20 令牌标准以来,几乎所有的基于以太坊的令牌都成功的接受了这个新标准。
然而其自身的缺点需要及时解决,这便是ERC223令牌诞生的原因。
ERC223 令牌标准将向现有的 ERC20 标准引入一个新功能,以防止意外转移的发生。ERC223 令牌标准可以防止令牌在以太坊网络上丢失。
我们知道,类似ETH,很多代币都是可以细分到小数点后面很多很多位数的。
譬如,我要可以只买卖 0.00000001 枚 ETH 。这就是 ERC20 的标准。Token 可以无限细分为 10^18 份。
而 ERC721 的 Token 最小的单位为 1,无法再分割。类似于我们见到的百度莱次狗、小米加密猫,这些阿猫阿狗正常来说都是一只一只的,我们不可能说去交易 0.000001 只加密猫。所以正常来说 莱次狗、加密猫 都应该是符合 ERC721 标准的代币。
ERC721(Non-Fungible Tokens),翻译为不可互换的 Token, 英文简写为"NFT",简单理解为每个 Token 都是独一无二的。也就是说 ERC721 的每个 Token 都拥有独立唯一的 tokenId 编号。
ERC20 是可置换的,意味着所有的 Token 直接没有区别,所有Token都是一样的,而符合 ERC721 的 Token 每个都具有独立唯一的 tokenId 编号。
举个例子,假设我的加密猫的 TokenId 为 888888888,是不是很具有收藏价值。可以类似对比车牌。
本期先带大家了解这多,下一期介绍 Go Ethereum 和直接开始一个简单和合约编程,敬请期待。
任何技术问题交流,或者有志学习 ETH 编程的,可以加 Q 群交流:互联网区块链技术交流 --483931379 。
区块链在 2018 突然就爆发了,区块链工程师招聘也是异常火爆。长期混迹币圈,又是个人兴趣所向,遂打算学习一下区块链方面的编程技术。
如果你也感兴趣,可以和我一起,从零开始学习以太坊编程。
废话少说,直接开始教程。
安装 truffle
truffle 是啥?
Truffle 是一个以太坊智能合约开发框架,利用它可以方便地生成项目模板、编译合约、部署合约到区块链、测试合约等等。
Truffle官方文档可以戳这里。
truffle 能干啥?
安装 truffle
truffle 支持使用 npm 安装。对于前端同学是个福音。
当然有些前提:
OK,我是 windows 下的环境,安装完成大概是这样:
创建项目
OK,工具已经有了,接下来就是创建项目。
我们创建一个文件夹,在该文件夹下,使用
truffle init
指令创建一个新的项目。上述命令之后,我们可以得到一个官方提供的简单脚手架 -- metacoin 项目。简单的目录示意如下:
目录简介
truffle.js
是 Truffle 的配置文件当然,除了
truffle init
之外,官方还提供了一个简明教程项目 -- metacoin。安装它的方法如下:两者都可以,目的是创建一个简单的脚手架。我们看到,脚手架提供的几个文件,后缀只有两个
*.js
或者是*.sol
。*.js
这个大家都很熟悉,就是 JavaScript 脚本。*.sol
是个啥呢?sol 简介
.sol
后缀文件中的 sol 是 Solidity 的简称。Solidity 是基于以太坊虚拟机 Ethereum Virtual Machine (EVM)运行,面向智能合约,语法类似于 JavaScript 的高级编程语言。这里先了解一下,后面会有更深入的讲解。
下面在正式编程之前,还有一些专业术语要了解一下。
DApp(Distributed App,分布式应用)
什么是 Dapp?
去中心化应用也被称为DApp(decentralized applications),是技术进化的下一个合乎逻辑的步骤。一个分布式应用,类似以太坊上的智能合约,但也有关键不同。不像智能合约,Dapp不需仅围绕金融,还可将区块链技术用于可想到的任何用途。
ERC20 / ERC223 / ERC721
经常看到说像 ETH 钱包支持 ERC20 标准代币。
那么所谓的 ERC20 是什么呢?
ERC20 标准
ERC-20 标准是在2015年11月份推出的,使用这种规则的代币,表现出一种通用的和可预测的方式,可以让以太坊区块链上的其他智能合约和分布式应用之间无缝交互。
简单地说,任何 ERC-20 代币都能立即兼容以太坊钱包。ERC20 是各个代币的标准接口。ERC20 代币仅仅是以太坊代币的子集。
ERC 20 标准存在的问题
ERC20 令牌存在的最大问题在于无法通过接收方合同处理传入的交易。在此基础上,有了 ERC223 标准。
ERC223 标准
自从引入 ERC20 令牌标准以来,几乎所有的基于以太坊的令牌都成功的接受了这个新标准。
然而其自身的缺点需要及时解决,这便是ERC223令牌诞生的原因。
ERC223 令牌标准将向现有的 ERC20 标准引入一个新功能,以防止意外转移的发生。ERC223 令牌标准可以防止令牌在以太坊网络上丢失。
ERC 721/NFT 标准
我们知道,类似ETH,很多代币都是可以细分到小数点后面很多很多位数的。
譬如,我要可以只买卖 0.00000001 枚 ETH 。这就是 ERC20 的标准。Token 可以无限细分为 10^18 份。
而 ERC721 的 Token 最小的单位为 1,无法再分割。类似于我们见到的百度莱次狗、小米加密猫,这些阿猫阿狗正常来说都是一只一只的,我们不可能说去交易 0.000001 只加密猫。所以正常来说 莱次狗、加密猫 都应该是符合 ERC721 标准的代币。
ERC721(Non-Fungible Tokens),翻译为不可互换的 Token, 英文简写为"NFT",简单理解为每个 Token 都是独一无二的。也就是说 ERC721 的每个 Token 都拥有独立唯一的 tokenId 编号。
ERC20 是可置换的,意味着所有的 Token 直接没有区别,所有Token都是一样的,而符合 ERC721 的 Token 每个都具有独立唯一的 tokenId 编号。
举个例子,假设我的加密猫的 TokenId 为 888888888,是不是很具有收藏价值。可以类似对比车牌。
总结
本期先带大家了解这多,下一期介绍 Go Ethereum 和直接开始一个简单和合约编程,敬请期待。
任何技术问题交流,或者有志学习 ETH 编程的,可以加 Q 群交流:互联网区块链技术交流 --483931379 。