二、一些概念和工具
1、一些概念
区块链
区块链是目前大火的比特币的一种底层技术,是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
比特币
比特币是一个构建于区块链技术之上,去中心化的,个人对个人的电子货币体系。这种电子钞票没有资产抵押物,并且它允许不经过央行、银行等清算与托管机构即可发行、流通,交易与资产数据存储在世界上每一个连接互联网的角落。
以太坊
同样是构建于区块链技术之上,但以太坊不仅仅是一种电子货币,同时也是一个基于区块链技术的平台与智能合约系统,它能够用来构建应用程序,而电子货币只是这种技术的表现形式之一。类似金融工具,财产,域名,以及更复杂的金融产品交易,以及身份识别及个人征信系统等涉及到信息及财富流通及记录的环节,以太坊理论上都有很大的发展空间。
代币
粗简的理解可以认为是“代作货币”,是代替法币(法定货币)用于交易的一种虚拟币。比特币也是一种代币,借助区块链技术,你可以发行自己的代币,这也是国家目前对区块链ICO说不的原因之一,因为其为诈骗、非法融资提供了太多方便。
ICO
是区块链行业的一种术语,是Initial Coin Offering的缩写,即首次币发行,类似于股票市场的首次公开发行(IPO)的概念。
BIP
比特币改进提议 (Bitcoin Improvement Proposals的缩写),指比特币社区成员所提交的一系列改进比特币的提议。例如,BIP0021是一项改进比特币统一资源标识符(URI)计划的提议。
地址
由一串字符和数字组成,就像别人向你的 email 地址发送电子邮件一样,他可以通过你的 比特币/以太坊 地址向你发送代币。
区块
一个区块就是若干交易数据的集合,它会被标记上时间戳以及前一个区块的独特标记。区块头是由具体矿工经过计算后生成的一份工作量证明,有效的区块经过全网络的共识后会被追加到主区块链中。
矿工
一个为新区块通过计算来寻找有效工作量证明的网络节点。
工作量证明
工作量证明是指矿工在满足全网目标难度的情况下通过大量计算得到的一小块数据。
难度
整个网络会通过调整“难度”这个变量来控制生成工作量证明所需要的计算力。
难度目标
使整个网络的计算力大致每10分钟产生一个区块所需要的难度数值即为难度目标。
难度重定
全网中每新增2016个区块,全网难度将重新计算,该新难度值将依据前2016个区块的算力而定。
共识
当网络中的许多节点,通常是大部分节点,都拥有相同的本地验证的最长区块时,称为共识。
共识规则
全节点与其他节点保持共识的区块验证规则。
分叉
分叉也被称为意外分叉,是在两个或多个区块拥有同一区块高度时发生的,此时使区块链产生了分叉。典型情况是两个或多个区块矿工几乎在同一时刻发现了区块。共识攻击的情况下也会出现分叉。
硬分叉
是区块链中一个永久分歧。通常在已按照新的共识规则进行了版本升级的节点产生了新区块时,那些未升级节点无法验证这些新区块时产生硬分叉。
软分叉
并非所有共识规则的变化都会导致硬分叉。只有前向不兼容的共识规则的变化才会导致分叉。如果共识规则的改变也能够让未修改的客户端仍然按照先前的规则对待交易或者区块,那么就可以在不进行分叉的情况下实现共识修改。这就是软分叉,来区分之前的硬分叉。实际上软分叉不是分叉。软分叉是与共识规则的前向兼容并作些变化,允许未升级的客户端程序继续与新规则同时工作。软分叉的一个不是很明显的方面就是,软分叉级只能用于增加共识规则约束,而不是扩展它们。
创世块
创世区块指区块链上的第一个区块,用来初始化相应的加密货币。
Coinbase
一个用于为创币交易提供专门输入的特殊字段。coninbase 允许声明区块奖励,不要与 Coinbase交易 混淆。
Coinbase交易
区块链中的第一个交易,是由矿工创建,包含单个 coinbase。不要与 Coinbase 混淆。
确认
当一项交易被区块收录时,我们说它有一次确认,矿工们在此区块之后每再产生一个区块,此项交易的确认数就再加一。当确认数达到 6 及以上时,通常认为这笔交易比较安全并难以逆转。
难以逆转
因为区块都是首尾相连的,下一个块的工作量证明依赖于上一个块,而一旦一个区块有很多代以后,这种瀑布效应闺怨保证该区块不会被改变,除非强制重新计算该区块的所有后续区块,但正是这样的重新计算需要耗费巨大的计算量,所以一个长区块链的存在可以让区块链的历史不可改变,这也是比特币安全性的一个关键特征。
锁定时间
锁定时间(技术上来说是nLockTime)是交易的一部分,其表明该交易被添加至区块链中的最早时间或区块。
孤块
孤块由于父区块未被本地节点处理的区块,所以他们还不能被完全验证。
孤立交易
孤立交易是指那些因为缺少一个或多个输入交易而无法进入交易池的交易。
纸钱包
就是一张纸,我们在上面记录所有必要的数据,然后称呼它为钱包,这些数据用于生成比特币私钥,进而形成密钥钱包。然而,人们通常使用该术语来表达以物理文件形式离线存储比特币的方式。它的第二个定义也包括纸密钥和可赎回编码。
隔离见证
隔离见证是比特币协议的一个升级建议,该建议技术创新性地将签名数据从比特币交易中分离出来。隔离见证是一个尚处于推荐阶段的软分叉方案;该变化将从技术上使得比特币协议规则更严谨。
以太坊主网
以太坊生产环境网络,也被称为以太坊主网,是以太坊官方提供的,是全球化的,部署在 Internet 环境上的,是产生真正有价值的以太币的网络,交易及合约的部署执行会消耗真实的以太币,不适合开发、调试和测试,因为所有节点是全球化的,速度也较慢。
以太坊测试网
以太坊测试网络也是官方提供的,专供用户来开发、调试和测试的,上面的合约执行不消耗真实的以太币,同样是全球化,部署在 Internet 环境上的,速度较慢。用来进行简单的智能合约开发的话,已经足够了。
以太坊私有网络
也被称为以太坊私链,是由用户自己通过 Geth 创建的以太坊网络,可以只有一人节点,是一个非常适合开发、调试和测试的网络,因节点较少,所以速度较快。用户还可以随时创建,销毁和重建一个私有的以太坊网络,甚至随意的增加或删除节点。但由于不是全球化的,所以只有在私有网络内的节点才能访问。
私有测试网络
以太坊可以搭建私有的测试网络,不过由于以太坊是一个去中心化的平台,需要较多节点共同运作才能得到理想的测试效果,因此并不推荐自行搭建测试网络。若仍想搭建,可参考 “morden搭建测试网络和私有链”。
2、一些工具
Geth
又名Go Ethereum,是以太坊协议的三种实现之一,由Go语言开发的开源项目。在实际工作中,它被作为以太坊的客户端来使用,以实现以太坊中账户的新建、编辑、删除 ,开户探矿,以太币转移,智能合约的部署和执行。其支持多种操作系统,如 Windows、Linux、Mac 的 OSX、Android 或者 IOS 等。
Mist
Mist 是以太坊官方提供的浏览器,可以连接到以太坊主网,以太坊测试网络,以观察网络当前算力,区块数等情况,也可以连接我们的私有网络上,从而更好的开发、调试、测试我们的智能合约。其也集成了以太坊的钱包(Ethereum Wallet)功能。
Ethereum-Wallet
是比 Mist 更专注的一个工具,其只包含以太坊钱包功能,可以新建账户,转移以太币,部署和执行智能合约等。
Solidity
Solidity是以太坊的智能合约编程语言。其语法类似于 JavaScript,但它是一种静态语言,每个变量需要在编译时指定变量类型。
Ganache-cli
ganache-cli 是以太坊节点仿真器软件,可以方便开发者快速进行以太坊的开发与测试,而不必进行较长时间的挖矿等待。
Truffle
Truffle 是针对基于以太坊的 Solidity 语言的一套开发框架,其本身基于 JavaScript。使用 Truffle 可方便的构建,开发,测试,部署智能合约项目,以及配置变化时的自动发布,部署。还可以使用 web3.js 直接在代码中操作对应的合约函数等。
Ethereumjs-testrpc
ethereumjs-testrpc 也是一款以太坊节点仿真软件,是 ganache-cli 的前身,目前已被 ganache-cli 所替换。
Browser-solidity
Browser-solidity 是官方提供的一个基于浏览器的合约编译器,可以查看合约编译结果,变更 solidity 编译版本,以及直接的合约函数调用,目前已被 remix-ide 替代。
Remix-ide
Remix-ide 是以太坊官方提供的一个基于浏览器的合约编译器,是 browser-solidity 的最新项目名称,其功能与 browser-solidity 大体相同。
Remix
Remix 是 remix-ide 的内核,remix-ide 构建于 remix 之上。
Remix-app
这是 remix-ide 的一个本地 app 版本,是用 electron 构建的,官方的预编译版本目前只支持了 Linux 及 OSX,可能由于 Electron 在 Windows 上的表现不佳,因此才没有对 windows 提供预编译的二进制版本。
MetaMask
MetaMask 是一款浏览器插件钱包,是很多支持 ETH 参投的 ICO 项目推荐使用的钱包之一,可以在 chrome 浏览器的扩展应用中心里索到,就是一款轻钱包。
Gas
由于以太坊网络中的全节点都会进行相同的计算并储存相财的值。合约执行会在所有节点中被多次重复,而任何人又都可以发布执行合约,这使得合约执行的消耗非常昂贵,所以为防止以太坊网络生蓄意攻击或滥用的现象,以太坊协议规定交易或合约调用的每个去处步骤都需要收费,这笔费用以 gas 为单位来计数,其通过 ether 币来在交易时自动换算,价格由当前的以太坊网络底层决定。